diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm index 6893a41517..1ea3f19c62 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm @@ -167,7 +167,7 @@ /area/ruin/unpowered/xenonest) "aM" = ( /obj/structure/alien/weeds, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/xenonest) "aQ" = ( @@ -260,7 +260,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/indestructible/boss/air, /area/ruin/unpowered/xenonest) "be" = ( @@ -381,7 +381,7 @@ /obj/structure/stone_tile{ dir = 1 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/indestructible/boss/air, /area/ruin/unpowered/xenonest) "bs" = ( @@ -439,7 +439,7 @@ /obj/structure/stone_tile{ dir = 8 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/indestructible/boss/air, /area/ruin/unpowered/xenonest) "by" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index ed5b07168f..bb9bc75d25 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -475,6 +475,8 @@ dir = 4 }, /obj/item/storage/bag/plants/portaseeder, +/obj/item/seeds/cotton, +/obj/item/seeds/cotton, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "bk" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index 945ea515c7..fec70b215e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -279,6 +279,7 @@ }, /turf/open/floor/plasteel/freezer, /area/ruin/powered/seedvault) + (1,1,1) = {" a a diff --git a/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm b/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm index c64050ce3a..e23beb3407 100644 --- a/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm +++ b/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm @@ -90,6 +90,9 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/organ/cyberimp/chest/reviver, +/obj/item/stack/sheet/mineral/gold{ + amount = 3 + }, /turf/open/floor/plasteel, /area/ruin/powered) "s" = ( @@ -145,9 +148,6 @@ "A" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, -/obj/item/mmi/posibrain{ - pixel_y = 9 - }, /obj/item/mmi, /turf/open/floor/plasteel, /area/ruin/powered) diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index f1a3005ce1..9c273f4d75 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -1288,7 +1288,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cV" = ( -/obj/effect/decal/cleanable/xenoblood/xsplatter, +/obj/effect/decal/cleanable/blood/splatter/xeno, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cW" = ( @@ -1525,7 +1525,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "dq" = ( -/obj/effect/decal/cleanable/xenoblood/xsplatter, +/obj/effect/decal/cleanable/blood/splatter/xeno, /obj/structure/alien/weeds{ color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; diff --git a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm new file mode 100644 index 0000000000..a89d1422d2 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm @@ -0,0 +1,970 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/template_noop) +"b" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"c" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/hilbertresearchfacility) +"d" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/hilbertresearchfacility) +"e" = ( +/obj/machinery/porta_turret/syndicate{ + desc = "A ballistic machine gun auto-turret that fires bluespace bullets."; + lethal_projectile = /obj/item/projectile/magic/teleport; + name = "displacement turret"; + stun_projectile = /obj/item/projectile/magic/teleport + }, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"f" = ( +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"g" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"h" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/bluespace_crystal{ + amount = 37 + }, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"i" = ( +/obj/structure/table/glass, +/obj/item/bodybag/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"j" = ( +/turf/open/floor/plasteel/stairs/left, +/area/ruin/space/has_grav/hilbertresearchfacility) +"k" = ( +/turf/open/floor/plasteel/stairs/medium, +/area/ruin/space/has_grav/hilbertresearchfacility) +"l" = ( +/turf/open/floor/plasteel/stairs/right, +/area/ruin/space/has_grav/hilbertresearchfacility) +"m" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/syringe/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"n" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/matter_bin/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"o" = ( +/turf/open/floor/plasteel/vaporwave, +/area/ruin/space/has_grav/hilbertresearchfacility) +"p" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/blue, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"q" = ( +/obj/structure/table/glass, +/obj/item/storage/backpack/holding, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"r" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"s" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/transmitter, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"t" = ( +/obj/structure/displaycase{ + start_showpiece_type = /obj/item/hilbertshotel + }, +/turf/open/floor/plasteel/vaporwave, +/area/ruin/space/has_grav/hilbertresearchfacility) +"u" = ( +/obj/structure/table/glass, +/obj/item/analyzer, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"v" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/subspace/amplifier, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"w" = ( +/obj/item/paper/crumpled/docslogs, +/obj/item/pen, +/turf/open/floor/plasteel/vaporwave, +/area/ruin/space/has_grav/hilbertresearchfacility) +"x" = ( +/obj/structure/table/glass, +/obj/item/assembly/signaler, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"y" = ( +/obj/structure/table/glass, +/obj/item/slimecross/industrial/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"z" = ( +/obj/machinery/door/airlock/vault{ + name = "secured door"; + req_access = 207 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"A" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"B" = ( +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"C" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"D" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"E" = ( +/obj/structure/chair/office, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"F" = ( +/obj/machinery/door/window/eastleft, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"G" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"H" = ( +/obj/structure/table/reinforced, +/obj/item/paper/crumpled/robertsworkjournal, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"I" = ( +/obj/machinery/door/airlock/highsecurity{ + req_access = 207 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"J" = ( +/turf/closed/mineral/random, +/area/ruin/unpowered/no_grav) +"K" = ( +/turf/open/floor/plasteel/stairs/right{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/unpowered/no_grav) +"U" = ( +/turf/open/floor/plasteel/stairs/medium{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/unpowered/no_grav) +"X" = ( +/turf/open/floor/plasteel/stairs/left{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/unpowered/no_grav) + +(1,1,1) = {" +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) = {" +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +b +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +J +b +J +b +b +a +b +J +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +b +J +J +J +b +J +b +J +b +b +J +J +J +b +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +b +c +c +c +c +c +d +d +c +d +d +c +d +d +b +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +b +d +e +f +f +m +r +g +g +f +f +f +e +c +b +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +b +d +f +f +f +f +f +f +f +f +f +f +f +d +J +b +b +b +b +b +a +a +a +a +"} +(9,1,1) = {" +a +a +J +d +f +f +f +f +f +f +f +f +f +f +f +c +J +b +b +J +b +b +b +a +a +a +"} +(10,1,1) = {" +a +a +J +c +f +f +f +f +f +f +f +f +f +f +f +c +J +b +J +b +b +J +b +a +a +a +"} +(11,1,1) = {" +a +a +J +c +g +f +f +n +s +v +f +f +f +f +f +c +J +J +J +J +J +J +b +a +a +a +"} +(12,1,1) = {" +a +a +J +c +g +f +j +o +o +o +j +f +f +f +c +d +d +c +c +d +c +J +b +a +a +a +"} +(13,1,1) = {" +a +a +J +c +h +f +k +o +t +o +k +f +f +f +c +A +B +C +B +D +c +J +J +a +a +a +"} +(14,1,1) = {" +a +a +J +c +g +f +l +o +o +w +l +f +f +f +d +B +B +G +B +B +c +J +b +b +a +a +"} +(15,1,1) = {" +a +a +J +c +i +f +f +p +u +x +f +f +f +f +d +B +E +H +B +B +c +J +J +J +a +a +"} +(16,1,1) = {" +a +b +J +c +f +f +f +f +f +f +f +f +f +f +c +B +B +C +B +B +c +b +J +b +a +a +"} +(17,1,1) = {" +a +b +J +d +f +f +f +f +f +f +f +f +f +f +c +C +F +C +B +B +c +b +b +b +a +a +"} +(18,1,1) = {" +a +b +J +d +f +f +f +f +f +f +f +f +f +f +d +B +B +B +B +B +d +b +b +b +b +a +"} +(19,1,1) = {" +a +b +J +d +f +f +f +f +f +f +f +f +f +f +z +B +B +B +B +B +d +b +b +b +b +a +"} +(20,1,1) = {" +a +a +b +c +e +f +g +q +g +y +g +f +e +f +c +B +B +B +B +B +d +b +b +b +b +a +"} +(21,1,1) = {" +a +a +b +c +c +c +c +c +c +d +d +c +c +c +d +B +B +B +B +B +d +X +b +b +b +a +"} +(22,1,1) = {" +a +a +b +b +J +J +b +b +J +J +J +J +J +J +d +D +B +B +B +B +I +U +b +b +b +a +"} +(23,1,1) = {" +a +a +a +b +b +J +J +b +b +b +b +J +b +J +c +d +d +c +d +c +d +K +b +b +b +a +"} +(24,1,1) = {" +a +a +a +a +b +b +J +J +J +b +b +b +b +J +b +b +J +J +J +J +b +b +b +b +b +a +"} +(25,1,1) = {" +a +a +a +a +a +b +b +b +J +J +J +J +b +b +b +b +b +b +a +J +J +J +b +J +b +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +b +b +b +a +b +b +b +b +b +a +a +a +J +J +J +J +J +a +"} +(27,1,1) = {" +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/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 29bd7d0526..2f08d9a29e 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -3830,7 +3830,7 @@ /turf/open/floor/engine/cult, /area/awaymission/academy/academycellar) "kY" = ( -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/engine/cult, /area/awaymission/academy/academycellar) "kZ" = ( diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index a25808d933..d50480c381 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -873,7 +873,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, @@ -945,7 +945,7 @@ /area/awaymission/caves/research) "cN" = ( /obj/machinery/door/window/eastleft, -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, @@ -1015,7 +1015,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "cV" = ( -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 7edc7b4518..c251a338a5 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -5597,8 +5597,8 @@ }, /area/awaymission/moonoutpost19/arrivals) "kK" = ( -/obj/effect/decal/cleanable/xenoblood, -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/xeno, +/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -5608,7 +5608,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "kL" = ( -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /obj/effect/decal/remains/xeno{ desc = "They look like the remains of something... alien. The front of skull appears to have been completely obliterated." }, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm new file mode 100644 index 0000000000..125da46b81 --- /dev/null +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -0,0 +1,123707 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aaa" = ( +/turf/open/space/basic, +/area/space) +"aab" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aac" = ( +/obj/machinery/requests_console{ + department = "Bar"; + departmentType = 2; + pixel_x = 30; + receive_ore_updates = 1 + }, +/obj/machinery/camera{ + c_tag = "Bar"; + dir = 8 + }, +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aad" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs, +/turf/open/floor/plasteel, +/area/security/prison) +"aae" = ( +/obj/effect/landmark/carpspawn, +/turf/open/space, +/area/space) +"aaf" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aag" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"aah" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/turf/open/space, +/area/space/nearstation) +"aai" = ( +/turf/closed/wall/r_wall, +/area/security/prison) +"aaj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall/r_wall, +/area/security/prison) +"aak" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/prison) +"aal" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/prison) +"aam" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/prison) +"aan" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/ambrosia, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aao" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plating, +/area/security/prison) +"aap" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/carrot, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaq" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/hydroponics/soil, +/obj/item/plant_analyzer, +/obj/machinery/camera{ + c_tag = "Prison Common Room"; + network = list("ss13","prison") + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aar" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/glowshroom, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aas" = ( +/obj/structure/sink{ + pixel_y = 20 + }, +/turf/open/floor/plating, +/area/security/prison) +"aat" = ( +/turf/open/floor/plasteel, +/area/security/prison) +"aau" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel, +/area/security/prison) +"aav" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaw" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"aax" = ( +/mob/living/simple_animal/mouse/brown/Tom, +/turf/open/floor/plating, +/area/security/prison) +"aay" = ( +/turf/open/floor/plating, +/area/security/prison) +"aaz" = ( +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/security/prison) +"aaA" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel, +/area/security/prison) +"aaB" = ( +/obj/structure/window/reinforced, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/potato, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaC" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/prison) +"aaD" = ( +/obj/structure/window/reinforced, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/grass, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaE" = ( +/obj/structure/window/reinforced, +/obj/machinery/hydroponics/soil, +/obj/item/cultivator, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaF" = ( +/obj/structure/window/reinforced, +/obj/machinery/hydroponics/soil, +/obj/item/cultivator, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaG" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/cryopod{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaH" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aaI" = ( +/obj/structure/bookcase, +/turf/open/floor/plasteel, +/area/security/prison) +"aaJ" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/prison) +"aaK" = ( +/obj/machinery/washing_machine, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) +"aaL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) +"aaM" = ( +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/table, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aaN" = ( +/obj/structure/table, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/security/prison) +"aaO" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/plasteel, +/area/security/prison) +"aaP" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/computer/cryopod{ + dir = 8; + pixel_x = 26 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) +"aaQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) +"aaR" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/turf/open/space, +/area/space/nearstation) +"aaS" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aaT" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"aaU" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel, +/area/security/prison) +"aaV" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/security/prison) +"aaW" = ( +/obj/structure/table, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel, +/area/security/prison) +"aaX" = ( +/obj/machinery/washing_machine, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) +"aaY" = ( +/obj/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) +"aaZ" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory) +"aba" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/open/space, +/area/space/nearstation) +"abb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/security/execution/transfer) +"abc" = ( +/turf/closed/wall, +/area/security/execution/transfer) +"abd" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall, +/area/security/execution/transfer) +"abe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/execution/transfer) +"abf" = ( +/obj/machinery/vending/sustenance, +/turf/open/floor/plasteel, +/area/security/prison) +"abg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/security/execution/transfer) +"abh" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/security/prison) +"abi" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/item/soap/nanotrasen, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"abj" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"abk" = ( +/obj/machinery/keycard_auth{ + pixel_x = 24; + pixel_y = 10 + }, +/obj/structure/table/wood, +/obj/item/radio/off, +/obj/item/taperecorder, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"abl" = ( +/obj/machinery/vending/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"abm" = ( +/obj/structure/table, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/obj/item/key/security, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abn" = ( +/obj/structure/rack, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abo" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"abp" = ( +/turf/closed/wall, +/area/security/main) +"abq" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/hos) +"abr" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "hos" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/hos) +"abs" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/tracker, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/port/fore) +"abt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"abu" = ( +/obj/machinery/door/poddoor{ + id = "executionspaceblast"; + name = "blast door" + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"abv" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"abw" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "executionflash"; + pixel_y = 25 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"abx" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/plasteel, +/area/security/prison) +"aby" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/security/execution/transfer) +"abz" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abA" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abD" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abF" = ( +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"abG" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Unisex Showers" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"abH" = ( +/obj/structure/table, +/obj/item/storage/box/chemimp{ + pixel_x = 6 + }, +/obj/item/storage/box/trackimp{ + pixel_x = -3 + }, +/obj/item/storage/lockbox/loyalty, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abI" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abJ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abK" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt3"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/prison) +"abL" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt2"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abM" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"abN" = ( +/obj/structure/closet/secure_closet/lethalshots, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abO" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"abP" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"abQ" = ( +/obj/structure/rack, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/temperature/security, +/obj/item/clothing/suit/armor/laserproof, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"abR" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"abS" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"abT" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Security's Desk"; + departmentType = 5; + name = "Head of Security RC"; + pixel_y = 30 + }, +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = -31 + }, +/obj/structure/table/wood, +/obj/item/storage/box/seccarts{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/storage/box/deputy, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"abU" = ( +/obj/machinery/computer/card/minor/hos, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"abV" = ( +/obj/machinery/computer/security/hos, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"abW" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -5 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"abX" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/tracker, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/starboard/fore) +"abY" = ( +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"abZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"aca" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acb" = ( +/obj/machinery/sparker{ + dir = 2; + id = "executionburn"; + pixel_x = 25 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acc" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acd" = ( +/turf/closed/wall, +/area/security/prison) +"ace" = ( +/obj/machinery/door/poddoor/preopen{ + id = "permacell3"; + name = "cell blast door" + }, +/obj/machinery/door/airlock/public/glass{ + id_tag = "permabolt3"; + name = "Cell 3" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/security/prison) +"acf" = ( +/obj/machinery/door/poddoor/preopen{ + id = "permacell2"; + name = "cell blast door" + }, +/obj/machinery/door/airlock/public/glass{ + id_tag = "permabolt2"; + name = "Cell 2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/security/prison) +"acg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "permacell1"; + name = "cell blast door" + }, +/obj/machinery/door/airlock/public/glass{ + id_tag = "permabolt1"; + name = "Cell 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/security/prison) +"ach" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restroom" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"aci" = ( +/obj/vehicle/ridden/secway, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"acj" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/hos, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"ack" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acm" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 4; + areastring = "/area/ai_monitored/security/armory"; + name = "Armory APC"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acn" = ( +/obj/item/storage/secure/safe/HoS{ + pixel_x = 35 + }, +/obj/structure/closet/secure_closet/hos, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"aco" = ( +/obj/structure/closet/bombcloset/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acq" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acr" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"acs" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Head of Security's Office"; + dir = 4 + }, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"act" = ( +/obj/machinery/holopad, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"acu" = ( +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"acv" = ( +/obj/structure/closet/secure_closet/contraband/armory, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"acw" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"acx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"acy" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/random, +/turf/open/space, +/area/space/nearstation) +"acz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acA" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acC" = ( +/obj/structure/bed, +/obj/machinery/camera{ + c_tag = "Prison Cell 3"; + network = list("ss13","prison") + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"acD" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt1"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/prison) +"acE" = ( +/obj/structure/bed, +/obj/machinery/camera{ + c_tag = "Prison Cell 2"; + network = list("ss13","prison") + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"acF" = ( +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"acH" = ( +/obj/structure/bed, +/obj/machinery/camera{ + c_tag = "Prison Cell 1"; + network = list("ss13","prison") + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"acI" = ( +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Transfer Room"; + req_access_txt = "2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"acJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"acK" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"acL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acM" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/e_gun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) +"acN" = ( +/obj/structure/chair/stool/bar, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"acO" = ( +/obj/structure/closet/l3closet/security, +/obj/machinery/camera{ + c_tag = "Brig Equipment Room"; + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acQ" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/stamp/hos, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"acR" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"acS" = ( +/obj/item/book/manual/wiki/security_space_law, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"acT" = ( +/obj/machinery/door/window/eastleft{ + name = "armoury desk"; + req_access_txt = "1" + }, +/obj/machinery/door/window/westleft{ + name = "armoury desk"; + req_access_txt = "3" + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acU" = ( +/obj/machinery/door/airlock/external{ + name = "Security External Airlock"; + req_access_txt = "63" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"acV" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/port/fore) +"acW" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"acX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/execution/transfer) +"acY" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"acZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/execution/transfer) +"ada" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/flasher{ + id = "PCell 3"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"adb" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/security/prison) +"adc" = ( +/obj/machinery/flasher{ + id = "PCell 1"; + pixel_x = -28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"add" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/flasher{ + id = "PCell 2"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"ade" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"adf" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"adg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"adh" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"adi" = ( +/obj/machinery/flasher/portable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"adj" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/advtaser, +/obj/item/gun/energy/e_gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) +"adk" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/shotgun/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/ballistic/shotgun/riot, +/obj/item/gun/ballistic/shotgun/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) +"adl" = ( +/obj/machinery/door/poddoor/shutters{ + id = "armory"; + name = "Armoury Shutter" + }, +/obj/machinery/button/door{ + id = "armory"; + name = "Armory Shutters"; + pixel_y = -26; + req_access_txt = "3" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"adm" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "hos" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/hos) +"adn" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"ado" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"adp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"adq" = ( +/obj/structure/table/wood, +/obj/item/instrument/guitar{ + pixel_x = -7 + }, +/obj/item/instrument/eguitar{ + pixel_x = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"adr" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"ads" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/starboard/fore) +"adt" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"adv" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"adw" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"adx" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"ady" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"adz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"adA" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"adB" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/turf/open/space, +/area/space/nearstation) +"adC" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/circular_saw, +/obj/item/hemostat, +/obj/item/retractor, +/obj/item/surgical_drapes, +/obj/item/razor, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"adD" = ( +/obj/machinery/button/flasher{ + id = "executionflash"; + pixel_x = 24; + pixel_y = 5 + }, +/obj/machinery/button/door{ + id = "executionspaceblast"; + name = "Vent to Space"; + pixel_x = 25; + pixel_y = -5; + req_access_txt = "7" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"adE" = ( +/obj/structure/table, +/obj/item/folder/red{ + pixel_x = 3 + }, +/obj/item/taperecorder{ + pixel_x = -3 + }, +/obj/item/assembly/flash/handheld, +/obj/item/reagent_containers/spray/pepper, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"adF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/security/prison) +"adG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/prison) +"adH" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Long-Term Cell 3"; + req_access_txt = "2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"adI" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Long-Term Cell 2"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"adJ" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Long-Term Cell 1"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"adK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"adL" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"adM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/button/door{ + id = "hos"; + name = "HoS Office Shutters"; + pixel_y = -25 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"adN" = ( +/obj/machinery/power/apc{ + dir = 8; + areastring = "/area/crew_quarters/heads/hos"; + name = "Head of Security's Office APC"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"adO" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/security/prison) +"adP" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"adQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"adR" = ( +/turf/closed/wall/r_wall, +/area/security/main) +"adS" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adU" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adV" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adX" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adY" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"adZ" = ( +/obj/structure/cable, +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/port/fore) +"aea" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"aeb" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aec" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"aed" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/button/ignition{ + id = "executionburn"; + pixel_x = 24; + pixel_y = 5 + }, +/obj/machinery/button/door{ + id = "executionfireblast"; + name = "Transfer Area Lockdown"; + pixel_x = 25; + pixel_y = -5; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aee" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aef" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/security/execution/transfer) +"aeh" = ( +/obj/machinery/button/door{ + id = "permacell3"; + name = "Cell 3 Lockdown"; + pixel_x = -4; + pixel_y = 25; + req_access_txt = "2" + }, +/obj/machinery/button/flasher{ + id = "PCell 3"; + pixel_x = 6; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aei" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aej" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aek" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/prison{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"ael" = ( +/obj/machinery/button/door{ + id = "permacell2"; + name = "Cell 2 Lockdown"; + pixel_x = -4; + pixel_y = 25; + req_access_txt = "2" + }, +/obj/machinery/button/flasher{ + id = "PCell 2"; + pixel_x = 6; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aem" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aen" = ( +/obj/machinery/computer/security/telescreen/prison{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Prison Hallway"; + network = list("ss13","prison") + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aep" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aeq" = ( +/obj/machinery/button/door{ + id = "permacell1"; + name = "Cell 1 Lockdown"; + pixel_x = -4; + pixel_y = 25; + req_access_txt = "2" + }, +/obj/machinery/button/flasher{ + id = "PCell 1"; + pixel_x = 6; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aer" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Prison Wing APC"; + areastring = "/area/security/prison"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aes" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/suit_storage_unit/security, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"aet" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"aeu" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/suit_storage_unit/security, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"aev" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"aew" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"aex" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "hos" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/hos) +"aey" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Head of Security"; + req_access_txt = "58" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"aez" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aeA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aeB" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/security/main) +"aeC" = ( +/obj/machinery/camera{ + c_tag = "Security Escape Pod"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aeD" = ( +/obj/machinery/door/airlock/security{ + name = "Firing Range"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"aeF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/prison) +"aeG" = ( +/obj/structure/cable, +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/starboard/fore) +"aeH" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"aeI" = ( +/obj/structure/rack, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/tank/internals/anesthetic{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/tank/internals/oxygen/red{ + pixel_x = 3 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aeJ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"aeK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aeL" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aeM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/prison) +"aeN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + name = "Prisoner Transfer Centre"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"aeO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeP" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeQ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeR" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aeS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeT" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aeV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aeW" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Brig Control Room"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aeX" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) +"aeY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/window/southleft{ + name = "Armory"; + req_access_txt = "3" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"aeZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) +"afa" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 12; + height = 18; + id = "emergency_home"; + name = "BoxStation emergency evac bay"; + width = 32 + }, +/turf/open/space/basic, +/area/space) +"afb" = ( +/obj/machinery/recharger, +/obj/structure/table, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"afc" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"afd" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"afe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"aff" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afg" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afh" = ( +/obj/effect/landmark/start/security_officer, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afi" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afk" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afl" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afm" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afn" = ( +/obj/structure/table, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"afo" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Pod Three" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"afp" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 + }, +/turf/open/space/basic, +/area/space) +"afq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/prison) +"afr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/prison) +"afs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"aft" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"afu" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/execution/transfer) +"afv" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"afw" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + layer = 2.4 + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Armory"; + req_access_txt = "2" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/security/execution/transfer) +"afx" = ( +/obj/machinery/light_switch{ + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"afy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"afz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Shooting Range" + }, +/turf/open/floor/plating, +/area/security/prison) +"afA" = ( +/turf/closed/wall/r_wall, +/area/security/execution/transfer) +"afB" = ( +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afC" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"afD" = ( +/obj/structure/table, +/obj/item/electropack, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afE" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"afF" = ( +/obj/structure/table, +/obj/item/assembly/signaler, +/obj/item/clothing/suit/straight_jacket, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afG" = ( +/obj/structure/table, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/storage/box/hug, +/obj/item/razor{ + pixel_x = -6 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afH" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afI" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afJ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 1; + pixel_y = -27 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"afK" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Evidence Storage"; + req_access_txt = "63" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"afL" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"afM" = ( +/turf/open/floor/plasteel, +/area/security/brig) +"afN" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"afO" = ( +/obj/machinery/door/airlock/command{ + name = "Command Tool Storage"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"afP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/command{ + name = "Command Tool Storage"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"afQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/security/main) +"afR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"afS" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room"; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"afT" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afU" = ( +/turf/open/floor/plasteel, +/area/security/main) +"afV" = ( +/obj/structure/table, +/obj/item/restraints/handcuffs, +/obj/item/assembly/timer, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"afW" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/main) +"afX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/head_of_security, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"afY" = ( +/obj/effect/landmark/start/security_officer, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"afZ" = ( +/obj/structure/table, +/obj/item/radio/off, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aga" = ( +/obj/structure/sign/warning/pods{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agb" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agc" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"agd" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"age" = ( +/obj/machinery/door/window/southleft{ + name = "Target Storage" + }, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target, +/obj/item/target, +/turf/open/floor/plating, +/area/security/prison) +"agf" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal, +/obj/item/storage/box/bodybags, +/obj/item/pen, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"agg" = ( +/obj/structure/closet/secure_closet/injection, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "Prisoner Transfer Centre"; + areastring = "/area/security/execution/transfer"; + pixel_y = -27 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"agh" = ( +/obj/structure/table, +/obj/item/electropack, +/obj/item/screwdriver, +/obj/item/wrench, +/obj/item/clothing/head/helmet, +/obj/item/assembly/signaler, +/obj/machinery/light/small, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"agi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Prison Wing"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"agj" = ( +/turf/closed/wall, +/area/security/brig) +"agk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Prison Wing"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"agl" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"agm" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"agn" = ( +/turf/closed/wall/r_wall, +/area/security/warden) +"ago" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agp" = ( +/obj/machinery/computer/prisoner/management, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Armory"; + req_access_txt = "3" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"agr" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ags" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"agt" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agu" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agv" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"agw" = ( +/obj/structure/table, +/obj/machinery/syndicatebomb/training, +/obj/item/gun/energy/laser/practice, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agz" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agA" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = 30 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agB" = ( +/obj/structure/table, +/obj/item/assembly/flash/handheld, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"agC" = ( +/obj/machinery/holopad, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"agD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "prison blast door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/brig) +"agE" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/security/main) +"agF" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "prison blast door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/brig) +"agG" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agH" = ( +/obj/machinery/door/window/southright{ + name = "Target Storage" + }, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/syndicate, +/turf/open/floor/plating, +/area/security/prison) +"agI" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"agJ" = ( +/obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"agK" = ( +/turf/open/floor/plasteel/dark, +/area/security/prison) +"agL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"agM" = ( +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/spray/cleaner, +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"agN" = ( +/obj/item/storage/firstaid/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/regular, +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"agO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"agP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"agQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agR" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"agS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agV" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agW" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"agX" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agY" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"agZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aha" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"ahb" = ( +/obj/effect/landmark/start/security_officer, +/turf/open/floor/plasteel, +/area/security/main) +"ahc" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahd" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/book/manual/wiki/security_space_law, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"ahe" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortType = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"ahg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahi" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortType = 7 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahj" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Security Delivery"; + req_access_txt = "1" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/main) +"ahk" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"ahl" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "Security" + }, +/obj/structure/plasticflaps/opaque, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/security/main) +"ahm" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"ahn" = ( +/turf/closed/wall, +/area/maintenance/fore/secondary) +"aho" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"ahp" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"ahq" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"ahr" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ahs" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 24 + }, +/obj/structure/table/glass, +/obj/machinery/computer/med_data/laptop, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"aht" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"ahu" = ( +/obj/item/storage/box/bodybags, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/item/reagent_containers/syringe{ + name = "steel point" + }, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"ahv" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Brig Control APC"; + areastring = "/area/security/warden"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"ahx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahA" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"ahD" = ( +/obj/machinery/door/window/westleft{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Brig Infirmary" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"ahE" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahH" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/landmark/start/security_officer, +/turf/open/floor/plasteel, +/area/security/main) +"ahL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahM" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahN" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Security Office APC"; + areastring = "/area/security/main"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ahO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"ahP" = ( +/turf/open/floor/plasteel/white, +/area/security/brig) +"ahQ" = ( +/obj/structure/closet/secure_closet/warden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahR" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/warden, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -27; + pixel_y = 8; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Cell Shutters"; + pixel_x = -27; + pixel_y = -2 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahS" = ( +/obj/structure/table, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"ahU" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ahV" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/taperecorder, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"ahW" = ( +/obj/structure/bodycontainer/morgue, +/obj/machinery/camera{ + c_tag = "Brig Infirmary"; + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"ahX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ahZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aia" = ( +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aib" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aic" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aid" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"aie" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/pen, +/obj/item/hand_labeler, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aif" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aig" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aih" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aii" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aij" = ( +/obj/machinery/light_switch{ + pixel_y = -23 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aik" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ail" = ( +/obj/machinery/camera{ + c_tag = "Brig Interrogation"; + dir = 8; + network = list("interrogation") + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"aim" = ( +/obj/machinery/light_switch{ + pixel_y = -23 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ain" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"aio" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aip" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aiq" = ( +/obj/machinery/camera{ + c_tag = "Security Office"; + dir = 1 + }, +/obj/machinery/computer/secure_data{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"air" = ( +/obj/structure/chair, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"ais" = ( +/obj/structure/filingcabinet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"ait" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/computer/security{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aiu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aiv" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aiw" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Brig Infirmary" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"aix" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aiy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aiz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aiA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aiB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"aiC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"aiD" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"aiE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"aiF" = ( +/obj/structure/bed, +/obj/item/clothing/suit/straight_jacket, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"aiG" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aiH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aiI" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiJ" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/window/southleft{ + name = "Reception Desk"; + req_access_txt = "63" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiK" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiL" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiM" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiN" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiO" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/bed, +/obj/item/clothing/suit/straight_jacket, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/brig) +"aiP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/security/main) +"aiQ" = ( +/obj/machinery/camera{ + c_tag = "Brig East" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aiR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aiS" = ( +/obj/item/stack/rods, +/turf/open/space, +/area/space/nearstation) +"aiT" = ( +/turf/closed/wall, +/area/security/processing) +"aiU" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) +"aiV" = ( +/turf/closed/wall/r_wall, +/area/security/processing) +"aiW" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"aiX" = ( +/turf/closed/wall/r_wall, +/area/security/brig) +"aiY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/security/courtroom) +"aiZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aja" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajc" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajd" = ( +/obj/structure/sign/plaques/golden{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aje" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajg" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajh" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/structure/closet/secure_closet/courtroom, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/item/gavelhammer, +/turf/open/floor/plasteel, +/area/security/courtroom) +"aji" = ( +/obj/structure/chair{ + name = "Judge" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajj" = ( +/obj/item/radio/intercom{ + broadcasting = 0; + listening = 1; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/machinery/camera{ + c_tag = "Courtroom North" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajk" = ( +/obj/structure/chair{ + name = "Judge" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajl" = ( +/obj/structure/chair{ + name = "Judge" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajm" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"ajn" = ( +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajo" = ( +/turf/closed/wall, +/area/security/courtroom) +"ajp" = ( +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"ajq" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/fore) +"ajr" = ( +/obj/machinery/computer/prisoner/gulag_teleporter_computer, +/turf/open/floor/plasteel, +/area/security/processing) +"ajs" = ( +/obj/machinery/gulag_teleporter, +/turf/open/floor/plasteel, +/area/security/processing) +"ajt" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/security/prison) +"aju" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/prison) +"ajv" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"ajx" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajy" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Brig APC"; + areastring = "/area/security/brig"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajz" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/interrogation{ + pixel_y = 30 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajC" = ( +/obj/item/storage/toolbox/drone, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"ajD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajF" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajG" = ( +/obj/machinery/light, +/obj/machinery/door_timer{ + id = "Cell 1"; + name = "Cell 1"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajH" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Brig"; + req_access_txt = "63; 42" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ajO" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom{ + broadcasting = 0; + dir = 8; + listening = 1; + name = "Station Intercom (Court)" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajQ" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajR" = ( +/obj/structure/table/wood, +/obj/item/gavelblock, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajS" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"ajT" = ( +/obj/structure/chair{ + dir = 8; + name = "Defense" + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ajU" = ( +/obj/machinery/door/window/southleft{ + name = "Court Cell"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"ajV" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"ajW" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"ajX" = ( +/obj/structure/table, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/recharger, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice, +/turf/open/floor/plasteel, +/area/security/prison) +"ajY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"ajZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"aka" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"akb" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"akc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"akd" = ( +/obj/structure/lattice, +/turf/closed/wall, +/area/security/prison) +"ake" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Labor Shuttle"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Brig West"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aki" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akn" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ako" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 2"; + name = "Cell 2"; + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akq" = ( +/obj/machinery/camera{ + c_tag = "Brig Central"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aks" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akt" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 4"; + name = "Cell 4"; + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aku" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"akw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"akx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aky" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"akz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"akA" = ( +/obj/structure/chair{ + dir = 8; + name = "Defense" + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"akB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"akC" = ( +/obj/machinery/door/airlock/security{ + name = "Labor Shuttle"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/processing) +"akD" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/prison) +"akE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"akF" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Labor Shuttle Dock North" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/processing) +"akG" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) +"akH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"akI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"akJ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/processing) +"akK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/processing) +"akL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/fore) +"akM" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akN" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akO" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 1"; + name = "Cell 1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akP" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/security/brig) +"akR" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 2"; + name = "Cell 2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akS" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akT" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 3"; + name = "Cell 3" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akU" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"akV" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akW" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"akY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"ala" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 4"; + name = "Cell 4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alb" = ( +/obj/structure/chair{ + dir = 4; + name = "Prosecution" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"alc" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ald" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/security/courtroom) +"ale" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"alf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alg" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/fore) +"alh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"ali" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"alj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"alk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"all" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/security/labor, +/turf/open/floor/plasteel, +/area/security/processing) +"alm" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"aln" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) +"alo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table, +/obj/item/storage/box/prisoner, +/turf/open/floor/plasteel, +/area/security/processing) +"alp" = ( +/turf/open/floor/plating, +/area/security/processing) +"alq" = ( +/turf/open/floor/plasteel, +/area/security/processing) +"alr" = ( +/obj/structure/target_stake, +/obj/item/target/syndicate, +/turf/open/floor/plating, +/area/security/prison) +"als" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/processing) +"alt" = ( +/obj/structure/reagent_dispensers/peppertank, +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory) +"alu" = ( +/obj/machinery/nuclearbomb/selfdestruct, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"alv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = -25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alx" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aly" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = -25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alz" = ( +/obj/machinery/button/door{ + id = "briggate"; + name = "Desk Shutters"; + pixel_x = -26; + pixel_y = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/button/flasher{ + id = "brigentry"; + pixel_x = -28; + pixel_y = -8 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"alA" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/eastleft{ + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"alB" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"alC" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alD" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/courtroom) +"alE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_x = 28 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"alF" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 2 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"alG" = ( +/obj/structure/chair{ + dir = 4; + name = "Prosecution" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"alH" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"alI" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"alJ" = ( +/obj/item/beacon, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"alK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"alL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/power/apc{ + dir = 8; + name = "Courtroom APC"; + areastring = "/area/security/courtroom"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"alM" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/power/apc{ + areastring = "/area/security/main"; + dir = 4; + name = "Firing Range APC"; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"alN" = ( +/obj/machinery/camera{ + c_tag = "Dormitory Toilets"; + dir = 1 + }, +/obj/structure/table, +/obj/structure/bedsheetbin/towel, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"alO" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"alP" = ( +/turf/closed/wall, +/area/maintenance/starboard/fore) +"alQ" = ( +/obj/machinery/power/solar_control{ + id = "auxsolareast"; + name = "Port Bow Solar Control"; + track = 0 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"alR" = ( +/turf/closed/wall/r_wall, +/area/maintenance/solars/port/fore) +"alS" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"alT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"alU" = ( +/turf/closed/wall, +/area/maintenance/port/fore) +"alV" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"alW" = ( +/obj/item/cigbutt/cigarbutt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"alX" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"alY" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Firing Range"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"alZ" = ( +/obj/structure/table, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"ama" = ( +/mob/living/simple_animal/sloth/paperwork, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"amb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"amc" = ( +/obj/machinery/computer/shuttle/labor{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"ame" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"amf" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amg" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1"; + name = "Cell 1 Locker" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amh" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"ami" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2"; + name = "Cell 2 Locker" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amj" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amk" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 3"; + name = "Cell 3 Locker" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aml" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "outerbrig"; + name = "Brig Exterior Doors Control"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = -5; + req_access_txt = "63" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "innerbrig"; + name = "Brig Interior Doors Control"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 5; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amm" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/eastright{ + name = "Brig Desk"; + req_access_txt = "2" + }, +/obj/item/restraints/handcuffs, +/obj/item/radio/off, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amn" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amo" = ( +/obj/machinery/flasher{ + id = "brigentry"; + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amp" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 4"; + name = "Cell 4 Locker" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amq" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = 25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/courtroom) +"ams" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/courtroom) +"amt" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom"; + req_access_txt = "42" + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"amu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"amv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"amw" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"amx" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"amy" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"amz" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"amA" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"amC" = ( +/turf/open/floor/plating, +/area/maintenance/port/fore) +"amD" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"amE" = ( +/obj/structure/bed, +/obj/effect/landmark/xeno_spawn, +/obj/item/bedsheet, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"amF" = ( +/obj/machinery/computer/slot_machine{ + balance = 15; + money = 500 + }, +/obj/item/coin/iron, +/obj/item/coin/diamond, +/obj/item/coin/diamond, +/obj/item/coin/diamond, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"amG" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/toy/sword, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"amH" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/noticeboard{ + dir = 8; + pixel_x = 27 + }, +/obj/item/trash/plate, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"amK" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/security/processing) +"amL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) +"amM" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Prisoner Processing"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/processing) +"amQ" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amR" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"amT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amU" = ( +/obj/machinery/door/poddoor/preopen{ + id = "briggate"; + name = "security blast door" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amV" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amW" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amX" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"amY" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"amZ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"ana" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"anb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"anc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"and" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"ane" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"anf" = ( +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ang" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Port Bow Solar APC"; + areastring = "/area/maintenance/solars/port/fore"; + pixel_x = -25; + pixel_y = 3 + }, +/obj/machinery/camera{ + c_tag = "Fore Port Solar Control"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"anh" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"ani" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"anj" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ank" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"anl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"anm" = ( +/obj/item/trash/sosjerky, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ann" = ( +/obj/item/electronics/airalarm, +/obj/item/circuitboard/machine/seed_extractor, +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ano" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"anp" = ( +/obj/item/cigbutt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ans" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"ant" = ( +/obj/machinery/gulag_item_reclaimer{ + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"anu" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the exit."; + id = "laborexit"; + name = "exit button"; + normaldoorcontrol = 1; + pixel_x = 26; + pixel_y = -6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"anv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"anw" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anx" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"any" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anz" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anA" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anC" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/security/courtroom) +"anD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"anE" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"anF" = ( +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"anG" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"anH" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/maintenance/solars/port/fore) +"anI" = ( +/obj/machinery/door/airlock/engineering{ + name = "Port Bow Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"anJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"anK" = ( +/obj/effect/decal/cleanable/egg_smudge, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"anL" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"anN" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) +"anO" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp_home"; + name = "fore bay 1"; + roundstart_template = /datum/map_template/shuttle/labour/box; + width = 9 + }, +/turf/open/space/basic, +/area/space) +"anP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + id_tag = "laborexit"; + name = "Labor Shuttle"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel, +/area/security/processing) +"anQ" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anS" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anU" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom" + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"anV" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"anW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"anX" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Courtroom South"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"anY" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"anZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aoa" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aob" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aoc" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aod" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"aoe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"aof" = ( +/turf/closed/wall/r_wall, +/area/maintenance/solars/starboard/fore) +"aog" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aoh" = ( +/obj/machinery/power/solar_control{ + id = "auxsolareast"; + name = "Starboard Bow Solar Control"; + track = 0 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aoi" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/item/multitool, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aoj" = ( +/obj/machinery/camera{ + c_tag = "Fore Port Solar Access" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aok" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aol" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aom" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aon" = ( +/obj/structure/chair, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoo" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/monkey_recycler, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoq" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) +"aor" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"aos" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"aot" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"aou" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/camera{ + c_tag = "Labor Shuttle Dock South"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/processing) +"aov" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aow" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aox" = ( +/obj/machinery/camera{ + c_tag = "Fore Primary Hallway West"; + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoy" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=EVA"; + location = "Security" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoz" = ( +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoA" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoB" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoC" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoD" = ( +/obj/machinery/camera{ + c_tag = "Fore Primary Hallway East"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoE" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoF" = ( +/obj/machinery/vending/snack/random, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aoG" = ( +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"aoH" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) +"aoI" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Fitness Room APC"; + areastring = "/area/crew_quarters/fitness"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aoJ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aoK" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aoL" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Air Out" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aoM" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aoN" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aoO" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aoP" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aoQ" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aoR" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoS" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoT" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoU" = ( +/obj/structure/bed, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoV" = ( +/turf/open/space, +/area/space) +"aoW" = ( +/obj/structure/table, +/obj/item/stamp, +/obj/item/poster/random_official, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoX" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aoZ" = ( +/obj/machinery/atmospherics/components/binary/valve/digital{ + name = "Waste Release" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"apa" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"apb" = ( +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/security/processing) +"apc" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"apd" = ( +/turf/closed/wall, +/area/security/detectives_office) +"ape" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/abandoned{ + name = "Vacant Office B"; + req_access_txt = "32" + }, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"apf" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/security/detectives_office) +"apg" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aph" = ( +/turf/closed/wall, +/area/lawoffice) +"api" = ( +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, +/turf/open/floor/plasteel, +/area/lawoffice) +"apj" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"apk" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"apl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"apm" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"apn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"apo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"app" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apq" = ( +/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apr" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Fore Maintenance APC"; + areastring = "/area/maintenance/fore/secondary"; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aps" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apv" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fitness Maintenance"; + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apw" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Air In" + }, +/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apx" = ( +/obj/machinery/door/airlock/atmos/abandoned{ + name = "Atmospherics Maintenance"; + req_access_txt = "12;24" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apy" = ( +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apz" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"apA" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Starboard Bow Solar APC"; + areastring = "/area/maintenance/solars/starboard/fore"; + pixel_x = -25; + pixel_y = 3 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"apB" = ( +/obj/machinery/camera{ + c_tag = "Fore Starboard Solars"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"apC" = ( +/turf/closed/wall/r_wall, +/area/maintenance/starboard/fore) +"apD" = ( +/obj/structure/closet/wardrobe/mixed, +/obj/item/clothing/shoes/jackboots, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"apE" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"apF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plating, +/area/engine/atmos) +"apG" = ( +/obj/machinery/portable_atmospherics/canister/water_vapor, +/turf/open/floor/plasteel, +/area/janitor) +"apI" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ + dir = 1 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/engine/atmos) +"apJ" = ( +/turf/closed/wall, +/area/construction/mining/aux_base) +"apL" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) +"apM" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) +"apN" = ( +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"apO" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"apP" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"apR" = ( +/obj/item/paper/fluff/jobs/security/beepsky_mom, +/turf/open/floor/plating, +/area/security/processing) +"apS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"apU" = ( +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"apV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"apW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"apX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/fitness) +"apY" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"apZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aqa" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"aqb" = ( +/obj/structure/rack, +/obj/item/storage/briefcase, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/wood, +/area/lawoffice) +"aqc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"aqd" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aqe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqf" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqi" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqj" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqk" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Dormitory APC"; + areastring = "/area/crew_quarters/dorms"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aql" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqn" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"aqo" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"aqp" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqq" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"aqs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"aqu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"aqv" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Starboard Bow Solar Access"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"aqx" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/maintenance/solars/starboard/fore) +"aqy" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqz" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqA" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqB" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqC" = ( +/obj/machinery/computer/slot_machine{ + balance = 15; + money = 500 + }, +/obj/item/coin/iron, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqD" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/item/coin/gold, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqE" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aqG" = ( +/obj/docking_port/stationary/random{ + dir = 4; + id = "pod_lavaland3"; + name = "lavaland" + }, +/turf/open/space, +/area/space/nearstation) +"aqJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aqK" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) +"aqL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aqM" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aqO" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aqP" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Port Bow Maintenance APC"; + areastring = "/area/maintenance/port/fore"; + pixel_x = -1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aqQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"aqR" = ( +/turf/open/floor/plating, +/area/maintenance/fore) +"aqS" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/potato{ + name = "\improper Beepsky's emergency battery" + }, +/turf/open/floor/plating, +/area/security/processing) +"aqT" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Labor Shuttle Dock APC"; + areastring = "/area/security/processing"; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"aqV" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"aqW" = ( +/turf/open/floor/carpet, +/area/security/detectives_office) +"aqX" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/chair, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"aqY" = ( +/obj/structure/table/wood, +/obj/item/pen, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"aqZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"ara" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Law office"; + pixel_x = -32 + }, +/obj/machinery/vending/wardrobe/law_wardrobe, +/turf/open/floor/wood, +/area/lawoffice) +"arb" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/pen/red, +/turf/open/floor/wood, +/area/lawoffice) +"arc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"ard" = ( +/obj/machinery/door/poddoor/preopen{ + id = "lawyer_blast"; + name = "privacy door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/lawoffice) +"are" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/lawoffice) +"arf" = ( +/turf/closed/wall, +/area/crew_quarters/dorms) +"arh" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Dormitories Maintenance"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"ari" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"arj" = ( +/turf/closed/wall, +/area/crew_quarters/fitness) +"ark" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"arl" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"arm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"arn" = ( +/obj/structure/closet/athletic_mixed, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aro" = ( +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/holodeck/rec_center) +"arp" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arq" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ars" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Starboard Bow Maintenance APC"; + areastring = "/area/maintenance/starboard/fore"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"art" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Fore Starboard Solar Access" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aru" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arv" = ( +/obj/structure/table, +/obj/item/pen, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arw" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arx" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ary" = ( +/obj/structure/closet, +/obj/item/coin/iron, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arz" = ( +/obj/item/coin/gold, +/obj/item/coin/iron, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arA" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"arB" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"arE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"arF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"arG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"arH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arI" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arJ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arK" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/port/fore) +"arL" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arM" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arN" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arO" = ( +/obj/machinery/monkey_recycler, +/obj/item/reagent_containers/food/snacks/monkeycube, +/obj/item/reagent_containers/food/snacks/monkeycube, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"arP" = ( +/turf/closed/wall, +/area/maintenance/fore) +"arR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"arS" = ( +/obj/structure/table/wood, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"arT" = ( +/turf/open/floor/plasteel, +/area/security/vacantoffice/b) +"arU" = ( +/obj/structure/rack, +/turf/open/floor/plasteel, +/area/security/vacantoffice/b) +"arV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/filingcabinet/employment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/wood, +/area/lawoffice) +"arW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/lawoffice) +"arX" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/stamp/law, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"arY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"arZ" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/lawyer, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/lawoffice) +"asa" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"asb" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"asd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms) +"ase" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"asf" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"asg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"ash" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"asi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"asj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"ask" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"asl" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"asm" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"asn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"aso" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Law Office Maintenance"; + req_access_txt = "38" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"asp" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"asq" = ( +/obj/machinery/camera{ + c_tag = "Fitness Room" + }, +/obj/structure/closet/masks, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asr" = ( +/obj/structure/closet/boxinggloves, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/clothing/shoes/jackboots, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ass" = ( +/obj/structure/closet/lasertag/red, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ast" = ( +/obj/structure/closet/lasertag/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asu" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm5"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"asv" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asx" = ( +/obj/structure/door_assembly/door_assembly_mai, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asy" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asz" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/donut, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asA" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asB" = ( +/turf/closed/wall, +/area/maintenance/department/electrical) +"asC" = ( +/turf/open/floor/plasteel/airless, +/area/space/nearstation) +"asE" = ( +/turf/closed/wall, +/area/hallway/secondary/entry) +"asF" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"asH" = ( +/obj/structure/closet/toolcloset, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"asI" = ( +/obj/structure/closet/toolcloset, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"asJ" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"asK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"asL" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"asM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asO" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"asP" = ( +/obj/structure/chair/stool, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fore) +"asQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/fore) +"asR" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/plating, +/area/maintenance/fore) +"asS" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plating, +/area/maintenance/fore) +"asT" = ( +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/plating, +/area/maintenance/fore) +"asU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/vacantoffice/b) +"asV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/storage/briefcase, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"asX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"asY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"asZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vr_sleeper, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ata" = ( +/turf/open/floor/wood, +/area/lawoffice) +"atb" = ( +/obj/structure/table, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/rods/fifty, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"atc" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/lawyer, +/turf/open/floor/wood, +/area/lawoffice) +"atd" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"ate" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"atf" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"atg" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm4"; + name = "Dorm 4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"ath" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"ati" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"atj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"atm" = ( +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"atn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"ato" = ( +/obj/machinery/light_switch{ + pixel_y = -23 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) +"atp" = ( +/obj/machinery/door/airlock/external{ + name = "Construction Zone" + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"atq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"atr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ats" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"att" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"atu" = ( +/obj/machinery/camera{ + c_tag = "Vacant Office B"; + dir = 1 + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel, +/area/security/vacantoffice/b) +"atv" = ( +/obj/structure/table, +/obj/item/shard, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/item/shard{ + icon_state = "small" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"atw" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"atx" = ( +/obj/machinery/button/door{ + id = "maint3"; + name = "Blast Door Control C"; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aty" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/fore) +"atA" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"atB" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"atC" = ( +/obj/item/stack/rods/fifty, +/obj/structure/rack, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"atD" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"atE" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"atF" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/maintenance/department/electrical) +"atG" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"atH" = ( +/obj/machinery/computer/mech_bay_power_console, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/circuit, +/area/maintenance/department/electrical) +"atI" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"atJ" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"atK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/security/vacantoffice/b) +"atL" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"atM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"atN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"atO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"atP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"atQ" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"atR" = ( +/obj/effect/landmark/carpspawn, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"atS" = ( +/turf/closed/wall, +/area/space/nearstation) +"atT" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"atU" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"atV" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"atW" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"atY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/security/vacantoffice/b) +"atZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aua" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aub" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"auc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"aue" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/port/fore) +"auf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/lawoffice) +"aug" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Law Office"; + dir = 1 + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/computer/security/telescreen/prison{ + dir = 1; + pixel_y = -27 + }, +/turf/open/floor/wood, +/area/lawoffice) +"auh" = ( +/obj/structure/table/wood, +/obj/item/taperecorder, +/obj/item/cartridge/lawyer, +/turf/open/floor/wood, +/area/lawoffice) +"aui" = ( +/obj/machinery/photocopier, +/obj/machinery/button/door{ + id = "lawyer_blast"; + name = "Privacy Shutters"; + pixel_x = 25; + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/lawoffice) +"auj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"auk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aul" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aum" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aun" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms) +"auo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aup" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm6"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"auq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/vacantoffice/b) +"aur" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Fitness Ring" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"aus" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aut" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"auu" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"auv" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"auw" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"aux" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"auy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"auz" = ( +/obj/machinery/camera{ + c_tag = "Holodeck" + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"auA" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"auB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"auC" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auD" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auE" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auG" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auH" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auI" = ( +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"auJ" = ( +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"auK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"auL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"auM" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"auO" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"auP" = ( +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"auQ" = ( +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"auR" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"auS" = ( +/obj/machinery/requests_console{ + department = "Crew Quarters"; + pixel_y = 30 + }, +/obj/machinery/camera{ + c_tag = "Dormitory North" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"auT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"auU" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"auV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/port/fore) +"auW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"auX" = ( +/obj/structure/mirror{ + icon_state = "mirror_broke"; + pixel_y = 28 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"auY" = ( +/obj/structure/mirror{ + icon_state = "mirror_broke"; + pixel_y = 28 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/item/circuitboard/computer/operating, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"auZ" = ( +/obj/structure/frame/computer, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ava" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/chair, +/obj/item/reagent_containers/blood/random, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avb" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/space/nearstation) +"avc" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avd" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"ave" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fore) +"avf" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Chemical Storage"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"avg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avh" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/power/apc{ + dir = 8; + name = "Vacant Office B APC"; + areastring = "/area/security/vacantoffice/b"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"avi" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Law Office APC"; + areastring = "/area/lawoffice"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"avj" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"avk" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"avl" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avo" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall, +/area/maintenance/department/electrical) +"avp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/poddoor/shutters{ + id = "aux_base_shutters"; + name = "Auxillary Base Shutters" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"avq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avr" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Detective's Office"; + dir = 2 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"avs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"avt" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avv" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avw" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"avx" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"avy" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"avz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"avA" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"avB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) +"avC" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"avD" = ( +/obj/machinery/computer/holodeck{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"avE" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint3" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"avF" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint3" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"avG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avH" = ( +/obj/structure/sign/warning/electricshock, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/department/electrical) +"avI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"avJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"avK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/department/electrical) +"avL" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Electrical Maintenance APC"; + areastring = "/area/maintenance/department/electrical"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"avM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"avN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"avO" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/multitool, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"avP" = ( +/obj/structure/sign/warning/pods, +/turf/closed/wall, +/area/hallway/secondary/entry) +"avQ" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Auxillary Base Construction"; + dir = 8 + }, +/obj/machinery/computer/camera_advanced/base_construction{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"avR" = ( +/obj/structure/table/wood, +/obj/item/storage/firstaid/regular, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avS" = ( +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avT" = ( +/obj/docking_port/stationary{ + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; + id = "syndicate_ne"; + name = "northeast of station"; + width = 23 + }, +/turf/open/space, +/area/space/nearstation) +"avU" = ( +/obj/item/paper/crumpled, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/space/nearstation) +"avV" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avW" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avX" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"avY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"avZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/fore) +"awa" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/closed/wall, +/area/maintenance/fore) +"awb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awc" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awd" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Fore Maintenance APC"; + areastring = "/area/maintenance/fore"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awe" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awf" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awh" = ( +/obj/effect/landmark/blobstart, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"awi" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"awj" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"awk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"awl" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"awm" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"awn" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"awo" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Dorm 3" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"awp" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"awq" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"awr" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aws" = ( +/obj/structure/table/wood, +/obj/item/coin/silver, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"awt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"awu" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"awv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aww" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/security/brig) +"awx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awy" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"awz" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Fitness" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"awA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"awB" = ( +/obj/effect/landmark/start/assistant, +/obj/machinery/vr_sleeper, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"awC" = ( +/obj/structure/table, +/obj/item/paper/fluff/holodeck/disclaimer, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"awD" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awE" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awF" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awG" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awH" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awI" = ( +/obj/machinery/button/door{ + id = "maint2"; + name = "Blast Door Control B"; + pixel_x = -28; + pixel_y = 4 + }, +/obj/machinery/button/door{ + id = "maint1"; + name = "Blast Door Control A"; + pixel_x = -28; + pixel_y = -6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awJ" = ( +/obj/structure/janitorialcart, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awK" = ( +/obj/structure/table/glass, +/obj/item/pen, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awL" = ( +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awM" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"awN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"awO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"awP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"awQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering/abandoned{ + name = "Electrical Maintenance"; + req_access_txt = "11" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"awR" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"awS" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"awT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"awU" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) +"awV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"awW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"awY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"awZ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"axa" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"axb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/hallway/secondary/entry) +"axc" = ( +/obj/structure/rack, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/assault_pod/mining, +/obj/machinery/computer/security/telescreen/auxbase{ + dir = 8; + pixel_x = 30 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"axe" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axf" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axg" = ( +/obj/structure/table/glass, +/obj/item/storage/bag/trash, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"axi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axj" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axm" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axn" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"axo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"axr" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axs" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axu" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"axv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axw" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"axx" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"axy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) +"axz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) +"axA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/ai_monitored/storage/eva) +"axB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"axC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"axD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) +"axE" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"axF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"axG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"axH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"axI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"axK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"axL" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axM" = ( +/obj/structure/table/wood, +/obj/item/paicard, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axN" = ( +/obj/structure/table/wood, +/obj/item/storage/crayons, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axO" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axP" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck{ + pixel_x = 2 + }, +/obj/item/clothing/mask/balaclava{ + pixel_x = -8; + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"axR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Fitness" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"axS" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"axT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"axU" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"axV" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axW" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + icon_state = "left"; + name = "Fitness Ring" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"axX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axY" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"axZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aya" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ayb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ayc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ayd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aye" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ayf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ayg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ayh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayi" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayj" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"ayk" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ayl" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aym" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ayn" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ayo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ayp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ayq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"ayr" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"ays" = ( +/obj/structure/closet/wardrobe/white, +/obj/item/clothing/shoes/jackboots, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayt" = ( +/obj/structure/table/glass, +/obj/item/hemostat, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayu" = ( +/obj/structure/table/glass, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/reagent_containers/blood/random, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayv" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/radio/off, +/obj/item/assembly/timer, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayw" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayx" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"ayz" = ( +/turf/closed/wall/r_wall, +/area/maintenance/port/fore) +"ayA" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayB" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayC" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayD" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayE" = ( +/turf/closed/wall/r_wall, +/area/maintenance/fore) +"ayF" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayG" = ( +/turf/closed/wall/r_wall, +/area/gateway) +"ayH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayI" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"ayK" = ( +/obj/structure/closet/crate/rcd, +/obj/machinery/camera/motion{ + c_tag = "EVA Motion Sensor" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"ayL" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) +"ayM" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/item/clothing/head/welding, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayN" = ( +/obj/structure/rack, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/hand_labeler, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"ayO" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/screwdriver{ + pixel_y = 16 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"ayP" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "EVA Storage APC"; + areastring = "/area/ai_monitored/storage/eva"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayQ" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"ayR" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/multitool, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayS" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) +"ayT" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayV" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"ayW" = ( +/turf/closed/wall, +/area/ai_monitored/storage/eva) +"ayX" = ( +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/clothing/head/welding, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"ayY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"ayZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aza" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"azb" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"azc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"azd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aze" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"azf" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"azh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/vr_sleeper, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azi" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Garden Maintenance"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"azj" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azk" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azm" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azn" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"azp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"azq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/hydroponics/garden) +"azr" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"azs" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azt" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"azu" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"azv" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"azw" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"azx" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"azy" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 1" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"azz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"azA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"azB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"azC" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"azD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"azE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azF" = ( +/turf/closed/wall, +/area/hydroponics/garden) +"azG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"azH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/space, +/area/space/nearstation) +"azI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/space, +/area/space/nearstation) +"azJ" = ( +/obj/machinery/gateway{ + dir = 9 + }, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"azK" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"azL" = ( +/obj/machinery/gateway{ + dir = 5 + }, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"azM" = ( +/obj/machinery/gateway{ + dir = 1 + }, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"azN" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"azO" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"azQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance{ + name = "EVA Maintenance"; + req_access_txt = "18" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/fore) +"azR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage"; + req_access_txt = "18" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azT" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"azU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"azW" = ( +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azX" = ( +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"azY" = ( +/obj/structure/table, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"azZ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aAa" = ( +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aAb" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Dorm 2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aAc" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAd" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aAe" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAf" = ( +/obj/structure/closet/wardrobe/pjs, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aAg" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aAh" = ( +/turf/closed/wall, +/area/crew_quarters/toilet) +"aAi" = ( +/obj/structure/closet/wardrobe/pjs, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aAj" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Security Checkpoint APC"; + areastring = "/area/security/checkpoint/auxiliary"; + pixel_x = 1; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAl" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/reagent_dispensers/water_cooler, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAm" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAp" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAr" = ( +/obj/structure/closet, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAs" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAt" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAu" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAv" = ( +/obj/structure/closet, +/obj/effect/landmark/blobstart, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAw" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Garden APC"; + areastring = "/area/hydroponics/garden"; + pixel_x = 27; + pixel_y = 2 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aAy" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"aAz" = ( +/obj/machinery/computer/monitor{ + dir = 1; + name = "backup power monitoring console" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"aAA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/department/electrical) +"aAB" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"aAC" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"aAD" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"aAE" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aAF" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aAG" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aAH" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Bay 1 North"; + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aAI" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aAJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"aAK" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sink{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aAL" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Primary Tool Storage APC"; + areastring = "/area/storage/primary"; + pixel_x = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAN" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAP" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/grass, +/area/hydroponics/garden) +"aAQ" = ( +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aAR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aAS" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aAT" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aAU" = ( +/obj/structure/sink{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aAV" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAW" = ( +/obj/structure/rack, +/obj/item/tank/jetpack/carbondioxide/eva, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aAX" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aAY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aAZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aBa" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"aBb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"aBc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"aBd" = ( +/obj/machinery/gateway{ + dir = 8 + }, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aBe" = ( +/turf/open/floor/plasteel/dark, +/area/gateway) +"aBf" = ( +/obj/machinery/gateway{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aBg" = ( +/obj/machinery/gateway/centerstation, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aBh" = ( +/obj/machinery/camera{ + c_tag = "EVA Maintenance"; + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aBi" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Gateway APC"; + areastring = "/area/gateway"; + pixel_x = -24; + pixel_y = -1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"aBj" = ( +/obj/structure/rack, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/tank/jetpack/carbondioxide/eva, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) +"aBl" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance"; + req_access_txt = "1" + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aBm" = ( +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aBn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBo" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBp" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/magboots, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBq" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/magboots, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBs" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) +"aBt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) +"aBu" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aBv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aBw" = ( +/obj/item/seeds/apple, +/obj/item/seeds/banana, +/obj/item/seeds/cocoapod, +/obj/item/seeds/grape, +/obj/item/seeds/orange, +/obj/item/seeds/sugarcane, +/obj/item/seeds/wheat, +/obj/item/seeds/watermelon, +/obj/structure/table/glass, +/obj/item/seeds/tower, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aBx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/crew_quarters/toilet) +"aBy" = ( +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aBz" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aBA" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aBB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/starboard/fore) +"aBC" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aBE" = ( +/obj/item/clothing/under/rank/mailman, +/obj/item/clothing/head/mailman, +/obj/structure/closet, +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aBF" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aBG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aBH" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aBI" = ( +/turf/closed/wall, +/area/security/checkpoint/auxiliary) +"aBJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/checkpoint/auxiliary) +"aBK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/security/checkpoint/auxiliary) +"aBL" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Tool Storage Maintenance"; + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aBM" = ( +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aBN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/storage/primary) +"aBO" = ( +/obj/machinery/requests_console{ + department = "EVA"; + pixel_x = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBP" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aBQ" = ( +/turf/closed/wall, +/area/storage/primary) +"aBR" = ( +/turf/closed/wall/r_wall, +/area/storage/primary) +"aBS" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aBT" = ( +/obj/machinery/computer/bank_machine, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aBU" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Vault APC"; + areastring = "/area/ai_monitored/nuke_storage"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aBV" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aBW" = ( +/obj/structure/filingcabinet, +/obj/item/folder/documents, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aBX" = ( +/obj/machinery/gateway{ + dir = 10 + }, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aBY" = ( +/obj/machinery/gateway{ + dir = 6 + }, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aBZ" = ( +/obj/machinery/gateway, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aCa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aCb" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/item/pen{ + desc = "Writes upside down!"; + name = "astronaut pen" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aCc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aCd" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/cryopod, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"aCe" = ( +/obj/effect/landmark/xeno_spawn, +/obj/item/bikehorn/rubberducky, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aCf" = ( +/obj/machinery/camera{ + c_tag = "Theatre Storage" + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"aCg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aCh" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"aCi" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) +"aCj" = ( +/obj/machinery/camera{ + c_tag = "EVA East"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aCk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCm" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aCn" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aCo" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCp" = ( +/obj/machinery/camera{ + c_tag = "Arrivals North"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"aCq" = ( +/obj/structure/table/wood, +/obj/machinery/requests_console{ + department = "Theatre"; + departmentType = 0; + name = "theatre RC"; + pixel_x = -32 + }, +/obj/item/reagent_containers/food/snacks/baguette, +/obj/item/toy/dummy, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"aCr" = ( +/turf/closed/wall, +/area/crew_quarters/theatre) +"aCs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aCt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"aCv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"aCw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"aCy" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCz" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCA" = ( +/obj/structure/grille/broken, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/window{ + dir = 4 + }, +/obj/structure/window, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/fore) +"aCB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/starboard/fore) +"aCC" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCD" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint1" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/starboard/fore) +"aCF" = ( +/obj/structure/girder, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCH" = ( +/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCK" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCL" = ( +/obj/structure/closet/secure_closet/security, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aCM" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCN" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aCO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aCP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aCQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aCR" = ( +/turf/closed/wall, +/area/chapel/main) +"aCT" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"aCW" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aCX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"aCY" = ( +/obj/machinery/computer/security, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 30 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aCZ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aDa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aDb" = ( +/obj/structure/table, +/obj/item/wirecutters, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDc" = ( +/obj/machinery/computer/card, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aDd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDf" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = 30 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aDg" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aDh" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDi" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aDj" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aDk" = ( +/obj/structure/table, +/obj/item/assembly/igniter{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/assembly/igniter, +/obj/item/screwdriver{ + pixel_y = 16 + }, +/obj/machinery/camera{ + c_tag = "Primary Tool Storage" + }, +/obj/machinery/requests_console{ + department = "Tool Storage"; + departmentType = 0; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDl" = ( +/obj/structure/table, +/obj/item/t_scanner, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDm" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDn" = ( +/obj/structure/table, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/item/multitool, +/obj/item/multitool{ + pixel_x = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDo" = ( +/turf/open/floor/plasteel, +/area/storage/primary) +"aDp" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDq" = ( +/obj/machinery/vending/tool, +/turf/open/floor/plasteel, +/area/storage/primary) +"aDr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aDs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aDt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aDv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aDw" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aDx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/window{ + name = "Gateway Chamber"; + req_access_txt = "62" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aDy" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"aDz" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aDA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aDB" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aDC" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aDD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aDE" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "EVA Storage"; + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aDF" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aDG" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Dormitory South"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aDH" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/folder/white, +/obj/item/stamp/rd{ + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"aDI" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) +"aDK" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryogenics " + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/cryopod) +"aDL" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDN" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDR" = ( +/obj/structure/table/wood, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/item/lipstick/random{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/lipstick/random{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"aDS" = ( +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDT" = ( +/obj/machinery/light/small, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aDV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aDW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aDX" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aDY" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/mime, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"aDZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEb" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Theatre Maintenance"; + req_access_txt = "46" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEc" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"aEd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEe" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Chapel APC"; + areastring = "/area/chapel/main"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aEi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Chapel Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aEk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aEl" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEm" = ( +/obj/machinery/door/window{ + dir = 8; + name = "Mass Driver"; + req_access_txt = "22" + }, +/obj/machinery/mass_driver{ + dir = 4; + id = "chapelgun"; + name = "Holy Driver" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/chapel/main) +"aEn" = ( +/obj/machinery/door/poddoor{ + id = "chapelgun"; + name = "Chapel Launcher Door" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/chapel/main) +"aEz" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Entry Hall APC"; + areastring = "/area/hallway/secondary/entry"; + pixel_x = 24 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"aEA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + sortType = 18 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEB" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aED" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aEE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aEF" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/snacks/grown/wheat, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/citrus/orange, +/obj/item/reagent_containers/food/snacks/grown/grapes, +/obj/item/reagent_containers/food/snacks/grown/cocoapod, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aEG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aEH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aEI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aEJ" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aEK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aEL" = ( +/obj/machinery/door/airlock{ + name = "Garden" + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aEM" = ( +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aEN" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/structure/closet/crate/goldcrate, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aEO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aEP" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/structure/closet/crate/silvercrate, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aEQ" = ( +/obj/structure/table, +/obj/item/paper/pamphlet/gateway, +/turf/open/floor/plasteel, +/area/gateway) +"aER" = ( +/obj/machinery/camera{ + c_tag = "Gateway"; + dir = 4 + }, +/obj/structure/table, +/obj/structure/sign/warning/biohazard{ + pixel_x = -32 + }, +/obj/item/storage/firstaid/regular, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aES" = ( +/obj/structure/table, +/obj/item/radio/off{ + pixel_y = 6 + }, +/obj/item/radio/off{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/radio/off{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/radio/off, +/turf/open/floor/plasteel, +/area/gateway) +"aET" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aEU" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/sign/warning/biohazard{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aEV" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aEW" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) +"aEX" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage"; + req_access_txt = "18" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aEY" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) +"aEZ" = ( +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"aFa" = ( +/obj/machinery/suit_storage_unit/cmo, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"aFb" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"aFc" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) +"aFd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aFe" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aFf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aFg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/toilet) +"aFh" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aFi" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Dormitory Bathrooms APC"; + areastring = "/area/crew_quarters/toilet"; + pixel_x = 26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aFj" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aFk" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aFl" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/dresser, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aFm" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFp" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFq" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"aFr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFu" = ( +/turf/closed/wall, +/area/library) +"aFv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFw" = ( +/turf/closed/wall, +/area/chapel/office) +"aFx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aFy" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Chapel Office APC"; + areastring = "/area/chapel/office"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/chapel/office) +"aFz" = ( +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aFA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/computer/pod/old{ + density = 0; + icon = 'icons/obj/airlock_machines.dmi'; + icon_state = "airlock_control_standby"; + id = "chapelgun"; + name = "Mass Driver Controller"; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aFB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aFG" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"aFH" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aFI" = ( +/obj/machinery/camera{ + c_tag = "Security Checkpoint"; + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light_switch{ + pixel_x = 6; + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aFJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aFK" = ( +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aFL" = ( +/obj/item/radio/off, +/obj/item/crowbar, +/obj/item/assembly/flash/handheld, +/obj/structure/table, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aFM" = ( +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aFN" = ( +/obj/structure/table/glass, +/obj/item/cultivator, +/obj/item/hatchet, +/obj/item/crowbar, +/obj/item/plant_analyzer, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aFO" = ( +/obj/machinery/camera{ + c_tag = "Garden"; + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aFP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aFQ" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/screwdriver{ + pixel_y = 16 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aFR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aFS" = ( +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/storage/primary) +"aFT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aFU" = ( +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aFV" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aFW" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/gateway) +"aFX" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aFY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aFZ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aGa" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aGb" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/machinery/ore_silo, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aGc" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/camera/motion{ + c_tag = "Vault"; + dir = 1; + network = list("vault") + }, +/obj/machinery/light, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aGd" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aGe" = ( +/obj/structure/safe, +/obj/item/clothing/head/bearpelt, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/gun/ballistic/revolver/russian, +/obj/item/ammo_box/a357, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aGf" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aGg" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aGh" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/fore) +"aGi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"aGj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"aGk" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aGl" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aGm" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aGn" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aGo" = ( +/obj/structure/table, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/item/stack/rods/fifty, +/obj/item/stack/rods/fifty, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aGp" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aGq" = ( +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aGr" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/clown, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aGs" = ( +/obj/machinery/suit_storage_unit/rd, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"aGt" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aGu" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aGv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/theatre) +"aGw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/freezer/cream_pie, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aGx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/toilet) +"aGy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGz" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGA" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + sortType = 19 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + sortType = 20 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGC" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGD" = ( +/obj/structure/table/wood, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/item/flashlight/lamp/bananalamp{ + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aGE" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGF" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortType = 17 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Library Maintenance"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGI" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGM" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Crematorium Maintenance"; + req_access_txt = "27" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/chapel/office) +"aGP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGS" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGU" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + pixel_y = 30 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aGV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aGX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"aGY" = ( +/obj/machinery/airalarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aGZ" = ( +/obj/machinery/door/airlock/security{ + name = "Security Checkpoint"; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"aHa" = ( +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/item/paper, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Security Checkpoint"; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aHb" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/stack/packageWrap, +/turf/open/floor/wood, +/area/library) +"aHc" = ( +/obj/machinery/vending/games, +/turf/open/floor/wood, +/area/library) +"aHd" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/wood, +/area/library) +"aHe" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"aHf" = ( +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/machinery/vending/wardrobe/chap_wardrobe, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aHg" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/camera{ + c_tag = "Chapel Office"; + dir = 2 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aHh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aHi" = ( +/obj/structure/closet/crate/coffin, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aHj" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aHk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aHl" = ( +/obj/structure/closet/crate/coffin, +/obj/machinery/door/window/eastleft{ + name = "Coffin Storage"; + req_access_txt = "22" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aHm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aHn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aHo" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/snacks/grown/poppy, +/obj/item/reagent_containers/food/snacks/grown/harebell, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/chapel/main) +"aHp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aHq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/chapel/main) +"aHu" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/hallway/secondary/entry) +"aHv" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aHw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"aHx" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aHy" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint/auxiliary) +"aHz" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aHA" = ( +/obj/item/reagent_containers/spray/plantbgone, +/obj/item/reagent_containers/spray/pestspray{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = 2; + pixel_y = 1 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aHB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"aHC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"aHD" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/storage/primary) +"aHE" = ( +/obj/structure/table, +/obj/item/weldingtool, +/obj/item/crowbar, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel, +/area/storage/primary) +"aHF" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"aHG" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/vault{ + req_access_txt = "53" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"aHH" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitory" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aHI" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aHJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aHK" = ( +/obj/structure/closet/secure_closet/freezer/cream_pie, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aHL" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/closet/l3closet/scientist, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aHM" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall, +/area/crew_quarters/bar) +"aHN" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/crowbar, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aHO" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aHP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aHQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aHR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aHS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Bar Storage Maintenance"; + req_access_txt = "25" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aHT" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitory" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aHU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aHV" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aHW" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aHX" = ( +/obj/machinery/door/airlock{ + name = "Unit B" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aHY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aHZ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/closet/crate/wooden/toy, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aIa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIb" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Theatre APC"; + areastring = "/area/crew_quarters/theatre"; + pixel_x = -25 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIc" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Bar APC"; + areastring = "/area/crew_quarters/bar"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aId" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/bar) +"aIf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIg" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Bar" + }, +/obj/structure/plasticflaps/opaque, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/crew_quarters/bar) +"aIh" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Kitchen APC"; + areastring = "/area/crew_quarters/kitchen"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + sortType = 21 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIk" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIn" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Hydroponics APC"; + areastring = "/area/hydroponics"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIo" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aIp" = ( +/turf/closed/wall, +/area/hydroponics) +"aIq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/hydroponics) +"aIr" = ( +/obj/structure/filingcabinet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/library) +"aIs" = ( +/obj/structure/chair/office/dark, +/obj/machinery/camera{ + c_tag = "Library North"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"aIt" = ( +/turf/open/floor/wood, +/area/library) +"aIu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/wood, +/area/library) +"aIv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"aIw" = ( +/obj/structure/chair/office/dark, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"aIx" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/wood, +/area/library) +"aIy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aIz" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aIA" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/storage/crayons, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aIB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/bodycontainer/crematorium{ + id = "crematoriumChapel" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aIC" = ( +/obj/effect/landmark/start/chaplain, +/obj/structure/chair, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aID" = ( +/obj/structure/closet/crate/coffin, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aIE" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel/chapel, +/area/chapel/main) +"aIF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) +"aIH" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/pipe_dispenser, +/obj/machinery/button/door{ + id = "aux_base_shutters"; + name = "Public Shutters Control"; + pixel_x = 24; + req_one_access_txt = "32;47;48" + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"aII" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aIJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIM" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIN" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/analyzer, +/turf/open/floor/plasteel, +/area/storage/primary) +"aIO" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Lounge"; + dir = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIP" = ( +/obj/structure/sign/map/left{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIR" = ( +/obj/structure/sign/map/right{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aIS" = ( +/obj/structure/table/glass, +/obj/item/hatchet, +/obj/item/cultivator, +/obj/item/crowbar, +/obj/item/reagent_containers/glass/bucket, +/obj/item/plant_analyzer, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aIT" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/structure/table/glass, +/obj/item/plant_analyzer, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = -25 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aIU" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/storage/primary) +"aIV" = ( +/obj/machinery/button/door{ + id = "stationawaygate"; + name = "Gateway Access Shutter Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "31" + }, +/turf/open/floor/plasteel, +/area/gateway) +"aIW" = ( +/obj/structure/table, +/obj/item/crowbar, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/clothing/gloves/color/fyellow, +/turf/open/floor/plasteel, +/area/storage/primary) +"aIX" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/storage/primary) +"aIY" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/storage/primary) +"aIZ" = ( +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel, +/area/storage/primary) +"aJa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aJb" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/storage/primary) +"aJc" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel, +/area/storage/primary) +"aJd" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port) +"aJe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/port) +"aJf" = ( +/obj/machinery/camera{ + c_tag = "EVA South"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aJg" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJh" = ( +/turf/open/floor/plasteel, +/area/gateway) +"aJi" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/exile, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aJj" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/extinguisher, +/obj/item/extinguisher, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aJk" = ( +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"aJl" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"aJm" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aJn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/central) +"aJo" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Central Hallway North"; + dir = 2 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJp" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJq" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJr" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJs" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJt" = ( +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = 32; + pixel_y = 40 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_x = 32; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJu" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJv" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"aJw" = ( +/turf/closed/wall, +/area/hallway/primary/central) +"aJx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aJy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aJA" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance"; + req_access_txt = "28" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aJB" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access_txt = "35" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aJC" = ( +/turf/closed/wall, +/area/crew_quarters/bar) +"aJD" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Bar Maintenance"; + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aJE" = ( +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/gun/ballistic/revolver/doublebarrel, +/obj/structure/table/wood, +/obj/item/stack/spacecash/c10, +/obj/item/stack/spacecash/c100, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aJF" = ( +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"aJG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/button/crematorium{ + id = "crematoriumChapel"; + pixel_x = 25 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aJH" = ( +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 2; + icon_state = "left"; + name = "Bar Delivery"; + req_access_txt = "25" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aJI" = ( +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aJJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aJK" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Kitchen" + }, +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/crew_quarters/kitchen) +"aJL" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Hydroponics" + }, +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/hydroponics) +"aJM" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_y = 10 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aJN" = ( +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people, +/obj/item/paper/guides/jobs/hydroponics, +/turf/open/floor/plasteel, +/area/hydroponics) +"aJO" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel, +/area/hydroponics) +"aJP" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow, +/obj/item/pen, +/turf/open/floor/wood, +/area/library) +"aJQ" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"aJR" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"aJS" = ( +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"aJT" = ( +/obj/structure/table/wood, +/obj/item/nullrod, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aJU" = ( +/obj/structure/table/wood, +/obj/item/pen, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aJV" = ( +/obj/structure/closet/crate/coffin, +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Coffin Storage"; + req_access_txt = "22" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aJW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aJX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aJY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aJZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Primary Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/storage/primary) +"aKa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Primary Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/storage/primary) +"aKb" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/hallway/primary/port) +"aKc" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Gateway Access"; + req_access_txt = "62" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aKd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "stationawaygate"; + name = "Gateway Access Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aKe" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/chapel/main) +"aKf" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Auxillary Base Construction APC"; + areastring = "/area/construction/mining/aux_base"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aKj" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aKk" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aKl" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aKm" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Garden" + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden) +"aKn" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/hydroponics/garden) +"aKo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aKp" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/storage/primary) +"aKq" = ( +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/machinery/camera{ + c_tag = "Theatre Stage"; + dir = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aKr" = ( +/obj/machinery/airalarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aKs" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/storage/primary) +"aKt" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port) +"aKu" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port) +"aKv" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port) +"aKw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/port) +"aKx" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port) +"aKy" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore) +"aKz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aKA" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "stationawaygate"; + name = "Gateway Access Shutters" + }, +/turf/open/floor/plasteel, +/area/gateway) +"aKB" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/gateway) +"aKC" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aKD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKE" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aKF" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aKG" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"aKH" = ( +/obj/structure/sink{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKI" = ( +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKJ" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aKK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKL" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Hydroponics Storage" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/plantgenes{ + pixel_y = 6 + }, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aKN" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aKO" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aKP" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aKQ" = ( +/obj/machinery/reagentgrinder, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aKR" = ( +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aKS" = ( +/obj/machinery/camera{ + c_tag = "Bar Storage" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aKT" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aKU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKV" = ( +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 2; + icon_state = "left"; + name = "Kitchen Delivery"; + req_access_txt = "28" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/kitchen) +"aKW" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKX" = ( +/obj/machinery/door/window/eastright{ + name = "Hydroponics Delivery"; + req_access_txt = "35" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/hydroponics) +"aKY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"aKZ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera{ + c_tag = "Chapel Crematorium"; + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aLa" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aLb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Crematorium"; + req_access_txt = "27" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aLc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aLd" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 3 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/watertank, +/turf/open/floor/plasteel, +/area/hydroponics) +"aLe" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aLf" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/wood, +/area/library) +"aLg" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/library) +"aLh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"aLi" = ( +/obj/structure/chair/comfy/beige, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aLj" = ( +/obj/structure/chair/comfy/beige, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aLk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLl" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLm" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLn" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/office) +"aLp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aLt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/port/fore) +"aLu" = ( +/obj/machinery/door/airlock/engineering{ + name = "Auxillary Base Construction"; + req_one_access_txt = "32;47;48" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"aLv" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aLw" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"aLx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLy" = ( +/obj/structure/chair/comfy/beige, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aLz" = ( +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aLA" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aLB" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aLC" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/dark, +/area/hallway/secondary/entry) +"aLD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aLE" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLF" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLG" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + name = "Port Hall APC"; + areastring = "/area/hallway/primary/port"; + dir = 1; + pixel_y = 26 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLI" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLK" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLL" = ( +/obj/machinery/camera{ + c_tag = "Port Hallway 2"; + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLM" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLQ" = ( +/obj/machinery/camera{ + c_tag = "Central Hallway North-East"; + dir = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLR" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aLT" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aLU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aLV" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLW" = ( +/obj/machinery/camera{ + c_tag = "Central Hallway North-West"; + dir = 2 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLX" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLY" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aLZ" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L3" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMa" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMb" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L7" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMc" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L5" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMd" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L11" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMe" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L9" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMf" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L13" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMi" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aMj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMk" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aMl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aMm" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMn" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMo" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aMp" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aMq" = ( +/obj/structure/piano{ + icon_state = "piano" + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aMr" = ( +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aMs" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = -31 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMu" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aMv" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aMw" = ( +/obj/machinery/computer/slot_machine, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aMx" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aMy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMB" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aMC" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aMD" = ( +/obj/machinery/icecream_vat, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aME" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMF" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aMG" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/shovel/spade, +/obj/item/wrench, +/obj/item/reagent_containers/glass/bucket, +/obj/item/wirecutters, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMH" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"aMI" = ( +/obj/machinery/light/small, +/obj/machinery/vending/wardrobe/hydro_wardrobe, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMJ" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"aMK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aML" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aMM" = ( +/obj/machinery/camera{ + c_tag = "Chapel North"; + dir = 2 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aMN" = ( +/obj/machinery/chem_master/condimaster, +/turf/open/floor/plasteel, +/area/hydroponics) +"aMO" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/chips, +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/hallway/secondary/entry) +"aMP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/hallway/secondary/entry) +"aMQ" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMR" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMW" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aMX" = ( +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aMY" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aMZ" = ( +/turf/closed/wall, +/area/hallway/secondary/exit) +"aNa" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aNb" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aNc" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNd" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aNe" = ( +/turf/open/floor/carpet, +/area/hallway/secondary/entry) +"aNf" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aNg" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/dark, +/area/hallway/secondary/entry) +"aNh" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aNi" = ( +/turf/open/floor/goonplaque, +/area/hallway/secondary/entry) +"aNj" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=CHW"; + location = "Lockers" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNk" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNl" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNo" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNp" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aNu" = ( +/obj/structure/closet/secure_closet/bar{ + req_access_txt = "25" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aNv" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNw" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNx" = ( +/obj/effect/landmark/observer_start, +/obj/effect/turf_decal/plaque{ + icon_state = "L8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNy" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Lockers"; + location = "EVA" + }, +/obj/effect/turf_decal/plaque{ + icon_state = "L6" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNz" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L12" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNA" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Security"; + location = "EVA2" + }, +/obj/effect/turf_decal/plaque{ + icon_state = "L10" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNB" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L14" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aNC" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=EVA2"; + location = "Dorm" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aND" = ( +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/cable_coil, +/obj/item/flashlight/lamp, +/obj/item/flashlight/lamp/green, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aNE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aNF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aNG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aNH" = ( +/obj/machinery/door/window{ + dir = 4; + name = "Theatre Stage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aNI" = ( +/obj/machinery/computer/slot_machine, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aNJ" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aNK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/mob/living/simple_animal/hostile/retaliate/goat{ + name = "Pete" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aNL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/hydroponics) +"aNM" = ( +/obj/structure/kitchenspike, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aNN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Hydroponics"; + req_access_txt = "35" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hydroponics) +"aNO" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/vending/wardrobe/chef_wardrobe, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aNP" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"aNQ" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/hydroponics) +"aNR" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/hallway/secondary/entry) +"aNS" = ( +/obj/machinery/bookbinder, +/turf/open/floor/wood, +/area/library) +"aNT" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Port Hallway"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aNV" = ( +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/library) +"aNW" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Office"; + req_access_txt = "22" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aNX" = ( +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1480; + name = "Confessional Intercom"; + pixel_x = 25 + }, +/obj/structure/chair, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aNY" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth (Chaplain)"; + req_access_txt = "22" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aNZ" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aOa" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aOb" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aOc" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aOd" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aOe" = ( +/obj/item/beacon, +/obj/machinery/camera{ + c_tag = "Arrivals Bay 1 South" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aOf" = ( +/obj/machinery/vending/snack/random, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aOg" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aOh" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aOi" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOj" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes{ + pixel_y = 2 + }, +/obj/item/lighter/greyscale{ + pixel_x = 4; + pixel_y = 2 + }, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aOk" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/plasteel/dark, +/area/hallway/secondary/entry) +"aOl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOm" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOn" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOo" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOp" = ( +/obj/machinery/camera{ + c_tag = "Port Hallway 3"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOq" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOr" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOx" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOz" = ( +/obj/structure/sign/directions/security{ + dir = 4; + pixel_x = 32; + pixel_y = -24 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_x = 32; + pixel_y = -32 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = -40 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aOC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aOD" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=QM"; + location = "CHW" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aOE" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aOF" = ( +/obj/machinery/light, +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aOG" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, +/obj/machinery/door/firedoor, +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aOH" = ( +/obj/structure/window/reinforced, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aOI" = ( +/obj/structure/kitchenspike, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aOJ" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aOK" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/crew_quarters/bar) +"aOL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aOM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aON" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aOO" = ( +/obj/machinery/door/airlock{ + name = "Bar Storage"; + req_access_txt = "25" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aOP" = ( +/obj/effect/landmark/blobstart, +/obj/item/toy/beach_ball/holoball, +/turf/open/floor/plating, +/area/crew_quarters/bar) +"aOQ" = ( +/obj/machinery/requests_console{ + department = "Hydroponics"; + departmentType = 2; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aOR" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aOS" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"aOT" = ( +/obj/machinery/gibber, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aOU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aOV" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aOW" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/camera{ + c_tag = "Hydroponics North"; + dir = 2 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aOX" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aOY" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aOZ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aPa" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aPb" = ( +/obj/structure/bookcase/random/religion, +/turf/open/floor/wood, +/area/library) +"aPc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aPd" = ( +/obj/structure/bookcase/random/reference, +/turf/open/floor/wood, +/area/library) +"aPe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aPf" = ( +/obj/machinery/computer/libraryconsole, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/library) +"aPg" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/open/floor/engine/cult, +/area/library) +"aPh" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen/invisible, +/turf/open/floor/engine/cult, +/area/library) +"aPi" = ( +/obj/structure/table/wood, +/obj/item/taperecorder, +/obj/item/camera, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/engine/cult, +/area/library) +"aPk" = ( +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/chapel/main) +"aPl" = ( +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/chapel/main) +"aPm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/chapel/main) +"aPn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/chapel/main) +"aPo" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aPp" = ( +/obj/machinery/camera{ + c_tag = "Escape Arm Holding Area"; + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aPq" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aPr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aPs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aPt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-20" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aPu" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aPv" = ( +/obj/item/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aPw" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/plaques/deempisi{ + pixel_x = -28; + pixel_y = -4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "barShutters"; + name = "bar shutters"; + pixel_x = 4; + pixel_y = 28 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aPx" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"aPy" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/dark, +/area/hallway/secondary/entry) +"aPz" = ( +/turf/closed/wall, +/area/maintenance/port) +"aPA" = ( +/turf/closed/wall, +/area/crew_quarters/locker) +"aPB" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aPC" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aPD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aPE" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/crew_quarters/locker) +"aPF" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/storage/art) +"aPG" = ( +/turf/closed/wall, +/area/storage/art) +"aPH" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Art Storage" + }, +/turf/open/floor/plasteel, +/area/storage/art) +"aPI" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"aPJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/storage/art) +"aPK" = ( +/turf/closed/wall, +/area/storage/emergency/port) +"aPL" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aPM" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aPN" = ( +/obj/structure/table, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aPO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"aPQ" = ( +/turf/closed/wall, +/area/storage/tools) +"aPR" = ( +/turf/closed/wall/r_wall, +/area/bridge) +"aPS" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/turf/open/floor/plating, +/area/bridge) +"aPT" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"aPU" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/status_display, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/turf/open/floor/plating, +/area/bridge) +"aPV" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/turf/open/floor/plating, +/area/bridge) +"aPW" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/status_display, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/turf/open/floor/plating, +/area/bridge) +"aPX" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/turf/open/floor/plating, +/area/bridge) +"aPY" = ( +/obj/structure/chair/stool, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aPZ" = ( +/obj/structure/table, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, +/obj/item/clothing/head/hardhat/cakehat, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aQa" = ( +/obj/structure/table, +/obj/item/kitchen/fork, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aQb" = ( +/obj/structure/window/reinforced, +/obj/structure/table/wood, +/obj/item/instrument/violin, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"aQc" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aQd" = ( +/obj/structure/chair, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aQe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/stool, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aQf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQg" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/preopen{ + id = "barShutters"; + name = "privacy shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/bar) +"aQh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQi" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aQj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aQk" = ( +/obj/machinery/door/airlock{ + name = "Kitchen cold room"; + req_access_txt = "28" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"aQl" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQm" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQp" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"aQq" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"aQr" = ( +/obj/machinery/light/small, +/obj/machinery/vending/wardrobe/curator_wardrobe, +/turf/open/floor/engine/cult, +/area/library) +"aQs" = ( +/obj/structure/destructible/cult/tome, +/obj/item/clothing/under/suit_jacket/red, +/obj/item/book/codex_gigas, +/turf/open/floor/engine/cult, +/area/library) +"aQt" = ( +/obj/effect/landmark/blobstart, +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/engine/cult, +/area/library) +"aQu" = ( +/turf/open/floor/plasteel/chapel, +/area/chapel/main) +"aQv" = ( +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/chapel/main) +"aQw" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aQx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/chapel, +/area/chapel/main) +"aQy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/chapel/main) +"aQz" = ( +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1480; + name = "Confessional Intercom"; + pixel_x = 25 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aQA" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aQB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aQC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aQD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQE" = ( +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aQF" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Security Escape Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aQG" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQH" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQI" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aQL" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port) +"aQM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/port) +"aQN" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQO" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQP" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQQ" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQR" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQS" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQT" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQU" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQV" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQW" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQX" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aQY" = ( +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel, +/area/storage/art) +"aQZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/turf/open/floor/plasteel, +/area/storage/art) +"aRa" = ( +/turf/open/floor/plasteel, +/area/storage/art) +"aRb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"aRc" = ( +/obj/machinery/door/airlock{ + name = "Port Emergency Storage" + }, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aRd" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aRe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/storage/tools) +"aRf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Auxiliary Tool Storage"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/storage/tools) +"aRg" = ( +/obj/machinery/vending/boozeomat, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aRh" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aRi" = ( +/obj/machinery/computer/atmos_alert, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRj" = ( +/obj/structure/table/reinforced, +/obj/item/storage/secure/briefcase, +/obj/item/storage/box/PDAs{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/ids, +/turf/open/floor/plasteel, +/area/bridge) +"aRk" = ( +/obj/machinery/computer/monitor{ + name = "bridge power monitoring console" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRl" = ( +/obj/machinery/computer/station_alert, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRm" = ( +/obj/machinery/computer/communications, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRn" = ( +/obj/machinery/computer/shuttle/labor, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRo" = ( +/obj/machinery/modular_computer/console/preset/command, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/computer/shuttle/mining, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRq" = ( +/obj/machinery/computer/med_data, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRr" = ( +/obj/machinery/computer/crew, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aRs" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/obj/item/assembly/timer, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/turf/open/floor/plasteel, +/area/bridge) +"aRt" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aRu" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/chair/stool, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aRv" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aRw" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aRx" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aRy" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRz" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aRA" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRB" = ( +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/machinery/camera{ + c_tag = "Kitchen"; + dir = 2 + }, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRC" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/machinery/food_cart, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aRF" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRG" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRH" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aRI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aRJ" = ( +/turf/open/floor/plasteel, +/area/hydroponics) +"aRK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Library APC"; + areastring = "/area/library"; + pixel_x = 24 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aRL" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Holding Area"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aRM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aRN" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood, +/area/library) +"aRO" = ( +/obj/structure/displaycase/trophy, +/turf/open/floor/wood, +/area/library) +"aRP" = ( +/obj/machinery/camera{ + c_tag = "Library South"; + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"aRQ" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access_txt = "37" + }, +/turf/open/floor/engine/cult, +/area/library) +"aRR" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aRS" = ( +/turf/open/floor/carpet, +/area/chapel/main) +"aRT" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/rack, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/electronics/apc, +/obj/item/electronics/airlock, +/turf/open/floor/plasteel, +/area/storage/tools) +"aRU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aRV" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Auxiliary Tool Storage APC"; + areastring = "/area/storage/tools"; + pixel_y = 24 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/turf/open/floor/plasteel, +/area/storage/tools) +"aRW" = ( +/obj/structure/sign/warning/docking, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aRX" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"aRY" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) +"aRZ" = ( +/turf/open/floor/plasteel/white/corner{ + dir = 8 + }, +/area/hallway/secondary/entry) +"aSa" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/camera{ + c_tag = "Auxiliary Tool Storage"; + dir = 2 + }, +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plasteel, +/area/storage/tools) +"aSb" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aSc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/storage/tools) +"aSd" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aSe" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aSf" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Hallway"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aSg" = ( +/turf/open/floor/plating, +/area/maintenance/port) +"aSh" = ( +/obj/structure/closet/wardrobe/mixed, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aSi" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aSk" = ( +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil, +/obj/item/paper_bin/construction, +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel, +/area/storage/art) +"aSl" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aSm" = ( +/turf/open/floor/plating, +/area/storage/emergency/port) +"aSn" = ( +/obj/item/extinguisher, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aSo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSp" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSq" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSr" = ( +/turf/open/floor/plasteel, +/area/storage/tools) +"aSs" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tools) +"aSt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/tools) +"aSu" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSv" = ( +/obj/structure/table/reinforced, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/bridge) +"aSw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSx" = ( +/obj/structure/chair{ + dir = 1; + name = "Engineering Station" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSy" = ( +/obj/structure/chair{ + dir = 1; + name = "Command Station" + }, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = 28; + pixel_y = -2; + req_access_txt = "19" + }, +/obj/machinery/keycard_auth{ + pixel_x = 29; + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSz" = ( +/obj/structure/table/reinforced, +/obj/item/aicard, +/obj/item/multitool, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSA" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSB" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSC" = ( +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSD" = ( +/obj/structure/chair{ + dir = 1; + name = "Crew Station" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aSE" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel, +/area/bridge) +"aSF" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/mob/living/carbon/monkey/punpun, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSG" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSH" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSI" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Kitchen"; + req_access_txt = "28" + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/kitchen) +"aSJ" = ( +/obj/effect/landmark/start/cook, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aSK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aSL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aSM" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aSN" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aSO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aSP" = ( +/obj/machinery/smartfridge, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aSQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSR" = ( +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aSS" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel, +/area/hydroponics) +"aST" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aSW" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/storage/tools) +"aSX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aSY" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/head/that{ + throwforce = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aSZ" = ( +/obj/effect/landmark/start/bartender, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aTb" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/library) +"aTc" = ( +/obj/machinery/door/window/northright{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Library Desk Door"; + req_access_txt = "37" + }, +/turf/open/floor/wood, +/area/library) +"aTd" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/library) +"aTe" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aTf" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/chapel, +/area/chapel/main) +"aTg" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/chapel/main) +"aTh" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/chapel, +/area/chapel/main) +"aTi" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/chapel/main) +"aTj" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aTk" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aTl" = ( +/obj/machinery/vending/cola/random, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"aTm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aTn" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Escape Airlock" + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aTo" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Escape Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"aTr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aTs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/security/vacantoffice) +"aTt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/vacantoffice) +"aTu" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aTv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aTw" = ( +/obj/structure/closet/wardrobe/green, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTx" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTz" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTA" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTB" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTC" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTD" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Locker Room East"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTE" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/turf/open/floor/plasteel, +/area/storage/art) +"aTF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/table, +/obj/item/camera_film, +/obj/item/camera, +/turf/open/floor/plasteel, +/area/storage/art) +"aTG" = ( +/obj/structure/table, +/obj/item/storage/crayons, +/obj/item/storage/crayons, +/turf/open/floor/plasteel, +/area/storage/art) +"aTH" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aTI" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aTJ" = ( +/obj/machinery/light/small, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aTK" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/storage/emergency/port) +"aTL" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plasteel, +/area/storage/tools) +"aTM" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/mint, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aTN" = ( +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aTO" = ( +/obj/structure/table, +/obj/item/book/manual/chef_recipes, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aTP" = ( +/obj/structure/rack, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/clothing/suit/hazardvest, +/obj/item/multitool, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plasteel, +/area/storage/tools) +"aTQ" = ( +/turf/closed/wall, +/area/bridge) +"aTR" = ( +/obj/machinery/computer/prisoner/management, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aTS" = ( +/obj/machinery/computer/secure_data, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aTT" = ( +/obj/machinery/computer/security, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aTU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/bridge) +"aTV" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/bridge) +"aTW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aTX" = ( +/turf/open/floor/plasteel, +/area/bridge) +"aTY" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aTZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/bridge) +"aUb" = ( +/obj/machinery/modular_computer/console/preset/engineering, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUc" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel, +/area/bridge) +"aUd" = ( +/obj/machinery/computer/security/mining, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUe" = ( +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUf" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera{ + c_tag = "Bar West"; + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aUg" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aUh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + name = "Hydroponics Desk"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/crew_quarters/kitchen) +"aUi" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aUj" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plasteel, +/area/hydroponics) +"aUk" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aUl" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUp" = ( +/obj/structure/table, +/obj/item/clothing/head/soft/grey{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUq" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUr" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUs" = ( +/obj/structure/table, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel, +/area/storage/tools) +"aUx" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aUy" = ( +/obj/machinery/camera{ + c_tag = "Vacant Office"; + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUz" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aUA" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUB" = ( +/obj/structure/bookcase/random/adult, +/turf/open/floor/wood, +/area/library) +"aUC" = ( +/obj/structure/chair/comfy/black, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/library) +"aUD" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/library) +"aUE" = ( +/obj/machinery/libraryscanner, +/turf/open/floor/wood, +/area/library) +"aUF" = ( +/obj/effect/landmark/start/librarian, +/obj/structure/chair/office/dark, +/turf/open/floor/wood, +/area/library) +"aUG" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aUH" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/chapel/main) +"aUI" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/chapel/main) +"aUJ" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/chapel/main) +"aUK" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/chapel/main) +"aUL" = ( +/obj/machinery/computer/arcade, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"aUM" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Bay 2"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aUN" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUO" = ( +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUP" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUQ" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUR" = ( +/obj/structure/table/wood, +/obj/item/pen/red, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aUT" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aUU" = ( +/obj/structure/closet/wardrobe/grey, +/obj/machinery/requests_console{ + department = "Locker Room"; + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUV" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUW" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aUX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUZ" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aVa" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/plasteel, +/area/storage/tools) +"aVb" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aVc" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/bridge) +"aVd" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"aVe" = ( +/obj/machinery/camera{ + c_tag = "Bridge West"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVg" = ( +/obj/structure/chair{ + dir = 1; + name = "Security Station" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVh" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Fore Primary Hallway APC"; + areastring = "/area/hallway/primary/fore"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/camera{ + c_tag = "Fore Primary Hallway"; + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aVi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVj" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVk" = ( +/obj/machinery/holopad, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVn" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVp" = ( +/obj/item/beacon, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVr" = ( +/obj/machinery/camera{ + c_tag = "Bridge East"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVs" = ( +/obj/structure/chair{ + dir = 1; + name = "Logistics Station" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aVt" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/bridge) +"aVu" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aVv" = ( +/obj/machinery/camera{ + c_tag = "Bridge East Entrance"; + dir = 2 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aVw" = ( +/obj/structure/table/wood/poker, +/obj/item/clothing/mask/cigarette/cigar, +/obj/item/toy/cards/deck, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aVx" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aVy" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aVz" = ( +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVA" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/reagent_containers/food/snacks/pie/cream, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVB" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5 + }, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVC" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aVD" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 3 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVE" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVF" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVH" = ( +/obj/machinery/processor, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aVI" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aVJ" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aVK" = ( +/obj/effect/landmark/start/botanist, +/turf/open/floor/plasteel, +/area/hydroponics) +"aVL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortType = 16 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aVM" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"aVN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aVO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aVP" = ( +/obj/structure/table/wood, +/obj/item/paper, +/turf/open/floor/wood, +/area/library) +"aVQ" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"aVR" = ( +/obj/structure/table/wood, +/obj/item/pen/red, +/obj/item/pen/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/library) +"aVS" = ( +/obj/structure/table/wood, +/obj/item/camera_film, +/obj/item/camera_film, +/turf/open/floor/wood, +/area/library) +"aVT" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/wood, +/area/library) +"aVU" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/chapel/main) +"aVV" = ( +/obj/machinery/camera{ + c_tag = "Chapel South"; + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"aVW" = ( +/obj/item/radio/intercom{ + pixel_x = -25 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"aVX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aVY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"aVZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"aWa" = ( +/obj/structure/sign/warning/vacuum/external, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"aWb" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"aWc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"aWd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/library) +"aWe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel" + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aWf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aWg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aWh" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aWi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aWj" = ( +/obj/structure/grille, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/window, +/turf/open/floor/plating, +/area/maintenance/port) +"aWk" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWl" = ( +/obj/structure/grille, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWm" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_x = -28 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aWn" = ( +/obj/structure/closet/wardrobe/black, +/obj/item/clothing/shoes/jackboots, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aWo" = ( +/obj/machinery/camera{ + c_tag = "Locker Room West"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aWp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aWq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aWr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aWs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aWt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aWu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWw" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Art Storage"; + areastring = "/area/storage/art"; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/toilet/locker) +"aWz" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Port Emergency Storage APC"; + areastring = "/area/storage/emergency/port"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aWB" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port) +"aWC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/warehouse) +"aWD" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/storage/tools) +"aWE" = ( +/obj/machinery/computer/med_data, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aWF" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/plasteel, +/area/storage/tools) +"aWG" = ( +/obj/machinery/computer/secure_data, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aWH" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aWI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/bridge) +"aWJ" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"aWL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWN" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/machinery/light, +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/bridge) +"aWQ" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWR" = ( +/obj/structure/fireaxecabinet{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWT" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge RC"; + pixel_y = -30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWV" = ( +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai_upload"; + name = "AI Upload turret control"; + pixel_y = -25 + }, +/obj/machinery/camera{ + c_tag = "Bridge Center"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWW" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 2; + name = "Bridge APC"; + areastring = "/area/bridge"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWX" = ( +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aWZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"aXa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aXb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/bridge) +"aXc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aXd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aXe" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aXf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aXg" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aXh" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aXi" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aXj" = ( +/obj/structure/table/reinforced, +/obj/item/lighter, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aXk" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/rag, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aXl" = ( +/obj/machinery/door/window/southright{ + name = "Bar Door"; + req_one_access_txt = "25;28" + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aXm" = ( +/obj/effect/landmark/start/cook, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aXn" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + pixel_x = 30 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aXo" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aXp" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"aXq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aXr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXs" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXt" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"aXv" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXx" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aXz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"aXA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aXB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aXC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aXD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"aXE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall, +/area/quartermaster/warehouse) +"aXF" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"aXG" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-05" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aXI" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"aXJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/quartermaster/warehouse) +"aXK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/security/detectives_office) +"aXL" = ( +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aXM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Warehouse Maintenance"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aXN" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aXO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aXP" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/maintenance/port) +"aXQ" = ( +/turf/closed/wall, +/area/crew_quarters/toilet/locker) +"aXR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aXS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/closed/wall, +/area/hydroponics) +"aXT" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"aXU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/library) +"aXV" = ( +/obj/machinery/holopad, +/turf/open/floor/carpet, +/area/library) +"aXW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aXX" = ( +/obj/machinery/door/airlock/engineering/abandoned{ + name = "Vacant Office A"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aXY" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aXZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aYa" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Port Maintenance APC"; + areastring = "/area/maintenance/port"; + pixel_x = -27; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aYb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aYc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/warehouse) +"aYd" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aYe" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"aYf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aYg" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"aYh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aYi" = ( +/obj/structure/closet/secure_closet/detective, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aYj" = ( +/obj/structure/table/wood, +/obj/item/taperecorder, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/button/door{ + id = "kanyewest"; + name = "Privacy Shutters"; + pixel_y = 24 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aYk" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYl" = ( +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYm" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYn" = ( +/obj/machinery/camera{ + c_tag = "Bridge West Entrance"; + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/bridge) +"aYp" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"aYq" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aYr" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aYs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aYt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYu" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aYv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload Access"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"aYx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYy" = ( +/obj/machinery/status_display/ai, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"aYC" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/filingcabinet/filingcabinet, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aYD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aYE" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYF" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Central Hall APC"; + areastring = "/area/hallway/primary/central"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYG" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aYH" = ( +/obj/structure/table, +/obj/item/razor, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"aYI" = ( +/obj/structure/chair/stool/bar, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aYJ" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aYK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Kitchen"; + req_access_txt = "28" + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/kitchen) +"aYL" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aYM" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/button/door{ + id = "kitchen"; + name = "Kitchen Shutters Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "28" + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aYN" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"aYO" = ( +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hydroponics) +"aYP" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/plasteel, +/area/hydroponics) +"aYQ" = ( +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aYR" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/botanist, +/turf/open/floor/plasteel, +/area/hydroponics) +"aYS" = ( +/obj/structure/closet, +/obj/item/clothing/under/suit_jacket/female{ + pixel_x = 3; + pixel_y = 1 + }, +/obj/item/clothing/under/suit_jacket/really_black{ + pixel_x = -2 + }, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"aYT" = ( +/obj/machinery/camera{ + c_tag = "Hydroponics South"; + dir = 8 + }, +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/plasteel, +/area/hydroponics) +"aYU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aYV" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aYW" = ( +/turf/open/floor/carpet, +/area/library) +"aYX" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aYY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"aYZ" = ( +/obj/structure/table/wood, +/obj/item/storage/box/evidence, +/obj/item/hand_labeler{ + pixel_x = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aZa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aZb" = ( +/obj/machinery/camera{ + c_tag = "Bar South"; + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aZc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"aZd" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-08" + }, +/turf/open/floor/wood, +/area/library) +"aZe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aZf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"aZg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"aZh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"aZi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aZj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"aZk" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aZl" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aZm" = ( +/obj/machinery/camera{ + c_tag = "Escape Arm Airlocks"; + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"aZn" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aZo" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"aZp" = ( +/obj/structure/rack, +/obj/item/electronics/apc, +/obj/item/stock_parts/cell{ + maxcharge = 2000 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"aZq" = ( +/obj/machinery/button/door{ + id = "heads_meeting"; + name = "Security Shutters"; + pixel_y = 24 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"aZr" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aZs" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aZt" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"aZu" = ( +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"aZv" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"aZw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"aZx" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"aZy" = ( +/obj/machinery/camera{ + c_tag = "Conference Room"; + dir = 2 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"aZz" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"aZA" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aZB" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aZC" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"aZD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"aZE" = ( +/turf/closed/wall, +/area/quartermaster/storage) +"aZF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/quartermaster/warehouse) +"aZG" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"aZH" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2" + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"aZI" = ( +/obj/structure/rack, +/obj/item/stack/sheet/cardboard, +/obj/item/stack/rods/fifty, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"aZJ" = ( +/obj/structure/table/wood, +/obj/item/camera/detective, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aZK" = ( +/turf/closed/wall, +/area/quartermaster/sorting) +"aZL" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aZM" = ( +/turf/closed/wall/r_wall, +/area/bridge/meeting_room) +"aZN" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aZO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/bridge/meeting_room) +"aZP" = ( +/turf/closed/wall, +/area/bridge/meeting_room) +"aZQ" = ( +/obj/machinery/door/airlock/command{ + name = "Conference Room"; + req_access_txt = "19" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"aZR" = ( +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"aZS" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"aZT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"aZU" = ( +/obj/machinery/porta_turret/ai{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"aZV" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/captain) +"aZW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/captain) +"aZX" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Office"; + req_access_txt = "20" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"aZY" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"aZZ" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"baa" = ( +/obj/machinery/computer/arcade, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bab" = ( +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bac" = ( +/obj/machinery/newscaster{ + pixel_y = -28 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bad" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bae" = ( +/obj/structure/noticeboard{ + pixel_y = -27 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"baf" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bag" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bah" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bai" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"baj" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"bak" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"bal" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"bam" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hydroponics) +"ban" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/northleft{ + name = "Hydroponics Desk"; + req_access_txt = "35" + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"bao" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bap" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Hydroponics Desk"; + req_access_txt = "35" + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"baq" = ( +/obj/machinery/status_display/ai{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bar" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bas" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/library) +"bat" = ( +/obj/structure/table/wood, +/obj/item/pen, +/turf/open/floor/wood, +/area/library) +"bau" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/library) +"bav" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"baw" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bax" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bay" = ( +/obj/structure/chair/comfy/black, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"baz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"baA" = ( +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/chapel/main) +"baB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"baC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"baD" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Escape Hallway APC"; + areastring = "/area/hallway/secondary/exit"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"baE" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"baF" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"baG" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"baH" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/security/vacantoffice) +"baI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"baJ" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"baK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"baL" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"baM" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Locker Restrooms APC"; + areastring = "/area/crew_quarters/toilet/locker"; + pixel_x = 27; + pixel_y = 2 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"baN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"baO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"baP" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"baQ" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"baR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"baS" = ( +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"baT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"baU" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"baV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Detective's Office"; + req_access_txt = "4" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"baW" = ( +/obj/item/storage/secure/safe{ + pixel_x = -23 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"baX" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/start/detective, +/turf/open/floor/carpet, +/area/security/detectives_office) +"baY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"baZ" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bba" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bbb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"bbc" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bbd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bbe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bbf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bbg" = ( +/obj/effect/landmark/blobstart, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bbh" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bbi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bbj" = ( +/obj/structure/table, +/obj/item/aiModule/reset, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bbk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bbl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"bbm" = ( +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bbn" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bbo" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bbp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bbq" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bbr" = ( +/obj/machinery/camera{ + c_tag = "Locker Room South"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"bbs" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"bbt" = ( +/obj/structure/closet/crate, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bbu" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Captain's Office APC"; + areastring = "/area/crew_quarters/heads/captain"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bbv" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bbw" = ( +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bbx" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Diner" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bby" = ( +/obj/structure/sign/barsign, +/turf/closed/wall, +/area/crew_quarters/bar) +"bbz" = ( +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/primary/starboard) +"bbA" = ( +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway 2"; + dir = 2 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/primary/starboard) +"bbB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Hydroponics"; + req_access_txt = "35" + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"bbC" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bbD" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/library) +"bbE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/library) +"bbF" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/chapel/main) +"bbG" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) +"bbH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bbI" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Vacant Office APC"; + areastring = "/area/security/vacantoffice"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bbJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bbK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bbL" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bbM" = ( +/obj/item/book/manual/wiki/security_space_law, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bbN" = ( +/obj/machinery/washing_machine, +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"bbO" = ( +/obj/machinery/washing_machine, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"bbP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bbQ" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 3 + }, +/obj/item/lighter, +/turf/open/floor/carpet, +/area/security/detectives_office) +"bbR" = ( +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bbS" = ( +/obj/structure/closet/crate, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bbT" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/security/detectives_office) +"bbU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Detective Maintenance"; + req_access_txt = "4" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bbV" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bbW" = ( +/obj/machinery/door/poddoor/preopen{ + id = "heads_meeting"; + name = "privacy shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge/meeting_room) +"bbX" = ( +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bbY" = ( +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/structure/table, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bbZ" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bca" = ( +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bcb" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcc" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bcd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bce" = ( +/obj/structure/table, +/obj/item/aiModule/supplied/quarantine, +/obj/machinery/camera/motion{ + dir = 4; + network = list("aiupload") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bcf" = ( +/obj/machinery/holopad, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bcg" = ( +/obj/structure/table, +/obj/item/aiModule/supplied/freeform, +/obj/structure/sign/plaques/kiddie{ + pixel_x = 32 + }, +/obj/machinery/camera/motion{ + dir = 8; + network = list("aiupload") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bch" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bci" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bck" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcl" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/disposal) +"bcm" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bcn" = ( +/obj/structure/displaycase/captain, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bco" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Dorm"; + location = "HOP2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bcp" = ( +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_x = 32; + pixel_y = 28 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = 32; + pixel_y = 36 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bcq" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcr" = ( +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcs" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bct" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bcu" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Locker Room Maintenance"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bcv" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/locker) +"bcx" = ( +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway 5"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bcy" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/hallway/secondary/exit) +"bcz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bcA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bcB" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bcC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bcD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"bcE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bcF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bcG" = ( +/obj/structure/table/wood, +/obj/machinery/computer/security/wooden_tv, +/turf/open/floor/carpet, +/area/security/detectives_office) +"bcH" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/carpet, +/area/security/detectives_office) +"bcI" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/port) +"bcJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/closet/crate/freezer, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bcK" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port) +"bcL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bcM" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bcN" = ( +/obj/item/folder/blue, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bcO" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bcP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bcQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bcR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bcS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bcT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/warehouse) +"bcU" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"bcV" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/filingcabinet, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"bcX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "heads_meeting"; + name = "privacy shutters" + }, +/turf/open/floor/plating, +/area/bridge/meeting_room) +"bcY" = ( +/obj/item/hand_labeler, +/obj/item/assembly/timer, +/obj/structure/table, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bcZ" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Command)" + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bda" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bdb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/hallway/primary/starboard) +"bdc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/white/corner{ + dir = 2 + }, +/area/hallway/primary/starboard) +"bdd" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bde" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bdf" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bdg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"bdh" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bdi" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bdj" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bdk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bdl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdn" = ( +/obj/machinery/camera{ + c_tag = "Central Hallway East"; + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bdo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bds" = ( +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway 4"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdu" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdv" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=HOP2"; + location = "Stbd" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdw" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bdx" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bdy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bdz" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bdA" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Cargo Escape Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"bdB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1; + sortType = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"bdF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bdG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bdH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bdI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bdJ" = ( +/obj/machinery/door/airlock{ + name = "Unit 3" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bdK" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bdL" = ( +/obj/effect/landmark/blobstart, +/obj/item/clothing/suit/ianshirt, +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/port) +"bdM" = ( +/obj/item/latexballon, +/turf/open/floor/plating, +/area/maintenance/port) +"bdN" = ( +/obj/machinery/door/airlock/medical{ + name = "Morgue"; + req_access_txt = "6" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bdO" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bdP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/science/robotics/mechbay) +"bdQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/disposal) +"bdR" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdS" = ( +/obj/structure/closet/crate/internals, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bdT" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Disposal APC"; + areastring = "/area/maintenance/disposal"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bdU" = ( +/obj/structure/closet/crate/medical, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bdW" = ( +/obj/item/clothing/gloves/color/rainbow, +/obj/item/clothing/head/soft/rainbow, +/obj/item/clothing/shoes/sneakers/rainbow, +/obj/item/clothing/under/color/rainbow, +/turf/open/floor/plating, +/area/maintenance/port) +"bdX" = ( +/obj/item/storage/fancy/donut_box, +/obj/structure/table, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bdY" = ( +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/bridge/meeting_room) +"bdZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bea" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"beb" = ( +/obj/structure/table, +/obj/item/aiModule/core/full/asimov, +/obj/item/aiModule/core/freeformcore, +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Core Modules"; + req_access_txt = "20" + }, +/obj/structure/window/reinforced, +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/effect/spawner/lootdrop/aimodule_neutral, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/aiModule/core/full/custom, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bec" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bed" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 2; + name = "Upload APC"; + areastring = "/area/ai_monitored/turret_protected/ai_upload"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"bee" = ( +/obj/machinery/computer/upload/ai{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_y = -21 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"bef" = ( +/obj/machinery/computer/upload/borg{ + dir = 1 + }, +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "Station Intercom (AI Private)"; + pixel_y = -29 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"beg" = ( +/obj/structure/table, +/obj/item/aiModule/supplied/oxygen, +/obj/item/aiModule/zeroth/oneHuman, +/obj/machinery/door/window{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "High-Risk Modules"; + req_access_txt = "20" + }, +/obj/item/aiModule/reset/purge, +/obj/structure/window/reinforced, +/obj/effect/spawner/lootdrop/aimodule_harmful, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/aiModule/supplied/protectStation, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"beh" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"bei" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bej" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bek" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bel" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bem" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"ben" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Captain's Office"; + dir = 8 + }, +/obj/item/storage/lockbox/medal, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"beo" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Stbd"; + location = "HOP" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bep" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"beq" = ( +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_x = 32; + pixel_y = -24 + }, +/obj/structure/sign/directions/science{ + dir = 4; + pixel_x = 32; + pixel_y = -32 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = -40 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"ber" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bes" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bet" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"beu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bev" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bew" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bex" = ( +/obj/machinery/button/door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bey" = ( +/turf/open/floor/plasteel/white/corner{ + dir = 8 + }, +/area/hallway/primary/starboard) +"bez" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"beA" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2" + }, +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"beB" = ( +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway 3"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"beC" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"beD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"beE" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"beF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"beG" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"beH" = ( +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/machinery/light, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/exit) +"beI" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/exit) +"beJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/corner{ + dir = 8 + }, +/area/hallway/secondary/exit) +"beK" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 4" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"beL" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 3" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"beM" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"beN" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"beO" = ( +/turf/closed/wall, +/area/maintenance/disposal) +"beP" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"beQ" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"beR" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/machinery/recycler, +/obj/structure/sign/warning/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"beS" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"beT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/disposal) +"beU" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"beV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/sorting) +"beW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/table/reinforced, +/obj/item/stack/wrapping_paper{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/stack/packageWrap{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"beX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"beY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"beZ" = ( +/obj/machinery/mineral/stacking_unit_console{ + dir = 2; + machinedir = 8 + }, +/turf/closed/wall, +/area/maintenance/disposal) +"bfa" = ( +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bfb" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/chapel/main) +"bfc" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Locker Room APC"; + areastring = "/area/crew_quarters/locker"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bfd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bfe" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bff" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bfg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/stack/sheet/cardboard, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bfh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/port) +"bfi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bfj" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bfk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Cargo Bay APC"; + areastring = "/area/quartermaster/storage"; + pixel_x = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bfl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bfm" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/office) +"bfn" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bfo" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bfp" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge RC"; + pixel_y = -30 + }, +/obj/machinery/light, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bfq" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bfr" = ( +/obj/structure/noticeboard{ + dir = 8; + pixel_x = 27 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bfs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bft" = ( +/obj/machinery/status_display/ai, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bfu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bfv" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bfw" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bfx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bfy" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bfz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"bfA" = ( +/obj/structure/table/wood, +/obj/item/hand_tele, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bfB" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/stamp/captain, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bfC" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bfD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bfE" = ( +/obj/structure/table/wood, +/obj/item/pinpointer/nuke, +/obj/item/disk/nuclear, +/obj/item/storage/secure/safe{ + pixel_x = 35; + pixel_y = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bfF" = ( +/turf/closed/wall, +/area/medical/chemistry) +"bfG" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/medbay/central) +"bfH" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall, +/area/medical/medbay/central) +"bfI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bfJ" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bfK" = ( +/turf/closed/wall, +/area/security/checkpoint/medical) +"bfL" = ( +/turf/closed/wall, +/area/medical/morgue) +"bfM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bfN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bfO" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bfP" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Starboard Primary Hallway APC"; + areastring = "/area/hallway/primary/starboard"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bfQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bfR" = ( +/obj/structure/table/reinforced, +/obj/item/hand_labeler{ + pixel_y = 8 + }, +/obj/item/hand_labeler{ + pixel_y = 8 + }, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/storage/box, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bfS" = ( +/turf/closed/wall, +/area/storage/emergency/starboard) +"bfT" = ( +/turf/closed/wall, +/area/science/robotics/mechbay) +"bfU" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bfV" = ( +/turf/closed/wall/r_wall, +/area/science/robotics/lab) +"bfW" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-13" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bfX" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bfY" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bfZ" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bga" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bgb" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bgc" = ( +/turf/closed/wall/r_wall, +/area/science/lab) +"bgd" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/exit) +"bge" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/hallway/secondary/exit) +"bgf" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bgg" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"bgh" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"bgi" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Bay 3 & 4"; + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"bgj" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bgk" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bgm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bgn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bgo" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Mech Bay APC"; + areastring = "/area/science/robotics/mechbay"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"bgp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/science/research) +"bgq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bgr" = ( +/obj/machinery/door/airlock{ + name = "Unit 4" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bgs" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bgt" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port) +"bgu" = ( +/obj/machinery/button/door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -1; + pixel_y = 24; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bgv" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/quartermaster/office) +"bgw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bgy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/quartermaster/warehouse) +"bgz" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bgA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bgB" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/closed/wall, +/area/quartermaster/sorting) +"bgC" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/closed/wall, +/area/quartermaster/sorting) +"bgD" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "packageSort2" + }, +/obj/machinery/camera{ + c_tag = "Cargo Delivery Office"; + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bgE" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bgF" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bgG" = ( +/obj/machinery/camera{ + c_tag = "Central Hallway West"; + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bgH" = ( +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Bridge Delivery"; + req_access_txt = "19" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/bridge/meeting_room) +"bgI" = ( +/obj/machinery/computer/slot_machine, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bgJ" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bgK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bgL" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bgM" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bgN" = ( +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bgO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bgP" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bgQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bgR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bgS" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain RC"; + pixel_x = -30 + }, +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bgT" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bgU" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/landmark/start/captain, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bgV" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/coin/plasma, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bgW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bgX" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/item/camera, +/obj/item/storage/photo_album{ + pixel_y = -10 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bgY" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bgZ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Chemistry APC"; + areastring = "/area/medical/chemistry"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bha" = ( +/obj/machinery/vending/wardrobe/chem_wardrobe, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bhb" = ( +/obj/machinery/chem_dispenser, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bhc" = ( +/obj/machinery/camera{ + c_tag = "Chemistry"; + dir = 2 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/chem_heater, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bhd" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bhe" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bhf" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bhg" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bhh" = ( +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bhi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint/medical) +"bhj" = ( +/obj/machinery/camera{ + c_tag = "Security Post - Medbay"; + dir = 2 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = 30 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bhk" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "MedbayFoyer"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 26; + req_access_txt = "5" + }, +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bhl" = ( +/obj/structure/filingcabinet, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bhm" = ( +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bhn" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/pen, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bho" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bhp" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Morgue APC"; + areastring = "/area/medical/morgue"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bhq" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bhr" = ( +/obj/machinery/door/airlock{ + name = "Starboard Emergency Storage" + }, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"bhs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bht" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Mech Bay"; + req_access_txt = "29" + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"bhu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "Skynet_launch"; + name = "mech bay" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"bhv" = ( +/obj/machinery/airalarm{ + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bhw" = ( +/obj/machinery/computer/rdconsole/robotics, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bhx" = ( +/obj/machinery/requests_console{ + department = "Robotics"; + departmentType = 2; + name = "Robotics RC"; + pixel_y = 30; + receive_ore_updates = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/rnd/production/circuit_imprinter, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bhy" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/robotics/lab) +"bhz" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 2; + icon_state = "left"; + name = "Robotics Desk"; + req_access_txt = "29" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/turf/open/floor/plating, +/area/science/robotics/lab) +"bhA" = ( +/turf/closed/wall, +/area/science/research) +"bhB" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/research{ + name = "Research Division Access"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bhC" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rnd"; + name = "research lab shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/lab) +"bhD" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/southright{ + name = "Research and Development Desk"; + req_one_access_txt = "7;29" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rnd"; + name = "research lab shutters" + }, +/turf/open/floor/plating, +/area/science/lab) +"bhE" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bhF" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bhG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/starboard) +"bhH" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bhI" = ( +/obj/machinery/conveyor{ + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bhJ" = ( +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + layer = 3 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bhL" = ( +/obj/machinery/mineral/stacking_machine{ + input_dir = 1; + stack_amt = 10 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bhM" = ( +/turf/open/floor/circuit, +/area/science/robotics/mechbay) +"bhN" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bhO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bhQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/toilet/locker) +"bhR" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window{ + dir = 1 + }, +/obj/structure/window, +/turf/open/floor/plating, +/area/maintenance/port) +"bhS" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bhT" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window, +/turf/open/floor/plating, +/area/maintenance/port) +"bhU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bhV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bhW" = ( +/obj/machinery/door/poddoor/shutters{ + id = "qm_warehouse"; + name = "warehouse shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"bhX" = ( +/obj/structure/disposalpipe/sorting/wrap{ + dir = 1 + }, +/turf/closed/wall, +/area/quartermaster/sorting) +"bhY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/quartermaster/storage) +"bhZ" = ( +/obj/machinery/door/window/eastleft{ + dir = 4; + icon_state = "right"; + name = "Incoming Mail"; + req_access_txt = "50" + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bia" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bib" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bic" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bid" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bie" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + dir = 1; + freq = 1400; + location = "Bridge" + }, +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/bridge/meeting_room) +"bif" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"big" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bih" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bii" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bij" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bik" = ( +/obj/item/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Command)"; + pixel_x = -28 + }, +/obj/machinery/suit_storage_unit/captain, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bil" = ( +/obj/machinery/computer/card{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bim" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/item/melee/chainofcommand, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bin" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bio" = ( +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + pixel_x = -30; + receive_ore_updates = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bip" = ( +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"biq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bir" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Chemistry Desk"; + req_access_txt = "33" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/medical/chemistry) +"bis" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/chemist, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bit" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"biu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"biv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"biw" = ( +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bix" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/depsec/medical, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"biy" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 25 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"biz" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"biA" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"biB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"biC" = ( +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"biD" = ( +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"biE" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/extinguisher, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"biF" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1; + sortType = 2 + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"biG" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/science/robotics/mechbay) +"biH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"biI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/circuit, +/area/science/robotics/mechbay) +"biJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/circuit, +/area/science/robotics/mechbay) +"biK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"biL" = ( +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"biN" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"biO" = ( +/obj/machinery/camera{ + c_tag = "Robotics Lab"; + dir = 2; + network = list("ss13","rd") + }, +/obj/machinery/button/door{ + dir = 2; + id = "robotics"; + name = "Shutters Control Button"; + pixel_x = 6; + pixel_y = 24; + req_access_txt = "29" + }, +/obj/structure/table, +/obj/item/book/manual/wiki/robotics_cyborgs{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker/large, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"biP" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"biQ" = ( +/obj/structure/chair/stool, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"biR" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"biS" = ( +/obj/machinery/camera{ + c_tag = "Research Division Access"; + dir = 2 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"biT" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"biU" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"biV" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"biW" = ( +/turf/open/floor/plasteel/white, +/area/science/lab) +"biX" = ( +/obj/machinery/camera{ + c_tag = "Research and Development"; + dir = 2; + network = list("ss13","rd"); + pixel_x = 22 + }, +/obj/machinery/button/door{ + dir = 2; + id = "rnd"; + name = "Shutters Control Button"; + pixel_x = -6; + pixel_y = 24; + req_access_txt = "47" + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"biY" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bja" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bjb" = ( +/obj/machinery/conveyor{ + id = "garbage" + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bjc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bjd" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bje" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bjf" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Disposal Access"; + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bjg" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bjh" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bji" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bjj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bjk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bjl" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"bjm" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/hand_labeler, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bjn" = ( +/obj/structure/table, +/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bjo" = ( +/obj/machinery/camera{ + c_tag = "Cargo Bay North" + }, +/obj/machinery/vending/wardrobe/cargo_wardrobe, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bjp" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/radio/intercom{ + pixel_y = 20 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bjq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = 30 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bjr" = ( +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bjs" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bjt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bju" = ( +/obj/machinery/photocopier, +/obj/item/radio/intercom{ + pixel_y = 20 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bjv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bjw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bjx" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bjy" = ( +/obj/machinery/camera{ + c_tag = "Gravity Generator Room"; + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bjz" = ( +/turf/closed/wall/r_wall, +/area/maintenance/central) +"bjA" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/central) +"bjB" = ( +/turf/open/floor/plating, +/area/maintenance/central) +"bjC" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/maintenance/central) +"bjE" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"bjF" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = -32 + }, +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bjG" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Captain's Desk Door"; + req_access_txt = "20" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bjH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bjI" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bjJ" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"bjK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bjL" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bjM" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bjN" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bjO" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bjP" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"bjQ" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/closed/wall, +/area/medical/chemistry) +"bjR" = ( +/obj/structure/table/glass, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/dropper, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bjS" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bjT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bjU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bjV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bjX" = ( +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bjY" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bjZ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bka" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bkb" = ( +/obj/machinery/camera{ + c_tag = "Medbay Morgue"; + network = list("ss13","medbay"); + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bkc" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"bkd" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"bkf" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"bkh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/circuit, +/area/science/robotics/mechbay) +"bki" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/dropper, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bkj" = ( +/obj/structure/closet/emcloset, +/obj/machinery/airalarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bkk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bkm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bkn" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/firealarm{ + pixel_y = 27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bko" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/aug_manipulator, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bkp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bkq" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bkr" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bks" = ( +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = -30; + receive_ore_updates = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bkt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bku" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bkv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bkw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bkx" = ( +/obj/machinery/status_display/supply, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/quartermaster/sorting) +"bky" = ( +/turf/closed/wall, +/area/maintenance/starboard) +"bkz" = ( +/obj/machinery/conveyor{ + id = "garbage" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Disposal Exit"; + name = "disposal exit vent" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bkA" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"bkB" = ( +/obj/machinery/button/door{ + id = "Disposal Exit"; + name = "Disposal Vent Control"; + pixel_x = -25; + pixel_y = 4; + req_access_txt = "12" + }, +/obj/machinery/button/massdriver{ + id = "trash"; + pixel_x = -26; + pixel_y = -6 + }, +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bkC" = ( +/obj/effect/decal/cleanable/oil, +/obj/machinery/light_switch{ + pixel_x = 25 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bkD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/port) +"bkE" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/r_wall, +/area/maintenance/port) +"bkF" = ( +/turf/closed/wall/r_wall, +/area/maintenance/port) +"bkG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance"; + req_access_txt = "31" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"bkH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bkI" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bkJ" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bkK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bkL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/chem_heater, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bkM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bkN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"bkO" = ( +/obj/machinery/light_switch{ + pixel_x = 28 + }, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/item/radio/off, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bkP" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bkQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bkR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bkS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bkT" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"bkU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bkV" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"bkW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"bkX" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Conference Room APC"; + areastring = "/area/bridge/meeting_room"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"bkY" = ( +/obj/effect/landmark/blobstart, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"bkZ" = ( +/obj/machinery/gravity_generator/main/station, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bla" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"blb" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters"; + req_access_txt = "20" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"blc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/captain) +"bld" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Captain's Office Maintenance"; + req_access_txt = "20" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/central/secondary) +"ble" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"blf" = ( +/obj/structure/table/glass, +/obj/item/storage/box/syringes, +/obj/item/clothing/glasses/science{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/clothing/glasses/science, +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"blg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Morgue Maintenance"; + req_access_txt = "6" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"blh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Chemistry Desk"; + req_access_txt = "33" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/medical/chemistry) +"bli" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"blj" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"blk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bll" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white, +/obj/item/pen, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"blm" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/britcup{ + desc = "Kingston's personal cup." + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bln" = ( +/obj/structure/table/reinforced, +/obj/machinery/camera{ + c_tag = "Medbay Foyer"; + network = list("ss13","medbay"); + dir = 8 + }, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"blo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Starboard Emergency Storage APC"; + areastring = "/area/storage/emergency/starboard"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"blp" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Medbay Security APC"; + areastring = "/area/security/checkpoint/medical"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"blq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"blr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bls" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/crowbar/large, +/obj/machinery/camera{ + c_tag = "Mech Bay"; + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"blt" = ( +/obj/machinery/recharge_station, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"blu" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"blv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"blw" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/science/robotics/mechbay) +"blx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"bly" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/light_switch{ + pixel_x = -23 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"blz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"blA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/robotics/lab) +"blB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/mecha_part_fabricator, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"blC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"blD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/science/robotics/lab) +"blE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + empty = 1; + name = "First-Aid (empty)" + }, +/obj/item/storage/firstaid/regular{ + empty = 1; + name = "First-Aid (empty)" + }, +/obj/item/storage/firstaid/regular{ + empty = 1; + name = "First-Aid (empty)" + }, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"blF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "robo1" + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"blG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"blH" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"blI" = ( +/obj/machinery/rnd/destructive_analyzer, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/lab) +"blJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/rnd/production/protolathe/department/science, +/turf/open/floor/plasteel, +/area/science/lab) +"blK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/lab) +"blL" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel/white, +/area/science/lab) +"blM" = ( +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/roboticist, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"blO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"blP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"blQ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"blR" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/item/cigbutt, +/turf/open/floor/plating, +/area/maintenance/starboard) +"blS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/mass_driver{ + id = "trash" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"blT" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"blU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"blV" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/disposal) +"blW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/storage) +"blX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/research{ + name = "Research Division Access"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"blY" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"blZ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bma" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/micro_laser, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bmb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bmc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bmd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bme" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bmf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bmg" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bmh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bmi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bmj" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bmk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Delivery Office"; + req_access_txt = "50" + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bmm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bmn" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/status_display/supply{ + pixel_x = -28; + pixel_y = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bmo" = ( +/turf/closed/wall, +/area/crew_quarters/heads/hop) +"bmp" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/central) +"bmq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/heads/hop) +"bmr" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/hop) +"bms" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel"; + req_access_txt = "57" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads/hop) +"bmt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bmu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bmv" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bmw" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bmx" = ( +/turf/closed/wall, +/area/crew_quarters/heads/captain) +"bmy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bmz" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/dresser, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/item/card/id/captains_spare, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bmA" = ( +/obj/machinery/door/airlock{ + name = "Private Restroom" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/heads/captain) +"bmB" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bmC" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/heads/captain) +"bmD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/central/secondary) +"bmE" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bmF" = ( +/obj/structure/table/glass, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bmG" = ( +/obj/machinery/chem_dispenser, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bmH" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + req_access_txt = "31" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bmI" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bmJ" = ( +/obj/item/radio/intercom{ + broadcasting = 1; + freerange = 0; + frequency = 1485; + listening = 0; + name = "Station Intercom (Medbay)"; + pixel_y = -30 + }, +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bmK" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bmL" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "MedbayFoyer"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_x = -26; + req_access_txt = "5" + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bmM" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/structure/sign/warning/nosmoking{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bmN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bmO" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) +"bmP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bmQ" = ( +/obj/item/stamp{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stamp/denied{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bmR" = ( +/obj/structure/table, +/obj/item/paper/guides/jobs/medical/morgue{ + pixel_x = 5; + pixel_y = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bmS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bmT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bmU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/checkpoint/medical) +"bmV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/medical{ + name = "Morgue"; + req_access_txt = "6;5" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"bmW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/medical/morgue) +"bmX" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bmY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/morgue) +"bmZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bna" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bnb" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"bnc" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/robotics/mechbay) +"bnf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bng" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bnh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bni" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 6 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/obj/item/multitool{ + pixel_x = 3 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bnj" = ( +/obj/structure/table, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/cable_coil, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bnk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bnl" = ( +/obj/item/stack/sheet/glass, +/obj/structure/table/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/stock_parts/scanning_module, +/obj/machinery/power/apc{ + dir = 4; + name = "Research Lab APC"; + areastring = "/area/science/lab"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bnm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/research) +"bnn" = ( +/obj/machinery/computer/rdconsole/core{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/lab) +"bno" = ( +/obj/item/reagent_containers/glass/beaker/sulphuric, +/obj/machinery/rnd/production/circuit_imprinter/department/science, +/turf/open/floor/plasteel, +/area/science/lab) +"bnp" = ( +/turf/open/floor/plasteel, +/area/science/lab) +"bnq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/science/lab) +"bnr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/plating, +/area/science/lab) +"bns" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/starboard) +"bnt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bnu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/starboard) +"bnv" = ( +/obj/machinery/door/poddoor{ + id = "trash"; + name = "disposal bay door" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/maintenance/disposal) +"bnw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bnx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bny" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnz" = ( +/obj/effect/landmark/start/cargo_technician, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnA" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnB" = ( +/obj/structure/closet/wardrobe/chemistry_white, +/obj/machinery/light_switch{ + pixel_x = -23 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bnC" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bnD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table, +/obj/item/book/manual/wiki/chemistry, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bnE" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnF" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_y = 30 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bnG" = ( +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/clipboard, +/obj/item/pen/red, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bnI" = ( +/obj/machinery/computer/cargo/request, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnJ" = ( +/obj/machinery/firealarm{ + pixel_y = 27 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bnK" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/quartermaster/office) +"bnL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bnM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bnN" = ( +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bnO" = ( +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bnP" = ( +/obj/machinery/button/flasher{ + id = "hopflash"; + pixel_x = 6; + pixel_y = 36 + }, +/obj/machinery/button/door{ + id = "hop"; + name = "Privacy Shutters Control"; + pixel_x = 6; + pixel_y = 25; + req_access_txt = "57" + }, +/obj/machinery/button/door{ + id = "hopqueue"; + name = "Queue Shutters Control"; + pixel_x = -4; + pixel_y = 25; + req_access_txt = "57" + }, +/obj/machinery/light_switch{ + pixel_x = -4; + pixel_y = 36 + }, +/obj/machinery/pdapainter, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bnQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/bed/dogbed/ian, +/mob/living/simple_animal/pet/dog/corgi/Ian{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bnR" = ( +/obj/machinery/computer/security/telescreen/vault{ + pixel_y = 30 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bnS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bnT" = ( +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"bnU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"bnV" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"bnW" = ( +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = 32 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"bnX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bnY" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bnZ" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"boa" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/heads/captain) +"bob" = ( +/obj/structure/table/glass, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/screwdriver{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"boc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bod" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/radio/headset/headset_med, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"boe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bof" = ( +/turf/closed/wall, +/area/medical/medbay/central) +"bog" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/medbay/central) +"boh" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"boi" = ( +/obj/machinery/computer/med_data{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"boj" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Medbay"; + departmentType = 1; + name = "Medbay RC"; + pixel_x = 30 + }, +/obj/machinery/light, +/obj/machinery/computer/crew{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bok" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/security/checkpoint/medical) +"bol" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bom" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bon" = ( +/turf/closed/wall/r_wall, +/area/medical/genetics) +"boo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"boq" = ( +/obj/structure/bed/roller, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bor" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex, +/obj/item/surgical_drapes, +/obj/item/razor, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bos" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/power/apc{ + dir = 8; + name = "Robotics Lab APC"; + areastring = "/area/science/robotics/lab"; + pixel_x = -25 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bou" = ( +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bov" = ( +/obj/structure/table, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/obj/item/crowbar, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bow" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "biohazard containment door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"box" = ( +/turf/closed/wall, +/area/science/robotics/lab) +"boy" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "biohazard containment door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"boz" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "biohazard containment door" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"boA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"boB" = ( +/turf/closed/wall, +/area/science/lab) +"boC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/robotics/lab) +"boD" = ( +/obj/structure/table, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"boE" = ( +/obj/structure/table, +/obj/item/hemostat, +/obj/item/cautery{ + pixel_x = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"boF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"boG" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"boH" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"boI" = ( +/obj/structure/sign/warning/vacuum/external, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/storage) +"boJ" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "QMLoad2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"boK" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"boL" = ( +/obj/structure/table, +/obj/item/retractor, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"boM" = ( +/turf/open/floor/plasteel/white/corner{ + dir = 2 + }, +/area/science/research) +"boN" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"boO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/science/research) +"boP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/lab) +"boQ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plasteel/white, +/area/science/lab) +"boR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"boS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/westleft{ + name = "Cargo Desk"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"boT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"boU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"boV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"boW" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"boX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"boY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"boZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + dir = 8; + icon_state = "left"; + name = "Reception Window" + }, +/obj/machinery/door/window/brigdoor{ + base_state = "rightsecure"; + dir = 4; + icon_state = "rightsecure"; + name = "Head of Personnel's Desk"; + req_access = null; + req_access_txt = "57" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/flasher{ + id = "hopflash"; + pixel_y = 28 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + name = "Privacy Shutters" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bpa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bpb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bpc" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bpd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bpe" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bpf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bpg" = ( +/obj/structure/chair/office/light, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bph" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bpi" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bpj" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Captain's Quarters"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bpk" = ( +/obj/structure/closet/secure_closet/captains, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bpl" = ( +/obj/structure/table/wood, +/obj/item/storage/box/matches, +/obj/item/razor{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/clothing/mask/cigarette/cigar, +/obj/item/reagent_containers/food/drinks/flask/gold, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"bpm" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/item/soap/deluxe, +/obj/item/bikehorn/rubberducky, +/obj/structure/curtain, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/heads/captain) +"bpn" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bpo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bpp" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Research Division Delivery"; + req_access_txt = "47" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/lab) +"bpq" = ( +/obj/machinery/light_switch{ + pixel_y = -23 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bpr" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "Research Division" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/lab) +"bps" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bpt" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bpu" = ( +/obj/structure/bed/roller, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "MedbayFoyer"; + name = "Medbay Exit Button"; + normaldoorcontrol = 1; + pixel_y = 26 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Medbay Reception"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpw" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/medical/medbay/central) +"bpx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpy" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bpA" = ( +/obj/machinery/computer/cargo{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bpB" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bpC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bpD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Chemistry Lab"; + req_access_txt = "5; 33" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bpE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/genetics) +"bpF" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/southleft{ + dir = 1; + name = "Chemistry Desk"; + req_access_txt = "33" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/medical/chemistry) +"bpG" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Genetics APC"; + areastring = "/area/medical/genetics"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bpH" = ( +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/radio/headset/headset_medsci, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 0; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/obj/item/storage/pill_bottle/mutadone, +/obj/item/storage/pill_bottle/mannitol, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bpI" = ( +/obj/machinery/dna_scannernew, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bpJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bpK" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel, +/area/medical/genetics) +"bpL" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/medical/genetics) +"bpM" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/medical/chemistry) +"bpN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bpQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"bpR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bpS" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bpT" = ( +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bpU" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bpV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/robotics/lab) +"bpW" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics2"; + name = "robotics lab shutters" + }, +/obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics2"; + name = "robotics lab shutters" + }, +/turf/open/floor/plating, +/area/science/robotics/lab) +"bpX" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white/corner{ + dir = 8 + }, +/area/science/research) +"bpY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bpZ" = ( +/obj/item/folder/white, +/obj/structure/table, +/obj/item/disk/tech_disk, +/obj/item/disk/tech_disk, +/obj/item/disk/design_disk, +/obj/item/disk/design_disk, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bqa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + name = "Robotics Surgery"; + req_access_txt = "29" + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bqc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bqd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/conveyor{ + dir = 4; + id = "robo2" + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"bqe" = ( +/turf/closed/wall/r_wall, +/area/science/explab) +"bqf" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rnd2"; + name = "research lab shutters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bqg" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bqh" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bqi" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/obj/machinery/door/poddoor{ + id = "QMLoaddoor2"; + name = "supply dock loading door" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bqj" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bqk" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rnd2"; + name = "research lab shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/lab) +"bql" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bqm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bqn" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bqo" = ( +/obj/machinery/autolathe, +/obj/machinery/light_switch{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bqp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/table/reinforced, +/obj/item/destTagger, +/obj/item/destTagger, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bqq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bqr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bqs" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bqt" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bqu" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bqv" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/hallway/primary/central) +"bqw" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bqx" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + name = "Privacy Shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/heads/hop) +"bqy" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bqz" = ( +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bqA" = ( +/obj/machinery/computer/card{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bqB" = ( +/obj/machinery/holopad, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hop) +"bqC" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bqD" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Gravity Generator APC"; + areastring = "/area/engine/gravity_generator"; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/table, +/obj/item/paper/guides/jobs/engi/gravity_gen{ + layer = 3 + }, +/obj/item/pen/blue, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bqE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bqF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bqG" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable, +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bqH" = ( +/turf/closed/wall/r_wall, +/area/teleporter) +"bqI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/teleporter) +"bqJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/teleporter) +"bqK" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Teleporter Maintenance"; + req_access_txt = "17" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central/secondary) +"bqL" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bqM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/medbay/central) +"bqN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bqO" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqP" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqR" = ( +/obj/structure/table, +/obj/item/crowbar, +/obj/item/clothing/neck/stethoscope, +/obj/item/reagent_containers/spray/cleaner, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqT" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Medbay West"; + network = list("ss13","medbay"); + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bqZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bra" = ( +/obj/structure/table/glass, +/obj/item/storage/box/rxglasses, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"brb" = ( +/obj/machinery/computer/scan_consolenew{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"brc" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/geneticist, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"brd" = ( +/turf/open/floor/plasteel, +/area/medical/genetics) +"bre" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel, +/area/medical/genetics) +"brf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"brg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"brh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bri" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"brj" = ( +/obj/structure/bed/roller, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"brk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"brm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"brn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bro" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/science/research) +"brp" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"brq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/button/door{ + dir = 2; + id = "robotics2"; + name = "Shutters Control Button"; + pixel_x = 24; + pixel_y = -24; + req_access_txt = "29" + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"brr" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/explab) +"brs" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Robotics Desk"; + req_access_txt = "29" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics2"; + name = "robotics lab shutters" + }, +/obj/item/folder/white, +/obj/item/pen, +/turf/open/floor/plating, +/area/science/robotics/lab) +"brt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bru" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"brv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"brw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"brx" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rnd2"; + name = "research lab shutters" + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/lab) +"bry" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Experimentation Lab Maintenance"; + req_access_txt = "47" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brz" = ( +/obj/structure/table, +/obj/item/pen, +/obj/machinery/camera{ + c_tag = "Experimentor Lab"; + dir = 2; + network = list("ss13","rd") + }, +/obj/item/hand_labeler, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/science/explab) +"brA" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = 6 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 2 + }, +/area/science/explab) +"brB" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/science/explab) +"brC" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/radio/off, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/science/explab) +"brD" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/white/corner{ + dir = 8 + }, +/area/science/explab) +"brE" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_one_access_txt = "8;12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brF" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brG" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brH" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Supply Dock Airlock"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"brK" = ( +/turf/open/floor/plating, +/area/quartermaster/storage) +"brL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"brM" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #1" + }, +/obj/effect/turf_decal/bot, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1400; + home_destination = "QM #1"; + suffix = "#1" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"brN" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"brO" = ( +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/item/multitool, +/obj/machinery/camera{ + c_tag = "Cargo Office"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"brP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"brQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"brR" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"brS" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"brU" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + name = "Privacy Shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/heads/hop) +"brV" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/medbay/central) +"brW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/vending/cart, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"brX" = ( +/obj/structure/table, +/obj/item/storage/box/masks, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"brY" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"brZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bsa" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bsb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bsc" = ( +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bsd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bse" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bsf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bsg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bsh" = ( +/turf/closed/wall, +/area/teleporter) +"bsi" = ( +/obj/structure/table, +/obj/item/hand_tele, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/teleporter) +"bsj" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/structure/table, +/obj/item/beacon, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bsk" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bsl" = ( +/obj/item/radio/intercom{ + broadcasting = 0; + listening = 1; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/structure/closet/crate, +/obj/item/crowbar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bsm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bsn" = ( +/obj/machinery/camera{ + c_tag = "Teleporter" + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bso" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bsp" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bsq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom{ + broadcasting = 0; + freerange = 0; + frequency = 1485; + listening = 1; + name = "Station Intercom (Medbay)"; + pixel_y = -30 + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bsr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bss" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bst" = ( +/obj/item/radio/intercom{ + broadcasting = 0; + freerange = 0; + frequency = 1485; + listening = 1; + name = "Station Intercom (Medbay)"; + pixel_x = 30 + }, +/obj/machinery/camera{ + c_tag = "Medbay East"; + network = list("ss13","medbay"); + dir = 8; + pixel_y = -22 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bsu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "GeneticsDoor"; + name = "Genetics"; + req_access_txt = "5; 68" + }, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bsv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bsw" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab"; + req_access_txt = "29" + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bsx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bsy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bsz" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bsA" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bsC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bsD" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bsE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/research{ + name = "Experimentation Lab"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bsF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bsG" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bsH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/explab) +"bsI" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Experimentation Lab APC"; + areastring = "/area/science/explab"; + pixel_x = 26 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bsJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/starboard) +"bsK" = ( +/obj/structure/table/glass, +/obj/item/storage/box/disks{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bsL" = ( +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bsM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bsN" = ( +/obj/machinery/door/window/westleft{ + name = "Monkey Pen"; + req_access_txt = "9" + }, +/turf/open/floor/plasteel, +/area/medical/genetics) +"bsO" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bsP" = ( +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bsQ" = ( +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bsR" = ( +/obj/machinery/computer/operating{ + dir = 1; + name = "Robotics Operating Computer" + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"bsS" = ( +/obj/machinery/camera{ + c_tag = "Robotics Lab - South"; + dir = 1; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bsT" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bsU" = ( +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, +/obj/item/surgical_drapes, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"bsV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bsW" = ( +/obj/machinery/vending/wardrobe/robo_wardrobe, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"bsX" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bsY" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/head_of_personnel, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bsZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bta" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Research Division North"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/teleporter) +"btd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"bte" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/science/research) +"btf" = ( +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Medbay"; + departmentType = 1; + name = "Medbay RC"; + pixel_x = -30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"btg" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bth" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-16" + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bti" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"btj" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"btk" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"btl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"btm" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortType = 12 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"btn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/research) +"bto" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"btp" = ( +/turf/open/floor/plating, +/area/maintenance/starboard) +"btq" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"btr" = ( +/obj/machinery/camera{ + c_tag = "Cargo Receiving Dock"; + dir = 4 + }, +/obj/machinery/button/door{ + id = "QMLoaddoor"; + layer = 4; + name = "Loading Doors"; + pixel_x = -24; + pixel_y = -8 + }, +/obj/machinery/button/door{ + dir = 2; + id = "QMLoaddoor2"; + layer = 4; + name = "Loading Doors"; + pixel_x = -24; + pixel_y = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bts" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #2" + }, +/obj/effect/turf_decal/bot, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #2"; + suffix = "#2" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"btt" = ( +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/folder/yellow, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"btu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"btv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"btw" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btx" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "biohazard containment door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"bty" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"btz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"btA" = ( +/obj/machinery/camera{ + c_tag = "Research Division West"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btB" = ( +/obj/machinery/computer/bounty{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"btC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"btD" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/item/stamp/hop, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"btE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"btF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"btG" = ( +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"btH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/teleporter) +"btI" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Teleporter APC"; + areastring = "/area/teleporter"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/teleporter) +"btJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/bluespace_beacon, +/turf/open/floor/plasteel, +/area/teleporter) +"btK" = ( +/obj/machinery/holopad, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/teleporter) +"btL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/teleporter) +"btM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Teleport Access"; + req_access_txt = "17" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/teleporter) +"btN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/teleporter) +"btO" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"btP" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/science/research) +"btR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"btS" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"btU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"btV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"btW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"btX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"btY" = ( +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = -30; + receive_ore_updates = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"btZ" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bua" = ( +/turf/closed/wall, +/area/medical/genetics) +"bub" = ( +/obj/machinery/light, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"buc" = ( +/obj/machinery/light, +/obj/machinery/power/apc{ + dir = 2; + name = "Cargo Office APC"; + areastring = "/area/quartermaster/office"; + pixel_x = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/brown{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bud" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bue" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel RC"; + pixel_y = -30 + }, +/obj/machinery/camera{ + c_tag = "Head of Personnel's Office"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"buf" = ( +/obj/machinery/computer/scan_consolenew{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bug" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bui" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"buj" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics2"; + name = "robotics lab shutters" + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/robotics/lab) +"buk" = ( +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/medical/sleeper) +"bul" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bum" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bun" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"buo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bup" = ( +/obj/machinery/light, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"buq" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/genetics) +"bur" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bus" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"but" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"buu" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"buv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"buw" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bux" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"buy" = ( +/obj/structure/disposalpipe/sorting/mail{ + sortType = 23 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"buz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard) +"buB" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "QMLoad"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"buC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"buD" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #3" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"buE" = ( +/obj/structure/table, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"buF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"buG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Genetics Research Access"; + req_access_txt = "9" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"buH" = ( +/obj/machinery/door/airlock/research{ + name = "Genetics Research Access"; + req_access_txt = "47" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"buI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"buJ" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"buK" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"buL" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"buM" = ( +/obj/machinery/keycard_auth{ + pixel_x = -24 + }, +/obj/machinery/computer/cargo{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"buN" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"buO" = ( +/obj/structure/table, +/obj/item/folder/blue, +/obj/item/stack/packageWrap{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/item/hand_labeler, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"buP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"buQ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"buR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"buS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Gravity Generator Foyer" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"buT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"buU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "biohazard containment door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"buV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"buW" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/teleporter) +"buX" = ( +/obj/machinery/shieldwallgen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/teleporter) +"buY" = ( +/obj/machinery/shieldwallgen, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/teleporter) +"buZ" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/teleporter) +"bva" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bvb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bvc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bvd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/sleeper) +"bve" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bvf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bvg" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bvh" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/sleeper) +"bvi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/medical/sleeper) +"bvj" = ( +/turf/closed/wall, +/area/medical/sleeper) +"bvk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bvl" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Surgery Observation" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bvm" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bvn" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the genetics doors."; + id = "GeneticsDoor"; + name = "Genetics Exit Button"; + normaldoorcontrol = 1; + pixel_x = 8; + pixel_y = 24 + }, +/obj/structure/table, +/obj/item/book/manual/wiki/medical_cloning{ + pixel_y = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvq" = ( +/obj/structure/chair, +/obj/effect/landmark/start/geneticist, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvr" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvs" = ( +/obj/machinery/dna_scannernew, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvt" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Genetics Research"; + req_access_txt = "5; 9; 68" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvu" = ( +/obj/structure/window/reinforced, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel, +/area/medical/genetics) +"bvv" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/medical/genetics) +"bvw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvx" = ( +/turf/closed/wall/r_wall, +/area/science/research) +"bvy" = ( +/obj/machinery/camera{ + c_tag = "Genetics Research"; + dir = 1; + network = list("ss13","medbay") + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvA" = ( +/obj/structure/sign/warning/securearea, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bvB" = ( +/obj/machinery/camera{ + c_tag = "Genetics Access"; + network = list("ss13","medbay"); + dir = 8; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bvC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/security/checkpoint/science) +"bvD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bvE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/science/research) +"bvF" = ( +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/machinery/computer/bounty{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/keycard_auth{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bvH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bvI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bvJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/heads/hor) +"bvK" = ( +/turf/closed/wall, +/area/crew_quarters/heads/hor) +"bvL" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bvM" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bvN" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/scientist, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bvO" = ( +/turf/open/floor/plasteel/white, +/area/science/explab) +"bvP" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bvQ" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bvR" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bvS" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/machinery/door/poddoor{ + id = "QMLoaddoor"; + name = "supply dock loading door" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bvT" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bvU" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/machinery/light, +/obj/machinery/status_display/supply{ + pixel_y = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bvV" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"bvW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bvX" = ( +/obj/machinery/camera{ + c_tag = "Cargo Bay South"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bvY" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #4" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"bvZ" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_x = 6; + pixel_y = -5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bwa" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bwb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bwc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bwd" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint/supply) +"bwe" = ( +/turf/closed/wall, +/area/security/checkpoint/supply) +"bwf" = ( +/obj/machinery/camera{ + c_tag = "Cargo Bay Entrance"; + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bwg" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bwh" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bwi" = ( +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/structure/closet/secure_closet/hop, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bwj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bwk" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bwl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bwm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/engine/gravity_generator) +"bwn" = ( +/obj/structure/closet/radiation, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bwo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/engine/gravity_generator) +"bwp" = ( +/obj/structure/closet/radiation, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bwq" = ( +/obj/machinery/teleport/station, +/turf/open/floor/plating, +/area/teleporter) +"bwr" = ( +/obj/machinery/computer/teleporter{ + dir = 1 + }, +/turf/open/floor/plating, +/area/teleporter) +"bws" = ( +/obj/structure/rack, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/teleporter) +"bwt" = ( +/obj/machinery/teleport/hub, +/turf/open/floor/plating, +/area/teleporter) +"bwu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bwv" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + dir = 4; + freq = 1400; + location = "Medbay" + }, +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/medical/medbay/central) +"bww" = ( +/obj/structure/chair, +/obj/machinery/camera{ + c_tag = "Surgery Observation"; + network = list("ss13","medbay") + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bwx" = ( +/obj/machinery/door/window/eastleft{ + name = "Medical Delivery"; + req_access_txt = "5" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/medical/medbay/central) +"bwy" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bwz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bwA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bwB" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bwC" = ( +/obj/machinery/computer/med_data{ + dir = 3 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bwD" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bwE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bwF" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 7; + pixel_y = 1 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 7; + pixel_y = 1 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bwG" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall, +/area/medical/sleeper) +"bwH" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bwI" = ( +/obj/machinery/atmospherics/components/unary/cryo_cell, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bwJ" = ( +/obj/structure/table/glass, +/obj/machinery/camera{ + c_tag = "Medbay Cryogenics"; + network = list("ss13","medbay"); + dir = 2 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone, +/obj/item/reagent_containers/glass/beaker/cryoxadone, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bwK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bwL" = ( +/obj/machinery/camera{ + c_tag = "Genetics Cloning"; + network = list("ss13","medbay"); + dir = 4 + }, +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/storage/box/rxglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/bodybags, +/obj/item/pen, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bwM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bwN" = ( +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 28 + }, +/obj/machinery/button/door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_x = -5; + pixel_y = 28; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bwO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bwQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/hor) +"bwR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bwS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bwT" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Quartermaster"; + req_access_txt = "41" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bwU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bwV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/shaft_miner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bwW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bwX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1; + sortType = 3 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bwY" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bwZ" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bxa" = ( +/obj/structure/chair, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bxb" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bxc" = ( +/obj/machinery/holopad, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bxd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bxe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bxf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bxg" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxi" = ( +/obj/machinery/computer/aifixer{ + dir = 8 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Research Director's Desk"; + departmentType = 5; + name = "Research Director RC"; + pixel_x = -2; + pixel_y = 30; + receive_ore_updates = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bxj" = ( +/obj/structure/table, +/obj/machinery/computer/security/telescreen/rd, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bxk" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/storage/primary) +"bxl" = ( +/obj/structure/rack, +/obj/item/circuitboard/aicore{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"bxm" = ( +/obj/effect/landmark/xmastree/rdrod, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"bxn" = ( +/turf/closed/wall, +/area/science/explab) +"bxo" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/explab) +"bxp" = ( +/obj/machinery/computer/rdconsole/experiment{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/science/explab) +"bxq" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/book/manual/wiki/experimentor, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/science/explab) +"bxr" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/science/explab) +"bxs" = ( +/obj/machinery/button/door{ + id = "telelab"; + name = "Test Chamber Blast Doors"; + pixel_x = 25; + req_access_txt = "47" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/science/explab) +"bxt" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bxu" = ( +/turf/closed/wall, +/area/quartermaster/qm) +"bxv" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/depsec/science, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bxw" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Quartermaster"; + req_access_txt = "41" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bxx" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/qm) +"bxy" = ( +/turf/closed/wall, +/area/quartermaster/miningdock) +"bxz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/quartermaster/miningdock) +"bxA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bxB" = ( +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/structure/table, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bxC" = ( +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bxD" = ( +/obj/item/book/manual/wiki/security_space_law, +/obj/structure/table, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bxE" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bxF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bxG" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel"; + req_access_txt = "57" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"bxH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"bxI" = ( +/obj/machinery/status_display/ai, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"bxJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"bxK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"bxL" = ( +/obj/machinery/camera{ + c_tag = "Central Hallway South-East"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bxM" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) +"bxN" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bxO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bxP" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bxQ" = ( +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bxR" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bxS" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bxT" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bxU" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bxV" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bxW" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Research Director"; + req_access_txt = "30" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bxX" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bxY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bxZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bya" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"byb" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"byc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/computer/card/minor/qm{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bye" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/medical/genetics) +"byf" = ( +/turf/closed/wall/r_wall, +/area/science/server) +"byg" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster, +/obj/item/coin/silver, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/item/stamp/qm, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byh" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Server Room"; + req_access_txt = "30" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"byi" = ( +/turf/closed/wall, +/area/security/checkpoint/science) +"byj" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/security/checkpoint/science) +"byk" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint/science) +"byl" = ( +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/pen/red, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bym" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/qm) +"byn" = ( +/obj/structure/filingcabinet, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byo" = ( +/obj/structure/table, +/obj/machinery/button/door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_x = -5; + pixel_y = 5; + req_access_txt = "47" + }, +/obj/machinery/button/door{ + id = "rnd2"; + name = "Research Lab Shutter Control"; + pixel_x = 5; + pixel_y = 5; + req_access_txt = "47" + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"byp" = ( +/obj/machinery/computer/robotics{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"byq" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start/research_director, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"byr" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"bys" = ( +/obj/structure/rack, +/obj/item/aicard, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"byt" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/hor) +"byu" = ( +/obj/structure/displaycase/labcage, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"byv" = ( +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/engine, +/area/science/explab) +"byw" = ( +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "test chamber blast door" + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/engine, +/area/science/explab) +"byx" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"byy" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"byz" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byA" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Quartermaster APC"; + areastring = "/area/quartermaster/qm"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byB" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byC" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byD" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"byE" = ( +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"byF" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Dock APC"; + areastring = "/area/quartermaster/miningdock"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"byG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"byH" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/security/cargo, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/checkpoint/supply) +"byK" = ( +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byL" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/depsec/supply, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byM" = ( +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/machinery/computer/security/mining{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byN" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byO" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = -30 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byP" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"byU" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byV" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byW" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byX" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"byY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/medical/sleeper) +"byZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/sleeper) +"bza" = ( +/obj/structure/chair, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bzb" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/medical/sleeper) +"bzc" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Recovery Room" + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzd" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/pen, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Medbay"; + departmentType = 1; + name = "Medbay RC"; + pixel_y = 30 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bze" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bzh" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bzi" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bzj" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bzk" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bzl" = ( +/obj/machinery/dna_scannernew, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzm" = ( +/obj/machinery/clonepod, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzn" = ( +/obj/machinery/computer/cloning{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzo" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_y = -28 + }, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzp" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzq" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzr" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/vending/wardrobe/gene_wardrobe, +/turf/open/floor/plasteel/white, +/area/medical/genetics) +"bzs" = ( +/turf/closed/wall, +/area/maintenance/aft) +"bzt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + external_pressure_bound = 140; + pressure_checks = 0; + name = "server vent" + }, +/turf/open/floor/circuit/telecomms/server, +/area/science/server) +"bzu" = ( +/obj/machinery/rnd/server, +/turf/open/floor/circuit/telecomms/server, +/area/science/server) +"bzv" = ( +/obj/machinery/atmospherics/pipe/simple{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bzw" = ( +/obj/machinery/atmospherics/pipe/simple{ + dir = 4 + }, +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'SERVER ROOM'."; + name = "SERVER ROOM"; + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/server) +"bzx" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bzy" = ( +/obj/machinery/camera{ + c_tag = "Server Room"; + dir = 2; + network = list("ss13","rd"); + pixel_x = 22 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Server Room APC"; + areastring = "/area/science/server"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bzz" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -30 + }, +/obj/machinery/airalarm{ + pixel_y = 25 + }, +/obj/structure/closet/secure_closet/security/science, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bzA" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bzB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/research) +"bzC" = ( +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bzD" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/computer/security/telescreen/circuitry, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bzE" = ( +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bzF" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bzG" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bzH" = ( +/obj/structure/table, +/obj/item/hemostat, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/medical/sleeper) +"bzI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/table, +/obj/item/surgicaldrill, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bzJ" = ( +/obj/machinery/computer/mecha{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bzK" = ( +/obj/structure/table, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/circular_saw, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"bzM" = ( +/obj/structure/rack, +/obj/item/taperecorder{ + pixel_x = -3 + }, +/obj/item/paicard{ + pixel_x = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"bzN" = ( +/obj/machinery/modular_computer/console/preset/research{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"bzO" = ( +/turf/open/floor/engine, +/area/science/explab) +"bzP" = ( +/obj/machinery/computer/cargo{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bzQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bzR" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bzS" = ( +/obj/structure/table, +/obj/item/cautery{ + pixel_x = 4 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bzT" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/quartermaster, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bzU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/tile/blue{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzV" = ( +/obj/machinery/vending/wardrobe/medi_wardrobe, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzW" = ( +/obj/structure/closet/l3closet, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzX" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bzY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bzZ" = ( +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bAa" = ( +/obj/machinery/door/firedoor/heavy, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/research) +"bAb" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/shaft_miner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bAc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bAd" = ( +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/radio/off, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bAe" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AIW"; + location = "QM" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAf" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAg" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AftH"; + location = "AIW" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAh" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=CHE"; + location = "AIE" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAj" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=HOP"; + location = "CHE" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bAl" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) +"bAm" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bAn" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Maintenance"; + req_access_txt = "48" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bAo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Cargo Security APC"; + areastring = "/area/security/checkpoint/supply"; + pixel_x = 1; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bAp" = ( +/obj/structure/closet/secure_closet/medical1, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bAq" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Medbay Treatment Center"; + network = list("ss13","medbay"); + dir = 8 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bAr" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bAs" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1; + name = "Connector Port (Air Supply)" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bAt" = ( +/obj/structure/table/reinforced, +/obj/item/wrench/medical, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bAu" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bAv" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1; + name = "Connector Port (Air Supply)" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bAw" = ( +/turf/open/floor/plating, +/area/maintenance/aft) +"bAx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bAy" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/dark/telecomms, +/area/science/server) +"bAz" = ( +/obj/machinery/airalarm/server{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/science/server) +"bAA" = ( +/obj/machinery/atmospherics/pipe/manifold{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bAB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Server Room"; + req_access_txt = "30" + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bAC" = ( +/obj/machinery/atmospherics/pipe/simple{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bAD" = ( +/obj/structure/chair/office/light, +/obj/machinery/atmospherics/pipe/simple{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bAE" = ( +/obj/machinery/camera{ + c_tag = "Security Post - Science"; + dir = 4; + network = list("ss13","rd") + }, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bAF" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bAG" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bAH" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bAI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bAJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bAK" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bAL" = ( +/obj/structure/table, +/obj/item/plant_analyzer, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plating, +/area/storage/tech) +"bAM" = ( +/obj/structure/table, +/obj/item/analyzer, +/obj/item/healthanalyzer, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bAN" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bAO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bAP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bAQ" = ( +/obj/effect/landmark/blobstart, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/engine, +/area/science/explab) +"bAR" = ( +/obj/machinery/rnd/experimentor, +/turf/open/floor/engine, +/area/science/explab) +"bAS" = ( +/obj/machinery/camera{ + c_tag = "Quartermaster's Office"; + dir = 4 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 + }, +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/machinery/computer/security/qm{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"bAT" = ( +/obj/machinery/vending/wardrobe/jani_wardrobe, +/turf/open/floor/plasteel, +/area/janitor) +"bAU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/janitor) +"bAV" = ( +/obj/machinery/door/window/westleft{ + name = "Janitorial Delivery"; + req_access_txt = "26" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/janitor) +"bAW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bAX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/table, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/medical/sleeper) +"bAY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bAZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bBa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bBb" = ( +/obj/effect/landmark/start/medical_doctor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bBc" = ( +/obj/structure/table, +/obj/item/surgical_drapes, +/obj/item/razor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/medical/sleeper) +"bBd" = ( +/obj/structure/table, +/obj/structure/bedsheetbin{ + pixel_x = 2 + }, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bBe" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bBf" = ( +/obj/structure/filingcabinet, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Security Post - Cargo"; + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"bBg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBh" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBi" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBj" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBk" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Central Primary Hallway South-West"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBl" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBq" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = -32; + pixel_y = -40 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_x = -32; + pixel_y = -24 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_x = -32; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Central Primary Hallway South"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBv" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 22 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBx" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBy" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBA" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBB" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bBC" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBD" = ( +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bBE" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bBF" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/item/storage/firstaid/toxin, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/machinery/airalarm/unlocked{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bBG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bBH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/miningdock) +"bBI" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/closet/wardrobe/miner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bBJ" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBK" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBL" = ( +/obj/machinery/vending/medical{ + pixel_x = -2 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bBN" = ( +/turf/closed/wall, +/area/crew_quarters/heads/cmo) +"bBO" = ( +/obj/machinery/computer/med_data, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bBP" = ( +/obj/machinery/computer/crew, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer RC"; + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bBQ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bBR" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/aft) +"bBS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 4; + external_pressure_bound = 120; + name = "server vent" + }, +/turf/open/floor/circuit/telecomms/server, +/area/science/server) +"bBU" = ( +/obj/machinery/atmospherics/pipe/simple{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bBV" = ( +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'SERVER ROOM'."; + name = "SERVER ROOM"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/server) +"bBW" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bBX" = ( +/obj/machinery/computer/rdservercontrol{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/science/server) +"bBY" = ( +/obj/item/radio/intercom{ + pixel_x = -25 + }, +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bBZ" = ( +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/item/radio/off, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bCa" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Science Security APC"; + areastring = "/area/security/checkpoint/science"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bCb" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bCc" = ( +/obj/machinery/computer/secure_data{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = -30 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) +"bCd" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + sortType = 15 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bCe" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bCf" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "RD Office APC"; + areastring = "/area/crew_quarters/heads/hor"; + pixel_x = -25 + }, +/obj/structure/cable, +/obj/machinery/light_switch{ + pixel_y = -23 + }, +/obj/item/twohanded/required/kirbyplants/dead, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bCg" = ( +/obj/structure/table, +/obj/item/cartridge/signal/toxins, +/obj/item/cartridge/signal/toxins{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/cartridge/signal/toxins{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/machinery/camera{ + c_tag = "Research Director's Office"; + dir = 1; + network = list("ss13","rd") + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bCh" = ( +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/machinery/light, +/obj/machinery/computer/card/minor/rd{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bCi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bCj" = ( +/obj/structure/closet/secure_closet/RD, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bCk" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) +"bCl" = ( +/obj/machinery/camera{ + c_tag = "Experimentor Lab Chamber"; + dir = 1; + network = list("ss13","rd") + }, +/obj/machinery/light, +/obj/structure/sign/warning/nosmoking{ + pixel_y = -32 + }, +/turf/open/floor/engine, +/area/science/explab) +"bCm" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bCn" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bCo" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bCp" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bCq" = ( +/turf/closed/wall, +/area/maintenance/port/aft) +"bCr" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bCs" = ( +/turf/closed/wall, +/area/storage/tech) +"bCt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/janitor) +"bCu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bCv" = ( +/turf/closed/wall, +/area/janitor) +"bCw" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/janitor) +"bCx" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/gateway) +"bCy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/janitor) +"bCz" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"bCA" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"bCB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Surgery Maintenance"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bCC" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bCD" = ( +/obj/structure/table, +/obj/item/retractor, +/turf/open/floor/plasteel/white/side{ + dir = 2 + }, +/area/medical/sleeper) +"bCE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCF" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCG" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/gun/syringe, +/obj/item/reagent_containers/dropper, +/obj/item/soap/nanotrasen, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCI" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/library) +"bCJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCL" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/camera{ + c_tag = "Medbay Storage"; + network = list("ss13","medbay"); + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCM" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCN" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCO" = ( +/obj/machinery/bloodbankgen, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/sleeper) +"bCQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/sleeper) +"bCR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bCS" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCT" = ( +/obj/structure/table, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/clothing/neck/stethoscope, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bCU" = ( +/obj/item/radio/intercom{ + broadcasting = 0; + freerange = 0; + frequency = 1485; + listening = 1; + name = "Station Intercom (Medbay)"; + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Medbay South"; + network = list("ss13","medbay"); + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bCV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bCW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bCX" = ( +/obj/effect/decal/cleanable/oil, +/obj/item/cigbutt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bCY" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bCZ" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/chief_medical_officer, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bDa" = ( +/obj/machinery/keycard_auth{ + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bDb" = ( +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"bDc" = ( +/turf/closed/wall, +/area/science/storage) +"bDd" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bDe" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"bDf" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bDg" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bDh" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bDi" = ( +/obj/structure/sign/warning/docking{ + pixel_y = 32 + }, +/turf/open/space, +/area/space/nearstation) +"bDj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bDk" = ( +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/pen, +/obj/machinery/requests_console{ + department = "Mining"; + departmentType = 0; + pixel_x = -30 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bDl" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bDm" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bDn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bDo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bDp" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bDq" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/item/key/janitor, +/turf/open/floor/plasteel, +/area/janitor) +"bDr" = ( +/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/storage/box/mousetraps, +/obj/item/storage/box/mousetraps, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/janitor) +"bDs" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/janitor) +"bDt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/port/aft) +"bDu" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bDv" = ( +/obj/structure/table, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/machinery/status_display/ai{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bDw" = ( +/obj/structure/table, +/obj/item/screwdriver{ + pixel_y = 16 + }, +/obj/item/wirecutters, +/turf/open/floor/plating, +/area/storage/tech) +"bDx" = ( +/obj/structure/table, +/obj/item/electronics/apc, +/obj/item/electronics/airlock, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bDy" = ( +/obj/machinery/camera{ + c_tag = "Tech Storage"; + dir = 2 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Tech Storage APC"; + areastring = "/area/storage/tech"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/storage/tech) +"bDz" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bDA" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/power/apc{ + dir = 4; + name = "Treatment Center APC"; + areastring = "/area/medical/sleeper"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bDB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/medical/sleeper) +"bDC" = ( +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bDD" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bDE" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 28 + }, +/obj/machinery/camera{ + c_tag = "Medbay Recovery Room"; + network = list("ss13","medbay"); + dir = 8 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bDF" = ( +/obj/machinery/door/poddoor/preopen{ + id = "medpriv4"; + name = "privacy door" + }, +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/medbay/central) +"bDG" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bDH" = ( +/obj/structure/closet/l3closet/janitor, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/janitor) +"bDI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bDJ" = ( +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plasteel, +/area/janitor) +"bDK" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/camera{ + c_tag = "Custodial Closet" + }, +/obj/vehicle/ridden/janicart, +/turf/open/floor/plasteel, +/area/janitor) +"bDL" = ( +/turf/open/floor/plasteel, +/area/janitor) +"bDM" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/janitor) +"bDN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bDO" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bDP" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 1; + freq = 1400; + location = "Janitor" + }, +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/janitor) +"bDQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bDR" = ( +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bDS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bDT" = ( +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bDU" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Chief Medical Officer"; + req_access_txt = "40" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bDV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bDW" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bDY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plasteel, +/area/science/storage) +"bDZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bEa" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bEb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bEc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bEd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bEe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bEf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bEg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access_txt = "8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bEh" = ( +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bEi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) +"bEj" = ( +/obj/structure/table/glass, +/obj/item/pen, +/obj/item/clothing/neck/stethoscope, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/mob/living/simple_animal/pet/cat/Runtime, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bEk" = ( +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/stamp/cmo, +/obj/item/clothing/glasses/hud/health, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bEl" = ( +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom{ + pixel_x = 25 + }, +/obj/machinery/camera{ + c_tag = "Chief Medical Office"; + network = list("ss13","medbay"); + dir = 8; + pixel_y = -22 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bEm" = ( +/turf/open/floor/engine, +/area/science/xenobiology) +"bEn" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Test Chamber"; + dir = 2; + network = list("xeno","rd") + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bEo" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/storage) +"bEp" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/storage) +"bEq" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Misc Research APC"; + areastring = "/area/science/research"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bEr" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bEs" = ( +/turf/closed/wall, +/area/science/mixing) +"bEt" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/white, +/area/science/research) +"bEu" = ( +/obj/structure/closet/bombcloset, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEv" = ( +/obj/structure/closet/bombcloset, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEw" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEx" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Toxins Lab West"; + dir = 2; + network = list("ss13","rd") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEy" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bEA" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEB" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEC" = ( +/turf/closed/wall/r_wall, +/area/science/mixing) +"bED" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEE" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bEF" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bEG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bEH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/science/mixing) +"bEI" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bEJ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"bEK" = ( +/obj/machinery/camera{ + c_tag = "Mining Dock"; + dir = 4 + }, +/obj/machinery/computer/security/mining, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bEL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bEM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) +"bEN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/science/mixing) +"bEO" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bEP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bEQ" = ( +/obj/effect/landmark/start/shaft_miner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bER" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bES" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/port/aft) +"bET" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bEU" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bEV" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bEW" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bEX" = ( +/obj/structure/table, +/obj/item/aicard, +/obj/item/aiModule/reset, +/turf/open/floor/plating, +/area/storage/tech) +"bEY" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bEZ" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plating, +/area/storage/tech) +"bFa" = ( +/turf/open/floor/plating, +/area/storage/tech) +"bFb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/storage/tech) +"bFc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bFd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bFe" = ( +/obj/machinery/door/airlock/engineering{ + name = "Tech Storage"; + req_access_txt = "23" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bFf" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/janitor, +/turf/open/floor/plasteel, +/area/janitor) +"bFg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/janitor) +"bFh" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bFi" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/janitor) +"bFj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bFk" = ( +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/janitor) +"bFl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Custodial Closet APC"; + areastring = "/area/janitor"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFm" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 6 + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFn" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFo" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bFr" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFs" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Custodial Maintenance"; + req_access_txt = "26" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFt" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Operating Theatre"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bFv" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFx" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bFy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFz" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/medical/sleeper) +"bFA" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/requests_console{ + department = "Medbay"; + departmentType = 1; + name = "Medbay RC"; + pixel_x = 30 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFB" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"bFC" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"bFD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bFE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/cmo{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bFF" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFG" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bFH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bFI" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bFJ" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFK" = ( +/obj/structure/closet/wardrobe/pjs, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bFL" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bFM" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bFN" = ( +/obj/structure/table, +/obj/item/cartridge/medical{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/cartridge/medical{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/cartridge/medical, +/obj/item/cartridge/chemistry{ + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bFO" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) +"bFP" = ( +/obj/machinery/computer/card/minor/cmo{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bFQ" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bFR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bFS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bFT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bFU" = ( +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bFV" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bFW" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bFX" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bFY" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "8;12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bFZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/science/mixing) +"bGa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/starboard) +"bGb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/science/mixing) +"bGc" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/mixing) +"bGd" = ( +/obj/machinery/doppler_array/research/science{ + dir = 4 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/science/mixing) +"bGe" = ( +/turf/closed/wall, +/area/science/test_area) +"bGf" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bGi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"bGj" = ( +/obj/machinery/computer/shuttle/mining{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bGk" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/scientist, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bGl" = ( +/obj/item/assembly/prox_sensor{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 9; + pixel_y = -2 + }, +/obj/item/assembly/prox_sensor{ + pixel_y = 2 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bGm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bGn" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bGo" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bGp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bGq" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bGr" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bGs" = ( +/obj/machinery/camera{ + c_tag = "Secure Tech Storage"; + dir = 2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"bGt" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/AI, +/turf/open/floor/plasteel, +/area/storage/tech) +"bGu" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/storage/tech) +"bGv" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/multitool, +/turf/open/floor/plating, +/area/storage/tech) +"bGw" = ( +/obj/structure/rack, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/lootdrop/techstorage/rnd, +/turf/open/floor/plating, +/area/storage/tech) +"bGx" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/tcomms, +/turf/open/floor/plating, +/area/storage/tech) +"bGy" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/service, +/turf/open/floor/plating, +/area/storage/tech) +"bGz" = ( +/obj/structure/table/reinforced, +/obj/item/wrench, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/item/analyzer, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bGA" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bGB" = ( +/obj/structure/table, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + pixel_y = -29 + }, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel, +/area/janitor) +"bGC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/research{ + name = "Toxins Launch Room Access"; + req_access_txt = "7" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bGD" = ( +/obj/structure/janitorialcart, +/turf/open/floor/plasteel, +/area/janitor) +"bGE" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/janitor) +"bGF" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bGG" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bGH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bGI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"bGJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bGK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bGL" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bGM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bGN" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bGO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bGP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bGQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bGR" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/storage/box/rxglasses, +/obj/item/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/gun/syringe, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bGT" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/clothing/neck/stethoscope, +/obj/machinery/vending/wallmed{ + pixel_y = 28 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bGU" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/machinery/button/door{ + id = "medpriv4"; + name = "Privacy Shutters"; + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bGV" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bGW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plating, +/area/maintenance/aft) +"bGX" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bGY" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plasteel, +/area/science/storage) +"bGZ" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bHa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/heads/cmo) +"bHb" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bHc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bHd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHe" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Toxins Storage APC"; + areastring = "/area/science/storage"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/camera{ + c_tag = "Toxins Storage"; + dir = 4; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel, +/area/science/storage) +"bHf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bHh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bHi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bHj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bHk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bHl" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bHm" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/research{ + name = "Toxins Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bHn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/closed/wall/r_wall, +/area/maintenance/aft) +"bHo" = ( +/obj/structure/closet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHp" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHq" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/science/mixing) +"bHs" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bHt" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bHu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bHv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bHw" = ( +/obj/item/target, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/science/test_area) +"bHy" = ( +/obj/structure/closet/crate, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bHz" = ( +/obj/item/stack/ore/iron, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bHA" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bHC" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bHD" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bHE" = ( +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bHF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"bHG" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/techstorage/command, +/turf/open/floor/plasteel, +/area/storage/tech) +"bHH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/storage/tech) +"bHI" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Tech Storage"; + req_access_txt = "19;23" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/storage/tech) +"bHJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating, +/area/storage/tech) +"bHK" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bHL" = ( +/obj/machinery/camera{ + c_tag = "Research Division South"; + dir = 8 + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/research) +"bHM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/research) +"bHN" = ( +/obj/machinery/requests_console{ + department = "Tech storage"; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bHO" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/multitool, +/obj/item/clothing/glasses/meson, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/storage/tech) +"bHP" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bHQ" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plating, +/area/storage/tech) +"bHR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Aft Primary Hallway 2"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bHS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bHT" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/medical/medbay/central) +"bHU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHV" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Aft Maintenance APC"; + areastring = "/area/maintenance/aft"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHX" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/aft) +"bHY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bIa" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bIb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bIc" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/medical/sleeper) +"bId" = ( +/obj/machinery/vending/wallmed{ + pixel_y = -28 + }, +/obj/machinery/camera{ + c_tag = "Surgery Operating"; + network = list("ss13","medbay"); + dir = 1; + pixel_x = 22 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIe" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bIf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_exterior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = -24; + req_access_txt = "39" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "virology_airlock_exterior"; + name = "Virology Exterior Airlock"; + req_access_txt = "39" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bIg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortType = 13 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bIh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIi" = ( +/obj/structure/table, +/obj/item/storage/firstaid/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/o2, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIj" = ( +/obj/structure/table, +/obj/machinery/light, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIk" = ( +/obj/structure/table, +/obj/item/storage/firstaid/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/northright{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access_txt = "5" + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIl" = ( +/obj/structure/table, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/northleft{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access_txt = "5" + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIm" = ( +/obj/machinery/light, +/obj/machinery/rnd/production/techfab/department/medical, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIn" = ( +/obj/structure/table, +/obj/item/storage/firstaid/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bIo" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bIp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bIq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bIr" = ( +/obj/machinery/door/airlock/medical{ + name = "Patient Room"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bIs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Xenobiology Maintenance"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bIt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIw" = ( +/obj/structure/closet/secure_closet/CMO, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/cmo) +"bIx" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"bIy" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/engine, +/area/science/xenobiology) +"bIz" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/storage) +"bIA" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/storage) +"bIB" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/storage) +"bIC" = ( +/turf/open/floor/plasteel, +/area/science/storage) +"bID" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/research) +"bIE" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"bIF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bIG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bIH" = ( +/obj/machinery/pipedispenser/disposal, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bII" = ( +/obj/item/storage/secure/safe{ + pixel_x = 5; + pixel_y = 29 + }, +/obj/machinery/camera{ + c_tag = "Virology Break Room"; + network = list("ss13","medbay") + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bIJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bIK" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bIL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bIM" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bIN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"bIO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/comfy/black, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bIS" = ( +/obj/machinery/door/airlock/research{ + name = "Toxins Launch Room"; + req_access_txt = "7" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bIT" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/departments/xenobio{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"bIU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bIV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bIW" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/mixing) +"bIX" = ( +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" + }, +/turf/closed/wall, +/area/science/test_area) +"bIY" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bIZ" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bJa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bJb" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Mining Dock Airlock"; + req_access_txt = "48"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"bJc" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/box; + width = 7 + }, +/turf/open/space/basic, +/area/space) +"bJd" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Dock"; + req_access_txt = "48" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bJe" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bJf" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bJg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"bJh" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, +/turf/open/floor/plasteel, +/area/storage/tech) +"bJi" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/storage/tech) +"bJj" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/analyzer, +/obj/item/stock_parts/subspace/analyzer, +/obj/item/stock_parts/subspace/analyzer, +/turf/open/floor/plating, +/area/storage/tech) +"bJk" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/medical, +/turf/open/floor/plating, +/area/storage/tech) +"bJl" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/engineering, +/turf/open/floor/plating, +/area/storage/tech) +"bJm" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/security, +/turf/open/floor/plating, +/area/storage/tech) +"bJn" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/turf/open/floor/plating, +/area/storage/tech) +"bJo" = ( +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/science/research) +"bJp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bJq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/science/research) +"bJs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJu" = ( +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"bJv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJx" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bJy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bJA" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bJB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bJC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/sleeper) +"bJD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/medical/sleeper) +"bJE" = ( +/turf/closed/wall/r_wall, +/area/medical/medbay/central) +"bJF" = ( +/obj/machinery/pipedispenser/disposal/transit_tube, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bJG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bJH" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/shieldwallgen/xenobiologyaccess, +/turf/open/floor/plating, +/area/science/xenobiology) +"bJI" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bJJ" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bJK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bJL" = ( +/obj/machinery/door/window/southleft{ + dir = 1; + name = "Test Chamber"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bJM" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bJN" = ( +/turf/closed/wall, +/area/science/xenobiology) +"bJO" = ( +/obj/machinery/door/airlock/research{ + name = "Testing Lab"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bJP" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bJQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bJR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/science/storage) +"bJT" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/white, +/area/science/research) +"bJU" = ( +/obj/machinery/vending/wardrobe/science_wardrobe, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bJV" = ( +/obj/structure/closet/l3closet/scientist{ + pixel_x = -2 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bJW" = ( +/obj/item/transfer_valve{ + pixel_x = -5 + }, +/obj/item/transfer_valve{ + pixel_x = -5 + }, +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ + pixel_x = 5 + }, +/obj/item/transfer_valve{ + pixel_x = 5 + }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = -30; + receive_ore_updates = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bJX" = ( +/obj/item/assembly/signaler{ + pixel_y = 8 + }, +/obj/item/assembly/signaler{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/assembly/signaler{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/assembly/signaler{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bJY" = ( +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bJZ" = ( +/obj/item/assembly/timer{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/assembly/timer{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/assembly/timer{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/assembly/timer, +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bKa" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Toxins Lab APC"; + areastring = "/area/science/mixing"; + pixel_x = 26 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bKb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/science/mixing) +"bKc" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bKd" = ( +/obj/machinery/camera{ + c_tag = "Toxins Launch Room Access"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bKe" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/mixing) +"bKf" = ( +/obj/machinery/door/window/southleft{ + name = "Mass Driver Door"; + req_access_txt = "7" + }, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel, +/area/science/mixing) +"bKg" = ( +/turf/open/floor/plating/airless, +/area/science/test_area) +"bKh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bKi" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bKj" = ( +/obj/machinery/camera{ + c_tag = "Mining Dock External"; + dir = 8 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKk" = ( +/obj/item/stack/ore/silver, +/obj/item/stack/ore/silver, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKl" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKm" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall, +/area/quartermaster/miningdock) +"bKn" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/pickaxe{ + pixel_x = 5 + }, +/obj/item/shovel{ + pixel_x = -5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKo" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKp" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKq" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"bKr" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bKs" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/tech) +"bKt" = ( +/obj/structure/table, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/turf/open/floor/plating, +/area/storage/tech) +"bKu" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/turf/open/floor/plating, +/area/storage/tech) +"bKv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bKw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/aft) +"bKx" = ( +/obj/structure/closet/crate, +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"bKy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/aft) +"bKz" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plating, +/area/construction) +"bKB" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKC" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bKG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKI" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + sortType = 11 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKK" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Medbay APC"; + areastring = "/area/medical/medbay/central"; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKL" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bKN" = ( +/obj/machinery/door/airlock/medical{ + name = "Apothecary"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bKO" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bKP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/westleft{ + name = "Delivery Desk"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bKQ" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/medbay/central) +"bKS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "CM Office APC"; + areastring = "/area/crew_quarters/heads/cmo"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bKU" = ( +/obj/machinery/door/airlock/engineering/abandoned{ + name = "Construction Area"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"bKV" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bKW" = ( +/obj/item/wrench, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bKX" = ( +/obj/machinery/button/door{ + id = "misclab"; + name = "Test Chamber Blast Doors"; + pixel_y = -2; + req_access_txt = "55" + }, +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bKY" = ( +/obj/machinery/computer/security/telescreen{ + name = "Test Chamber Monitor"; + network = list("xeno"); + pixel_y = 2 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bKZ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bLa" = ( +/obj/machinery/door/window/southleft{ + name = "Test Chamber"; + req_access_txt = "55" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bLb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bLc" = ( +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bLd" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 8; + pixel_y = -28; + req_access_txt = "39" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bLe" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall, +/area/science/xenobiology) +"bLf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bLg" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bLh" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall, +/area/science/research) +"bLi" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bLj" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/science/mixing) +"bLk" = ( +/obj/machinery/mass_driver{ + dir = 4; + id = "toxinsdriver" + }, +/turf/open/floor/plating, +/area/science/mixing) +"bLl" = ( +/obj/machinery/door/poddoor{ + id = "toxinsdriver"; + name = "toxins launcher bay door" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/science/mixing) +"bLm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/mixing) +"bLn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bLo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bLp" = ( +/obj/item/beacon, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bLq" = ( +/turf/closed/indestructible{ + desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease"; + icon_state = "riveted"; + name = "hyper-reinforced wall" + }, +/area/science/test_area) +"bLr" = ( +/obj/item/target/alien/anchored, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera/preset/toxins{ + dir = 8 + }, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/science/test_area) +"bLu" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bLv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bLw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bLx" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/turf/open/floor/plating, +/area/storage/tech) +"bLy" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/turf/open/floor/plating, +/area/storage/tech) +"bLz" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/storage/tech) +"bLA" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/t_scanner, +/obj/item/multitool, +/turf/open/floor/plating, +/area/storage/tech) +"bLB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bLC" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/construction) +"bLD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/storage/tech) +"bLE" = ( +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"bLF" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/power/apc{ + dir = 2; + name = "Delivery Office APC"; + areastring = "/area/quartermaster/sorting"; + pixel_x = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bLG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"bLH" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/checker, +/area/hallway/primary/aft) +"bLI" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bLJ" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bLK" = ( +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bLL" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bLM" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bLN" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bLO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bLP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bLQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bLR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bLS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bLT" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bLU" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/chem_dispenser, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bLV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/chem_heater, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bLW" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bLX" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bLY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bLZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bMa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bMb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bMc" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bMd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bMe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"bMf" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/item/stock_parts/cell/high/plus, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bMg" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Xenobiology APC"; + areastring = "/area/science/xenobiology"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bMh" = ( +/obj/structure/chair/stool, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bMi" = ( +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bMj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/maintenance/port/aft) +"bMk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bMl" = ( +/obj/machinery/processor/slime, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bMm" = ( +/obj/machinery/monkey_recycler, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bMn" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + desc = "Used to grind things up into raw materials and liquids."; + pixel_y = 5 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bMo" = ( +/obj/machinery/smartfridge/extract/preloaded, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bMp" = ( +/obj/structure/closet/l3closet/scientist, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/item/extinguisher, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bMq" = ( +/obj/structure/closet/l3closet/scientist, +/obj/item/extinguisher, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bMr" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/xenobiology) +"bMs" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/research) +"bMt" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"bMu" = ( +/obj/machinery/door/poddoor/incinerator_toxmix, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"bMv" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) +"bMw" = ( +/obj/machinery/sparker/toxmix{ + dir = 2; + pixel_x = 25 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"bMx" = ( +/obj/machinery/airlock_sensor/incinerator_toxmix{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine, +/area/science/mixing) +"bMy" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "mix to port" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bMz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bMA" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bMB" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bMC" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bMD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bME" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bMG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bMH" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bMI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bMJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bMK" = ( +/turf/closed/wall, +/area/engine/atmos) +"bML" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMM" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMN" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMP" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bMR" = ( +/obj/machinery/pipedispenser, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMS" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics North East" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Distro to Waste" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/meter/atmos/atmos_waste_loop, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 2 + }, +/obj/machinery/meter/atmos/distro_loop, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMW" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMX" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Air to Distro" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bMY" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bMZ" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bNb" = ( +/obj/item/airlock_painter, +/obj/structure/lattice, +/obj/structure/closet, +/turf/open/space, +/area/space/nearstation) +"bNc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bNd" = ( +/turf/closed/wall/r_wall, +/area/medical/virology) +"bNe" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bNf" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall, +/area/medical/virology) +"bNg" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bNh" = ( +/obj/machinery/computer/pandemic, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bNi" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bNj" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation A"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bNk" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/medical/virology) +"bNl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation B"; + req_access_txt = "39" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bNm" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bNn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bNo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bNp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bNq" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/mineral/plasma, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bNr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab"; + req_access_txt = "55" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bNs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bNt" = ( +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"bNu" = ( +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, +/turf/open/floor/engine, +/area/science/mixing) +"bNv" = ( +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, +/turf/open/floor/engine, +/area/science/mixing) +"bNw" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 + }, +/turf/open/floor/engine, +/area/science/mixing) +"bNx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bNy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bNz" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/camera{ + c_tag = "Toxins Lab East"; + dir = 8; + network = list("ss13","rd"); + pixel_y = -22 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bNA" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bNB" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bNC" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bND" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bNE" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bNF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plating/airless, +/area/science/test_area) +"bNG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/test_area) +"bNH" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/obj/item/paper_bin{ + pixel_x = -3 + }, +/obj/item/pen{ + pixel_x = -3 + }, +/obj/item/folder/yellow{ + pixel_x = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bNI" = ( +/turf/closed/wall, +/area/construction) +"bNJ" = ( +/turf/open/floor/plating, +/area/construction) +"bNK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access_txt = "50" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bNL" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plating, +/area/construction) +"bNN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bNO" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/corner, +/area/hallway/primary/aft) +"bNP" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bNQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bNR" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Monitoring"; + dir = 2 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/checker, +/area/engine/atmos) +"bNS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bNT" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics North West"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bNU" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/medical/virology) +"bNV" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bNW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bNX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bNY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bNZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bOa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOc" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix to Distro" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOd" = ( +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOe" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOf" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bOg" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix to Incinerator" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOh" = ( +/obj/structure/grille, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bOi" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/space/nearstation) +"bOj" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bOk" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bOl" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/announcement_system, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bOm" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOn" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOo" = ( +/obj/item/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Telecomms)"; + pixel_y = 26 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bOp" = ( +/obj/structure/closet/emcloset, +/obj/machinery/camera{ + c_tag = "Virology Airlock"; + network = list("ss13","medbay"); + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOr" = ( +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOs" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOt" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOu" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bOv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bOw" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bOx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bOy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bOz" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bOA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/science/research) +"bOB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/science/misc_lab) +"bOC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bOD" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bOE" = ( +/obj/machinery/sparker/toxmix{ + dir = 2; + pixel_x = 25 + }, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"bOF" = ( +/obj/structure/sign/warning/fire{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/engine, +/area/science/mixing) +"bOG" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "port to mix" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bOH" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/button/door/incinerator_vent_toxmix{ + pixel_x = -25; + pixel_y = 5 + }, +/obj/machinery/button/ignition/incinerator/toxmix{ + pixel_x = -25; + pixel_y = -5 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bOI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"bOJ" = ( +/obj/item/target, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/science/test_area) +"bOK" = ( +/obj/structure/barricade/wooden, +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bOL" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"bOM" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bON" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kanyewest"; + name = "privacy shutters" + }, +/turf/open/floor/plating, +/area/security/detectives_office) +"bOO" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Engineering Security APC"; + areastring = "/area/security/checkpoint/engineering"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bOP" = ( +/obj/structure/table/glass, +/obj/structure/reagent_dispensers/virusfood{ + pixel_x = -30 + }, +/obj/item/book/manual/wiki/infections{ + pixel_y = 7 + }, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/spray/cleaner, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bOQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bOR" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bOS" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + dir = 4; + freq = 1400; + location = "Atmospherics" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/northleft{ + dir = 4; + icon_state = "left"; + name = "Atmospherics Desk"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOU" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOW" = ( +/obj/machinery/computer/atmos_control{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 4; + name = "Atmos RC"; + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner, +/area/engine/atmos) +"bOX" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bOY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/atmos) +"bOZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bPb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research/glass{ + name = "Circuitry Lab"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bPc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPd" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Waste In" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPe" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPf" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Air to Mix" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPg" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix Outlet Pump" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPh" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bPi" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bPj" = ( +/obj/machinery/atmospherics/pipe/simple{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bPk" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics Waste Tank" + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) +"bPl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output{ + dir = 8 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) +"bPm" = ( +/turf/open/floor/engine/vacuum, +/area/engine/atmos) +"bPn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/aft) +"bPo" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bPp" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bPq" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bPr" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/closet/l3closet, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bPs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/misc_lab) +"bPt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bPu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bPw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bPx" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/warning/deathsposal{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPy" = ( +/obj/effect/landmark/start/scientist, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/comfy/black, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bPz" = ( +/obj/structure/table/glass, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 7 + }, +/obj/item/storage/box/syringes{ + pixel_y = 5 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/storage/box/monkeycubes, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPA" = ( +/obj/machinery/computer/camera_advanced/xenobio{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPB" = ( +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPC" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bPD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bPE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/portable_atmospherics/canister/bz, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"bPG" = ( +/obj/machinery/chem_master, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPH" = ( +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = -30; + receive_ore_updates = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/item/slime_scanner, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPI" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPJ" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/dropper, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bPK" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/misc_lab) +"bPL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bPM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"bPN" = ( +/turf/closed/wall, +/area/science/misc_lab) +"bPO" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bPP" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bPQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bPU" = ( +/obj/item/shard, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bPV" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maint Bar Access"; + req_access_txt = "12" + }, +/obj/structure/barricade/wooden{ + name = "wooden barricade (CLOSED)" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bPW" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bPX" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bPY" = ( +/obj/structure/girder, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bPZ" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bQa" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bQb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bQc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plating, +/area/construction) +"bQd" = ( +/obj/structure/table, +/obj/item/folder/blue, +/obj/item/pen/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bQe" = ( +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/machinery/button/door{ + desc = "A remote control-switch for the engineering security doors."; + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_x = -24; + pixel_y = -6; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/radio/off, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light_switch{ + pixel_x = -27; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bQf" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/checker, +/area/hallway/primary/aft) +"bQg" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bQh" = ( +/obj/structure/tank_dispenser{ + pixel_x = -1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQi" = ( +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bQj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQl" = ( +/obj/machinery/computer/atmos_control{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner, +/area/engine/atmos) +"bQm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/engine/atmos) +"bQo" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQp" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQq" = ( +/obj/machinery/camera{ + c_tag = "Security Post - Engineering"; + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bQr" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQs" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Mix to Filter" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQu" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQv" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQw" = ( +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQx" = ( +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQy" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bQz" = ( +/obj/machinery/computer/atmos_control/tank/mix_tank{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bQA" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating/airless, +/area/engine/atmos) +"bQB" = ( +/obj/machinery/air_sensor/atmos/mix_tank, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) +"bQC" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) +"bQD" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bQE" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bQF" = ( +/obj/machinery/vending/wardrobe/viro_wardrobe, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bQG" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/circuit) +"bQH" = ( +/obj/structure/closet/l3closet, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bQI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bQJ" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bQK" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Control Room"; + req_access_txt = "19; 61" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bQL" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bQM" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bQN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology North"; + dir = 8; + network = list("ss13","rd") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bQO" = ( +/obj/structure/closet/bombcloset, +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bQP" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/tcommsat/computer) +"bQQ" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bQR" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/ears/earmuffs, +/obj/machinery/camera{ + c_tag = "Testing Lab North"; + dir = 2; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bQS" = ( +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + dir = 2; + name = "Science Requests Console"; + pixel_y = 30; + receive_ore_updates = 1 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bQT" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bQU" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bQV" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bQW" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bQY" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_circuit_printer, +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bQZ" = ( +/turf/closed/wall/r_wall, +/area/science/misc_lab) +"bRa" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/stack/sheet/metal/ten, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bRg" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bRh" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bRi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bRj" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bRk" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bRl" = ( +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) +"bRm" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bRn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/construction) +"bRo" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/engine{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bRp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bRq" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner, +/area/hallway/primary/aft) +"bRr" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/atmospheric_technician, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRs" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/window/northleft{ + dir = 4; + icon_state = "left"; + name = "Atmospherics Desk"; + req_access_txt = "24" + }, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRu" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner, +/area/engine/atmos) +"bRv" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/atmospheric_technician, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRw" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRx" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/engine/atmos) +"bRy" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRz" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass{ + name = "Distribution Loop"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Pure to Mix" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRF" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRG" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Unfiltered to Mix" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRH" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRI" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bRJ" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRK" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"bRL" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{ + dir = 8 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) +"bRM" = ( +/obj/structure/table, +/obj/machinery/light_switch{ + pixel_x = -23 + }, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bRN" = ( +/turf/closed/wall, +/area/medical/virology) +"bRO" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bRP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "virology_airlock_interior"; + name = "Virology Interior Airlock"; + req_access_txt = "39" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bRQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/virology) +"bRR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Monkey Pen"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bRS" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/depsec/engineering, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bRT" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/disposaloutlet, +/turf/open/floor/engine, +/area/science/xenobiology) +"bRU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bRV" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bRW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bRX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bRY" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/button/door{ + id = "xenobio8"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bRZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bSa" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio8"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bSb" = ( +/obj/structure/closet/l3closet/scientist{ + pixel_x = -2 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bSc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bSd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bSe" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/electropack, +/obj/item/healthanalyzer, +/obj/item/assembly/signaler, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bSf" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bSg" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bSh" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/engine, +/area/science/misc_lab) +"bSi" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bSj" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bSk" = ( +/obj/effect/landmark/start/scientist, +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bSl" = ( +/turf/closed/wall/r_wall, +/area/science/circuit) +"bSm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"bSn" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bSo" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bSp" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bSq" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bSs" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bSt" = ( +/obj/structure/closet/emcloset, +/obj/machinery/camera{ + c_tag = "Telecomms Monitoring"; + dir = 8; + network = list("tcomms") + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bSv" = ( +/obj/machinery/camera{ + c_tag = "Construction Area"; + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction) +"bSw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bSx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"bSy" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"bSz" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/construction) +"bSA" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bSB" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/turf/open/floor/plating, +/area/engine/atmos) +"bSD" = ( +/obj/structure/sign/plaques/atmos{ + pixel_y = -32 + }, +/obj/structure/table, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSE" = ( +/obj/machinery/computer/station_alert{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_x = 24; + pixel_y = 4; + req_access_txt = "24" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/corner, +/area/engine/atmos) +"bSF" = ( +/obj/structure/table, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/clothing/head/welding{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/multitool, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSG" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSH" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/storage/belt/utility, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSJ" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bSK" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bSM" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bSN" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bSP" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"bSQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bSR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bSS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology{ + name = "Break Room"; + req_access_txt = "39" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bST" = ( +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "virology_airlock_exterior"; + idInterior = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Console"; + pixel_x = 8; + pixel_y = 22; + req_access_txt = "39" + }, +/obj/machinery/light_switch{ + pixel_x = -4; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bSU" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bSV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bSW" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bSX" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 1; + name = "Virology APC"; + areastring = "/area/medical/virology"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/camera{ + c_tag = "Virology Module"; + network = list("ss13","medbay") + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bSY" = ( +/obj/machinery/vending/medical, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bTa" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bTb" = ( +/obj/machinery/door/window/northleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bTc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bTd" = ( +/obj/machinery/door/window/northleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bTe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio8"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bTf" = ( +/obj/structure/rack, +/obj/item/wrench, +/obj/item/crowbar, +/obj/machinery/computer/security/telescreen{ + name = "Test Chamber Monitor"; + network = list("test"); + pixel_y = -30 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bTg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bTh" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bTi" = ( +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bTj" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/checkpoint/engineering) +"bTk" = ( +/obj/machinery/atmospherics/components/binary/valve, +/turf/open/floor/engine, +/area/science/misc_lab) +"bTl" = ( +/turf/open/floor/engine, +/area/science/misc_lab) +"bTm" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 1 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bTn" = ( +/obj/structure/table, +/obj/item/assembly/igniter{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/assembly/igniter{ + pixel_x = 5; + pixel_y = -4 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bTo" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bTp" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/glass/fifty, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bTr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bTz" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bTA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/port/aft) +"bTB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/port/aft) +"bTC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/port/aft) +"bTD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bTE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bTF" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bTG" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bTH" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bTI" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bTJ" = ( +/obj/machinery/power/apc{ + name = "Aft Hall APC"; + areastring = "/area/hallway/primary/aft"; + dir = 8; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bTK" = ( +/obj/item/crowbar, +/obj/item/wrench, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/corner, +/area/hallway/primary/aft) +"bTL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/engine/atmos) +"bTM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/engine/atmos) +"bTN" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics Monitoring"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTO" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTP" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTQ" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTR" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTS" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTT" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTU" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTV" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "N2O Outlet Pump" + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/engine/atmos) +"bTW" = ( +/turf/open/floor/engine/n2o, +/area/engine/atmos) +"bTX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output{ + dir = 8 + }, +/turf/open/floor/engine/n2o, +/area/engine/atmos) +"bTY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bTZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bUa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/medical/virology) +"bUb" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bUc" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Telecomms Admin"; + departmentType = 5; + name = "Telecomms RC"; + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bUd" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio3"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bUe" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bUf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bUg" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bUh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio8"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bUi" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bUj" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bUk" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bUl" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortType = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bUm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bUn" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bUo" = ( +/obj/structure/table, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/turf/open/floor/engine, +/area/science/misc_lab) +"bUp" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bUq" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bUr" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"bUs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUt" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUu" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUx" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bUz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUB" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Telecomms Monitoring APC"; + areastring = "/area/tcommsat/computer"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"bUD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/engine/atmos) +"bUF" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/corner{ + dir = 1 + }, +/area/engine/atmos) +"bUG" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bUH" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUI" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner, +/area/engine/atmos) +"bUJ" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUK" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Air to External" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUL" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUN" = ( +/obj/item/beacon, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUO" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to Port" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUP" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Air to Port" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUQ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Pure to Port" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUR" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUS" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUT" = ( +/obj/machinery/computer/atmos_control/tank/nitrous_tank{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, +/area/engine/atmos) +"bUU" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/engine/n2o, +/area/engine/atmos) +"bUV" = ( +/obj/machinery/air_sensor/atmos/nitrous_tank, +/turf/open/floor/engine/n2o, +/area/engine/atmos) +"bUW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/n2o, +/area/engine/atmos) +"bUY" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bUZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bVa" = ( +/obj/machinery/smartfridge/chemistry/virology/preloaded, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bVb" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bVc" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bVd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bVe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bVf" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bVg" = ( +/obj/item/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bVh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bVi" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall, +/area/science/xenobiology) +"bVj" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bVk" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bVl" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bVm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bVn" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bVo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/break_room) +"bVp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bVq" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bVr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bVs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"bVt" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/target_stake, +/turf/open/floor/plasteel, +/area/science/circuit) +"bVu" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/space, +/area/space/nearstation) +"bVv" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"bVx" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 2 + }, +/turf/open/floor/plating/airless, +/area/maintenance/port/aft) +"bVy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bVA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVC" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVD" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/sign/warning/deathsposal{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVE" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVF" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVG" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVI" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/server) +"bVJ" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"bVK" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bVM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bVN" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics Access"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/corner{ + dir = 1 + }, +/area/engine/atmos) +"bVO" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bVP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner, +/area/engine/atmos) +"bVS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/structure/sign/warning/securearea, +/turf/closed/wall, +/area/engine/atmos) +"bVT" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "External to Filter" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVU" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVW" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVX" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVY" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bVZ" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWa" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWb" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWc" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/engine/atmos) +"bWd" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{ + dir = 8 + }, +/turf/open/floor/engine/n2o, +/area/engine/atmos) +"bWe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bWf" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex, +/obj/machinery/requests_console{ + department = "Virology"; + name = "Virology Requests Console"; + pixel_x = -32 + }, +/obj/item/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bWg" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/radio/headset/headset_med, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bWh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bWi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/virology) +"bWj" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/virology) +"bWl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bWm" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/button/door{ + id = "xenobio7"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bWn" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio7"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bWo" = ( +/obj/item/radio/intercom{ + pixel_x = -25 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bWp" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/scientist, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bWq" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bWr" = ( +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bWs" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bWt" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bWu" = ( +/obj/machinery/door/airlock/engineering{ + name = "Telecommunications"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bWv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bWw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bWx" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bWy" = ( +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bWz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bWA" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bWB" = ( +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"bWC" = ( +/obj/machinery/telecomms/bus/preset_four, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bWD" = ( +/obj/machinery/telecomms/server/presets/engineering, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bWE" = ( +/obj/machinery/telecomms/processor/preset_three, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bWF" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc/highcap/five_k{ + dir = 1; + name = "Telecomms Server APC"; + areastring = "/area/tcommsat/server"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"bWG" = ( +/obj/machinery/telecomms/server/presets/security, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bWH" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bWI" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/tcommsat/computer) +"bWJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bWK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bWL" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bWM" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/engine/atmos) +"bWN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 1 + }, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bWP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWQ" = ( +/turf/closed/wall/r_wall, +/area/security/checkpoint/engineering) +"bWR" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWS" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics West"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWT" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Air to Port" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bWV" = ( +/obj/structure/door_assembly/door_assembly_mai, +/turf/open/floor/plating, +/area/maintenance/aft) +"bWW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bWX" = ( +/obj/structure/table/glass, +/obj/item/radio/intercom{ + pixel_x = -25 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bWY" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/pen/red, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bWZ" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/virologist, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bXa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bXb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/virology) +"bXc" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bXd" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bXe" = ( +/mob/living/simple_animal/slime, +/turf/open/floor/engine, +/area/science/xenobiology) +"bXf" = ( +/obj/machinery/door/window/northleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bXg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio7"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"bXh" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bXi" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/pen, +/obj/item/taperecorder, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bXj" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/button/ignition{ + id = "testigniter"; + pixel_x = -6; + pixel_y = 2 + }, +/obj/machinery/button/door{ + id = "testlab"; + name = "Test Chamber Blast Doors"; + pixel_x = 4; + pixel_y = 2; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bXk" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AIE"; + location = "AftH" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bXl" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bXm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bXn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bXo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bXp" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bXq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bXr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bXs" = ( +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bXt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/science/circuit) +"bXv" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bXw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bXx" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bXy" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bXz" = ( +/obj/machinery/telecomms/processor/preset_four, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bXA" = ( +/obj/machinery/telecomms/server/presets/common, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bXB" = ( +/obj/machinery/telecomms/bus/preset_three, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bXC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"bXD" = ( +/obj/machinery/telecomms/server/presets/command, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bXE" = ( +/obj/machinery/computer/message_monitor{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bXF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/tcommsat/computer) +"bXG" = ( +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bXH" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bXI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bXJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/engine/atmos) +"bXK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bXL" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"bXM" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bXN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bXO" = ( +/obj/structure/filingcabinet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bXP" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = 30 + }, +/obj/structure/closet/secure_closet/security/engine, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"bXQ" = ( +/obj/structure/fireaxecabinet{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bXR" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bXS" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/engine/atmos) +"bXT" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/engine/atmos) +"bXU" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bXV" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics East"; + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Plasma Outlet Pump" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bXW" = ( +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bXX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ + dir = 8 + }, +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bXY" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bXZ" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"bYa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bYb" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bYc" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/warning/deathsposal{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bYd" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bYe" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bYf" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio2"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bYg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bYh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio7"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bYi" = ( +/obj/machinery/door/poddoor/preopen{ + id = "testlab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/misc_lab) +"bYj" = ( +/obj/machinery/door/poddoor/preopen{ + id = "testlab"; + name = "test chamber blast door" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/misc_lab) +"bYk" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/science/misc_lab) +"bYl" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bYm" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/science/misc_lab) +"bYn" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/science/misc_lab) +"bYp" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYq" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYr" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bYs" = ( +/obj/structure/closet/crate, +/obj/item/clothing/under/color/lightpurple, +/obj/item/stack/spacecash/c200, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"bYt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bYu" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bYv" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Space" + }, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bYw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bYx" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"bYy" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Incinerator Access"; + req_access_txt = "12" + }, +/obj/structure/barricade/wooden{ + name = "wooden barricade (CLOSED)" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bYz" = ( +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bYA" = ( +/obj/machinery/telecomms/broadcaster/preset_right, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bYB" = ( +/obj/machinery/blackbox_recorder, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bYC" = ( +/obj/machinery/telecomms/receiver/preset_right, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"bYD" = ( +/obj/machinery/computer/telecomms/server{ + dir = 4; + network = "tcommsat" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bYE" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"bYG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYH" = ( +/turf/closed/wall, +/area/engine/break_room) +"bYI" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYJ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/corner{ + dir = 1 + }, +/area/engine/break_room) +"bYK" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/checker, +/area/engine/break_room) +"bYL" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/corner{ + dir = 1 + }, +/area/engine/break_room) +"bYM" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bYN" = ( +/turf/closed/wall, +/area/security/checkpoint/engineering) +"bYO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bYP" = ( +/obj/effect/landmark/event_spawn, +/turf/closed/wall, +/area/crew_quarters/bar) +"bYQ" = ( +/obj/machinery/suit_storage_unit/atmos, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bYR" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall, +/area/engine/atmos) +"bYS" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bYT" = ( +/obj/machinery/computer/atmos_control/tank/toxin_tank{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bYU" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bYV" = ( +/obj/machinery/air_sensor/atmos/toxin_tank, +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bYW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bYX" = ( +/obj/structure/closet/l3closet/virology, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bYY" = ( +/obj/structure/closet/secure_closet/medical1, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"bYZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bZa" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology South"; + dir = 4; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bZb" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"bZc" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bZd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/junction/flip, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"bZe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/break_room) +"bZg" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"bZi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard) +"bZj" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bZk" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bZl" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Port" + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bZm" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bZn" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"bZo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"bZp" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"bZq" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/tcommsat/computer) +"bZr" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/tcommsat/computer) +"bZs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/tcommsat/computer) +"bZt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZu" = ( +/obj/machinery/camera{ + c_tag = "Engineering Foyer"; + dir = 1 + }, +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -27 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/tcommsat/computer) +"bZw" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZx" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bZy" = ( +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZz" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/light_switch{ + pixel_x = -23 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZA" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZB" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bZC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "privacy shutter" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"bZD" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "privacy shutter" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"bZE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"bZF" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Atmospherics APC"; + areastring = "/area/engine/atmos"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bZG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bZH" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/item/wrench, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bZI" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bZJ" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bZK" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bZL" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ + dir = 8 + }, +/turf/open/floor/engine/plasma, +/area/engine/atmos) +"bZM" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/aft) +"bZN" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZO" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bZQ" = ( +/obj/machinery/atmospherics/components/binary/valve/on{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZR" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZS" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZT" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZU" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/aft) +"bZV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bZW" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio6"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"bZX" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio6"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"bZY" = ( +/obj/item/radio/intercom{ + pixel_x = -25 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"bZZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/misc_lab) +"caa" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"cac" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cad" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cae" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"caf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/maintenance/port/aft) +"cag" = ( +/obj/machinery/ntnet_relay, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"cah" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"cai" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"cak" = ( +/obj/machinery/telecomms/hub/preset, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cal" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Server Room"; + req_access_txt = "61" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/computer) +"can" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Server Room"; + req_access_txt = "61" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/computer) +"cao" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/computer) +"cap" = ( +/obj/machinery/light, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"caq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"car" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/port/aft) +"cas" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cat" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cau" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"cav" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"caw" = ( +/obj/structure/table, +/obj/item/clothing/glasses/meson, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cax" = ( +/obj/structure/closet/wardrobe/black, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cay" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"caz" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"caA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint/engineering) +"caC" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"caD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/checkpoint/engineering) +"caE" = ( +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 4; + name = "Atmos RC"; + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"caF" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Central"; + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Port to Filter" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"caG" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"caH" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/atmos) +"caI" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"caK" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"caL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"caM" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caN" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caO" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"caP" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caQ" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caR" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caS" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caT" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"caU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"caV" = ( +/obj/machinery/door/window/northleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"caW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio6"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"caX" = ( +/obj/machinery/sparker{ + id = "testigniter"; + pixel_x = -25 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"caY" = ( +/obj/item/beacon, +/turf/open/floor/engine, +/area/science/misc_lab) +"caZ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "testlab"; + name = "test chamber blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/engine, +/area/science/misc_lab) +"cba" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"cbb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"cbc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"cbd" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Testing Lab APC"; + areastring = "/area/science/misc_lab"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"cbe" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"cbf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cbg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"cbh" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/pen, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cbi" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cbj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/maintenance/port/aft) +"cbk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Mix to Space" + }, +/turf/open/floor/plating/airless, +/area/maintenance/port/aft) +"cbl" = ( +/obj/machinery/camera{ + c_tag = "Telecomms Server Room"; + dir = 4; + network = list("tcomms") + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cbm" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/tcommsat/computer) +"cbn" = ( +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'SERVER ROOM'."; + name = "SERVER ROOM" + }, +/turf/closed/wall, +/area/tcommsat/computer) +"cbo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/tcommsat/computer) +"cbp" = ( +/obj/structure/closet/secure_closet/engineering_chief{ + req_access_txt = "0" + }, +/obj/machinery/power/apc/highcap/five_k{ + dir = 4; + name = "CE Office APC"; + areastring = "/area/crew_quarters/heads/chief"; + pixel_x = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cbq" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/mob/living/simple_animal/parrot/Poly, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cbr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"cbs" = ( +/obj/structure/sign/warning/securearea, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/engine/engineering) +"cbt" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "Aft Primary Hallway 1"; + dir = 8; + pixel_y = -22 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"cbu" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Engineering Foyer APC"; + areastring = "/area/engine/break_room"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cbv" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Research Delivery access"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cbw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cbx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cby" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cbz" = ( +/obj/machinery/vending/wardrobe/atmos_wardrobe, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbB" = ( +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbC" = ( +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbD" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Port to Filter" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbE" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/item/cigbutt, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbG" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "CO2 Outlet Pump" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cbH" = ( +/turf/open/floor/engine/co2, +/area/engine/atmos) +"cbI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{ + dir = 8 + }, +/turf/open/floor/engine/co2, +/area/engine/atmos) +"cbJ" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/aft) +"cbL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbO" = ( +/obj/machinery/door/airlock/atmos/abandoned{ + name = "Atmospherics Maintenance"; + req_access_txt = "12;24" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbP" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cbR" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio1"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cbS" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"cbT" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cbU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio6"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/engine, +/area/science/xenobiology) +"cbV" = ( +/obj/machinery/camera{ + c_tag = "Testing Chamber"; + dir = 1; + network = list("test","rd") + }, +/obj/machinery/light, +/turf/open/floor/engine, +/area/science/misc_lab) +"cbW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"cbY" = ( +/obj/structure/table/reinforced, +/obj/item/multitool, +/obj/item/screwdriver, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = -30; + receive_ore_updates = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"cbZ" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_circuit_printer, +/obj/machinery/computer/security/telescreen/circuitry{ + dir = 1; + pixel_y = -30 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"cca" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/solar{ + id = "portsolar"; + name = "Port Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/port/aft) +"ccb" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/solar{ + id = "portsolar"; + name = "Port Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/port/aft) +"ccc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"ccd" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cce" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Construction Area Maintenance"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ccf" = ( +/obj/machinery/telecomms/broadcaster/preset_left, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"ccg" = ( +/obj/machinery/telecomms/message_server, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cch" = ( +/obj/machinery/telecomms/receiver/preset_left, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cci" = ( +/obj/structure/table, +/obj/item/multitool, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"ccj" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cck" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"ccl" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"ccm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ccn" = ( +/obj/machinery/camera{ + c_tag = "Engineering Access" + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cco" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ccp" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cct" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccu" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ccv" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ccw" = ( +/turf/closed/wall/r_wall, +/area/engine/engineering) +"ccx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 1 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ccy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ccz" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "N2 to Pure" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ccA" = ( +/obj/machinery/computer/atmos_control/tank/carbon_tank{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ccB" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/engine/co2, +/area/engine/atmos) +"ccC" = ( +/obj/machinery/air_sensor/atmos/carbon_tank, +/turf/open/floor/engine/co2, +/area/engine/atmos) +"ccD" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/co2, +/area/engine/atmos) +"ccE" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_y = 28 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccF" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccG" = ( +/obj/structure/chair/stool, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccI" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccK" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccL" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccM" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccN" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ccO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccP" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"ccQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/xenobiology) +"ccR" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/science/misc_lab) +"ccT" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"ccU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"ccV" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccW" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ccX" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"ccY" = ( +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/food/condiment/sugar, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ccZ" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cda" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdb" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdc" = ( +/obj/machinery/telecomms/bus/preset_two, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cdd" = ( +/obj/machinery/telecomms/server/presets/supply, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cde" = ( +/obj/machinery/telecomms/processor/preset_one, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cdf" = ( +/obj/machinery/telecomms/server/presets/medical, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cdg" = ( +/obj/machinery/computer/telecomms/monitor{ + dir = 4; + network = "tcommsat" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"cdh" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdj" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdk" = ( +/obj/machinery/computer/atmos_alert, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cdl" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet, +/area/chapel/main) +"cdm" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/paper/monitorkey, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cdn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cdo" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cdp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cdq" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdr" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cds" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Starboard Quarter Maintenance APC"; + areastring = "/area/maintenance/starboard/aft"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/camera{ + c_tag = "Aft Starboard Solar Access"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cdu" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdv" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdw" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdx" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdy" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdz" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "O2 to Pure" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdA" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdB" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdC" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cdD" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{ + dir = 8 + }, +/turf/open/floor/engine/co2, +/area/engine/atmos) +"cdE" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdF" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdH" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdI" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdK" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdN" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cdO" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdQ" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdR" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdS" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/science/misc_lab) +"cdT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cdU" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/chief_engineer, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cdV" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cdW" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Port Quarter Maintenance APC"; + areastring = "/area/maintenance/port/aft"; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cdX" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/research) +"cdZ" = ( +/obj/machinery/telecomms/processor/preset_two, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cea" = ( +/obj/machinery/telecomms/server/presets/service, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"ceb" = ( +/obj/machinery/telecomms/bus/preset_one, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cec" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_y = -32 + }, +/obj/machinery/light, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server) +"ced" = ( +/obj/machinery/telecomms/server/presets/science, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cee" = ( +/obj/structure/table, +/obj/item/radio/off, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"cef" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/tcommsat/computer) +"ceg" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"ceh" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/bridge) +"cei" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"cej" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "engineering security door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/delivery, +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cek" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "engineering security door" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cel" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "engineering security door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cem" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cen" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ceo" = ( +/obj/machinery/keycard_auth{ + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cep" = ( +/obj/structure/sign/warning/securearea, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"ceq" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"cer" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"ces" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cet" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cev" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cew" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cex" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South West"; + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cey" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cez" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ceA" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"ceB" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ceC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceE" = ( +/obj/structure/sign/warning/fire{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceF" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/aft) +"ceI" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall, +/area/maintenance/aft) +"ceJ" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/aft) +"ceK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/closet/l3closet, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/aft) +"ceM" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceN" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceO" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceP" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/science/misc_lab) +"ceQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"ceR" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceS" = ( +/obj/item/stack/sheet/cardboard, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceT" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceU" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ceV" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ceW" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ceX" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/white, +/area/science/research) +"ceY" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ceZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Power Storage"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfa" = ( +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/item/wrench, +/obj/item/weldingtool, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfb" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/chief) +"cfc" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "privacy shutter" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"cfd" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/closet/radiation, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfe" = ( +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cfg" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cfi" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfj" = ( +/turf/closed/wall, +/area/maintenance/disposal/incinerator) +"cfk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Turbine Access"; + req_access_txt = "32" + }, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"cfl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/disposal/incinerator) +"cfm" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/toy/minimeteor, +/obj/item/poster/random_contraband, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfn" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/reagent_containers/food/snacks/donkpocket, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfo" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/roller, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/c_tube, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfq" = ( +/obj/structure/mopbucket, +/obj/item/caution, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 2; + external_pressure_bound = 140; + pressure_checks = 0; + name = "killroom vent" + }, +/obj/machinery/camera{ + c_tag = "Xenobiology Kill Room"; + dir = 4; + network = list("ss13","rd") + }, +/turf/open/floor/circuit/telecomms, +/area/science/xenobiology) +"cfs" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Air Supply Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cft" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Testing Lab Maintenance"; + req_access_txt = "47" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cfu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/misc_lab) +"cfv" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cfw" = ( +/turf/closed/wall/r_wall, +/area/maintenance/solars/port/aft) +"cfx" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/maintenance/solars/port/aft) +"cfy" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cfz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfB" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cfF" = ( +/obj/machinery/suit_storage_unit/ce, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/chief) +"cfG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfH" = ( +/obj/machinery/button/door{ + id = "ceprivacy"; + name = "Privacy Shutters Control"; + pixel_y = 26 + }, +/obj/machinery/holopad, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cfI" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfK" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall, +/area/engine/engineering) +"cfL" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfM" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/engineering{ + name = "Engine Room"; + req_access_txt = "10" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cfN" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfO" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfP" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfQ" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfR" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfT" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cfU" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/disposal/incinerator) +"cfW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfX" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Incinerator APC"; + areastring = "/area/maintenance/disposal/incinerator"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/maintenance/aft) +"cfY" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"cfZ" = ( +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cga" = ( +/obj/machinery/power/smes{ + capacity = 9e+006; + charge = 10000 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"cgb" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/warning/deathsposal{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/trunk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"cgc" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/aft) +"cgd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cge" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cgf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cgg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cgh" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cgi" = ( +/turf/open/floor/circuit/telecomms, +/area/science/xenobiology) +"cgj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/barricade/wooden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/biohazard, +/turf/open/floor/plating, +/area/science/xenobiology) +"cgl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 2; + external_pressure_bound = 120; + name = "killroom vent" + }, +/turf/open/floor/circuit/telecomms, +/area/science/xenobiology) +"cgm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgn" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cgo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgp" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgq" = ( +/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"cgs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgt" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgu" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgv" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cgw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cgx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cgy" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cgz" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"cgA" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"cgB" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/smes, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"cgC" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"cgD" = ( +/obj/machinery/camera{ + c_tag = "Aft Port Solar Access"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cgE" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/maintenance/solars/port/aft) +"cgF" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cgG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cgI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cgO" = ( +/obj/structure/rack, +/obj/item/lighter, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high/plus, +/obj/item/reagent_containers/pill/patch/silver_sulf, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cgQ" = ( +/obj/machinery/camera{ + c_tag = "Engineering East"; + dir = 8 + }, +/obj/machinery/vending/wardrobe/engi_wardrobe, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cgR" = ( +/turf/open/floor/plasteel, +/area/engine/engineering) +"cgS" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "privacy shutter" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"cgT" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/engineering{ + name = "SMES Room"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cgU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cgV" = ( +/obj/machinery/computer/atmos_control/tank/nitrogen_tank{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cgW" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cgX" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cgY" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "N2 Outlet Pump" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cgZ" = ( +/obj/machinery/computer/atmos_control/tank/oxygen_tank{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cha" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"chb" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "O2 Outlet Pump" + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"chc" = ( +/obj/machinery/computer/atmos_control/tank/air_tank{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/engine/atmos) +"chd" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/engine/atmos) +"che" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/engine/atmos) +"chf" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South East"; + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Air Outlet Pump" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner, +/area/engine/atmos) +"chg" = ( +/turf/open/floor/plating, +/area/engine/atmos) +"chh" = ( +/obj/machinery/atmospherics/components/unary/tank/toxins{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"chi" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general{ + level = 2 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"chj" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "plasma tank pump" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"chk" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/closed/wall, +/area/maintenance/disposal/incinerator) +"chl" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "atmospherics mix pump" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"chm" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"chn" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cho" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/circuit/telecomms, +/area/science/xenobiology) +"chp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"chq" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/circuit/telecomms, +/area/science/xenobiology) +"chr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Kill Chamber"; + req_access_txt = "55" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"chs" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/circuit/telecomms, +/area/science/xenobiology) +"cht" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"chu" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"chv" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chy" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chA" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chB" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"chC" = ( +/obj/structure/rack, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chD" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"chE" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"chF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"chG" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"chH" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"chI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"chJ" = ( +/obj/machinery/power/tracker, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/port/aft) +"chK" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"chL" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"chM" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"chN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"chO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"chP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"chQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"chR" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"chS" = ( +/obj/machinery/door/airlock/engineering{ + name = "Port Quarter Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"chT" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"chV" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = 5 + }, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"chX" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"chY" = ( +/obj/machinery/shieldgen, +/turf/open/floor/plating, +/area/engine/engineering) +"cia" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cic" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cid" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/power/apc/highcap/fifteen_k{ + dir = 1; + name = "Engineering APC"; + areastring = "/area/engine/engineering"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cie" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cif" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cig" = ( +/turf/closed/wall, +/area/engine/engineering) +"cii" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/geiger_counter, +/obj/item/geiger_counter, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cij" = ( +/obj/machinery/modular_computer/console/preset/engineering, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cik" = ( +/obj/machinery/computer/apc_control{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cim" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cin" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cio" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/stamp/ce, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cip" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"ciq" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "privacy shutter" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"cir" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cis" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cit" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"ciu" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"civ" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"cix" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"ciy" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4; + name = "input gas connector port" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ciz" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ciA" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "input port pump" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ciB" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/reagent_dispensers/watertank, +/obj/item/extinguisher, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ciC" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/turf/open/space, +/area/space/nearstation) +"ciD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + name = "output gas connector port" + }, +/obj/machinery/portable_atmospherics/canister, +/obj/structure/sign/warning/nosmoking{ + pixel_x = 28 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ciE" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ciF" = ( +/obj/structure/table, +/obj/item/cartridge/medical, +/turf/open/floor/plating, +/area/maintenance/aft) +"ciG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating, +/area/maintenance/aft) +"ciH" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/latexballon, +/turf/open/floor/plating, +/area/maintenance/aft) +"ciI" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ciJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"ciK" = ( +/obj/structure/rack, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ciL" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ciM" = ( +/obj/machinery/power/compressor{ + comp_id = "incineratorturbine"; + dir = 1; + luminosity = 2 + }, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/camera{ + c_tag = "Turbine Chamber"; + dir = 4; + network = list("turbine") + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"ciN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ciO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"ciP" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"ciQ" = ( +/obj/machinery/power/solar_control{ + dir = 4; + id = "portsolar"; + name = "Port Quarter Solar Control"; + track = 0 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"ciR" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Port Quarter Solar APC"; + areastring = "/area/maintenance/solars/port/aft"; + pixel_x = 23; + pixel_y = 2 + }, +/obj/machinery/camera{ + c_tag = "Aft Port Solar Control"; + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"ciS" = ( +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"ciT" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ciU" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ciW" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/engine/engineering) +"ciX" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"ciY" = ( +/obj/machinery/door/poddoor{ + id = "Secure Storage"; + name = "secure storage" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"ciZ" = ( +/turf/open/floor/plating, +/area/engine/engineering) +"cja" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjb" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel{ + name = "floor" + }, +/area/engine/engineering) +"cjc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cje" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjf" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cjg" = ( +/obj/machinery/computer/card/minor/ce{ + dir = 4 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 3; + name = "Chief Engineer RC"; + pixel_x = -32 + }, +/obj/machinery/camera{ + c_tag = "Chief Engineer's Office"; + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cjh" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cji" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjj" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cjk" = ( +/obj/structure/sign/warning/securearea, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cjl" = ( +/obj/machinery/camera{ + c_tag = "Engineering MiniSat Access"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjm" = ( +/obj/machinery/door/airlock/command{ + name = "MiniSat Access"; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjn" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/wood, +/area/maintenance/bar) +"cjo" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/plasteel, +/area/construction) +"cjp" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cjq" = ( +/obj/machinery/atmospherics/components/binary/valve{ + name = "Mix to Space" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cjr" = ( +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cjs" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cjt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cju" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Incinerator to Output" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cjv" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cjw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/aft) +"cjx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/disposal/incinerator) +"cjy" = ( +/obj/structure/disposalpipe/segment, +/obj/item/shard, +/turf/open/floor/plating, +/area/maintenance/aft) +"cjz" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/aft) +"cjA" = ( +/obj/structure/disposalpipe/segment, +/obj/item/cigbutt/roach, +/turf/open/floor/plating, +/area/maintenance/aft) +"cjB" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/obj/structure/table, +/obj/item/folder/white, +/obj/item/pen, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cjC" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cjD" = ( +/turf/closed/wall/r_wall, +/area/maintenance/solars/starboard/aft) +"cjE" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cjF" = ( +/obj/machinery/door/airlock/engineering{ + name = "Starboard Quarter Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cjG" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/maintenance/solars/starboard/aft) +"cjH" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"cjI" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cjJ" = ( +/turf/closed/wall/r_wall, +/area/engine/engine_smes) +"cjK" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cjL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"cjM" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Engineering Secure Storage"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cjN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjO" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjR" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjU" = ( +/obj/machinery/computer/station_alert{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/ce{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cjV" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cjW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"cjX" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cjY" = ( +/obj/structure/table/reinforced, +/obj/item/cartridge/engineering{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/cartridge/engineering{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/cartridge/engineering{ + pixel_x = 3 + }, +/obj/item/cartridge/atmos, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cka" = ( +/obj/machinery/door/poddoor/preopen{ + id = "testlab"; + name = "test chamber blast door" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/research/glass{ + name = "Test Chamber"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/misc_lab) +"ckb" = ( +/obj/machinery/atmospherics/pipe/simple, +/obj/structure/grille, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"ckc" = ( +/obj/machinery/atmospherics/pipe/simple, +/obj/structure/grille, +/obj/machinery/meter{ + name = "Mixed Air Tank In" + }, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"ckd" = ( +/obj/machinery/atmospherics/pipe/simple, +/obj/structure/grille, +/obj/machinery/meter{ + name = "Mixed Air Tank Out" + }, +/turf/closed/wall/r_wall, +/area/engine/atmos) +"cke" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ckf" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"ckg" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ckh" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to MiniSat" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cki" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ckj" = ( +/obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ckk" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "Incinerator to Space" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"ckl" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/aft) +"ckm" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Biohazard Disposals"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"ckn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/science/xenobiology) +"cko" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"ckp" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ckr" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cks" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"ckt" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Starboard Quarter Solar APC"; + areastring = "/area/maintenance/solars/starboard/aft"; + pixel_x = -26; + pixel_y = 3 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cku" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"ckv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ckw" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"ckx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cky" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"ckz" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"ckA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"ckB" = ( +/obj/machinery/field/generator, +/turf/open/floor/plating, +/area/engine/engineering) +"ckC" = ( +/obj/machinery/power/emitter, +/turf/open/floor/plating, +/area/engine/engineering) +"ckD" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/storage/box/lights/mixed, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckG" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/closet/crate/solarpanel_small, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckI" = ( +/obj/machinery/suit_storage_unit/engine, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckK" = ( +/obj/structure/tank_dispenser, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckL" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) +"ckM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"ckN" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/research/glass{ + name = "Test Chamber"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"ckO" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Chief Engineer"; + req_access_txt = "56" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"ckQ" = ( +/obj/structure/closet/cardboard, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"ckS" = ( +/obj/structure/closet/cardboard, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ckT" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckU" = ( +/obj/machinery/air_sensor/atmos/nitrogen_tank, +/turf/open/floor/engine/n2, +/area/engine/atmos) +"ckV" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{ + dir = 1 + }, +/turf/open/floor/engine/n2, +/area/engine/atmos) +"ckW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{ + dir = 1 + }, +/turf/open/floor/engine/n2, +/area/engine/atmos) +"ckX" = ( +/obj/machinery/air_sensor/atmos/oxygen_tank, +/turf/open/floor/engine/o2, +/area/engine/atmos) +"ckY" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input{ + dir = 1 + }, +/turf/open/floor/engine/o2, +/area/engine/atmos) +"ckZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{ + dir = 1 + }, +/turf/open/floor/engine/o2, +/area/engine/atmos) +"cla" = ( +/obj/machinery/air_sensor/atmos/air_tank, +/turf/open/floor/engine/air, +/area/engine/atmos) +"clb" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{ + dir = 1 + }, +/turf/open/floor/engine/air, +/area/engine/atmos) +"clc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ + dir = 1 + }, +/turf/open/floor/engine/air, +/area/engine/atmos) +"cld" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Mix to Incinerator" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cle" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"clf" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"clg" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"clh" = ( +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_y = -31 + }, +/obj/machinery/computer/turbine_computer{ + dir = 1; + id = "incineratorturbine" + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"cli" = ( +/obj/machinery/button/door/incinerator_vent_atmos_aux{ + pixel_x = 6; + pixel_y = -24 + }, +/obj/machinery/button/door/incinerator_vent_atmos_main{ + pixel_x = -6; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"clj" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"clk" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cll" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"clm" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/general/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"cln" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"clo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/aft) +"clp" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"clq" = ( +/obj/structure/rack, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"clr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cls" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"clt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"clu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"clv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"clw" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"clx" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cly" = ( +/obj/structure/chair/stool, +/obj/machinery/camera{ + c_tag = "Aft Starboard Solar Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"clz" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"clA" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"clB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"clC" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"clD" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"clE" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"clF" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"clG" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"clI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"clJ" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/engine/engineering) +"clM" = ( +/obj/structure/table, +/obj/item/crowbar/large, +/obj/item/storage/box/lights/mixed, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"clN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"clO" = ( +/obj/machinery/vr_sleeper, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"clQ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"clR" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_construction, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"clS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/rnd/production/techfab/department/security, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/main) +"clT" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/engine/n2, +/area/engine/atmos) +"clU" = ( +/turf/open/floor/engine/n2, +/area/engine/atmos) +"clV" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/engine/o2, +/area/engine/atmos) +"clW" = ( +/turf/open/floor/engine/o2, +/area/engine/atmos) +"clX" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/xmastree, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"clY" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/engine/air, +/area/engine/atmos) +"clZ" = ( +/turf/open/floor/engine/air, +/area/engine/atmos) +"cmb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/disposal/incinerator) +"cmc" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 2 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"cmd" = ( +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"cme" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"cmf" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ + pixel_x = 38; + pixel_y = 6 + }, +/turf/open/floor/engine, +/area/maintenance/disposal/incinerator) +"cmg" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"cmh" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 2 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cmi" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"cmj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cmk" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cml" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"cmn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cmo" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cmq" = ( +/obj/effect/landmark/xeno_spawn, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"cmr" = ( +/obj/structure/closet/toolcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cms" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cmt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cmu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"cmv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cmw" = ( +/obj/machinery/power/solar_control{ + dir = 1; + id = "starboardsolar"; + name = "Starboard Quarter Solar Control"; + track = 0 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cmx" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cmy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cmz" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cmA" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cmB" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cmC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cmD" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Engineering" + }, +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cmF" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cmG" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cmL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cmN" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cmU" = ( +/obj/machinery/light/small, +/turf/open/floor/engine/n2, +/area/engine/atmos) +"cmV" = ( +/obj/machinery/light/small, +/turf/open/floor/engine/o2, +/area/engine/atmos) +"cmW" = ( +/obj/machinery/light/small, +/turf/open/floor/engine/air, +/area/engine/atmos) +"cmX" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"cmY" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/fire{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airlock_sensor/incinerator_atmos{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/open/floor/engine, +/area/maintenance/disposal/incinerator) +"cmZ" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/obj/structure/sign/warning/fire{ + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/maintenance/disposal/incinerator) +"cna" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 + }, +/turf/open/floor/engine, +/area/maintenance/disposal/incinerator) +"cnb" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnc" = ( +/obj/machinery/light/small, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) +"cne" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnf" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cng" = ( +/obj/machinery/light/small, +/obj/structure/table, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/clipboard, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnj" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cnk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cnl" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/port/aft) +"cnm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnp" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "SMES Room"; + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnr" = ( +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 2; + icon_state = "left"; + name = "Engineering Delivery"; + req_access_txt = "10" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnt" = ( +/obj/machinery/camera{ + c_tag = "Engineering West"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnv" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cny" = ( +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnA" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/table, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/apc, +/obj/item/electronics/apc, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/twohanded/rcl/pre_loaded, +/obj/item/twohanded/rcl/pre_loaded, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/construction) +"cnC" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/engine, +/area/maintenance/disposal/incinerator) +"cnD" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/aft) +"cnE" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnF" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2; + name = "Waste Out" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnG" = ( +/obj/structure/closet/emcloset, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cnH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cnJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cnK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"cnL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnM" = ( +/obj/machinery/door/window{ + name = "SMES Chamber"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnN" = ( +/obj/structure/window/reinforced, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnO" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnP" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engine_smes) +"cnQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cnR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engine_smes) +"cnS" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "SMES Access"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cnU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cnZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"coa" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cob" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"coc" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cop" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"coq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ + dir = 1 + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"cor" = ( +/obj/machinery/igniter{ + id = "Incinerator" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/air_sensor{ + pixel_x = -32; + pixel_y = -32 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"cos" = ( +/obj/machinery/door/poddoor/incinerator_atmos_aux, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"cot" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/aft) +"cou" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cov" = ( +/obj/machinery/power/port_gen/pacman, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cow" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cox" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"coy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"coz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"coA" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"coB" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "SMES Room"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"coC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"coH" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"coJ" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"coK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"coL" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"coM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"coS" = ( +/obj/structure/rack, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) +"coT" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/science/misc_lab) +"coZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpa" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpb" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cpe" = ( +/obj/docking_port/stationary/random{ + dir = 8; + id = "pod_lavaland2"; + name = "lavaland" + }, +/turf/open/space, +/area/space/nearstation) +"cpg" = ( +/obj/item/grenade/barrier{ + pixel_x = 4 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = -4 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"cph" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/space, +/area/space/nearstation) +"cpi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"cpj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpk" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpl" = ( +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpm" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpn" = ( +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpp" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpq" = ( +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/machinery/computer/rdconsole/production{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cps" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpt" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpv" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"cpC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/bridge) +"cpD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpG" = ( +/obj/structure/table/optable, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"cpI" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Escape Pod Four" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cpN" = ( +/obj/machinery/power/turbine{ + luminosity = 2 + }, +/obj/structure/cable/yellow, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"cpO" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2; + name = "Incinerator Output Pump" + }, +/turf/open/space, +/area/maintenance/disposal/incinerator) +"cpP" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/space, +/area/space/nearstation) +"cpQ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/space, +/area/maintenance/disposal/incinerator) +"cpR" = ( +/obj/machinery/door/airlock/abandoned{ + name = "Observatory Access" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cpS" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "SMES room APC"; + areastring = "/area/engine/engine_smes"; + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpT" = ( +/obj/structure/table, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 + }, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpU" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"cpV" = ( +/obj/machinery/camera{ + c_tag = "Engineering Storage"; + dir = 4 + }, +/obj/machinery/rnd/production/protolathe/department/engineering, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpX" = ( +/obj/structure/table, +/obj/item/stack/rods/fifty, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpY" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cpZ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqa" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqe" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Filter" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Fore"; + dir = 1; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqi" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqj" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/button/door{ + id = "engsm"; + name = "Radiation Shutters Control"; + pixel_y = -24; + req_access_txt = "10" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cql" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqm" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqn" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cqo" = ( +/obj/structure/sign/warning/pods{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqp" = ( +/obj/machinery/camera{ + c_tag = "Engineering Escape Pod"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqq" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 + }, +/turf/open/space/basic, +/area/space) +"cqr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cqs" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"cqt" = ( +/obj/machinery/door/poddoor/incinerator_atmos_main, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) +"cqu" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cqv" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cqw" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/rnd/production/circuit_imprinter, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cqz" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqA" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cqC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqD" = ( +/obj/structure/sign/warning/radiation, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cqE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/engine, +/area/engine/supermatter) +"cqF" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cqG" = ( +/obj/structure/rack, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"cqJ" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"cqK" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cqL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cqM" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"cqN" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqO" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqP" = ( +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqQ" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqR" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"cqT" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqU" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cqY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cqZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"cra" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas to Filter" + }, +/obj/machinery/airalarm/engine{ + dir = 4; + pixel_x = -23 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"crb" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Gas to Chamber" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"crc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"crd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"crh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cri" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"crk" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crl" = ( +/obj/structure/table, +/obj/item/taperecorder, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"crm" = ( +/obj/structure/table, +/obj/item/storage/box/matches, +/obj/item/storage/fancy/cigarettes, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"crn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cro" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"crp" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"crq" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"crr" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"crs" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crt" = ( +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cru" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crv" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cry" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"crz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"crA" = ( +/obj/structure/transit_tube_pod, +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"crB" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crC" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crD" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crE" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crF" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crG" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"crH" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"crI" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"crK" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"crL" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"crM" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"crP" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/engine/engineering) +"crR" = ( +/obj/structure/transit_tube, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"crT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"crU" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"crV" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"crW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"crX" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"crY" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/transit_tube, +/turf/open/floor/plating, +/area/engine/engineering) +"crZ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"csa" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/engine/engineering) +"csb" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) +"csc" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/space, +/area/maintenance/aft) +"csd" = ( +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cse" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"csg" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"csi" = ( +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, +/turf/open/space, +/area/space/nearstation) +"csj" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"csk" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"csl" = ( +/obj/structure/transit_tube/curved{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"csm" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/maintenance/aft) +"csn" = ( +/obj/structure/transit_tube/horizontal, +/turf/open/space, +/area/space/nearstation) +"cso" = ( +/obj/structure/lattice, +/obj/structure/transit_tube/crossing/horizontal, +/turf/open/space, +/area/space/nearstation) +"csq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/turbine{ + dir = 1; + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"csr" = ( +/obj/machinery/button/ignition{ + id = "Incinerator"; + pixel_x = -6; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"css" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) +"csu" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"csv" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"csx" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) +"csy" = ( +/obj/structure/table, +/obj/item/weldingtool, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"csA" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"csD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csE" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"csH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/transit_tube/crossing/horizontal, +/turf/open/space, +/area/space/nearstation) +"csN" = ( +/obj/structure/transit_tube/horizontal, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csO" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/transit_tube/horizontal, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/xmastree, +/turf/open/floor/plasteel/dark, +/area/chapel/main) +"csU" = ( +/obj/structure/transit_tube/station/reverse, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csX" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"csY" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"csZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/solar/starboard/aft) +"cta" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "MiniSat External Access"; + req_access_txt = "65;13" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctb" = ( +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctd" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/space, +/area/space/nearstation) +"ctg" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"cth" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"cti" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctj" = ( +/obj/machinery/camera{ + c_tag = "MiniSat Pod Access"; + dir = 1; + network = list("minisat"); + start_active = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat_interior) +"cto" = ( +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Foyer"; + req_one_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctp" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ai_monitored/turret_protected/aisat_interior) +"ctq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat_interior) +"ctr" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/folder{ + pixel_x = 3 + }, +/obj/item/phone{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cts" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/radio/off{ + pixel_y = 4 + }, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctv" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) +"ctw" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/machinery/computer/station_alert, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctx" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"cty" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctz" = ( +/obj/machinery/door/poddoor/shutters{ + id = "teledoor"; + name = "MiniSat Teleport Access" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctB" = ( +/obj/structure/cable, +/obj/machinery/power/tracker, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/starboard/aft) +"ctE" = ( +/obj/machinery/teleport/hub, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctF" = ( +/obj/machinery/button/door{ + id = "teledoor"; + name = "MiniSat Teleport Shutters Control"; + pixel_y = 25; + req_access_txt = "17;65" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctG" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctH" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctJ" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/landmark/start/cyborg, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctK" = ( +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Teleporter"; + req_access_txt = "17;65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctL" = ( +/obj/machinery/teleport/station, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctM" = ( +/obj/machinery/bluespace_beacon, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctN" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"ctP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctQ" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctR" = ( +/obj/structure/sign/warning/radiation/rad_area, +/turf/closed/wall, +/area/engine/engineering) +"ctS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctT" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/grimy, +/area/ai_monitored/turret_protected/aisat_interior) +"ctU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat_interior) +"ctV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "MiniSat Foyer APC"; + areastring = "/area/ai_monitored/turret_protected/aisat_interior"; + pixel_x = 27 + }, +/obj/structure/chair, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctW" = ( +/obj/machinery/computer/teleporter, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"ctX" = ( +/obj/machinery/camera{ + c_tag = "MiniSat Teleporter"; + dir = 1; + network = list("minisat"); + start_active = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"ctY" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat/atmos) +"ctZ" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat/atmos) +"cua" = ( +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat_interior) +"cub" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuc" = ( +/obj/structure/rack, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/item/storage/box/donkpockets, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cud" = ( +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/aisat_interior"; + enabled = 1; + icon_state = "control_standby"; + name = "Antechamber Turret Control"; + pixel_y = -24; + req_access = null; + req_access_txt = "65" + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera/motion{ + c_tag = "MiniSat Foyer"; + dir = 1; + network = list("minisat") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cue" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuf" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat/service) +"cug" = ( +/obj/machinery/status_display/ai{ + pixel_y = -32 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuh" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/rack, +/obj/item/wrench, +/obj/item/crowbar/red, +/obj/item/clothing/head/welding, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cui" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuj" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"cuk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"cul" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Antechamber"; + req_one_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cum" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) +"cun" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Mix to MiniSat" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuo" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cup" = ( +/obj/structure/showcase/cyborg/old{ + dir = 8; + pixel_x = 9; + pixel_y = 2 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuq" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Air Out" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cur" = ( +/obj/structure/showcase/cyborg/old{ + dir = 4; + pixel_x = -9; + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cus" = ( +/obj/structure/showcase/cyborg/old{ + dir = 8; + pixel_x = 9; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuv" = ( +/obj/structure/showcase/cyborg/old{ + dir = 4; + pixel_x = -9; + pixel_y = 2 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = 30 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) +"cuw" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) +"cux" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/clothing/head/welding, +/obj/item/stack/sheet/mineral/plasma{ + amount = 35 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) +"cuy" = ( +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuA" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "MiniSat Atmospherics"; + dir = 4; + network = list("minisat"); + start_active = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuB" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuC" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuD" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "MiniSat Antechamber"; + dir = 4; + network = list("minisat"); + start_active = 1 + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/aisat/atmos"; + enabled = 1; + icon_state = "control_standby"; + name = "Atmospherics Turret Control"; + pixel_x = -27; + req_access = null; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"cuF" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/aisat/service"; + enabled = 1; + icon_state = "control_standby"; + name = "Service Bay Turret Control"; + pixel_x = 27; + req_access = null; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuH" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cuI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cuJ" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cuK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "MiniSat Service Bay"; + dir = 8; + network = list("minisat"); + start_active = 1 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/multitool, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) +"cuL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuM" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "MiniSat Atmospherics APC"; + areastring = "/area/ai_monitored/turret_protected/aisat/atmos"; + pixel_x = -27 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Atmospherics"; + req_one_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/mob/living/simple_animal/bot/secbot/pingsky, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cuU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Service Bay"; + req_one_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cuV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cuW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cuX" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "MiniSat Service Bay APC"; + areastring = "/area/ai_monitored/turret_protected/aisat/service"; + pixel_x = 27 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) +"cuY" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cuZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/mob/living/simple_animal/bot/floorbot, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/atmos) +"cva" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"cvb" = ( +/obj/machinery/status_display/ai, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"cvc" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "Station Intercom (AI Private)"; + pixel_y = -29 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cvd" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cve" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/aisat/hallway"; + enabled = 1; + icon_state = "control_standby"; + name = "Chamber Hallway Turret Control"; + pixel_x = 32; + pixel_y = -24; + req_access = null; + req_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat_interior) +"cvf" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"cvg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/mob/living/simple_animal/bot/cleanbot, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cvh" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cvi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/service) +"cvj" = ( +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvk" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvl" = ( +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cvm" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "MiniSat Maintenance"; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvo" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Chamber Hallway"; + req_one_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvp" = ( +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cvq" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "MiniSat Maintenance"; + req_access_txt = "65" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvr" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cvs" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvu" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvv" = ( +/turf/closed/wall, +/area/ai_monitored/turret_protected/ai) +"cvw" = ( +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvx" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom{ + anyai = 1; + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = 28 + }, +/obj/item/radio/intercom{ + broadcasting = 0; + freerange = 1; + listening = 1; + name = "Common Channel"; + pixel_x = -27; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + anyai = 1; + broadcasting = 0; + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = -25 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cvy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvA" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom{ + anyai = 1; + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = 28 + }, +/obj/item/radio/intercom{ + broadcasting = 0; + freerange = 1; + listening = 1; + name = "Common Channel"; + pixel_x = 27; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + anyai = 1; + broadcasting = 0; + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = -25 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cvB" = ( +/obj/structure/rack, +/obj/item/crowbar/red, +/obj/item/wrench, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvD" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvE" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvF" = ( +/obj/structure/lattice, +/obj/machinery/camera{ + c_tag = "MiniSat External NorthWest"; + dir = 8; + network = list("minisat"); + start_active = 1 + }, +/turf/open/space, +/area/space/nearstation) +"cvG" = ( +/obj/machinery/porta_turret/ai{ + dir = 4; + installation = /obj/item/gun/energy/e_gun + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvI" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvJ" = ( +/obj/machinery/porta_turret/ai{ + dir = 4; + installation = /obj/item/gun/energy/e_gun + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvK" = ( +/obj/structure/lattice, +/obj/machinery/camera{ + c_tag = "MiniSat External NorthEast"; + dir = 4; + network = list("minisat"); + start_active = 1 + }, +/turf/open/space, +/area/space/nearstation) +"cvL" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvM" = ( +/obj/machinery/camera/motion{ + c_tag = "MiniSat Core Hallway"; + dir = 4; + network = list("aicore") + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvN" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cvP" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "MiniSat Maintenance"; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvU" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "MiniSat Maintenance"; + req_access_txt = "65" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvV" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvW" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvX" = ( +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cvZ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cwa" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + name = "MiniSat Chamber Hallway APC"; + areastring = "/area/ai_monitored/turret_protected/aisat/hallway"; + pixel_x = 27 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) +"cwb" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cwc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cwd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "Station Intercom (AI Private)"; + pixel_x = -28; + pixel_y = -29 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cwe" = ( +/obj/structure/sign/warning/securearea, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"cwf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Chamber Observation"; + req_one_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwg" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwh" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwk" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwm" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwo" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwp" = ( +/obj/structure/chair/office/dark, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwq" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/hallway) +"cwr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai) +"cws" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai) +"cwt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "AI Core"; + req_access_txt = "65" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwv" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cww" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwx" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table_frame, +/obj/item/wirerod, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cwz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwA" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwB" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/status_display/ai{ + pixel_x = 32 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cwC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cwD" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 5; + pixel_y = -24 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cwE" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/highcap/five_k{ + dir = 2; + name = "AI Chamber APC"; + areastring = "/area/ai_monitored/turret_protected/ai"; + pixel_y = -24 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -11; + pixel_y = -24 + }, +/obj/machinery/camera/motion{ + c_tag = "MiniSat AI Chamber North"; + dir = 1; + network = list("aicore") + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cwH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"cwM" = ( +/obj/structure/rack, +/obj/item/storage/box/teargas{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"cwT" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Escape Pod 2"; + dir = 8 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cwV" = ( +/obj/docking_port/stationary/random{ + dir = 8; + id = "pod_lavaland1"; + name = "lavaland" + }, +/turf/open/space, +/area/space/nearstation) +"cxk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"cxn" = ( +/obj/structure/lattice, +/obj/effect/landmark/carpspawn, +/turf/open/space, +/area/space/nearstation) +"cxo" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood, +/area/maintenance/bar) +"cxA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"cxE" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 13; + id = "ferry_home"; + name = "port bay 2"; + width = 5 + }, +/turf/open/space/basic, +/area/space) +"cxG" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Escape Pod Three" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"cxJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plating, +/area/security/processing) +"cxN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"cxP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock" + }, +/turf/open/floor/plating, +/area/security/processing) +"cxW" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"cxY" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Escape Pod 1"; + dir = 8 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cya" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"cyb" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Pod One" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cyd" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 22; + id = "whiteship_home"; + name = "SS13: Auxiliary Dock, Station-Port"; + width = 35 + }, +/turf/open/space/basic, +/area/space) +"cyg" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/command{ + name = "Command Tool Storage"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva) +"cyh" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Security Escape Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cyl" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cyp" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Escape Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cyr" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Cargo Escape Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cyt" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 4" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cyu" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 3" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cyC" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"cyD" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Supply Dock Airlock"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"cyE" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cyG" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/engine/atmos) +"cyK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) +"cyL" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cyM" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engine Room"; + req_access_txt = "10" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cyT" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 5; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 12 + }, +/turf/open/space/basic, +/area/space) +"cyU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) +"czg" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Escape Pod Four"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"czk" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "MiniSat External Access"; + req_access_txt = "65;13" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"czE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"czF" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"czG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czI" = ( +/obj/item/wrench, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"czJ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/maintenance/disposal/incinerator) +"czK" = ( +/turf/closed/wall, +/area/security/vacantoffice) +"czN" = ( +/obj/docking_port/stationary/random{ + dir = 4; + id = "pod_lavaland4"; + name = "lavaland" + }, +/turf/open/space, +/area/space/nearstation) +"czO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"czP" = ( +/obj/structure/chair/stool/bar, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"czQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"czT" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czU" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czX" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"czZ" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cAa" = ( +/obj/structure/chair, +/obj/item/storage/fancy/cigarettes, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cAb" = ( +/obj/structure/closet, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cAc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"cAd" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cAe" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/aft) +"cAf" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cAg" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"cAh" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAi" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cAm" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/engine/supermatter) +"cAo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Cooling Loop to Gas" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Mix" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAu" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/emitter/anchored{ + dir = 4; + state = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cAy" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAz" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"cAA" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAB" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAC" = ( +/obj/structure/sink/kitchen{ + dir = 8; + pixel_x = 11 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAD" = ( +/obj/structure/table, +/obj/item/kitchen/knife, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAE" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_y = 2 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 2 + }, +/obj/item/reagent_containers/food/snacks/mint{ + pixel_y = 9 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAF" = ( +/turf/open/floor/plating, +/area/maintenance/disposal) +"cAG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Head of Personnel APC"; + areastring = "/area/crew_quarters/heads/hop"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"cAH" = ( +/obj/machinery/processor, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAI" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "garbage"; + name = "disposal conveyor" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"cAJ" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/disposal) +"cAK" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/mob/living/simple_animal/hostile/lizard{ + name = "Wags-His-Tail"; + real_name = "Wags-His-Tail" + }, +/turf/open/floor/plasteel, +/area/janitor) +"cAN" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"cAP" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cAQ" = ( +/obj/structure/chair, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cAR" = ( +/obj/machinery/door/window{ + dir = 1; + name = "AI Core Door"; + req_access_txt = "16" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cAS" = ( +/obj/effect/landmark/start/ai, +/obj/item/radio/intercom{ + broadcasting = 0; + freerange = 1; + listening = 1; + name = "Common Channel"; + pixel_x = -27; + pixel_y = -9 + }, +/obj/item/radio/intercom{ + anyai = 1; + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = -31 + }, +/obj/item/radio/intercom{ + anyai = 1; + broadcasting = 0; + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 27; + pixel_y = -9 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -28; + pixel_y = -28 + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = 28; + pixel_y = -28 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cAT" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cAU" = ( +/obj/structure/lattice, +/obj/machinery/camera{ + c_tag = "MiniSat External SouthWest"; + dir = 8; + network = list("minisat"); + start_active = 1 + }, +/turf/open/space, +/area/space/nearstation) +"cAV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/showcase/cyborg/old{ + dir = 8; + pixel_x = 9; + pixel_y = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cAW" = ( +/obj/structure/showcase/cyborg/old{ + dir = 4; + pixel_x = -9; + pixel_y = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cAX" = ( +/obj/structure/lattice, +/obj/machinery/camera{ + c_tag = "MiniSat External SouthEast"; + dir = 4; + network = list("minisat"); + start_active = 1 + }, +/turf/open/space, +/area/space/nearstation) +"cAY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/ai_monitored/turret_protected/ai) +"cAZ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cBa" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cBb" = ( +/obj/machinery/camera/motion{ + c_tag = "MiniSat AI Chamber South"; + dir = 2; + network = list("aicore") + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cBc" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"cBd" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cBe" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cBf" = ( +/obj/machinery/camera{ + c_tag = "MiniSat External South"; + dir = 2; + network = list("minisat"); + start_active = 1 + }, +/turf/open/space, +/area/space/nearstation) +"cBg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/hydroponics) +"cBh" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"cBi" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) +"cBj" = ( +/obj/structure/table, +/obj/item/folder/blue, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"cBk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"cBl" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cBm" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"cBn" = ( +/obj/machinery/camera{ + c_tag = "Locker Room Toilets"; + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"cBo" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"cBp" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"cBq" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"cBr" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cBt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/white, +/area/science/explab) +"cBu" = ( +/obj/machinery/status_display/ai{ + pixel_y = 32 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/hor) +"cBv" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"cBw" = ( +/obj/machinery/door/firedoor, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cBx" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/white, +/area/science/research) +"cBy" = ( +/obj/machinery/door/airlock{ + name = "Custodial Closet"; + req_access_txt = "26" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/janitor) +"cBz" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/engine, +/area/science/xenobiology) +"cBA" = ( +/obj/machinery/button/massdriver{ + dir = 2; + id = "toxinsdriver"; + pixel_y = 24 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"cBB" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"cBC" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/storage/tech) +"cBD" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/aft) +"cBE" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/air_sensor/atmos/toxins_mixing_tank, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"cBF" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cBG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cBH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"cBI" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) +"cBJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cBK" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"cBL" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cBM" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/twohanded/rcl/pre_loaded, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cBN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cBO" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cBP" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/landmark/event_spawn, +/turf/open/floor/engine/air, +/area/engine/atmos) +"cBR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cBS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/hallway) +"cBT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cBU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cBV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Security Office"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"cBZ" = ( +/obj/structure/table/wood, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"cCb" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + amount = 5 + }, +/obj/item/flashlight, +/turf/open/floor/plating, +/area/construction) +"cCc" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/turf/open/floor/plating, +/area/construction) +"cCd" = ( +/turf/open/floor/plasteel, +/area/construction) +"cCe" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/construction) +"cCf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction) +"cCh" = ( +/obj/item/bedsheet/red, +/mob/living/simple_animal/bot/secbot/beepsky{ + name = "Officer Beepsky" + }, +/turf/open/floor/plating, +/area/security/processing) +"cCi" = ( +/turf/closed/wall, +/area/security/vacantoffice/b) +"cCj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/detectives_office) +"cCk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/detectives_office) +"cCl" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"cCm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"cCn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Detective's Office APC"; + areastring = "/area/security/detectives_office"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/port) +"cCo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"cCp" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood, +/obj/item/reagent_containers/blood, +/obj/item/reagent_containers/blood/AMinus, +/obj/item/reagent_containers/blood/BMinus{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/reagent_containers/blood/BPlus{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/reagent_containers/blood/OMinus, +/obj/item/reagent_containers/blood/OPlus{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/APlus, +/obj/item/reagent_containers/blood/random, +/turf/open/floor/plasteel, +/area/medical/sleeper) +"cCq" = ( +/obj/machinery/deepfryer, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"cCB" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCD" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Mix to Engine" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCE" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCF" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"cCG" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"cCH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"cCI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"cCJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"cCP" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"cCQ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"cCS" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cCT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cCY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/obj/item/flashlight, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/pipe_dispenser, +/turf/open/floor/engine, +/area/engine/engineering) +"cDi" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDj" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cDl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/vending/tool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/vending/engivend, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDp" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDs" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Atmos to Loop" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDz" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDC" = ( +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDF" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cDH" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDL" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cDN" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"cDY" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) +"cDZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cEa" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cEd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Port"; + dir = 4; + network = list("ss13","engine") + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEf" = ( +/obj/machinery/status_display/ai, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cEg" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cEh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Starboard"; + dir = 8; + network = list("ss13","engine") + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEk" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cEl" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cEr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Cooling Loop" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEt" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEu" = ( +/obj/machinery/camera{ + c_tag = "Supermatter Chamber"; + dir = 2; + network = list("engine"); + pixel_x = 23 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEv" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEy" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEA" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Gas" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cED" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEE" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"cEK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cEL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEM" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/item/tank/internals/plasma, +/turf/open/floor/plating, +/area/engine/supermatter) +"cET" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEW" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Cooling Loop Bypass" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFe" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cFh" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cFj" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cFk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix Bypass" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFm" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cFn" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space, +/area/space/nearstation) +"cFo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cFu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/engine/engineering) +"cFw" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cFy" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFA" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cFK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Aft"; + dir = 2; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGd" = ( +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGe" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGf" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8; + filter_type = "n2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGg" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine, +/area/engine/engineering) +"cGi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine, +/area/engine/engineering) +"cGj" = ( +/obj/structure/table, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGk" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGl" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGt" = ( +/obj/structure/closet/wardrobe/engineering_yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGu" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/engine/engineering) +"cGC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + dir = 4; + name = "Output Release" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGE" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGH" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGK" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cGR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGT" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGU" = ( +/obj/structure/reflector/double/anchored{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGV" = ( +/obj/structure/reflector/box/anchored{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGZ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cHa" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHc" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHd" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHe" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHg" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHj" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/emitter/anchored{ + dir = 8; + state = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHn" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHo" = ( +/obj/structure/reflector/single/anchored{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHp" = ( +/obj/structure/reflector/single/anchored{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHr" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortType = 14 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cHE" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mech Bay Maintenance"; + req_access_txt = "29" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/robotics/mechbay) +"cHF" = ( +/obj/machinery/button/door{ + dir = 2; + id = "Skynet_launch"; + name = "Mech Bay Door Control"; + pixel_x = 6; + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"cHG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"cHH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"cHI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"cHJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"cHK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research/glass{ + name = "Robotics Lab"; + req_access_txt = "29" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cHL" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/science/robotics/mechbay) +"cHM" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cHN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/circuit, +/area/science/robotics/mechbay) +"cHO" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "robo1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cHP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cHQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"cHR" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "robo1" + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cHS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cHT" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cHU" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cHV" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "robo2" + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cHW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/mecha_part_fabricator, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cHX" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/obj/item/multitool{ + pixel_x = 3 + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cHZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cIa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cIb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "robo2" + }, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cIc" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/roboticist, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cId" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/robotics/lab) +"cIe" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"cIf" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/robotics/lab) +"cIg" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 15; + id = "arrivals_stationary"; + name = "arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/box; + width = 7 + }, +/turf/open/space/basic, +/area/space) +"cIh" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Port Docking Bay 1" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cMm" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cMC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/computer/security/telescreen/engine{ + dir = 8; + pixel_x = 30 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cMD" = ( +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cMH" = ( +/turf/open/floor/engine, +/area/engine/supermatter) +"cMN" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/supermatter) +"cMQ" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/starboard/aft) +"cNa" = ( +/obj/structure/cable, +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/solar/starboard/aft) +"cNE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/bar) +"cNG" = ( +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"cNI" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"cNJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"cNL" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Central Maintenance APC"; + areastring = "/area/maintenance/central"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"cNM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"cNN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"cNR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"cNS" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Starboard Maintenance APC"; + areastring = "/area/maintenance/starboard"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"cNT" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"cNU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"cNV" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_one_access_txt = "8;12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"cNW" = ( +/turf/closed/wall, +/area/maintenance/starboard/aft) +"cNX" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "8;12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cNY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"cNZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cOb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cOe" = ( +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cOw" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cOx" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cOT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cPA" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cPH" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cPI" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cQw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"cQB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cSz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"cSA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/courtroom) +"cSE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cSF" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"cSG" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cSH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cSI" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSJ" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cSK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cSL" = ( +/obj/machinery/button/door{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_x = -24; + pixel_y = 10; + req_access_txt = "24" + }, +/obj/machinery/button/door{ + desc = "A remote control-switch for secure storage."; + id = "Secure Storage"; + name = "Engineering Secure Storage"; + pixel_x = -24; + req_access_txt = "11" + }, +/obj/machinery/button/door{ + desc = "A remote control-switch for the engineering security doors."; + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_x = -24; + pixel_y = -10; + req_access_txt = "10" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/chief) +"cSM" = ( +/obj/machinery/computer/station_alert, +/obj/item/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 20 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSR" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Engineering Power Storage" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cST" = ( +/obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSU" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSV" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cSW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSZ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/chief) +"cTa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cTb" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cTc" = ( +/obj/effect/spawner/structure/window, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cTd" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/engine/engineering) +"cTe" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cTf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Engineering"; + departmentType = 4; + name = "Engineering RC"; + pixel_y = 30 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cTD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Central Maintenance APC"; + areastring = "/area/maintenance/central/secondary"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/central/secondary) +"cTE" = ( +/obj/machinery/computer/shuttle/mining{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"cTF" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cTI" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cTJ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"cTM" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Morgue Maintenance APC"; + areastring = "/area/maintenance/department/medical/morgue"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"cTO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTX" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/shieldwallgen/xenobiologyaccess, +/obj/structure/sign/poster/official/safety_eye_protection{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cTY" = ( +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cTZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cVb" = ( +/turf/closed/wall, +/area/hallway/secondary/service) +"cVK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"dfh" = ( +/obj/machinery/power/apc{ + areastring = "/area/science/circuit"; + name = "Circuitry Lab APC"; + pixel_x = 30 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"dfL" = ( +/obj/structure/reagent_dispensers/keg/gargle, +/turf/open/floor/wood, +/area/maintenance/bar) +"dgz" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) +"dqu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"dvc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"dvO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/science/circuit) +"dzi" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"dKP" = ( +/turf/closed/wall, +/area/maintenance/bar) +"dKV" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) +"dMZ" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eaI" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"evR" = ( +/turf/open/floor/plating, +/area/maintenance/bar) +"eyM" = ( +/obj/machinery/mineral/ore_redemption{ + input_dir = 2; + output_dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"eHI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"eRz" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space/nearstation) +"eVC" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) +"eVL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"fcG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) +"flc" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"fnC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"fsQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"fvY" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 26 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"fxa" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/maintenance/bar) +"fGf" = ( +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/hydroponics) +"fKl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/science/circuit) +"fTg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"gbq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/construction) +"gbT" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"gfD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"gjl" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"gsz" = ( +/obj/machinery/camera{ + c_tag = "Fitness Room South"; + dir = 1 + }, +/obj/machinery/vr_sleeper, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"gwd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"gBo" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"gLH" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"gMl" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"gOZ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"gWd" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/construction) +"gXs" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"gZG" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/item/reagent_containers/glass/beaker/synthflesh, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/medical/sleeper) +"hcE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Cargo Warehouse APC"; + areastring = "/area/quartermaster/warehouse"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"hwu" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-24" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"hEm" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"hRa" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"iiW" = ( +/turf/open/floor/wood, +/area/maintenance/bar) +"ijc" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"imH" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/bar) +"ipA" = ( +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"itG" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"ium" = ( +/mob/living/simple_animal/bot/cleanbot{ + name = "C.L.E.A.N." + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"izv" = ( +/obj/machinery/vending/clothing, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"iEJ" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Pod One" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"iNn" = ( +/obj/machinery/camera{ + c_tag = "Kitchen Cold Room" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/reagent_dispensers/cooking_oil, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"iVU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) +"jbf" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/service"; + dir = 1; + name = "Service Hall APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"jgm" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/camera{ + c_tag = "Circuitry Lab"; + dir = 8; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"jlm" = ( +/obj/machinery/rnd/production/techfab/department/cargo, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"jnR" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"jqv" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"jrE" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"jAD" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"jCq" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"jHt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"jJF" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/maintenance/port/aft) +"jMY" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"jSO" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"jVl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"khb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"khB" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"knx" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"kob" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"kyF" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/wood, +/area/maintenance/bar) +"kzT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) +"kPd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"kQk" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"kQq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"kSb" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"lnu" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar) +"lAB" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/science/circuit) +"lCi" = ( +/obj/docking_port/stationary/public_mining_dock{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"lMg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"lQG" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/circuit) +"mjr" = ( +/obj/machinery/vending/wardrobe/bar_wardrobe, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"moD" = ( +/obj/effect/landmark/barthpot, +/turf/open/floor/wood, +/area/library) +"mpI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"mqZ" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plating, +/area/maintenance/bar) +"mrR" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/bar) +"mBv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "Output to Waste" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"mNi" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mPE" = ( +/obj/machinery/chem_dispenser/drinks, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"mRe" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"nfm" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/maintenance/bar) +"noK" = ( +/obj/structure/girder, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"nxv" = ( +/obj/machinery/power/apc{ + name = "Construction Area APC"; + areastring = "/area/construction"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/construction) +"nzh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"nGt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nRG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"oce" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"odx" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/maintenance/bar) +"olr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"oDF" = ( +/obj/machinery/light, +/turf/open/floor/plating, +/area/engine/engineering) +"oHU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"oKh" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"oUh" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"poc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"pHl" = ( +/obj/structure/table, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = 7; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/bottle/morphine{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/item/reagent_containers/syringe{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1485; + listening = 1; + name = "Station Intercom (Medbay)"; + pixel_x = 30 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"pLn" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"qeQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"qoW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-18" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"quT" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space/nearstation) +"qIw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"qQP" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-14" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"rcD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/circuit) +"rfW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/maintenance/disposal/incinerator) +"rjA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-04" + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"rmX" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"rsp" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"rBq" = ( +/obj/item/clothing/head/kitty, +/obj/item/clothing/under/maid, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plating, +/area/maintenance/bar) +"rKP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction) +"rMN" = ( +/obj/structure/bed, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/semen, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plating, +/area/maintenance/bar) +"rNc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/computer/security/telescreen/toxins{ + dir = 1; + network = list("toxins"); + pixel_y = -28 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"saK" = ( +/obj/structure/closet/crate, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"slk" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"sxs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/item/shovel/spade, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"sAM" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar) +"sEt" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"sLv" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sOs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/abandoned, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sQX" = ( +/turf/open/floor/plating, +/area/space) +"sRT" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/wood, +/area/maintenance/bar) +"sSW" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"sWR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/bounty{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"sXy" = ( +/obj/machinery/door/airlock/external{ + name = "Security External Airlock"; + req_access_txt = "63" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"sXA" = ( +/obj/machinery/vending/boozeomat/all_access, +/turf/closed/wall, +/area/maintenance/bar) +"tal" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/hallway/secondary/service) +"tkU" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"tlO" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "applebush" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"tqg" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"trb" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"tur" = ( +/obj/item/restraints/handcuffs/fake, +/turf/open/floor/plating, +/area/maintenance/bar) +"tyO" = ( +/obj/item/clothing/under/color/grey, +/turf/open/floor/plating, +/area/maintenance/bar) +"tMl" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"tOq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"tPT" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"tRe" = ( +/obj/machinery/chem_master, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"tRF" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"tXL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"uaw" = ( +/obj/machinery/power/apc{ + areastring = "/area/storage/art"; + dir = 1; + name = "Maint bar"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"udp" = ( +/obj/item/crowbar/large, +/obj/structure/rack, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"uhH" = ( +/obj/item/wrench, +/obj/item/weldingtool, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/rack, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ujF" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"uoB" = ( +/obj/structure/table/reinforced, +/obj/item/multitool, +/obj/item/screwdriver, +/obj/machinery/camera{ + c_tag = "Circuitry Lab North"; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"urE" = ( +/obj/machinery/autolathe{ + name = "public autolathe" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"usO" = ( +/obj/machinery/vending/snack/random, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"uuG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"uvZ" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"uNu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"uPT" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"uVS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"uZN" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-03" + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"vbD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage"; + req_access_txt = "18" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"vjm" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/rag, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"vpY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"vsM" = ( +/obj/machinery/power/apc/auto_name/south, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"vxh" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"vzp" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/stock_parts/cell/high, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vzO" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"vCb" = ( +/obj/machinery/rnd/production/techfab/department/service, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"vCt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vHj" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryogenics " + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/cryopod) +"vHY" = ( +/turf/open/floor/plating, +/area/science/mixing) +"vPE" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"wfR" = ( +/obj/item/electropack/shockcollar, +/obj/item/assembly/signaler, +/turf/open/floor/plating, +/area/maintenance/bar) +"wkN" = ( +/turf/closed/wall, +/area/science/circuit) +"woR" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"wph" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 8; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"wrp" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"wvX" = ( +/obj/structure/table/reinforced, +/obj/machinery/light, +/obj/item/stack/sheet/metal/ten, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"wBd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/hallway/secondary/service) +"wHz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"wUY" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"xgF" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"xhV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/construction) +"xiw" = ( +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_one_access_txt = "25;26;35;28" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/service) +"xEu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"xFY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-06" + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"xIa" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ycu" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"ydD" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/suit_storage_unit/rd, +/turf/open/floor/plasteel, +/area/science/mixing) + +(1,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(2,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(3,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(4,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(5,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(6,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(7,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(8,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(9,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(10,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(11,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(12,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(13,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(14,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(15,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(16,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(17,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(18,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(19,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(20,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(21,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(22,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(23,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(24,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(25,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(26,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(27,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(28,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(29,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cpe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cwV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(30,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(31,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(32,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(33,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +cqq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cqq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(34,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaa +aaf +arB +asE +cyb +asE +arB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +arB +asE +cyb +asE +arB +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(35,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apJ +apJ +apJ +apJ +apJ +apJ +apJ +apJ +apJ +apJ +auO +auP +cwT +aAC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aAC +auO +auP +cxY +arB +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aAC +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(36,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +avP +iEJ +asE +arB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +arB +asE +iEJ +avP +arB +aaa +aaa +aaa +aaa +aaa +arB +awW +awW +asE +arB +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(37,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +xFY +ayk +awW +aAD +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +awW +awW +aQG +aRX +arB +aaa +aaa +aaa +aaa +aaa +arB +uZN +ayk +awW +aAD +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(38,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +awZ +ayl +azy +auP +cIh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +azy +auP +cIh +ayl +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +ayl +beK +auP +cyt +cyd +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(39,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +awZ +ayk +awW +awW +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +awW +awW +awV +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +ayk +awW +awW +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(40,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apN +apN +apN +apN +wph +apN +apN +apN +apN +apJ +awZ +cqr +azz +aAF +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +aOf +azz +aPu +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +aym +azz +aAF +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(41,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +awZ +aIK +ayl +aAE +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +aOe +ayl +ayl +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +ayl +ayl +aAE +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(42,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +awZ +aIK +ayl +aAH +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +aOh +ayl +ayl +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +ayl +ayl +bgi +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(43,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +apJ +apN +apN +apN +apN +apN +apN +apN +apN +apN +apJ +awZ +cry +azA +aAG +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +aOg +azA +aQH +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +ayn +azA +bgh +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(44,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apN +apN +apN +apN +lCi +apN +apN +apN +apN +apJ +awZ +crz +awW +awW +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +awW +awW +awV +aRY +awW +aaa +aaa +aaa +aaa +aaa +awW +awZ +ayk +awW +awW +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(45,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apJ +apJ +ajZ +asF +atp +asF +asF +asF +asF +apJ +axh +aIK +azy +auP +cIh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +azy +auP +cIh +ayl +aRY +awW +aaa +aaa +cxE +aaa +aaa +awW +awZ +ayl +beL +auP +cyu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(46,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +apJ +asH +atI +atI +arE +ayq +ayq +auc +avp +axI +ayp +awW +aAD +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +awW +awW +awW +aQG +aRX +arB +aaa +aWa +aXI +awW +aaa +arB +awY +ayk +awW +aAD +awW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(47,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +asF +asI +auQ +auQ +auQ +auQ +aCX +aub +aLu +axH +ayo +azB +awW +aaa +aaa +aaa +aaa +cIg +aaa +aaa +aaa +aaa +awW +aPt +aPu +aRY +arB +awW +awW +auP +awW +awW +arB +awZ +aym +qoW +awW +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(48,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +asJ +cTE +avQ +axc +aCT +atb +aIH +apJ +clB +aIK +azC +arB +arB +arB +awW +awW +awW +awW +awW +arB +arB +arB +aPv +ayl +aRZ +asE +aAF +awW +cyl +awW +baF +asE +bbb +ayl +beN +arB +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(49,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apJ +apJ +apJ +apJ +apJ +apJ +apJ +apJ +apJ +axG +aIK +aym +aAI +aBH +azz +azz +azz +azz +azz +azz +aLv +aBH +azz +aPu +ayl +ayl +aNh +aym +azz +ayl +azz +aPu +ayl +aIK +ayl +beM +aAC +aaf +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(50,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +alU +atJ +amC +aKf +bEJ +axb +ayr +azD +aAJ +azD +aCp +aEz +aFG +aHu +ayl +ayl +ayl +aNb +ayl +ayl +ayl +ayl +aTr +aUM +ayl +ayl +aWc +baG +ayl +aIK +ayl +beM +asE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(51,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aag +alU +alU +alU +aCW +amC +asK +alU +alU +atO +alU +alU +aBI +aBI +aBI +aBI +aBI +aNh +aKj +aLw +aLw +aLw +aLw +aQI +aNh +czK +czK +czK +czK +aXX +czK +czK +bbc +beO +beO +beO +beO +beO +beO +beO +beO +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(52,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aqJ +amC +gLH +ase +avq +aum +avq +avq +cwH +avq +aAj +aBK +aCL +aEG +aFI +aBI +aIM +aKk +aLy +aNd +aOj +aPx +aQJ +ayl +czK +aUO +aUy +aWm +aWf +aUQ +czK +bhN +bcl +beQ +pLn +bhI +bjb +bkz +blS +bnv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(53,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alU +alU +alU +alU +asc +atn +aLt +aue +aue +aue +aue +aAe +aBJ +aCs +aEE +aFH +aGZ +aIJ +aJX +aLi +aMO +aNR +aOY +aQl +bcD +aTs +aUN +baH +aWi +aXY +baH +aTs +bbd +beO +beP +bgj +beO +bja +beO +bja +bja +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(54,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alU +apL +aqK +alU +asc +atq +aon +amC +axe +ays +alU +auT +aBI +aCY +aEI +aFK +aHy +aIM +aKk +aLz +aNe +aNe +aLz +aQo +aSb +czK +aUQ +aUA +aWr +aXZ +aUQ +czK +bbe +beO +beS +bgj +bhJ +bjd +bkB +cAI +bja +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(55,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +alU +alU +apM +aqL +alU +asc +atq +auX +avS +amC +amC +alU +auT +aBI +aDc +aEH +bxM +aHa +aIL +aJY +aLj +aMP +aMP +aPa +aQn +ayl +czK +aUP +aUO +aXL +aXZ +aUO +czK +bbe +beO +beR +bgj +bgj +bjc +cAF +cAF +bja +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(56,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aba +aaS +aaS +aaf +aaf +aaf +aaa +aaa +aaa +alU +aoS +amC +aom +ank +asc +atq +auZ +bsU +axf +amC +alU +auT +aBI +aDf +aEK +aFM +aHy +ayl +aKk +aLA +aNf +aNf +aLA +aQD +aSd +czK +aUQ +aUW +aXL +aXZ +baJ +czK +bbe +beO +beU +bgk +bhL +bjc +cAF +blV +beO +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaf +chJ +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(57,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abY +aaa +aaf +aaa +aaf +aaa +aaf +aaa +acy +aaa +aaf +aaa +aiS +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +alU +aoR +apO +aqM +arF +asc +atq +auY +amC +amC +ayt +alU +aAw +aBl +aCZ +aEJ +aFL +aBI +aIO +aKk +asE +asE +asE +asE +aQD +ayl +czK +aUl +aUR +aWs +aXZ +aUQ +czK +bbf +beT +beT +bdQ +beZ +bje +bkC +cAJ +beO +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaS +aaS +aaf +aaf +aaa +chI +aaa +aaf +aaf +aaS +aaS +aba +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(58,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abY +aaa +acV +adv +adZ +aaa +acV +adv +adZ +aaa +acV +adv +adZ +aaa +aaS +aaf +aaf +aaf +aaa +aaa +aaa +alU +aoT +amC +aqO +arG +asc +atq +ava +amC +axg +ayu +azF +azF +azF +azF +azF +azF +azF +aIQ +aKk +aLC +aNg +aOk +aPy +aRd +aRM +aTt +aUm +aUm +aWt +aYd +aZn +aTt +bbg +bdG +bdu +bdT +beO +bjf +beO +beO +beO +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaa +aaf +aaa +aaf +aaa +aaa +chI +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(59,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +abY +aaf +acV +adu +adZ +aaa +acV +adu +adZ +aaa +acV +adu +adZ +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +alU +alU +alU +alU +arG +ash +atq +alU +alU +alU +alU +azF +aAP +aAP +aAP +aEF +aFN +azF +aIP +aKl +aLB +aLB +aLB +aLB +aQK +aSe +czK +aUQ +aUQ +aXN +aUO +aUQ +czK +bcI +aPz +bdt +bdR +aSg +aYf +bkD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaf +cca +cca +cca +cca +cca +aaa +chK +aaa +cca +cca +cca +cca +cca +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(60,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abY +aaa +acV +adu +adZ +aaf +acV +adu +adZ +aaf +acV +adu +adZ +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +ali +aoX +arI +asi +atr +atN +atN +atN +ayi +azq +aAK +aBv +aDa +aAQ +aAQ +azF +aIR +ayl +ayl +aNi +ayl +ayl +ayl +aSf +czK +czK +czK +czK +czK +czK +czK +aPz +aPz +bdB +aWv +aTu +bjg +bkD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +ccc +ccX +ccX +ccX +ccX +cgz +chL +ciP +cjH +cjH +cjH +cjH +cnl +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(61,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +acV +adu +adZ +aaa +acV +adu +adZ +aaa +acV +adu +adZ +aaf +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaf +aaa +ali +amC +arH +atP +auV +auV +auV +axK +ayh +azi +aAx +aBm +aAQ +aAQ +aAQ +azF +azF +azF +aLD +aNh +aNh +aPz +aPz +aPz +aPz +aSg +aWj +aXP +aZr +baL +bbI +bcK +aPz +bdB +aWv +bfh +aPz +aPz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaS +aaf +ccb +ccb +ccb +ccb +ccb +aaa +chL +aaa +ccb +ccb +ccb +ccb +ccb +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(62,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaf +aaa +acV +adu +adZ +aaa +acV +adu +adZ +aaa +acV +adu +adZ +aaa +aaf +aaa +ajV +alR +alR +alR +alR +alU +alU +alU +aqP +arJ +alU +avb +aaH +bOi +atO +asK +azF +aAT +aBw +aDg +aAQ +aAQ +aHz +aIS +aKn +aLF +aLF +aLF +aPz +aQL +aSg +aSg +aSg +aWl +aSg +aZs +baN +bbK +bcM +bdH +bdD +bea +bfq +bji +bkF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaS +aaa +aaa +aaa +aaf +aaa +aaa +aaa +chL +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aba +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(63,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaa +aaa +adw +aaa +aaa +aaa +adw +aaa +aaa +aaa +adw +aaa +aaa +ajV +ajV +ajV +alQ +amy +ang +alR +aoj +amC +apP +amC +arH +alU +aaH +bNb +aaf +atO +asK +azF +aAS +aFP +aAQ +aAQ +aAQ +aAQ +aAQ +aKm +aLE +aNj +aLE +aPz +aPz +aPz +aTu +aUS +aWk +aWk +aWk +baM +bbJ +bcL +aWk +bdC +bdZ +bhO +bjh +bkE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaS +aaf +cca +cca +cca +cca +cca +aaa +chL +aaa +cca +cca +cca +cca +cca +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(64,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaf +abs +abZ +abZ +acW +ady +ady +ady +ady +ady +ady +ady +ady +ady +ady +ajq +ajW +akB +alh +alT +amA +ani +anI +aol +aol +aol +aol +arL +alU +avU +avb +bOi +atO +asK +azF +aAU +aBG +aAQ +aAQ +aAQ +aBM +aAQ +aKn +aLE +aNl +aOm +aPB +aQM +aQM +aTv +aUT +aPz +aXQ +aXQ +aXQ +aXQ +aXQ +aXQ +aXQ +aXQ +bhQ +bjj +bkF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaS +aaa +ccc +ccX +ccX +ccX +ccX +cgz +chL +ciP +cjH +cjH +cjH +cjH +cnl +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(65,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaa +aaa +adx +aaa +aaa +aaa +adx +aaa +aaa +aaa +adx +aaa +aaa +ajV +ajV +ajV +alS +amz +anh +anH +aok +anJ +anJ +aFJ +arK +alU +alU +ali +alU +atO +asK +azF +aAP +aAP +aAP +aAQ +aFO +aHA +aIT +azF +aLG +aNk +aOl +aPA +aPA +aPA +aPA +aPA +aPA +aXQ +aZt +aXQ +aZt +aXQ +aZt +aXQ +aZt +bhQ +bjj +bkF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaS +acy +ccb +ccb +ccb +ccb +ccb +aaa +chL +aaa +ccb +ccb +ccb +ccb +ccb +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(66,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aba +aaS +aaf +aaa +acV +adz +adZ +aaa +acV +adz +adZ +aaa +acV +adz +adZ +aaa +aaf +aaa +ajV +alR +alR +alR +alR +aom +amC +apP +amC +arN +amC +amC +amC +amC +axi +asK +azF +azF +azF +azF +aEL +azF +azF +azF +azF +aLE +aNm +aOl +aPA +aQO +aSh +aTw +aUU +aWn +aXQ +aZv +aXQ +bbL +aXQ +bdJ +aXQ +bgr +bhQ +bjj +bkF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aba +aaa +aaa +aaa +aaf +aaa +aaa +aaa +chL +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(67,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +acV +adz +adZ +aaa +acV +adz +adZ +aaa +acV +adz +adZ +aaf +aaf +aaa +aaa +alU +alF +anj +anJ +anl +aoU +alU +amC +arM +alU +atT +asO +avV +atO +ayw +atN +aAV +aBQ +aDh +aDo +aFQ +aHe +aIN +aKp +aLE +aNm +aOl +aPA +aQN +aQN +aQN +aUn +aTy +aWy +aYe +aZw +aZw +bbq +bct +bfa +bfa +bhQ +bjk +bkE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaS +aaf +cca +cca +cca +cca +cca +aaa +chL +aaa +cca +cca +cca +cca +cca +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(68,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +acV +adz +adZ +aaf +acV +adz +adZ +aaf +acV +adz +adZ +aaa +aaf +aaf +aaf +alU +alF +anl +amC +alU +alU +alU +amC +alU +alU +apP +alU +alU +atP +auV +axK +aAN +aBL +aDd +aDd +aFR +aDd +aDd +aJZ +aLk +aNo +aOo +aPA +aQQ +aQN +aSV +aUo +aUX +aXp +baO +aZo +baw +bcO +baw +cBn +bgs +bhQ +bjk +bkF +aaa +aaa +aaa +aaa +aaa +aaa +cyT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aoV +bZm +aoV +aoV +aoV +aaa +aaS +aaa +ccc +ccX +ccX +ccX +ccX +cgz +chL +ciP +cjH +cjH +cjH +cjH +cnl +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(69,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaf +acV +adz +adZ +aaa +acV +adz +adZ +aaa +acV +adz +adZ +aaf +aaf +aaa +aaa +alU +alU +ank +alU +alU +aoV +alU +amC +amC +amC +arN +alU +avW +amC +ayx +atO +aAL +aBQ +aDb +aDo +aFY +aDo +aDo +aKp +aLE +aLE +aOn +aPA +aQP +aQN +aTx +aUV +aWo +aXQ +aXQ +aXQ +aXQ +aXQ +aXQ +aXQ +aXQ +bhQ +bjk +aPz +aaa +aaa +boI +bqi +brJ +boI +brJ +bvS +boI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aoV +bVz +aaf +aaf +sQX +aaa +aaS +aaf +ccb +ccb +ccb +ccb +ccb +aaa +chL +aaa +ccb +ccb +ccb +ccb +ccb +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(70,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +acV +adA +adZ +aaa +acV +adA +adZ +aaa +acV +adA +adZ +aaa +aaS +aaa +aaa +alU +amD +anm +amC +ali +aoV +ali +amC +alU +asO +atL +alU +avX +axf +amC +atO +aAY +aBQ +aDl +bxk +aFS +aDo +aIX +aBQ +aLE +aLE +aOp +aPA +aQR +aQN +aTA +aUq +aWq +aXs +aYH +aZx +bbO +aPA +bdM +aPz +bgt +bhS +bjk +aPz +aaa +aaa +blW +bqj +brK +blW +brK +bvT +blW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aag +bVz +aag +aag +aoV +aaa +aaS +aaa +aaa +aaf +aaa +aaf +aaa +aaa +chL +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(71,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaS +aaf +aaf +alU +amC +amC +amC +ali +aaf +ali +amC +alU +alU +alU +alU +alU +axj +alU +atO +aAY +aBQ +aDk +aDo +aDo +aDo +aIW +aBQ +aLE +aLE +aOl +aPC +aQN +aQN +aTz +aUp +aWq +aXr +aZx +cBh +bbN +aPA +bdL +aPz +bgt +bhR +bjk +aZE +blW +blW +blW +bqi +cyD +blW +cyD +bvS +blW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaf +bVz +aoV +aag +aoV +aaa +aaS +aaS +aaS +aaf +aaf +aaf +aaf +aaf +chM +aaf +aaf +aaf +aaf +aaf +aaS +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(72,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaS +aaS +aba +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaa +aaa +alU +amE +ann +amC +alU +aoV +ali +amC +alU +arN +atU +alU +atU +amC +atJ +atO +aAY +aBQ +aDn +aDo +aDo +aHD +aIZ +aBQ +aLE +aLE +aOq +aPD +aQT +aQT +aTC +aUs +aUY +aXv +aYS +aZx +bbO +aPA +bdM +aPz +aSg +bhT +bjk +aZE +blY +bnw +boJ +bql +brL +btr +bnw +bvV +blW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaf +bVz +aaf +aag +aoV +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +cfx +chO +cfx +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(73,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alU +alU +alU +ank +alU +aoV +alU +amC +amC +amC +amC +alU +aqO +amC +atJ +atO +aAY +aBQ +aDm +aDo +aDo +aDo +aIY +aBQ +aLE +aLE +aOl +aPA +aQS +aQN +aTB +aUr +aWq +aXt +aPA +aPA +aPA +aPA +aPA +aPz +bel +bfI +bgq +bhY +bkj +bqm +bqm +bps +bjr +bjr +buB +bvU +aZE +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaa +aaa +aag +aaa +bVx +caf +aoV +aag +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +cfx +chN +cfx +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(74,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alU +amF +alU +amC +alU +aaf +alU +alU +alU +alU +amC +alU +atM +axl +auV +azG +aAY +aBQ +aDp +aDo +aFU +aDo +aJb +aKp +aLE +aLE +aOl +aPE +aQV +aQN +aSi +aUu +aWq +aXw +aZB +aZB +aZB +aZB +aPA +bfc +bew +bfM +bjl +bkG +bkp +bmj +bjt +cCo +bjt +bjt +biq +bvV +blW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bCq +bCq +bCq +bLv +bCq +aoV +cbj +aoV +aag +aaf +aaf +bCq +bCq +bCq +bCq +bCq +bCq +cfx +cfx +cyK +cfx +cfx +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(75,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alU +alU +alU +amC +alU +aaf +aaH +alU +arO +alU +amC +avc +atO +axk +ayy +ayy +aAO +aBN +aDe +aDe +aFT +aDe +aIU +aKa +aLH +aLE +aOl +aPA +aQU +aQN +aQN +aUt +aWq +aXw +aZA +aZA +aZA +aZA +aPA +aWv +aYb +aZE +aZE +aZE +bkn +bmh +bjr +bmb +bjr +bjr +buC +bvV +blW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bCq +bJP +bCq +bSn +bCq +bCq +cbj +bLv +bXv +bLv +aaf +bCq +cAy +cAB +ccY +cAD +cAH +cfw +cgA +chP +ciQ +cfw +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(76,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +anK +ali +aaH +atR +alU +alU +alU +atW +atW +atO +axn +alU +aoX +atJ +aBQ +aDq +aDo +aFZ +aHE +aJc +aKs +aLK +aLK +aOr +aPA +aQX +aQN +aQN +aUv +aWp +aXA +aYX +aYX +aYX +bbs +bcw +bfd +bgw +aZE +bjn +bjr +bkt +bmh +boK +bpz +boK +bjr +bkt +bvV +blW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bCq +bHE +bJP +bHE +bJP +bCq +cbk +bLv +bHE +bLv +aaf +bCq +cAA +bHE +bHE +ccZ +cAK +cfw +cgC +chR +ciS +cfw +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(77,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alU +amC +alU +aaH +aaf +aaf +aaH +alU +ali +ali +atO +axm +ayz +ayz +ayz +aBR +aBR +aBR +aBR +aBR +aBR +aBR +aLJ +aLE +aOl +aPA +aQW +aQW +aTD +aQW +aUZ +aXx +aYU +aYU +aYU +bbr +bcu +bfe +aYb +aZE +bjm +bjr +bjr +bmh +boK +bjr +boK +bjr +bjr +bvV +bxu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bCq +bHE +bHE +bHE +bHE +bCq +bVy +bLv +cyE +bLv +bLv +bCq +bHE +cAC +ccZ +cAE +ceV +cfw +cgB +chQ +ciR +cfw +aag +aag +aag +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(78,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +aKY +ali +asC +aaf +aaH +aaf +aoV +aoV +aaf +avY +axo +ayB +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaa +aKu +aLM +aLF +aOs +aPG +aPG +aPG +aPG +aPG +aPA +aPA +aPA +aPA +aPA +aPA +aPA +aWv +aYb +aZE +bjp +bjr +bjr +bmh +boK +bjr +cBp +bjr +buB +bvV +bxu +bxu +bxx +bxu +bxu +bDi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bCq +bHE +bPW +bHE +bHE +bCq +bVB +bHE +bHE +bYu +bZk +bCq +cTF +bCq +bCq +bCq +bCq +cfw +cgE +chS +cfw +cfw +bCq +bXv +bCq +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(79,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaf +ali +amC +ali +asC +aaH +aaf +aoV +aoV +aoV +aoV +avY +axo +ayA +aaf +aBa +aBa +aBa +aBa +aBa +aBa +aaf +aKt +aLL +bDe +aOl +aPF +aQY +aSk +aTE +aPG +aWu +aYa +aZD +aZD +hcE +aZD +aZD +bff +bfk +aZE +bjo +bjr +bjr +bmh +boK +bjr +boK +bjr +bjr +bub +bxu +bvF +bzP +bAS +bxu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bCq +bHE +bHE +bSo +bHE +bCq +bVA +bWw +bXw +bYt +bZj +bCq +bHE +bCq +bSq +cdW +ceW +bCq +cgD +bUs +bHE +cjI +bCq +clA +bCq +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(80,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +ali +alU +alU +amC +alU +alU +alU +aaH +aaf +aoV +aaf +aaf +avY +axo +ayA +aaa +aBa +aBT +aDs +aEN +aGb +aBa +aaa +aKt +aLN +aLE +aOl +aPH +aRa +aRa +aTG +aPG +aWw +aYc +aZF +aZF +aZF +aZF +aZF +aZF +bgy +aZE +bjr +bjr +ama +bmh +bjr +bjr +bjr +bjr +bjr +bvX +bxu +byA +bzR +byd +bxx +aaa +aaa +aaa +aaa +bJc +aaa +aaa +aaa +aaa +bCq +bPV +bCq +bCq +cTF +bCq +bVD +bWy +bXx +bYw +bZj +bYy +bHE +bTz +bHE +bUs +ceY +bCq +bHE +bUs +bHE +bLu +bCq +cyE +bCq +aaa +aaa +aaf +aaa +bCq +bCq +bLv +bLv +bLv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(81,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +alV +amG +ano +amC +aon +aoW +alU +aqQ +aqQ +aqQ +aqQ +aqQ +avZ +axp +ayC +azH +aBb +aBS +aDr +aEM +aGa +aHF +aJd +aKv +aLN +aLE +aOl +aPF +aQZ +aRa +aTF +aPG +aSX +aWC +baS +aZI +baS +baS +bdS +bdU +ckQ +gjl +bjq +bjr +bjr +bmh +bjr +bjr +bjr +bjr +bjr +bjr +bxw +byz +bzQ +byc +bxx +aaa +aaa +bGi +bGi +bJb +bGi +bGi +aoV +aoV +bCq +bPU +bHE +bSp +bHE +bCq +bVC +bWx +bWy +bYv +bZl +bCq +bHE +bCq +cda +cgF +bCq +cqn +cAh +chT +bHE +bHE +ckv +bHE +bCq +bLv +bLv +bLv +bLv +bCq +ciT +cqK +crl +bLv +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(82,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +aKY +amC +anp +amC +amC +amC +ank +aqR +aqR +aGh +aqR +aqR +awb +axo +ayA +aaa +aBa +aBV +alu +aEM +aGd +aHG +aJe +aKw +aLP +aMR +aNU +aPJ +aPJ +aPJ +aPJ +aPJ +aVC +aXJ +bgA +aZp +baY +bcJ +bcF +bfg +bgA +bhW +bjt +biq +bjr +bmh +bjr +bqn +brN +brN +brN +brN +bxx +byC +bzT +byl +bxx +aaf +aaf +bGi +bHz +byE +bKk +bGi +aoV +aoV +bCq +bPW +bCq +bCq +cOw +bCq +bVF +bWA +bXy +bYx +bWz +bCq +bHE +bCq +bQa +cpY +cyL +cqy +cAi +bQa +bHE +bHE +bHE +bHE +bHE +bHE +bHE +bHE +bHE +cpR +bHE +cAQ +crm +bLv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(83,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +alW +amH +ano +anL +aoo +aoX +alU +aqQ +aqQ +aqQ +aqQ +aqQ +awa +axq +ayD +azI +aBc +aBU +aDt +aEO +aGc +aHF +aJd +aKb +aLN +aMQ +aNT +aPI +aRb +aRb +aRb +aRb +aWx +aXE +baS +baS +bbP +bcR +bcE +baS +bex +aZF +bgu +bic +bku +bmh +bjr +aZE +brM +bts +buD +bvY +bxx +byB +bwS +byg +bxx +aaa +aaa +bGi +bHy +byE +bKj +bGi +aoV +aoV +bCq +bHE +bHE +bSq +cdb +bCq +bVE +bWz +bHE +bHE +bLu +bCq +bLu +bCq +cdb +bSs +bCq +bCq +cgG +bCq +bCq +bCq +bCq +cTF +bCq +bLv +bLv +bLv +bLv +bCq +cqv +cqL +bJe +bLv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(84,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ali +ali +alU +alU +ali +alU +alU +alU +aaa +aaa +aaa +aaa +aag +avY +axo +ayA +aaa +aBa +aBW +aDv +aEP +aGe +aBa +aaa +aKt +aLN +aMS +aOt +aPK +aPK +aPK +aPK +aPK +aWA +aXM +bfi +cBi +bbS +bcS +bbt +bfi +beD +gjl +aZE +biA +bmg +bmH +bkJ +aZE +aZE +aZE +aZE +aZE +bxu +byD +bwU +byn +bxu +aaa +bxy +bxy +bxy +bJd +bKm +bxy +aaf +aaf +bCq +bPY +cOw +bCq +bCq +bCq +bCq +bCq +bYy +bCq +bCq +bCq +bCq +bCq +bCq +bCq +bCq +bCq +bUs +bLv +aaa +bCq +ckv +bHE +bCq +aaa +aaa +aaf +aaa +bCq +bCq +bCq +bCq +bCq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(85,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +avY +axo +ayA +aaf +aBa +aBa +aBa +aBa +aBa +aBa +aaf +aKt +aLN +aMS +aOi +tlO +aPK +aSl +aTH +aPK +aWz +aWC +gjl +gjl +gjl +bcT +gjl +gjl +gjl +aZE +bju +biv +bmf +bmt +boN +bqo +brO +btt +buE +bvZ +bxu +bxx +bwT +bym +bxu +bxy +bxy +bGj +bHA +bHA +bKl +bxy +aaH +aaH +bCq +bPX +bRg +bRg +bCq +bHE +bVG +bHE +bHE +bCq +tPT +tRF +mrR +dKP +odx +rBq +tur +bCq +bUs +bLv +aaa +bLv +bJf +ccd +bCq +aaa +aaa +aaf +aaa +aaa +aaf +aaf +cig +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(86,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +avY +axs +ayF +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaa +aKx +aLN +aMS +aOi +aLE +aRc +aSm +aTJ +aPK +cCl +aYh +cCm +cCm +cCm +cCn +aPz +bdW +aSg +aZE +bgz +biT +boU +bmP +buF +bbR +bbR +btu +bbR +bOL +bxy +byF +bwW +bGm +bCo +bDk +bEK +byE +byE +byE +byE +bGi +aaf +aaf +bLv +bQa +bHE +bHE +bCq +bHE +bCq +bCq +bCq +sXA +mPE +kyF +sAM +imH +evR +evR +rMN +bCq +bUs +bLv +aaf +cjJ +cjJ +cjJ +cjJ +cjJ +cjJ +cjJ +cjJ +cjJ +cjJ +aaa +crn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(87,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +arP +avd +avZ +axr +ayE +ayE +ayE +ayE +ayE +ayE +ayE +ayE +ayE +ayE +aLl +aMT +aOi +aPL +aPK +aSm +aTI +aPK +aWB +cCj +apd +apd +bbU +cCk +apd +aZK +bgB +bhX +bgv +biF +bkw +bnE +bny +btv +btv +bjv +btv +buc +bxz +eVL +bwV +byy +bBa +bAb +bzY +bBa +bEQ +bGM +bKn +bGi +aoV +aoV +bLv +bPZ +bHE +bHE +cTF +bHE +bCq +iiW +iiW +iiW +iiW +iiW +dfL +dKP +mqZ +tyO +wfR +bCq +bUs +bLv +aaa +cjJ +ckw +clC +cmy +cnm +cnL +cov +cpj +cpS +cjJ +aaa +crn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(88,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +arP +ave +awa +axu +ayH +ayH +ayH +ayH +ayH +ayH +aFV +ayH +ayH +aKy +aLn +aMU +aOw +aPN +aPK +aSn +aTK +aPK +apd +cCj +asW +baW +bLE +bLG +apd +bfj +bgC +bia +aZK +bjs +bkx +bmQ +bnA +bpB +bpB +brR +bsV +bwc +bxA +bvI +bwX +byG +bvI +bAm +bBG +bDo +byE +byE +bKp +bGi +aaf +aaf +bLv +bHE +bHE +bSs +bCq +bHE +bCq +uvZ +dKP +vjm +bcU +bcU +bcU +dKP +dKP +dKP +dKP +bCq +bUs +bLv +aaa +cjJ +cky +clE +cmA +clE +cnN +cox +cpl +cpU +cjJ +aaf +crn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(89,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adB +aaa +aaa +aaa +acd +acd +acd +afr +acd +acd +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +arP +arP +arP +cya +avZ +axt +ayG +ayG +ayG +ayG +ayG +ayG +ayG +ayG +ayG +ayG +aLm +aMS +aOv +aPM +aPQ +aPQ +aPQ +aPQ +apd +aYi +aqW +aqW +bbQ +bLG +apd +aZH +aZK +bhZ +aZK +cNM +bfQ +bnG +bnz +bpA +bbR +sWR +jlm +bud +eyM +kSb +bAZ +bGm +bzF +bAc +bGm +byE +cBB +byE +bKo +bxy +aaH +aaH +bCq +bHE +bRh +bLu +bCq +bHE +bCq +iiW +iiW +dKV +xgF +dKV +dKV +iiW +gMl +gMl +iiW +bLv +bUs +bLv +aaf +cjJ +ckx +clD +cmz +cnn +cnM +cow +cpk +cpT +cjJ +aaa +crn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(90,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +abc +abc +afu +abc +age +aeE +afs +ahw +acd +aaa +aaa +aaa +aaa +aaa +aaa +aaa +anO +aaa +aaa +aaa +aaa +arP +asQ +aqR +aqR +avZ +axt +ayG +azK +aBe +aBe +aDj +aER +aFX +aHj +aJa +aKc +aLp +aMV +aOy +aLE +aPQ +aRV +aSW +aVa +apd +aWE +aqW +aqW +bcG +bLG +apd +aZH +bgD +bfN +bgE +cNN +bkH +bfm +boS +bfm +bNK +bkN +bfm +bwe +bwe +bwd +bwY +byJ +bwe +bAc +bBI +bGn +bGn +bGn +bKq +bxy +aaf +aaf +bCq +bOK +bCq +bCq +bCq +bUt +bCq +uaw +tkU +iiW +lnu +cjn +iiW +cxo +bcU +bcU +vzO +bLv +bUs +bLv +aaa +cjJ +cky +clG +cmB +clG +cnP +coz +cpn +cjJ +cjJ +aaa +crn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(91,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aea +aeH +aft +abc +agH +aeF +alr +ajt +afr +aaa +aaa +aiU +aln +aiU +aaa +aiU +anN +aiU +aaa +aaa +aaa +arP +asP +aqR +aqR +awb +axt +ayG +azJ +aBd +aBX +aDi +aEQ +aFW +aHh +aIV +ayG +aLN +aMS +aOx +aPc +aRe +aRT +aSt +aWF +apd +aWG +aZa +baX +bcH +bdE +apd +aZH +bnL +cNG +cNJ +cNM +cNI +bnI +boR +bqs +bbR +bkM +bbR +bwd +bxB +bvL +byI +byH +bwe +bAn +bBH +bxy +bxy +bxy +bxy +bxy +bLv +bLv +bCq +bHE +bLv +aaa +bLv +uuG +jJF +gBo +sEt +cxo +bcU +bcU +jqv +cxo +bcU +mpI +vzO +bLv +bUs +bLv +aaa +cjJ +ckz +clF +cmy +cnp +cnO +coy +cpm +cjJ +aaf +aaf +crn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaT +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(92,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +abu +abu +abu +abc +abc +aec +aeJ +afw +abc +abc +aeF +aay +ajt +akd +aaf +aaf +aiU +alp +aiU +aaa +aiU +alp +aiU +aaf +aaf +aaf +arP +arP +arP +arP +avZ +axt +ayG +azM +aBg +aBZ +aDx +aET +aET +bCx +aHJ +aKd +aLq +aMY +aOA +aPO +aRf +aSc +aSc +aUw +apd +aXK +avr +aZJ +bbT +bSy +apd +aZH +beF +bfl +bmi +bjw +bmk +bbR +boT +bbR +bbR +buI +bbR +bwd +bxD +byL +byK +byT +bwe +bAx +bTE +bCq +bHD +bJe +bCq +bLu +bHE +bHE +bHE +bHE +bLv +aaf +bLv +bUs +bCq +iiW +iiW +fxa +bcU +bcU +vzO +iiW +oKh +oKh +iiW +bLv +bUs +bLv +aaf +cjJ +cjJ +cjJ +cjJ +cjJ +cnR +coB +cjJ +cjJ +aaa +aaa +crn +aaf +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaa +aaf +ctv +aaT +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(93,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abb +abt +aca +acz +acX +adC +aeb +aeI +afv +agf +abc +aeF +aay +ajt +aiT +aiT +aiV +akG +cxJ +aiU +amK +aiU +cxP +aoq +aiV +aiT +aiT +arP +asR +aqR +arP +awc +axt +ayG +azL +aBf +aBY +aDw +aES +aJh +aHv +aJh +aKA +aLN +aMS +aOz +qQP +aPQ +aSa +aSr +aSr +apd +aYZ +bLE +aqW +aqW +bLE +apd +beA +bqp +cNG +cNJ +bLF +aZK +urE +bbR +bqt +cBq +bbR +bbR +bwd +bxC +byK +cBv +byO +bwe +bAo +bTE +bGo +bHC +bHE +bCq +bCq +bLv +bLv +bHE +bLv +bCq +aaa +bLv +bUs +bCq +sRT +usO +iiW +oKh +oKh +iiW +iiW +iiW +izv +nfm +bCq +bUs +bCq +aaa +aaf +aaa +aaa +aaf +cjJ +cnQ +coA +cpo +cjJ +aaa +aaa +crn +aaf +aaT +ctv +ctv +ctv +ctv +ctv +ctv +ctv +aaT +aaa +aaf +ctv +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(94,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abw +acc +acB +acZ +adE +aee +aeL +afy +agh +abc +aeM +afz +aju +aiT +ajs +akb +akI +akI +amc +aiT +ant +akI +aos +aiT +apR +cCh +arP +asT +aqR +avf +awb +axt +ayG +azN +aBe +aBe +aDy +aEU +aGf +aHL +aJi +aKB +aLT +aNp +aOC +aPQ +aPQ +aTL +aTP +aWD +apd +aYj +aZL +baU +baU +bcV +apf +bfn +beW +bfR +bKF +bNH +aZK +bnJ +bbR +bbR +bbR +bty +buJ +bwe +bxE +byM +bAd +bBf +bwe +bAJ +bCe +bCq +bHE +bJf +bCq +aaa +aaf +bLv +bHE +bLv +aaa +aaa +bTB +bUv +bES +bES +bES +bES +bGp +bGp +bGp +bGp +bES +bES +bES +car +bUs +bCq +bCq +bCq +bCq +bCq +bCq +cjJ +cnS +coC +cpp +cjJ +aaf +aaf +cig +aaf +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(95,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abd +abv +acb +acA +acI +adD +aed +aeK +afx +agg +abc +ajX +alx +alY +aiU +ajr +aka +akH +alq +amb +aiU +ans +alq +aor +apb +alp +aqS +arP +asS +aqR +arP +awd +axv +ayG +ayG +ayG +ayG +ayG +ayG +ayG +ayG +ayG +ayG +aHP +aNc +aOB +aPQ +aPQ +aSs +aSs +aSs +apd +apd +apd +baV +bON +apd +apd +aZK +beV +cNI +bKP +cNI +aZK +bnK +bnK +bqu +bqu +bnK +bnK +bwe +bwe +bwe +bwe +bwe +bwe +bAI +bCd +bCq +bCq +bCq +bCq +bLv +bLv +bLv +bOK +bLv +bLv +bLv +bTA +bUu +bLw +bLw +bLw +bLw +bLw +bLw +bLw +bLw +bLw +bLw +bLw +caq +cbw +ccu +ciT +bCq +bSs +ceY +ccw +ccw +cnR +cgT +cjJ +ccw +ccw +ccw +ccw +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(96,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaH +aai +aai +abg +aby +aby +aby +aby +aby +aeg +aeN +afA +afA +abc +afq +agv +ajY +akC +akE +akJ +akK +als +ame +amM +anv +als +aou +aiT +aiT +aiT +arP +arP +arP +arP +awf +axx +ayJ +ayJ +aBi +aqR +aqR +aqR +aqR +aqR +aqR +arP +aLI +aNr +bBo +aJq +aRh +aJq +aJq +aJq +aJq +aJq +aLY +aJq +aJq +aRh +bbV +bfo +bkS +bfo +bgn +bfo +bmn +bfo +boW +bmE +bmE +btz +btz +bwf +btz +btz +btz +bBh +bCr +bAK +bCn +bGq +bGq +bGq +bGq +bLw +bGq +bGq +bGq +bLw +bGq +bGq +bTD +bUx +bVI +bVI +bVI +bVI +bVI +bVI +bVI +bVI +bVI +bVI +bVI +bTA +bEP +cdi +bCq +bCq +bHE +bHE +cmD +cnr +cnU +chD +cpq +cpV +cqw +cqO +crp +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaT +aaT +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(97,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aai +aai +aai +aaU +abf +abx +acd +acC +ada +adF +aad +abz +aef +aeD +aav +akc +alM +alZ +akD +akF +alj +all +alm +alo +amL +anu +alq +aot +apc +apS +aqT +apS +apS +apS +apS +awe +axw +ayI +azO +aBh +akL +aDz +aEV +aGg +aHx +aqZ +apg +aLx +aNq +aOD +aPe +aJq +aJq +aJq +aJq +aJq +aJq +aLY +aJq +aJq +bHt +aJq +aJq +beX +aJq +bgm +bjx +bmm +bnM +boV +bnM +bnM +bnM +bnM +bnM +bnM +bnM +bAe +bBg +bCq +bCq +bDt +bGp +bGp +bGp +bES +bGp +bGp +bGp +bGp +bGp +bGp +bES +bTC +bAx +bVI +bWB +bWB +bYz +bYz +cag +cbl +bYz +bWB +bWB +bVI +cax +cbx +cdh +ciU +cjK +ckA +ckA +cmC +cmC +cfJ +chB +cpW +cgR +cgR +cqN +cro +cEl +cEE +cEl +cFm +csx +cFm +cFm +csx +csv +aaa +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(98,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aah +aai +aai +aai +aai +aaI +aaM +aat +aat +aat +ace +aat +aat +adH +aei +aeO +afJ +aai +aai +aai +aai +aai +aai +ajw +akf +aiX +aiX +aiX +aiX +aiV +anP +aiT +cCi +cCi +cCi +cCi +cCi +cCi +cCi +awg +axy +ayL +azQ +aBk +ayL +ayL +ayL +ayW +ayW +ayW +ayW +aLW +aNs +aJq +aLX +aLX +aLX +aLX +aLX +aJq +aYl +aZN +aYl +aYl +aYl +aYl +aYl +bgG +bid +aYl +bBi +aLY +bnN +boY +bqw +aJq +aJq +aYl +aKF +aLX +aJq +aJq +bBi +aJw +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +bCq +bTF +bAx +bVI +bWD +bXA +bYB +bYz +cai +cSF +ccg +cdd +cea +bVI +caz +cby +cdj +cdv +cem +cem +cem +cfe +cfD +cgv +chE +ciN +ciN +cji +cDZ +crr +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(99,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aai +aan +aaw +aaB +aat +aaJ +aat +abh +aat +acd +abK +acY +adG +aeh +aeO +afI +agl +agL +ags +ags +aiB +acd +ajv +ake +agj +afL +aez +ahU +aiX +anz +aov +cCi +air +aqY +arU +apU +apU +cCi +awg +axy +ayK +azE +aBj +aBO +aDC +ayL +aGo +aHN +aJj +ayW +aLV +aJq +aOE +aJn +aJn +aJn +aJn +aJs +aJq +aYk +aZM +aZM +bbW +bcX +bcX +aZM +aZM +aZM +bjz +bkT +bjz +bjz +boX +bqv +bqv +bqv +bqv +bwg +aJw +aJq +aJq +bBi +aJw +aaa +bEU +bGr +bGr +bGr +bKr +aaa +aaf +aaa +aaa +aaf +aaf +bCq +bTE +bAx +bVI +bWC +bXz +bYA +bZn +cah +bWB +ccf +cdc +cdZ +bVI +cay +ccw +ccw +ccw +ccw +ccw +ccw +ccw +ccw +cfL +coH +cBO +cgR +cDB +cqP +crq +crZ +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(100,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aak +aap +aay +aaD +aat +aat +aat +aat +abA +acd +acd +acd +acd +aek +aeU +afI +acd +agI +ahq +ahV +aho +acd +ajy +akh +afK +ajc +afM +afN +aiX +anz +aov +cCi +aqX +arR +asj +asU +ats +atY +auo +axy +ayN +azE +aAW +aCa +aDB +aDI +azW +azW +azW +ayW +aLX +aJq +aOE +aJn +aaa +aaa +aJn +aJs +aJq +aYn +aZM +aZu +bbY +bcY +bdX +bbX +bgH +bie +bjB +bkW +bmp +bjz +bpa +bqy +cBr +bqy +buK +bqy +aJw +aJq +aJq +bBi +aJw +aaf +bEW +bGt +bHG +bJh +bEW +aaf +aaf +aaa +aaa +bKv +bLB +bES +bMj +bAx +bVI +bWF +bXC +bXC +bZp +cak +bWB +bWB +bWB +cec +bVI +cay +ccw +chY +ciX +cjM +ckB +ckB +ckB +ccw +cnY +coH +cgR +cgR +cqx +cqR +crp +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(101,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaj +aao +aax +aaC +aat +aat +adO +aat +aei +acd +acE +add +adF +aej +aeQ +afD +acd +agJ +ahp +ahp +aiC +adF +ajx +akg +agj +adL +ahr +aih +aiX +anz +aov +ape +arT +aqV +arS +apU +atu +cCi +awg +axy +ayM +azs +aAR +aBP +aDA +aEW +aGi +aHB +aEZ +aBt +aJs +aJq +aOE +aJn +aaa +aaa +aJw +aVb +aWH +aYm +aZM +aZq +bbX +bbX +bbX +bfp +aZP +aZP +bjA +cAG +bmo +bmr +boZ +bqx +brU +bmr +bmr +bmr +bmr +byN +aJq +bBj +aJw +aaa +bEV +bGs +cBC +bJg +bKs +aaa +aaf +aaf +aaf +bJQ +bLg +cem +cem +bNg +bVI +bWE +bXB +bYC +bZo +bWB +bWB +cch +cde +ceb +bVI +cay +ccw +chY +ciZ +ciW +ckB +ckB +ckC +ccw +cnX +coH +cps +cpX +cqz +cqQ +ccw +crH +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(102,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aal +aar +aay +aaF +aat +aaO +aaW +aat +abB +acf +abM +acG +adI +aem +aeO +afG +acd +agK +agK +ail +aiE +aiW +ajA +akj +agj +agj +agj +aiX +aiX +anQ +aov +cCi +apU +arT +arT +asn +atK +auq +avs +axz +ayP +azU +aBo +aCg +azW +aEX +aEZ +aEZ +aEZ +vbD +aJs +aJq +bJx +aJn +aaa +aaa +aTQ +aVd +aWJ +aYp +aZM +aZz +baI +bda +bda +bca +bgJ +aZP +cNL +bkY +bmo +bnP +bpc +bqA +brW +btB +buM +bwi +bmr +aMm +aJq +bBi +bCs +bCs +bEY +bGu +bHI +bJi +bEY +bCs +bCs +bNI +bNI +bRn +cce +bNI +bNI +bUz +bVI +bWG +bXD +bYz +cSE +bWB +bYz +bYz +cdf +ced +bVI +cay +ccw +ciZ +ciZ +ciZ +ckC +ckC +ckC +ccw +coa +coJ +clJ +clJ +cig +cig +ccw +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(103,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaj +aaq +aay +aaE +aaJ +aaN +aaV +aat +aat +acd +abL +adb +acd +ael +aeO +afF +agj +agj +agj +agj +agj +agj +ajz +aki +akM +alv +amf +amQ +anw +anz +aov +cCi +arT +arT +asl +arT +apU +cCi +awg +axy +ayv +azE +aBn +aCb +aDD +aEY +aGj +aHC +aEZ +aBt +aJs +aJq +aOE +aJn +aaa +aaa +aPR +aVc +aWI +aYo +aZM +aZy +bay +bcZ +bdY +bdF +bgI +aZP +bjC +bkX +bmo +bnO +bpb +bqz +bqq +brS +bsY +bue +bmr +aMn +aJq +bBi +bCs +bDv +bEX +bFa +bHH +bFa +bKt +bLx +bCs +cCe +bRl +apV +bLC +cCf +bNI +bUz +bVI +bWB +bWB +bYz +bZq +cal +cbm +bYz +bWB +bWB +bVI +cay +ccw +ccw +ciY +ciY +ccw +ccw +ccw +ccw +cnZ +coH +cpt +cpZ +cig +cqS +ccw +crH +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(104,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aal +aat +aay +aat +aat +aaJ +aat +aat +abD +acd +acd +acd +acd +aen +aeO +afH +agj +agM +ahu +ahW +aiD +agj +auj +akl +akO +afM +afM +amR +anw +anz +aox +cCi +cCi +cCi +cCi +cCi +cCi +cCi +awg +axy +ayQ +azE +aBq +aBr +aDE +aFc +azW +azW +aJf +ayW +aJr +aJq +aOE +aJn +aaa +aPR +aPR +aPR +aWL +aPR +aZM +bbX +bay +bbM +bcN +bdK +bgL +aZP +aZP +aZP +bmo +bnR +bpe +bqB +bqq +btD +buO +bwk +bmr +aLY +cBw +bBk +bCs +bDx +bFa +bFa +bHJ +bFa +bFa +bLz +bCs +cCe +bNJ +apV +xhV +gWd +bNI +bUz +bVJ +bWI +bXF +bXF +bZs +cao +cbo +bXF +bXF +cef +bVJ +cay +ccw +cig +cjb +cjb +cig +cig +cmG +cnt +cob +coL +cDo +cgR +cqA +cqT +csg +crJ +crU +csb +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +aaT +aaT +gXs +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(105,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaj +aas +aaz +aat +aat +aat +aat +aat +abC +acd +acH +adc +acd +aeo +aeS +afH +agj +agN +aht +ain +aid +agj +aiZ +akk +akN +alw +amg +amR +anw +anR +aow +apg +aqZ +aqZ +aqZ +apW +aqZ +avh +awh +axz +ayO +azE +aBp +aCc +aDF +ayL +aGq +aHO +aJl +ayW +aJq +aJq +aOE +aJn +aaa +aPR +aTR +aVe +aWK +aYq +aZO +aZC +baK +bbC +bbC +bdI +bgK +bgK +bjE +bgK +bmq +bnQ +bpd +bpd +bqr +btC +buN +bwj +bmr +byP +aJq +bBi +bCs +bDw +bEZ +bGv +bHH +bJj +bKu +bLy +bCs +bNJ +bNJ +bKx +cjL +gbq +bNI +bUz +bVJ +bWH +bXE +bYD +bZr +can +cbn +cci +cdg +cee +bVJ +cay +ccw +cia +cSN +cSS +ckD +cTc +cTe +cfG +cgw +coK +cpu +cMm +ccw +ccw +ccw +crK +cEK +csa +csj +csa +csa +cGr +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(106,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aam +aav +aav +aav +aaL +aaQ +aaY +aav +abE +acg +acJ +ade +adJ +aep +aeT +afH +agj +ahs +ahP +ahP +aiF +agj +aja +ajG +akQ +agj +agj +amS +anx +anz +aov +aph +aph +aph +arW +aso +auf +avi +awi +axy +ayS +azS +aBs +aCi +aDI +ayL +ayW +ayW +ayW +ayW +aJq +aJq +aOE +aJn +aaa +aPR +aTT +aVg +aWN +aYs +aZQ +bbi +bde +bcd +bcd +bcd +bcd +bcd +bcd +bcd +bms +bnS +bpf +bqC +brZ +btE +bnS +bwl +bxG +byR +bnM +bBl +bCs +bDz +bFa +bFa +bHH +bFa +bFa +bFa +bCs +bNL +bNJ +apV +cjL +nxv +bNI +bUz +bVJ +bOo +bOD +bQb +bZv +bSd +bXG +bOC +bWt +cBK +bVJ +cay +ccw +cid +cSO +cen +ckG +clJ +cmF +cgR +cgI +chF +ciO +cqc +cqc +cqc +cEd +cEr +cEL +cFb +cFu +cFI +cGd +cGs +cGr +ccw +ccw +ccw +ccw +ccw +ccw +aaa +eRz +aaT +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(107,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aai +aau +aaA +aaG +aaK +aaP +aaX +hwu +aat +acd +acD +acY +adG +aeq +aeV +acd +agj +ahm +ahD +aiw +aiO +agj +ajD +akm +akP +aly +amh +amR +anw +anz +aov +aph +aob +ara +arV +apZ +aph +aph +awg +axA +ayR +azR +aBr +azW +afO +azW +agm +aBt +aaa +aJn +aLY +aLY +aOF +aPR +aPR +aPR +aTS +aVf +aWM +aYr +aZP +bbh +bcc +bdd +bbX +bfr +bgM +bif +aZM +aZM +bmr +bmr +bmr +bmr +bmr +bmr +bmr +bmr +bmr +byQ +aJq +aJq +bCs +bDy +bFb +bGw +bER +bJk +bFa +bLA +bCs +cCd +bQc +bKA +rKP +bSv +bNI +bUB +bVJ +bOl +bOC +bPQ +bQK +bYF +bTI +bUy +bWs +ceg +bVJ +cay +ccw +cic +cSP +cST +cTa +ceZ +clQ +cgR +cgx +coM +cpv +cqb +cqb +cqb +cqb +cEs +cqb +cqb +cAp +cqb +cAo +cGt +cgx +jMY +csd +cHa +csd +uhH +ccw +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(108,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aai +aai +aai +aai +aai +aai +aai +abj +abG +acd +acd +acd +acd +aeP +afC +agk +agF +agP +agP +agP +agP +aiz +ajg +akl +akR +afM +afM +amR +anw +anz +aov +aph +aoc +ata +arY +ata +auh +aph +awg +axA +ayT +azR +azW +azW +aBt +azW +aio +aBt +aaa +aJn +aJq +aJq +aOE +aPT +aRj +aSv +aTV +aVi +aWP +aYu +aYt +bbk +bbk +bbk +bbk +bfs +aZM +aZM +aZM +aaf +aaf +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aJn +aXf +aJq +byV +bCs +bAM +bFa +bGy +bFc +bJm +bFa +bHO +bCs +cCd +cCd +aYg +cjL +cCc +bNI +bEP +bVJ +bVJ +bOM +bQd +bQP +bSt +bUc +bVb +bWv +cei +bVJ +cay +ccw +cif +cSQ +cSU +cTb +cTd +ckF +ckF +cgK +cDg +cDp +cqe +cqB +cqB +cEe +csP +cAl +cFc +cAq +cFJ +cSH +cGu +cGH +fsQ +fsQ +cGR +csd +csd +ccw +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(109,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaf +aai +abi +abF +ach +acK +adf +acd +aer +afB +agi +agD +agO +agO +agO +agO +aiy +ajb +ajF +akN +alw +ami +amR +anw +anz +aov +api +ata +arb +arX +atc +aug +aph +awg +axA +azW +ayU +azW +aCj +ayW +ayW +ayW +ayW +aJn +aJn +aJq +aJq +aOE +aPS +aRi +aSu +aTU +cpC +aWO +aYt +aYx +bbj +bce +bdf +beb +aYv +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aJn +aXf +aJq +byU +bCs +bAL +bFa +bGx +bET +bJl +bHh +bHN +bCs +cjo +cCd +bSx +cjL +cCb +bNI +bEP +bLu +bVJ +bVJ +bVJ +bVJ +bVJ +bVJ +bUC +bWu +bVJ +bVJ +cay +ccw +cie +cdT +cCY +cnA +cev +cfg +cgU +cgJ +chG +cpx +cqd +cDC +cqU +cEf +cEt +cEM +csA +cEg +cFK +cGe +cGv +cGI +cGS +cHb +cHg +cHn +oDF +ccw +aaf +aaT +ctv +aaT +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(110,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaR +aaZ +aaZ +aaZ +aaZ +aaZ +aaZ +aaZ +aaZ +aaZ +aaZ +agn +agR +agn +agR +agn +ajc +ajI +ako +akQ +agj +agj +amS +any +anz +aov +aph +aqb +are +arZ +ata +aui +aph +awg +axA +ayX +azY +azW +azW +afP +aFb +aEZ +cyg +aJp +aKE +aMa +aNw +aOE +aPU +aRl +aSx +aTX +aVi +aWR +aYv +aZS +aZR +aZR +bbm +bec +bfu +bgO +bgO +bgO +bmu +bgO +bgO +bgO +bgO +bsb +aaf +aaf +aaf +aJn +aXf +aJq +aJq +bCs +bFa +bFa +bFa +bET +bJn +bHi +bHQ +bCs +cjo +bJu +bSx +cmX +bSz +bNI +bUD +bVM +bVM +bVM +bVM +bVM +cat +bCq +bVd +bWK +bYp +bCq +cay +ccw +cig +cSR +cSV +cig +cig +cTf +cgR +ccw +cDh +cpy +cDv +cDD +cqU +cMD +cEu +cEz +cEz +cMD +cFL +cGf +kQq +cMm +ciZ +cHc +cAu +cAu +ciZ +ccw +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(111,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +aaT +aaf +aaZ +abm +cpg +acv +adi +adi +aaZ +aeW +agQ +ahv +ahQ +aiI +aiH +ajB +akm +akP +aly +amj +amR +anw +anz +aov +aph +aph +ard +ard +ard +aph +aph +awj +axA +ayW +ayW +aBt +aBt +ayW +ayW +ayW +ayW +aJo +aJq +aLZ +aNv +aOE +aPS +aRk +aSw +aTW +aVj +aWQ +aYv +aZR +aZR +aZR +aZR +aZR +bft +bgN +bgN +bgN +bmv +bkI +bnT +bpg +bqD +bsa +bgO +buP +bwm +bxH +byS +aJq +aMh +bCs +bCs +bCs +bCs +bFe +bCs +bLD +bCs +bCs +bNI +bNI +bKU +cnB +bNI +bNI +bCq +bCq +bCq +bCq +bCq +bCq +cas +bCq +bVc +bWJ +bYn +bZB +caC +ccw +cSM +cjd +cSW +ckI +clJ +cmL +cBO +ccw +chV +cpx +cqf +cqD +cMD +crs +cEv +cEv +cFe +cMD +cFM +czE +kQq +ccw +cGT +csd +csd +csd +csd +ccw +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(112,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +aaT +aaa +aaZ +abH +acl +ajC +acL +adi +aaZ +agp +agT +ahx +ahS +aiK +ajc +ajI +akl +akT +aww +afM +amR +anw +anz +aov +apk +anw +anw +anw +anw +aVh +avj +awl +axC +ayY +azZ +azZ +azZ +azZ +azZ +aGt +aHQ +aJr +aJq +aMc +aNy +aOE +aPS +aRn +aSz +aTY +aVl +aWT +aYx +aZR +bbm +bbm +bdh +bee +bfv +bgN +bih +big +bii +bgN +bnV +bph +bqF +bsd +btG +buQ +bwn +bxI +bwa +bAg +bBq +bCu +bAO +bFd +bFd +bFj +bJp +bHk +bHR +bIe +bFd +bJz +bRp +cav +bSA +bTJ +bSA +bSA +bWL +bSA +bSA +bZx +bSR +bUl +bVf +bXm +bYE +bCq +bHE +ccw +cij +cjf +cSX +ckK +clJ +cmL +cgR +cgL +chX +cpx +cqh +cqF +cra +crI +cEw +cEw +cEw +cFw +cFN +csH +csR +cMm +cGU +csd +csd +cHo +csd +ccw +aaa +aaT +ctv +aaT +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(113,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +abY +aaa +aaZ +abn +ack +adk +adK +cqG +aeX +ago +agS +agQ +ahR +aiJ +ajc +ajI +akk +akS +alw +amk +amR +anw +anS +aoy +apj +anz +anz +anz +anz +anz +anz +awk +axB +anz +anz +anz +anz +anz +anz +apj +aHP +aJq +aJq +aMb +aNx +aOE +aPS +aRm +aSy +aTX +aVk +aWS +aYw +aZT +cBj +bcf +bdg +bed +bfv +bgN +big +bgN +bkZ +bgN +bnU +bph +bqE +bsc +btF +bph +bsc +knx +bvW +bAf +bBp +aHP +bAN +bQg +bQg +bFh +bGN +bHj +bNN +bNN +bNN +bNN +bNN +cau +cBH +bMG +bLZ +bLZ +bLZ +bLZ +bLZ +bQQ +bSw +cbr +bVe +bXk +bYq +bCq +ceW +ccw +cdk +cMC +cSY +ckI +clJ +cmL +cnv +cMm +chX +cpx +cqg +cqE +cqZ +crt +cMH +cAm +cMH +cMN +cFO +cSI +cSI +cMm +cGV +csd +cGV +noK +csd +ccw +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(114,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +aaT +aaa +aaZ +abJ +ack +acM +adQ +cwM +aeZ +agr +agU +ahy +ahX +aiL +ajc +ajI +akq +akQ +agj +agj +amS +anx +anz +aoz +apm +aqd +anA +asa +atd +anA +avk +awk +axE +ayZ +aAa +aBu +aAa +aAa +aAa +aGu +aHR +aJt +aJq +aMe +aNA +aOE +aPV +aRp +aSB +aTZ +aVn +aWV +aYz +aZR +bbm +bbm +bdh +bef +bfv +bgN +bii +big +bih +bgN +bnV +bph +bqF +bsf +btG +buS +bwp +bxK +bwh +bAh +bBs +bzG +bAP +bCp +bDp +bFq +bGO +bHl +bHS +bLI +bLI +bOR +bQg +bQg +bQg +bQg +bQg +bQg +bQg +bQg +bYI +bDG +bHP +cbt +bVh +bXo +bYM +cfb +cfb +cfb +cfb +cfb +cfb +cfb +ccw +cmN +cgR +cgL +chX +cpx +cqj +cSG +crb +cru +cEx +cEx +cEx +cAP +cFP +csI +cAt +cMm +csd +csd +csd +cHp +csd +ccw +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(115,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +aaT +aaa +aaZ +abI +ack +coS +aet +cxA +aeY +agt +agt +ahz +aie +aiN +ajc +ajI +akp +akU +alz +aml +amT +anw +anz +aoz +apl +aqc +aqc +aqc +aqc +aqc +aqc +awm +axD +ahn +ahn +ahn +ahn +ahn +ahn +ahn +ahn +aJs +aJq +aMd +aNz +aOE +aPS +aRo +aSA +aTX +aVm +aWU +aYy +aZR +aZR +aZR +aZR +aZR +bfw +bgN +bgN +bgN +bjy +bmw +bnW +bpi +bqG +bse +bij +buR +bwo +bxJ +bwb +aJq +bBr +bCv +bCv +bCv +bCv +bCv +bJq +bKw +bLH +bRq +bNO +bOQ +bQf +bRq +bRq +bTK +bUE +bUE +bWM +bXJ +bYH +bYH +bYH +bYH +bVg +bXn +bYG +cfb +cfF +cfb +cik +cjg +cjU +cfb +clM +cfz +cgR +ccw +cii +cpx +cqi +cMD +cAP +crv +cEy +cEy +cFh +cMD +cFM +czE +kQq +ccw +cGT +csd +csd +csd +csd +ccw +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(116,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +abY +aaa +aaZ +abQ +ack +adj +arc +blT +agq +cml +agV +cxk +aig +aiM +ajc +ajI +akp +akV +alB +amn +amV +anw +anz +aoz +aod +aqf +ahT +ahT +ahT +ahT +ahT +awn +axF +anF +anF +anF +anF +anF +anF +anF +aoa +aJu +aKF +aMf +aNB +aOE +aPW +aRr +aSD +ceh +aVp +aWX +aYB +aZU +aZR +aZR +bbm +beh +bfx +bij +bij +bij +bgR +bij +bij +bij +bij +bsg +aaf +aaf +aaf +aJn +aJq +aJq +bBu +bCv +bAT +bDL +bDq +bCv +bJs +bKy +bLK +bLK +bLK +bOT +bQi +bRs +bSC +bLK +bUG +bVO +bWO +bXK +bYH +bZz +caw +bYH +bVo +bXq +bZe +cfb +cfH +cSL +cim +cim +ceo +cfb +cfa +cje +cgR +ccw +cDi +cDr +cDw +cDE +cEa +cMD +cEz +cEz +cEz +cMD +cFR +cSJ +kQq +cMm +ciZ +cHd +cHj +cHd +ciZ +ccw +aaa +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(117,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +abY +aaa +aaZ +abN +ack +bkA +acF +aes +avB +afn +agt +awN +aHp +aIF +ajc +ajI +akp +akQ +alA +amm +amU +anw +anT +aoA +apn +aqe +arf +arf +arf +arf +arf +arf +arf +arf +arf +dgz +dgz +dgz +dgz +dgz +dgz +aJn +aJn +aJq +aJq +aOE +aPS +aRq +aSC +aUa +aVo +aWW +aYA +aYz +bbn +bcg +aZU +beg +aYB +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aJn +aJq +aJq +bBt +bCv +bDH +bFf +bGB +bCv +bJs +bKy +bLJ +bLJ +bNP +bOS +bQh +bRr +bSB +bTL +bUF +bVN +bWN +bLK +bYJ +bRi +bZy +cbu +bVm +bXp +bYO +cfc +cgO +ccj +cBM +cdU +cSZ +ckL +cmF +cje +cgR +cMm +chX +cpD +cDw +cDF +cEa +cEg +cEA +cET +cFj +cEf +cFS +cGg +mBv +cGI +cGS +cHe +cHe +cHr +oDF +ccw +aaf +aaT +ctv +aaT +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(118,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaf +aaT +aaf +aaZ +aci +acm +cpA +adg +aeu +alt +agu +agX +ahB +aij +agn +aje +ajJ +akr +akX +alC +alC +amX +anz +anz +aoB +aod +aqe +arf +aqa +atf +arf +aqa +atf +arf +aqa +atf +dgz +tqg +ujF +ujF +ujF +dgz +aaa +aJn +aJq +aJq +aOE +aPX +aRs +aSE +aUc +aVm +aWY +aYC +aYA +bbp +bbp +bbp +bbp +bfz +aZV +aZV +aZV +aaf +aaf +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aJn +aJq +aJq +aXf +bCv +bDK +bFi +bGE +bCv +bJs +bKy +bLM +bLM +bNQ +bOV +bQk +bRt +bSD +bTM +bUH +bVQ +bWN +bXM +bYL +cew +bTh +cdt +bVq +bXI +bZg +bZD +cbq +ccl +cdm +cio +cjY +ceq +clQ +cje +cgR +cMm +cDj +cDs +cql +cDG +cDG +cEh +cEB +cEU +cFk +cAs +cFT +cSK +cGx +cGK +nzh +nzh +cGY +csd +csd +ccw +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(119,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaa +adR +abo +aaZ +aaZ +aaZ +acT +adl +aaZ +aaZ +agn +agW +ahE +aii +agn +ajd +ajI +ahY +akW +aiG +amo +amW +anz +anz +aoz +aod +aqe +arf +apY +ate +arf +apY +ath +arf +apY +ath +dgz +fvY +dvc +dzi +vsM +dgz +aaa +aJn +aLY +aLY +aOG +aPR +aPR +aPR +aUb +aVq +aWM +aYr +aZV +bbo +bch +bdi +bei +bfy +bgS +bik +aZV +aZV +bmx +bmx +bmx +bqH +bsh +bsh +bsh +bsh +bqH +aJq +aJq +aXf +bCv +bDJ +bCt +bGD +bCv +bJs +bKy +bLL +bLL +bNQ +bOU +bQj +bOd +bOd +bRx +bTP +bVP +bWP +bXL +bYK +bRj +bTg +bUm +bVp +bXH +bUm +bZC +cbp +cck +cin +cjj +cjX +ckO +ckH +cja +cny +ccw +cip +cnx +cDx +cqb +cqb +cqb +cEC +cqb +cqb +cAr +cqb +cGh +cGC +cey +ijc +csd +cEk +csd +udp +ccw +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(120,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +adR +abP +aco +acO +abl +abO +abO +afc +afQ +agw +agY +ahA +ahZ +adR +aiQ +ajI +akt +akQ +agj +agj +aiX +anB +anz +aoD +aod +aqe +arf +aqn +ath +arf +auw +ath +arf +ayV +ath +dgz +aCd +qIw +gfD +woR +dgz +aJw +aJw +aMh +aJq +aOE +aJn +aaa +aPR +aUe +aVs +aXa +aYD +aZX +baf +bdk +bdk +bek +bfB +bgU +bdk +bjF +blc +bmz +bnY +bpk +bqJ +bsj +btI +btd +bwr +bqH +aMm +aJq +bBv +cBy +bDM +bCw +bDr +bCy +bGP +bHn +bLN +bLN +bNS +bOX +bQm +bRv +bOd +bTN +bTP +bRA +bWQ +bWQ +bYN +bRm +bTj +caA +cer +ccs +bZu +cfb +cfb +cgS +ciq +cfb +cfb +cfb +clR +cgR +cgR +cMm +cir +cDt +cDy +cqC +crc +cEi +cED +crc +crc +cFy +cBR +cGi +cGD +cGL +ccw +ccw +ccw +ccw +ccw +ccw +aaa +aaT +aaT +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(121,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +abo +abO +abO +abO +abO +abO +abO +afb +abo +afg +ahb +ahG +aik +cBV +ajf +ajK +aks +akY +afM +amp +aiX +anA +anz +aoC +aod +aqe +arf +asd +atg +arf +asd +awo +arf +asd +aAb +dgz +iVU +aDK +vHj +eVC +dgz +aJv +aKG +aMg +bHt +aOE +aJn +aaa +aPR +aUd +aVr +aWZ +aYq +aZW +aZG +bej +bej +bdj +bfA +bgT +bil +bej +blb +bmy +bnX +bpj +bqI +bsi +btH +btc +bwq +bqH +aJq +aJq +aXf +bCv +bAU +cAL +bFg +bFs +bJt +bKy +bLK +bMK +bNR +bOW +bQl +bRu +bSE +bRx +bUI +bVR +bWQ +bOO +bQe +bRk +bTi +caA +bVr +bXN +bZt +bZE +cbs +cCT +cdn +cej +cep +ces +clN +ccm +ckF +cDe +cDk +coc +cqa +cig +ccw +ccw +czF +csd +csd +cFz +cFU +cGj +cGE +cGM +cGZ +aag +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(122,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +adR +abO +acq +acq +acq +acq +aew +afe +afS +agy +aha +ahC +aia +aiP +aiR +ajB +akv +ala +akz +alf +aiX +anA +anz +aoF +apo +aqh +arh +asg +atj +aul +auR +atj +aul +azc +atj +aAX +azc +atj +aFe +aul +aHT +aJy +aJy +aMj +aJq +aOE +aJn +aaa +aPR +aPR +aPR +aXc +aPR +aZV +baq +baQ +baQ +bcQ +bfC +bgV +bim +bjG +aZV +bmB +bnZ +bpl +bqH +bsl +btK +buW +bwt +bqH +aLY +aLY +bBx +bCv +apG +bFk +bDs +bCv +bJs +bHo +bLK +bMK +bMK +bOY +bQn +bRx +bMK +bMK +bUJ +bVS +bWQ +bXP +cBI +bRS +bTH +caA +bWh +cdt +bZA +cfh +cfM +cco +cdp +cel +cyM +ckT +cgU +cco +cgU +cgU +cis +cjN +cDz +cDH +cMm +csd +crM +crV +crV +cFA +csd +cGk +ccw +aag +aag +aag +aaf +aaf +aaf +aaf +gXs +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(123,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +abo +abO +acp +acP +acP +acP +aev +afd +afR +agx +agZ +ahI +aim +adR +aiG +ajL +aku +akZ +alE +amq +aiX +anA +anz +aoE +aod +aqg +aun +asf +ati +auk +aux +avt +axL +bbl +azT +auk +auk +aDG +aFd +auk +aHH +aJg +aKo +aLO +aJq +aOE +aJn +aaa +aaa +aPR +aVt +aXb +aYo +aZV +bao +baP +bbZ +bcP +cBo +bbw +bbw +bbw +aZV +bmA +bmx +bmx +bqH +bsk +btJ +buV +bws +bqH +aJq +aJq +byW +bCv +bAV +bCv +bCv +bCv +bJs +bKz +bLK +bML +bNT +bOV +bQj +bRw +bSF +bOd +bTP +bRA +bWQ +bXO +bQq +bRo +bTG +caA +bVK +bYb +bZw +cap +ctR +ccn +cdo +cek +ccw +cet +cfd +cfB +cfI +cgQ +cjS +cjN +cqm +cgR +crd +cEk +crL +cEW +cse +cse +csu +cGl +ccw +aaa +aaa +aaf +aaa +aaf +ctv +aaT +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(124,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +adR +abR +abP +abP +abP +abP +adR +adR +adR +agA +afU +ahF +aip +adR +aiX +ajN +akx +aiX +aiX +aiX +aiX +anC +anU +anC +cSA +aqe +arf +arf +arf +arf +auU +avG +awr +awr +azV +aAh +aAh +aFg +aFh +aAh +aAh +aAh +aAh +aLR +aJq +aOE +aJn +aaa +aaa +aTQ +aVd +aXe +aYp +aZV +bbv +bcm +bcm +bem +bfD +bgW +bfD +bjI +aZV +bmC +boa +bpm +bqH +bsn +btL +buY +buY +bqH +aJq +aJq +aXf +bCv +bDP +bCv +bAw +bHV +bJw +bKC +bLK +bMN +bNV +bOV +bQo +bRz +bSH +bOd +bTP +bRA +bWQ +bWQ +bWQ +bWQ +caD +bWQ +ccw +ccw +cey +ccw +ccw +ccw +ccw +ccw +ccw +ccw +ccw +ccw +ccw +ccw +cDl +cjN +cjh +cDI +ccw +ccw +ccw +ccw +ccw +cMm +cMm +cMm +ccw +aaf +aaf +aaf +aaf +aaf +ctv +aaT +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(125,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +abq +abq +abq +abr +abr +abq +abq +aff +afT +agz +ahb +ahF +clI +abp +ajh +ajM +akw +alb +alG +amr +amY +amY +ajp +aoG +cSA +aqe +arf +aqo +asp +arf +auS +avv +awu +awr +aAd +aAh +aCm +aDL +aFf +aGk +aHU +alN +aAh +aLQ +aJq +aOE +aJn +aaa +aaa +aJw +aVu +aXd +aYE +aZV +bbu +bbw +bbw +bbw +bbw +bbw +bbw +bjH +aZV +bmx +bmx +bmx +bqH +bsm +btL +buX +buX +bqH +aJq +aJq +bBy +bzs +bDO +bFl +bGH +bHU +bJv +bKB +bLK +bMM +bOd +bOV +bQj +bRy +bSG +bOd +bUK +bVT +bWR +bXQ +bOd +bZF +bPc +bOd +ccv +cdw +cex +bOd +cfN +cfN +bLK +aaf +bOh +bOh +bOh +bOh +bOh +ccw +cDm +cjP +ckF +cDJ +ckF +cpE +cjR +crW +csg +aag +aaa +aaa +aaa +aaa +aaa +aaa +ctv +ctv +ctv +aaT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(126,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abq +abT +acs +acR +ado +adN +aex +afh +afV +agB +ahd +ahI +clS +abp +ajj +ajP +aky +alc +alI +ams +amZ +amZ +anW +aoH +cSA +aqe +arf +asm +blU +atQ +avg +awp +axN +awr +aAg +aAh +aDO +aDQ +aFi +aGl +aBy +aBy +aAh +aMn +aJq +aOE +aJn +aaa +aaa +aJn +aVv +aXg +aYF +aZV +bbw +bcn +bbw +ben +bfE +bgX +bbw +bjJ +bld +bmD +cTD +bmD +bqK +bso +btN +buZ +buZ +bqH +byN +aJq +bBA +bCz +bDQ +bFn +bGJ +bHX +bJy +bKE +bLP +bMP +bIG +bJB +bKV +bRB +bSI +bSI +bUM +bVV +bWS +bSI +bSI +bZG +caE +cbA +ccy +bOd +bOd +bQu +cfO +cgW +cit +cph +ckb +ckV +clU +clU +bOh +ccw +coZ +cgU +cgU +cDK +crw +cjO +ccw +crX +cfK +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaT +aaT +aaT +aaT +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(127,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +abr +abS +acr +acQ +adn +adM +abq +afg +afU +afU +ahc +ahH +aiq +abp +aji +ajO +akw +ajn +alH +amr +amY +amY +anV +ajo +cSA +aqe +arf +ari +asu +aun +auW +avR +axM +awu +aAf +aAh +aCn +aDM +aGx +aAh +aAh +aBy +aAh +aMm +aJq +aOE +aJn +aJn +aJn +aJn +aJs +aXf +aYk +aZV +aZV +aZV +aZV +aZV +aZV +aZV +aZV +aZV +aZV +bmx +bmx +bmx +bqH +bqH +btM +bqH +bqH +bqH +aJq +bHt +bBz +bzs +bzs +bFm +bGI +bHW +cBD +bKD +bLO +bMO +bIF +bOZ +bQp +bRA +bOd +bTO +bUL +bVU +bMK +bXR +bYQ +bXR +bMK +cbz +ccx +cbA +cbA +cfi +bRH +cgV +bMQ +aaf +bQA +ckU +clT +cmU +bOh +ccw +cpa +cjc +cqo +cDL +cjk +cjm +ccw +ccw +cig +aag +aag +aag +aag +aaa +aaa +aaa +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(128,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abr +abV +acu +acS +adp +adP +aey +afj +afX +agC +ahf +ahK +ait +abp +ajl +ajR +akw +ald +alJ +amt +ajp +ajp +anY +ajo +apq +aqe +arf +arf +arf +arf +avm +aws +axP +azb +aAi +aAh +aCn +aDM +aGx +aGm +aHV +aBy +aAh +aJq +aJq +aJq +aJr +aJr +aJr +aJr +aJr +aXh +aYG +aZY +aYG +aYG +bdn +bep +aYG +aYG +aYG +aYG +ble +bmE +bmE +bpn +bqL +bsp +btO +bva +bwu +bwu +bwu +bwu +bBB +aJv +bzs +bFp +bGJ +bHX +bJA +bKG +bLK +bMR +bIH +bJF +bQr +bRA +bOd +bTP +bOd +bVX +bMK +bMK +bYR +bMK +bMK +cbC +bRA +bTO +cez +cez +cfQ +cgY +ciu +bVu +ckb +ckW +clU +clU +bOh +ccw +ccw +cpI +ccw +cDL +cjl +cjQ +cjV +cig +aaf +aaf +aaf +aaf +aag +aaa +aaa +aae +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(129,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +aaf +aaf +aaf +aaf +abr +abU +act +acu +acu +ato +abq +afi +afW +afW +ahe +ahJ +ais +abp +ajk +ajQ +akw +ajn +alH +amr +amY +amY +anX +ajo +app +aqi +arf +ask +atm +arf +avl +awq +axO +aza +aAh +aAh +aAh +aDS +aGx +aAh +aAh +aDN +aAh +aMo +aNC +aJq +aJq +aJq +aJq +aJq +aJq +aJq +aJq +aLY +aJq +bco +aJq +beo +aJq +aJq +aJq +aJq +aJq +aJq +aJq +aJq +aLY +aJq +bAk +aJq +aJq +aJq +aJq +bAj +aJq +aKG +bzs +bFo +bDu +bFt +bGQ +bHp +bLK +bMQ +bNY +bPa +bMQ +bRC +bMQ +bTP +bUN +bVW +bMK +bXS +bXS +bXS +bMK +cbB +alk +alX +aoZ +bQt +apa +cgX +apF +apI +bOh +bOh +bOh +bOh +bOh +cig +cpb +ciZ +cqp +cDN +cjT +cgR +crP +cig +aaa +aaa +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +quT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(130,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abq +abW +abk +acj +acn +adh +adm +afk +afZ +agE +ahh +ahM +aiv +abp +aiY +ajE +ajH +akn +ale +alD +ana +ana +amu +ajo +aps +aqk +arf +asm +aHw +aup +avn +awv +axX +aze +aAh +aBz +aBz +aDU +aGx +aGn +aHW +aBy +aAh +aJq +aJq +aJq +aJq +aRt +aJq +aJq +aJq +aJq +aJq +aLY +aJq +bcp +aJq +beq +aJq +bgY +aJq +aJq +aJq +bAi +bmS +bmS +bpC +bqN +aNr +aJq +aJq +bxL +byX +aJq +aJq +bCA +bzs +bCC +bDA +bFx +bGW +bKI +bLQ +bMT +bOb +bPd +cBF +bRD +bSK +bTR +bUP +bVZ +bWT +bWa +bYS +bZH +caF +bQt +cBJ +cdy +bOd +bRy +cfR +cha +civ +cph +ckb +ckY +clW +clW +bOh +cig +cig +czg +cig +cDN +crh +crA +crR +crY +csi +aaa +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(131,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abq +abq +abq +abq +abq +abq +abq +afg +afY +afY +ahg +ahL +aiu +abp +ajm +ajS +ajn +ajT +akA +amr +amY +amY +anV +ajo +apr +aqj +arf +ark +asL +aun +avu +awt +axV +azd +azX +aAZ +aCe +aDT +aGx +aAh +aAh +aBy +aAh +aCr +aCr +aCr +aJC +bYP +aQg +aJC +aQg +aJC +aQg +aJC +aJC +aHP +aHP +aHP +bfF +bfF +bfF +bfF +bfF +bfF +bfF +bfF +bfF +bqM +brV +bof +bwv +bvj +bvj +bvj +bvj +bvj +bvj +bCB +bCP +bvj +bvd +bKH +bLK +bMS +bOa +bPc +bQs +bMZ +bSJ +bTQ +bUO +bVY +bOd +bOd +bOd +bOd +bOd +cbD +bTO +cdx +bOd +bOd +cfP +cgZ +bMQ +aaf +bQA +ckX +clV +cmV +bOh +cig +aaa +afp +aaa +cDN +cqY +cqY +cqY +cig +aaa +csl +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +quT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(132,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abo +aeB +afm +agb +agG +ahi +ahN +aix +abp +ajp +ajU +ajn +trb +ajn +amr +ajp +ajp +ajp +ajo +apt +aqm +arj +arj +arj +arj +avx +awz +axR +avx +aAh +aBA +aBA +aDP +aBx +aGp +aHX +aBy +aAh +aMq +adq +aQb +aPZ +aRu +aQc +aUf +aQc +aXi +aQc +baa +aJC +bcq +bcq +bcq +bfF +bha +bio +bgF +blf +bmF +bob +bnB +bfF +bqR +brX +bof +bwx +bvj +bwB +bxa +byZ +bzI +bAX +bCF +bDB +bFB +bvd +bKJ +bLR +bMV +bOd +bMZ +bQv +bRF +bSM +bTS +bUQ +agd +bUO +bVZ +bVZ +bZI +caH +cbF +ccz +cdA +cez +bOe +cfQ +chb +ciu +bVu +ckb +ckZ +clW +clW +bOh +cig +aaa +aaa +aaa +cDN +aaa +aaa +aaa +aaf +aaf +cso +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +gXs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(133,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +abo +aeA +afl +aga +abp +ahj +abp +cAN +abp +ajo +ajo +ajo +ajo +ajo +ajo +ajo +ajo +aoa +ajo +apt +aql +apv +arl +asM +atV +avw +awy +axQ +azj +arj +aAh +aAh +aAh +aAh +aAh +aAh +aAh +aAh +aMp +aMr +aOH +aPY +aQc +aRx +aQc +aQc +aPY +aQc +aZZ +aJC +aYV +aYV +aYV +bfF +bgZ +bin +bin +bjK +bkK +bkK +bkK +bpD +bqO +bLX +btf +bui +bvi +bww +bwZ +byY +bzH +bAW +bCE +bFv +bFz +bvd +bKH +bLK +bMU +bOc +bPe +bQu +bRE +bSJ +bPe +bOd +cCB +cCC +bXT +bXT +bXT +caG +cbE +bTU +cdz +cez +bUL +cfP +bOd +bMQ +aaf +bOh +bOh +bOh +bOh +bOh +ccw +aaa +aaa +aaa +cDL +aaf +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +quT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(134,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acw +abp +abp +adR +abp +cxG +abp +adR +ahl +ahO +aic +ahT +ahT +ahT +ahT +ahT +ahT +ahT +alL +ahT +anb +ahT +anZ +apu +arj +asb +asV +aus +aus +awA +axT +azl +aAl +arj +aCq +aDR +aFl +aGD +aHZ +aCr +aKJ +aMr +aMr +aOH +aQc +aQd +aQa +aRv +aPY +aVw +aPY +bac +aJC +aYV +aYV +aYV +bfF +bhc +bip +bgP +bjL +bkL +bmT +bnD +bpM +bqT +bFD +bJG +bJG +bvl +bwE +bxc +bzb +bzK +bBb +cpG +bDC +bId +bvd +bKH +bLK +bMX +bOd +bPg +bQx +bRH +bSM +bTU +bUS +bUS +cCD +bXU +bUS +bUS +bUS +bXU +bRF +bMW +cez +cez +cfQ +chd +bQy +cpP +ckc +clb +clY +clZ +bOh +aaa +aaa +aaa +aaa +cCQ +aaf +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(135,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aag +acU +adr +sXy +aeC +anF +agc +abp +ahk +aoJ +aib +aif +aif +aif +aif +aif +aif +aif +alK +aif +bkV +anc +anD +aoI +apX +arn +asN +aur +avy +avy +axS +azk +aAk +arj +aCf +aDY +aFj +aGr +aHI +aJk +aMr +aMr +aNt +aOH +aQc +aQc +aSq +aQc +aQc +aPY +aQc +bab +aJC +aYV +aYV +ber +bfF +bhb +bip +bjO +bip +bmG +bip +bnC +bpF +bqS +brY +bwz +bwy +bvj +bza +bxb +bvh +bCD +bAY +bCH +bDR +bIc +bvd +bKH +bLK +bMW +bOe +bPf +bQw +bRG +bSN +bTT +bUR +bWb +cCE +bTT +bUR +bZJ +bUR +bTT +bUR +cdB +bUR +bUR +cfT +chc +bMQ +aaf +bQA +cla +cBP +cmW +bOh +aaa +aaa +czN +aaa +cCQ +aaf +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +jAD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(136,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aag +aag +aag +aaa +aaa +aag +abp +abp +abp +abp +afo +abp +abp +ahn +ahn +aiA +aiA +aiA +ahn +aiA +aiA +aiA +ahn +and +anF +aod +ahn +apx +ahn +arj +asr +asN +aut +avz +aXF +axU +azn +aAn +arj +aCh +aEc +aFk +aGw +aHK +aCr +aKr +aMr +bHF +aOH +aQc +aQc +aSo +clX +aVx +aQc +aQc +aQc +bbx +aYV +aYV +aYV +bfF +bhd +bis +bjR +bis +bmI +bod +bpt +bfF +bqV +bEe +bBL +bwA +bvj +bAl +bAl +bvh +bzS +bBc +bCJ +gZG +cCp +bvd +bKH +bLK +bMZ +bOg +bPi +bQz +bRJ +bSM +bTV +bUT +bWc +bWU +bXV +bYT +bZK +bOd +cbG +ccA +cdC +ceB +cez +cez +chf +cix +cpP +ckd +clc +clZ +clZ +bOh +aaa +aaa +aaa +aaa +cCQ +aaf +aaa +aaa +aaf +aaf +cso +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(137,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +aaf +aaf +abp +aaa +afp +aaa +abp +aaa +aaa +aaa +aaf +aaf +aaf +aaa +aaf +aaf +ahn +ahn +anE +aod +aoK +apw +aqp +arj +asq +asN +aut +avz +avz +axU +azm +aAm +arj +aCr +aEb +aCr +aGv +aCr +aCr +aKq +aLS +aNF +aOH +aQc +aQc +aSH +aQc +aQc +aRx +aQc +aQc +aQg +aYV +aYV +bes +bfF +bfF +bir +bjQ +blh +bfF +bfF +bfF +bfF +bqU +bsq +bvj +bvj +bvj +bvj +bvj +bvj +bvj +bvd +bFu +bvj +bvj +bvd +bKH +bLK +bMY +bOf +bPh +bQy +bRI +bSP +bPh +bQy +bRI +cCF +bPh +bQy +bRI +bQy +bPh +bQy +bRI +ceA +bLK +bLK +che +bLK +aaf +bOh +bOh +bOh +bOh +bOh +aaa +aaa +aaa +aaa +cCQ +aaf +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(138,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +adR +aaa +aaa +aaa +adR +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaf +ahn +anG +aoe +aoL +apy +aqq +arj +ast +asN +auv +avA +avA +axW +azo +aAp +aBC +aCt +aEA +aCt +aGz +aIb +aCr +aKN +aMv +aNH +aOJ +aQc +aPY +aSG +aPY +aUg +bFC +aRw +aQc +bbx +aYV +aYV +bet +bfH +bhf +bhh +bhh +bhh +bmJ +bof +bpu +bqP +bsy +bEe +bvh +bwC +bxN +bze +bAp +bvh +bCG +bBd +bFw +bDD +bFJ +bvd +bKH +bzs +bRK +aaf +bRK +aaf +bVv +aaf +bRK +aaf +bVv +cCG +cCH +cCI +cCJ +cCI +cCH +cCI +cCJ +cCI +cCP +bLK +chg +bLK +aaf +aoV +aoV +aaf +aaf +aaf +aoV +aoV +aoV +aoV +cCQ +aoV +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +quT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(139,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ahn +khB +ahn +ahn +ahn +ahn +arj +ass +asX +auu +att +att +att +azf +aAo +apX +aBB +aBB +aBB +aGy +aIa +cNE +aKM +aMu +aNG +aKM +aKM +aKM +aSp +aQc +aQc +aSq +aQc +bad +bby +aYV +aYV +bet +bfG +bhe +bit +bjS +bli +bli +boe +bli +bpN +bqX +bEe +btg +bDR +bDR +bDR +bDR +bzc +bDR +bDZ +bCK +bFy +bFF +bvd +bKH +bzs +bRK +bOh +bPj +bQA +bPj +bOh +bPj +bQA +bPj +bOh +bPj +bQA +bPj +bOh +bPj +bQA +bPj +bOh +cCQ +bLK +cyG +bLK +aoV +aoV +aoV +aaf +aaf +aoV +aoV +aoV +aoV +aoV +cCQ +aoV +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +eRz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(140,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aag +aag +aaa +aaa +aaf +arj +clO +asZ +aua +clO +awB +axY +azh +gsz +arj +aaf +aaa +alP +aGI +aId +aJD +aKP +aMx +aNJ +aQe +aOL +aOL +aOL +aOL +aOL +aOL +aXO +aZb +aJC +aYV +aYV +bet +bfG +bhe +bhh +bjU +blk +blk +boh +biu +bpO +bqY +bss +btg +buk +bvm +bDT +buk +bvh +bzU +bBe +bCS +bDE +bFK +bvd +bKH +bzs +bRK +bOh +bPl +bQB +bRL +bOh +bTX +bUV +bWd +bOh +bXX +bYV +bZL +bOh +cbI +ccC +cdD +bOh +cCG +cCS +cCS +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cDY +aaf +aaf +aaf +aaf +aaf +cso +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +quT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(141,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqr +arm +arm +asY +atZ +auB +auB +atZ +azg +azp +azp +aCu +aaf +alP +aGH +aIc +aJC +aKO +aMw +aNI +aMw +aOK +acN +acN +acN +acN +acN +aQc +bae +aJC +bcr +aYV +bet +bfG +bhe +bhh +bjV +blj +bmK +bog +bog +bhh +bsx +bsr +bvh +bwD +bDR +bDR +bAq +bvj +bCQ +bDW +bCP +bvj +bvj +bJC +bKH +bzs +bRK +bOh +bPk +bPm +bPm +bOh +bTW +bUU +bTW +bOh +bXW +bYU +bXW +bOh +cbH +ccB +cbH +bOh +aaf +aoV +aoV +aaf +aoV +aoV +aoV +aaf +aoV +aoV +aoV +aoV +aoV +aoV +aaf +aoV +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +quT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(142,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqs +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCv +aaa +alP +aGJ +aIe +aJC +aJC +aJC +aJC +aJC +aJC +aXj +aVy +aSY +aVy +aVy +aYI +bah +aJC +aYV +bdo +beu +bvk +biu +biu +bjT +blm +bmL +boi +bpw +ium +bsx +btX +bvj +bwG +bxR +bxR +bvj +bvj +bzW +bDZ +bCT +bGR +bIj +bJC +bKH +bzs +bRK +bOh +bPm +bQC +bPm +bOh +bTW +bUW +bTW +bOh +bXY +bYW +bXW +bOh +cbH +ccD +cbH +bOh +aaf +aaf +aaf +aaf +aaf +aoV +aoV +aaf +aoV +aoV +aoV +aoV +aoV +aae +aaf +aoV +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +jAD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(143,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqs +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCv +aaf +alP +aGJ +aIe +aJE +aKQ +aLU +aNu +aJC +aPw +aQc +aQc +aSZ +aQc +aVy +czP +bag +aJC +aYV +aYV +bet +bfJ +bhh +bhh +bgQ +bll +bhh +bhh +bpv +bhh +bsx +btV +bvh +bwF +bxQ +bxQ +bAr +bvj +bzV +bDZ +bzf +bDR +bIi +bJC +bKH +bzs +bRK +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +bOh +aaf +aaf +ciC +bVu +bVu +bVu +bVu +bVu +caJ +aoV +aoV +aoV +aoV +aoV +aaf +aoV +aaa +aaa +aaf +aaa +csn +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaf +aaf +ctZ +ctZ +ctZ +ctZ +ctZ +aaf +aaa +aaf +cvF +aaf +aaa +aaa +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +cAU +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(144,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqs +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCv +aaa +alP +aGA +aHS +aJx +aJx +aMi +aNE +aOO +aQi +aRz +aSF +aQc +aQc +aXl +aQc +bai +aJC +aYV +aYV +bet +bfH +hEm +bhh +bhg +bln +bmM +boj +bof +bhh +bsx +btV +bvj +bwI +bxT +bxQ +bAt +bvj +bCM +bDZ +bDR +bDR +bIl +bJC +bKH +bzs +bUr +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +caJ +aaf +aaf +aaf +aaf +aaf +cfj +cfU +cfj +cfj +ckf +cfj +cfj +bUr +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +bVu +csM +bVu +bVu +ctd +bVu +bVu +bVu +bVu +caJ +ctZ +ctZ +cuo +cuA +cuM +ctZ +cvk +cvk +cvk +cvk +aaf +aaf +aaf +aaf +cvk +cvk +cvk +cvk +cvk +cvk +cvk +cva +cva +cva +cva +cva +cva +cva +cva +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(145,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aqs +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCv +aaf +alP +aGL +aHM +aJm +aKz +mjr +aND +aJC +aab +aRg +aQc +aac +aQc +aXk +aQc +aQc +aJC +aYV +aYV +bev +bfK +bhi +bhi +bhi +bfK +bfK +bfK +bof +bhh +bsx +btV +bvh +bwH +bxS +bzh +bAs +bvj +bCL +bxO +bDR +bDR +bIk +bJC +bKH +bzs +bzs +bzs +bPn +bPn +bPn +bzs +bzs +bPn +bPn +bPn +bzs +bzs +bPn +caI +bPn +bzs +bzs +bzs +cfj +cfj +cjp +chh +ciy +cke +clg +cfj +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aaa +aaa +aaf +aaa +csn +aag +aag +aag +aag +aaa +aaa +aaa +ctN +ctY +cuh +cun +cuz +cuL +cuY +cvj +cvs +cvD +cvk +cvk +cvk +cvk +cvk +cvk +cvX +cvX +cvX +cvX +cwq +cwq +cva +cva +cva +cva +cva +cva +cva +cva +cva +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(146,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqs +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCv +aaa +alP +aGL +aIe +aJC +aKS +aMC +aJC +aJC +aJI +aJI +aSI +aJI +aVA +aJI +aYK +aJI +aJI +bcs +aYV +aYV +bfK +bhk +bix +bjX +blp +bmO +bhi +bpy +bwz +brg +btZ +bvj +bwI +bxV +bzj +bAv +bvj +bCO +bDR +bDR +bDR +bIn +bJC +bKL +bLT +bLT +bLT +bLT +bLT +bLT +bLT +bLT +bUY +bWe +bWe +bWe +bWe +bWe +cdE +bAw +bzs +bAw +caK +cfj +ciB +ckh +chj +ciA +cjr +clh +cfj +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aaa +aaa +aaf +aaa +csn +csD +cta +csD +cua +aaa +aaa +aaa +aaf +ctZ +cui +cuq +cuC +cuO +cuz +cvm +cvt +cvt +cvt +cvL +cvQ +cvX +cvX +cvX +cvX +cva +cva +cva +cva +cva +cva +cva +cva +cvx +cva +cva +cva +cva +cva +cva +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(147,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aqu +arm +arm +arm +auy +auB +auB +axZ +azp +azp +azp +aCw +aaf +alP +aGL +aIg +aJH +aKR +aMB +aJC +aOP +aJI +aRA +aVz +aVz +aVz +aVz +aYJ +aJI +bbz +aYV +aYV +aYV +bfK +bhj +biw +bhs +bjM +bmN +bok +bpx +bpP +brf +bhh +bvh +bwJ +bxU +bzi +bAu +bvj +bCN +bEa +pHl +bFA +bIm +bJD +bKK +bLS +bNc +bOj +bNc +bNc +bNc +bNc +bTY +bKH +bzs +bWV +bzs +bzs +bZM +cbJ +ceC +ceC +cfW +cfX +chk +chl +ciz +chi +ciz +cjq +ckg +cmb +cpO +cpQ +cpQ +cpQ +cpQ +czJ +aaf +aoV +aaa +aaa +aaf +aaa +csn +csD +csX +ctg +cua +cua +cua +cua +cua +ctZ +ctZ +cup +cuB +cuN +cuZ +cvj +cvj +cvj +cvj +cvj +cvP +cvj +cvj +cvj +cvj +cva +cva +cva +cva +cvp +cwv +cvr +cvp +cvl +cvr +cwv +cvp +cva +cva +cva +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(148,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +arj +arj +arj +auA +avD +awC +ayb +arj +alP +alP +aaa +aaa +alP +aGL +aIe +aJI +aJI +aJI +aJI +aJI +aJI +aRC +aSK +aVz +aVz +aVz +aYL +aJI +bbz +aYV +bdq +aYV +bfK +bhl +biy +bjY +bjN +bkO +bmU +bnH +bqQ +bsx +bhh +bvj +bvj +bxR +bxR +bvj +bvj +bCQ +bEd +bof +bof +bof +bJE +bJE +bJE +bNd +bIJ +bPo +bQE +bRM +bOr +bTZ +bKH +bzs +bAw +bBR +bHX +bzs +bzs +bzs +ccF +cdG +ceE +cfl +cfZ +cki +cld +eHI +cjt +csq +xEu +wHz +cmd +cmd +cmd +aag +aag +aag +aag +aaa +aaa +aaf +csD +csO +csD +czk +cti +cua +cua +ctw +ctH +ctQ +cuc +cuj +cuj +cuE +cuQ +cuj +cvk +cvw +cvw +cvG +cvM +cvS +cvZ +cvG +cvw +cvw +cvf +cwh +cwm +cwr +cvp +cwx +cwj +cwu +cAV +cAZ +cvl +cvl +cva +cva +cva +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(149,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaf +arj +auz +avC +avC +aya +arj +arA +alP +alP +alP +alP +aGN +aIh +aJI +aKT +aMD +aNM +aOI +aJI +aRy +aSJ +aTM +aVB +aVz +aVz +baj +bbz +aYV +bdp +aYV +bfK +bfK +bfK +bfK +bfK +bfK +bfK +bnF +bqQ +bsx +bhh +bfJ +bhh +bhh +bhh +bhh +bhh +bzX +bBm +bof +bGT +bIo +bof +tRe +bLU +bNd +bII +bOr +bQD +bLY +bMa +bTZ +bKH +bzs +bAw +bXZ +bHX +bZN +caK +bzs +ccE +cdF +ceD +cfk +cfY +rfW +ckj +cjs +cle +cli +uPT +cmY +cmc +cop +cmd +cmd +cqs +aaa +aag +aaa +aaa +aaf +csD +csN +csV +ctb +cth +cua +ctr +ctu +ctG +ctP +cub +cuj +cur +cuD +cuP +cvc +cvk +cvu +cvu +cvu +cvu +cvR +cvY +cwb +cvu +cvu +cva +cwg +cwl +cwr +cvl +cww +cwD +cvv +cvv +cAY +cBb +cBd +cva +cva +cva +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(150,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaf +arj +auB +auB +arj +gOZ +arj +anf +anf +rsp +rsp +alP +aGB +aIf +aJA +aKC +aKC +aKC +aON +aQk +aRD +aSM +aVD +aVE +aXm +aVz +bak +bbz +aYV +bdp +aYV +bfL +bhn +biz +biz +biz +bmR +bfL +bol +bqQ +bsx +bst +bfJ +bhh +bhh +bwK +bhh +bhh +bhh +btV +bof +bGV +bIp +bof +bKM +bLW +bNd +bOn +bOr +bOr +bRO +bSQ +bTZ +bUZ +bLT +bLT +bLT +bLT +bLT +caM +cbL +cbL +cdI +ceG +cfj +cgb +chn +ciE +cjv +clj +ckk +cmf +cna +cnC +cor +ciM +cpN +cqt +aaa +aag +aaa +aaa +aaf +csD +csU +csW +ctc +ctc +cto +ctt +cty +ctJ +ctT +cue +cul +cuu +cuG +cuS +cve +cvo +cvz +cvz +cvI +cvz +cvT +cBS +cwc +cvz +cwd +cwf +cwj +cwo +cwt +cwu +cwA +cAR +cAS +cvv +cBa +cBc +cBe +cva +cva +cva +cBf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(151,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +gXs +aoV +alP +anf +anf +anf +anf +aDW +aDV +alP +aGL +aHY +aQj +iNn +aMk +aNK +aOM +aQj +aRB +aSL +aTN +cCq +aVz +cAg +bak +bbz +aYV +bdp +cBm +bfL +bhm +bhm +bhm +bhm +bkP +bmV +boc +bqW +brh +bua +bua +bua +bua +bua +bua +bhh +bhh +btV +bof +bGU +bqQ +bof +fTg +bLV +bNd +bOm +bPp +bQF +bRN +bSS +bUa +bNc +bNc +bOj +bNc +bNc +bZO +caL +cbK +ccG +cdH +ceF +cfj +cga +chm +ciD +cju +clf +csr +cme +cmZ +cme +coq +cmd +cmd +cqs +aaa +aag +aaa +aaa +aaf +csD +ctb +csV +ctb +ctj +ctk +cts +ctx +ctI +ctS +cud +cuk +cus +cuF +cuR +cvd +cvn +cvy +cvy +cvH +cvy +cvy +cvy +cvy +cvy +cvy +cwe +cwi +cwn +cws +cwn +cwz +cwE +cvv +cvv +cvv +cvp +cvl +cva +cva +cva +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(152,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +gXs +aoV +alP +awD +anf +anf +anf +aCy +jnR +alP +aGL +avI +aJK +aKV +tMl +aMl +aMF +aJI +aRG +aSO +aTO +cCq +aVz +aVz +bak +bbz +aYV +bdp +bdc +bfL +beY +bhm +bhm +bhm +bkR +bfL +boo +bqQ +bhg +bua +bvn +bwL +bxX +bsL +bua +bBJ +bhh +bBn +bof +bDF +bIr +bof +bKN +bHT +bNd +bNd +bNd +bNd +bNd +bSU +bUb +bVa +bWf +bWX +bOP +bNd +bTZ +bKH +bzs +bzs +bzs +bzs +cfj +cfj +cfj +cfj +cjx +cfl +cfl +dqu +tXL +cmd +cos +cmd +czI +aag +aag +aag +aaa +aaa +aaf +csD +csD +csD +csD +cti +ctq +cua +ctA +cuy +ctV +cug +cuj +cuj +cuE +cuU +cuj +cvk +cvw +cvw +cvJ +cvw +cvV +cwa +cvJ +cvw +cvw +cvb +cwk +cwp +cwr +cvp +cwC +cwn +cAT +cAW +cvl +cvl +cvl +cva +cva +cva +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(153,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aba +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaf +alO +alO +alO +alP +alP +alP +alP +alP +alP +alP +vpY +aFn +aGP +avI +aJI +aJI +aJI +aNO +aOT +aJI +aRF +aSN +aVF +aVF +aVF +aYM +aJI +bbA +aYV +bdr +bdb +bdN +blr +bho +bho +bho +bkQ +bmW +bom +bIq +bri +bsu +bsL +bsL +bvo +bzl +bua +bzd +bhh +btT +bCU +bCR +bqQ +bGX +bCR +rjA +bRN +bIK +bPq +bLd +bNd +bST +bOr +bOr +bOr +bWW +bYa +bYX +bTZ +caN +cbM +cbM +cdJ +bzs +cfm +cgc +bAw +ciF +cjw +ckl +clk +clk +bAw +bzs +aaf +aaa +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ctp +cua +ctz +ctK +ctU +cuf +cuf +cuv +cuH +cuT +cvg +cvj +cvj +cvj +cvj +cvj +cvU +cvj +cvj +cvj +cvj +cva +cva +cva +cva +cvp +cwB +cvr +cvp +cvl +cvr +cwB +cvp +cva +cva +cva +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(154,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaS +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aag +alO +arp +alO +awD +anf +anf +awD +anf +aoP +alP +aBE +alP +aDX +alP +aGJ +avI +aJL +aKX +aJI +aJI +aJI +aJI +aRH +aVz +aVz +aVH +aXn +aYN +aJI +bbz +aYV +aYV +bey +bfL +bhm +biz +biz +biz +bla +bmY +boq +boq +brj +bpE +btk +bum +bvq +bzn +bua +bBL +bhh +bBC +bCV +bDN +bFM +btR +bDN +bIa +bIf +bIL +bOq +bLf +bRP +bSW +bMH +bNi +bOr +bWZ +bYd +bYY +bZP +caO +cbN +ccI +cdL +ceI +cfo +bAw +bAw +bAw +cjz +ceJ +clm +cmg +cnc +cnD +bzs +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +cua +ctF +ctM +ctX +cuf +cum +cuw +cuJ +cuW +cvi +cvq +cvC +cvC +cvC +cvN +cvW +cvX +cvX +cvX +cvX +cva +cva +cva +cva +cva +cva +cva +cva +cvA +cva +cva +cva +cva +cva +cva +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(155,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +ads +adS +aeG +aaa +ads +adS +aeG +aaa +ads +adS +aeG +aaa +aaS +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aag +cxW +anf +aqv +anf +anf +anf +aEl +anf +cVb +cVb +cVb +cVb +cVb +cVb +aGQ +aIk +aIp +aKW +aMG +aIp +aIp +aJI +aJI +aSP +aUh +aJI +aJI +aJI +aJI +aJI +bcq +bcq +bcq +bfL +bhp +biB +biB +cTL +bkU +bmX +bpE +bpE +bpE +bpE +bti +bul +bvp +bzm +bua +bBK +bwz +bBw +bJG +bDI +bFL +bli +bKO +bHY +bNf +bOp +bPr +bQH +bNd +bSV +bSQ +bNh +bWg +bWY +bYc +bNd +bNd +bzs +bzs +bMb +cdK +ceH +cfn +cgd +ceJ +ccM +cjy +ceJ +cll +ccM +cnb +bHd +ceI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +cua +ctE +ctL +ctW +cuf +cum +cuw +cuI +cuV +cvh +cvj +cvB +cvE +cvk +cvk +cvk +cvk +cvk +cvk +cvX +cvX +cvX +cvX +cwq +cwq +cva +cva +cva +cva +cva +cva +cva +cva +cva +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(156,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaS +aaf +ads +adT +aeG +aaa +ads +adT +aeG +aaa +ads +adT +aeG +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +alO +alO +alO +anf +auC +alP +anf +anf +cVb +jbf +wrp +fnC +kPd +xiw +aGS +aIm +aIp +aKH +aMI +aIp +aOV +aOX +aOX +aSR +aUi +aVJ +aOX +aYP +bal +bam +aYV +aYV +aYV +bfL +bhq +bhm +bkb +cTM +bla +bmZ +bpH +bra +bsK +bpE +bpE +buq +bvt +bye +bon +bBN +bEi +bEi +bEi +bDU +bFO +bBN +bKR +bMc +bNd +bNd +bNd +bNd +bNd +bSX +bMI +bNk +bNU +bXb +bWi +bYZ +bZR +caQ +bzs +ccK +ccM +ceJ +ceJ +cgf +ceJ +ccM +ccM +ceJ +clo +cmi +cbQ +cnF +cot +csc +csm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +cua +cua +cua +cua +cuf +cuf +cux +cuK +cuX +cuf +cvk +cvk +cvk +cvk +aaf +aaf +aaf +aaf +cvk +cvk +cvk +cvk +cvk +cvk +cvk +cva +cva +cva +cva +cva +cva +cva +cva +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(157,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +ads +adT +aeG +aaf +ads +adT +aeG +aaf +ads +adT +aeG +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alO +aqy +anf +alP +awE +anf +cVb +vCb +wUY +khb +sxs +tal +aCI +aIj +aJB +aKD +aMs +aNL +aOQ +aQf +aRE +aSQ +aVI +aVI +aVI +aYO +aRJ +bbB +aYV +aYV +aYV +bfL +bfL +bfL +bfL +bfL +blg +bmZ +bpG +bqZ +brk +bsv +bsv +bun +bvr +bzo +bon +aFa +bCY +bEh +bCW +bDS +bFN +bBN +bKQ +bMb +bNd +bOr +bOt +bOr +bRQ +bOr +bSQ +bNj +bNs +bXa +bYa +bNd +bZQ +caP +cbO +ccJ +bLS +bLS +cfp +cge +cbK +ciG +bLS +ckm +cln +cmh +cnd +cnE +bPn +aoV +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaf +cuf +cuf +cuf +cuf +cuf +aaf +aaa +aaf +cvK +aaf +aaa +aaa +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +cAX +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(158,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +ads +adT +aeG +aaa +ads +adT +aeG +aaa +ads +adT +aeG +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +apC +apC +apC +apC +apC +apC +alP +anf +cVb +cVb +cVb +cVb +cVb +wBd +aGC +aIl +aIq +aKK +aMy +aIp +aOX +aQm +aRJ +aRJ +aRJ +aVK +aRJ +aRJ +aRJ +bbB +aYV +aYV +aYV +bfO +bfS +biD +bkd +bfS +cTO +bmZ +bpJ +brc +bsL +bug +btl +but +bvw +bzq +bon +bBP +bCZ +bEk +bFG +bCY +bFP +bBN +bKQ +bMb +bNd +bOt +bOr +bOr +bRQ +bOr +bSQ +bWj +bOm +bXc +bYe +bNd +bZS +caR +bzs +ccL +ccM +ceL +ceJ +cgh +ceJ +ceJ +ccM +ceJ +cAe +cmj +cne +bHd +bPn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(159,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaf +aaa +ads +adT +aeG +aaa +ads +adT +aeG +aaa +ads +adT +aeG +aaa +aaf +aaa +aaa +aaa +aaa +amw +aof +aof +aof +aof +arq +asv +atv +auD +apC +awF +anf +alP +arA +anf +aCz +asw +aCJ +aGT +aIn +aIp +aKI +aMt +aIp +aOW +aQm +aRJ +aSS +aUj +aRJ +aRJ +aYQ +cBg +bam +aYV +aYV +aYV +aYV +bhr +biC +bkc +bfS +blo +bmZ +bpI +brb +bsL +buf +bvs +bur +bvp +bzp +bon +bBO +bCY +bEj +bCY +bGZ +bFE +bBN +bKS +bMd +bNd +bOs +bOt +bQJ +bRR +bOr +bSQ +bWj +bWj +bWj +bWj +bNd +bzs +bzs +bzs +bMb +bFr +ceK +ceJ +cgg +ccM +ccM +cjA +ceJ +ccM +cdN +bFr +cnG +bzs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(160,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaa +aaa +adV +aaa +aaa +aaa +adV +aaa +aaa +aaa +adV +aaa +aaa +aaf +aaa +aaa +amw +amw +amw +aoh +aoN +apA +aof +ars +anf +arx +anf +apC +aoQ +cqM +asw +asw +asw +aCA +anf +aFp +aGW +anf +aIp +fGf +aMA +aIp +aOX +aQm +aRJ +aST +aUk +aRJ +aRJ +aYQ +bam +aYV +aYV +aYV +aYV +beE +bfS +biE +bkf +bfS +cTO +bmZ +bpL +bre +bsN +bre +bvv +bur +bvp +bzr +bon +bBQ +bDa +bEl +bFH +bHb +bIw +bBN +bKT +bMb +bNd +bOt +bPu +bOr +bRQ +bOr +bSQ +bWj +bOm +bXc +bYe +bNd +bZU +caS +cbN +ccN +bHd +bzs +bzs +bKT +bAw +bAw +bFr +ceJ +ccM +ccM +cng +bzs +bzs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(161,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaf +abX +acx +acx +adt +adU +adU +adU +adU +adU +adU +adU +adU +adU +adU +adU +adU +alg +acx +amv +ane +cxN +aog +aoM +apz +aqw +arr +asw +asw +auE +apC +awG +auF +alP +alP +alP +alP +alP +aFo +aGV +aIp +aIp +aKL +aMz +aNQ +aOX +aQm +aRJ +aRJ +aRJ +aRJ +aRJ +aYR +ban +aYV +aYV +aYV +bez +bfP +bfS +bfS +bfS +bfS +cTO +bmZ +bpK +brd +bpK +bpK +bvu +bux +bvy +bon +bon +bBN +bBN +bBN +bBN +bHa +bBN +bBN +bKB +bMb +bNd +bOr +bPt +bOr +bRQ +bSY +bMJ +bNl +bNW +bXd +bPu +bNd +bZT +bMb +bFr +ccM +cdN +bzs +cfq +bKT +bAw +ciH +bHd +bzs +bAw +cmk +cnf +bzs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(162,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaa +aaa +adX +aaa +aaa +aaa +adX +aaa +aaa +aaa +adX +aaa +aaa +aaf +aaa +aaa +amw +amw +amw +aoi +aoO +apB +aqx +art +anf +anf +auF +apC +awH +auF +alP +aAr +anf +alP +aaa +aFq +aGX +aIp +aJO +aKU +aME +aNN +aOR +aQh +aRI +aSU +aXo +aXo +aXo +aYO +bap +aYV +aYV +bci +beB +bfS +bfS +kQk +ipA +gbT +cTO +bmZ +bon +bon +bon +bon +bon +buG +bvA +bon +bAw +bzg +bLS +bLS +bLS +cbQ +bLS +bLS +bKE +caU +bNc +bOj +bPw +bNc +bNc +bNc +bNc +bNc +bNc +bNc +bPw +bNc +bLS +caU +cbQ +cNY +cNY +cNY +cNY +cgj +cNY +cNY +chp +bzs +clp +bzs +bzs +bzs +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(163,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aba +aaS +acy +aaa +ads +adW +aeG +aaa +ads +adW +aeG +aaa +ads +adW +aeG +aaa +aaf +aaa +aaa +aaa +aaa +amw +aof +aof +aof +aof +anf +aoP +atw +auF +apC +aoP +auF +azr +anf +atw +alP +alP +aFo +aGV +aIp +aJN +aLd +aMN +aNQ +aOZ +aOX +aOX +aOX +aUz +aVM +aOX +aYT +bam +aYV +baR +bcb +bdl +cTJ +cHD +bgo +cTK +cTK +blq +cTS +cTK +bpQ +cTK +slk +btm +buy +bvz +bdO +bLT +bna +bLT +bLT +bLT +bDV +bLT +bLT +bHq +bMe +bIg +bIM +bLT +bLT +bLT +bLT +bLT +bLT +bLT +bLT +bLT +bLT +bLT +caT +cbP +ccO +cdO +cdO +cdO +cnH +czH +czT +czY +cNW +bAw +bAw +clp +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(164,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +ads +adW +aeG +aaa +ads +adW +aeG +aaa +ads +adW +aeG +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +apC +aqy +anf +anf +aty +auF +apC +alP +auF +alP +alP +alP +alP +ayf +aFm +aGF +aIq +aIq +aIq +aIq +aIq +aIq +aIq +aIq +aIq +aIq +aIq +aIq +aXS +aIq +aIq +baZ +bck +bdm +bdP +cHE +bdP +bdP +bdP +bdP +bnc +boC +bpV +boC +boC +bto +buL +bvB +cbK +bxg +bzk +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bIs +bIN +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +bDb +cNW +cNW +cQB +czY +cNW +bPn +bPn +bPn +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(165,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +ads +adW +aeG +aaf +ads +adW +aeG +aaf +ads +adW +aeG +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +apC +anf +anf +alP +atx +auF +apC +auD +auF +alP +aAs +anf +alP +aCG +aFr +aGE +aIo +aIo +aIo +aIo +aIo +aIo +aIo +aRK +aIo +aIo +aUx +aVL +aXR +aZc +aZc +baT +bcj +beC +bfT +cHF +biG +blw +blu +bnb +bfT +bor +bpS +bsO +bfV +btn +buH +byf +byf +byf +byf +bDb +bEm +bEm +bEm +bDb +bJH +bKW +bMg +bIh +bOx +bPx +bJN +bRT +bEm +bEm +bJN +bRT +bEm +bEm +bJN +bRT +bEm +bEm +bDb +cfr +cho +bDb +aaa +cNW +cQB +czY +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(166,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaf +ads +adW +aeG +aaa +ads +adW +aeG +aaa +ads +adW +aeG +aaf +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +apC +anf +alP +alP +apE +auG +apC +aoP +auF +apE +anf +anf +alP +aCG +aDZ +aFu +aFu +aFu +aFu +aFu +aFu +aFu +aFu +aFu +aFu +aFu +aFu +aVO +bdp +aYV +aYV +bba +aXq +bfU +bhu +cHG +biI +bkh +biI +cHQ +bfT +boE +bpY +bsQ +box +btx +buU +byf +bzu +bAz +bzu +bDb +bEm +bEm +bEm +bIx +bJJ +bKY +bMi +bNo +bIP +bPA +bJN +bRU +bEm +bEm +bJN +bRU +bXe +bEm +bJN +bRU +bEm +bEm +bDb +cgi +chq +ccQ +aaa +cOT +cQB +czY +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(167,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +ads +adY +aeG +aaa +ads +adY +aeG +aaa +ads +adY +aeG +aaa +aaS +aaf +aaf +aaf +aaf +aaf +aaf +aaf +apC +arA +anf +asx +anf +auF +alP +alP +auF +alP +alP +alP +aCB +aEB +aFs +bbE +aIr +bav +aLf +aIt +aNS +aPb +aQp +aRN +aIt +aUB +aFu +aVN +bdp +bar +bar +aYV +aXq +bfU +bhu +cHH +biH +cHN +blv +bls +bfT +boD +bpY +bsP +box +btw +buT +byf +bzt +bAy +bBS +bDb +bEm +bEm +cBz +bEm +bJI +bKX +bMh +bIt +bOx +bPz +bJN +bRU +bEm +bEm +bJN +bRU +bEm +bEm +bJN +bRU +bEm +cBz +bDb +cgi +chq +ccQ +aaa +cOT +cQB +czY +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(168,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aiS +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apC +alP +alP +alP +anf +auH +avF +awI +ayc +asw +aAu +asw +aCD +aEa +aFv +aGG +aIu +aJQ +bCI +aIt +aIt +aPb +aIt +aRN +aIt +aUB +aFu +aVZ +aXT +aFu +aFu +bcv +aXq +bfU +bhu +cHI +biJ +bhM +biJ +blx +bfT +boL +bpY +bsR +box +buo +bxd +byf +bzw +bAB +bBV +bDb +bEn +bEm +bEm +bEm +bJL +bLa +bMi +bNo +bPy +bPA +bJN +bRW +bTb +bUe +bJN +bWl +bXf +bYg +bJN +bZV +caV +cbS +bDb +cgl +chs +bDb +aaa +cNW +cQB +czY +cNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(169,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aba +aaS +aaS +aaf +aaa +aaa +aaf +aaf +aaf +aaf +alO +aqz +aru +alP +anf +anf +avE +anf +anf +awD +aAt +aty +aCC +aDZ +aFu +aFu +aIs +aJP +aLg +aMH +aIt +aYW +aYW +aYW +aYW +aYW +aYW +aVY +aYY +bas +aFu +aYV +cBk +aYV +bht +cHJ +cHL +blw +bjP +blt +bfT +boG +bqa +cIe +box +buo +bvb +byh +bzv +bAA +bBU +bDb +bEm +bEm +bEm +bIy +bJK +bKZ +bMi +bIu +bIO +bPB +bLe +bRV +bTa +bUd +bVi +bRV +bTa +bYf +bVi +bRV +bTa +cbR +bDb +cgk +chr +bDb +aaa +cNW +cBN +czY +cNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(170,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +alO +anf +anf +asy +anf +anf +alP +alP +anf +alP +alP +alP +aCE +aDZ +aFu +aHc +aIw +aJS +aJS +aMJ +aNP +aOS +aOS +aOS +aOS +aOS +aOS +aWb +aXU +bau +aFu +aYV +aXq +aYV +bfV +cHK +blA +blA +blA +blD +box +cHU +cHZ +cIf +box +btA +bxd +byf +bzy +bAD +bBX +bDb +bEm +bEm +bEm +bIx +bJM +bLc +bMi +bNo +bOx +bPD +bQM +bMi +bMi +bRZ +bVj +bMi +bMi +bRZ +bZa +bMi +bMi +bRZ +cTY +cTZ +chu +ccQ +aaf +cOT +cQB +cAa +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(171,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaf +aaf +alO +aqA +anf +alP +anf +anf +alP +awJ +anf +alP +aAv +anf +aCE +aDZ +aFu +aHb +aIv +aJR +aJR +aIt +aIt +aPd +aIt +aRO +aRO +aUC +aVP +aXu +aYW +bat +bbD +aYV +aXq +beE +bfV +bhv +biK +bkk +blz +bly +bos +bpR +bqc +bsS +box +buo +bxd +byf +bzx +bAC +bBW +bDb +bEm +bEm +bEm +bDb +cTX +bLb +bMk +bNn +bIQ +bPC +bQL +cBG +bTc +bUf +bTc +bRX +bTc +bUf +bTc +bRX +bTc +cbT +ccP +ccP +cht +ckn +csk +czQ +czU +czZ +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(172,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +alP +alP +alP +alP +alP +anf +anf +alP +anf +anf +apE +anf +anf +aCE +aDZ +aFu +aHd +aIx +aJF +aLh +aIt +aNV +aPd +aIt +aRO +aRO +aIt +aVQ +aXu +aYW +aVQ +aFu +aYV +aXq +bds +bfV +bhx +biL +bkm +cHO +blG +biL +cHV +cIa +biL +box +buo +bvc +byf +byf +byf +byf +bDb +bDb +bDb +bDb +bDb +bJN +bJN +bMm +bNp +bOx +bMi +bQN +bRZ +bMi +bMi +bVk +bRZ +bMi +bMi +bZb +bRZ +bMi +bMi +cfy +cgn +cjB +ccQ +aaf +cOT +cgm +czY +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(173,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +alO +apD +aEl +anf +arx +anf +anf +alP +alP +atB +alP +alP +alP +aCF +aDZ +aFw +aFw +aFw +aFw +aFw +aFw +aFw +aPf +aQq +aRP +aIt +aIt +moD +aWd +aXV +aIt +bbD +aYV +aXq +aYV +bfV +bhw +cHM +biL +blB +blF +cHS +cHW +cIb +bsT +box +btP +bxd +byi +bzz +bAE +bBY +bDc +bEo +bFI +bHe +bIz +bIz +bJN +bMl +bIv +bIR +bPE +bLe +bRY +bTd +bUg +bVi +bWm +bTd +bUg +bVi +bZW +bTd +bUg +bDb +bDb +bDb +bDb +aaa +cNW +cgm +czY +cNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(174,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +alP +anf +anf +arw +asA +asA +anf +alP +awL +anf +anf +apE +aBF +aCH +aED +aFy +aGO +aIB +aJJ +aKZ +aMW +aFw +aFu +aFu +aFu +aTc +aUD +aVS +aYW +aYW +bax +aFu +aYV +aXq +aYV +bfV +bfV +biO +biL +cHP +cHR +bou +bpT +bqd +biL +box +btS +bxd +byi +bwN +bAG +bCa +bDc +bEo +bIC +bEc +bIB +bIB +bJN +bMo +bNp +bOx +bPH +bJN +bSa +bTe +bUh +bJN +bWn +bXg +bYh +bJN +bZX +caW +cbU +bDb +aaf +aaf +aaa +aaa +cNW +cgm +czY +cNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cOT +cOT +cOT +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(175,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +alO +aoQ +anf +arv +asz +atA +anf +alP +awK +anf +awD +apE +anf +aCk +aEC +aFx +aGM +aIy +aJG +cAz +aMK +aFw +aPg +aQr +aFu +aTb +aIt +aVR +aYW +aYW +aUD +bbD +aYV +aXq +aYV +bfW +bhy +biN +biL +bni +blM +bou +cHX +cIc +biL +buj +btQ +bve +byj +bwM +bAF +bBZ +bDc +bEp +bCX +bEc +bIA +bIA +bJN +bMn +bNp +bOz +bPG +bJN +bEm +bEm +bRU +bJN +bEm +bEm +bRU +bJN +bEm +bEm +bRU +bDb +aaf +aaa +aaa +aaa +cOT +cgm +czY +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cOT +cOe +cqu +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(176,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alP +alP +alP +aqB +arx +anf +anf +anf +alP +awM +ayg +ayg +ayg +ayg +aCl +aEe +aFw +aFw +aFw +aLo +aLb +aFw +aFw +aPi +aQt +aRQ +aIt +aUF +aLg +aYW +aYW +aVQ +aFu +aYV +aXq +aYV +bfX +bhz +biQ +biL +blC +bou +cHT +bou +cId +biL +bsw +btU +bxe +bvC +bzD +bxv +bCc +bDc +bEo +bDj +bDY +bIA +bIA +bJN +bMq +bNp +bOx +bPJ +bJN +bEm +bEm +bRU +bJN +bEm +bXe +bRU +bJN +bEm +bEm +bRU +bDb +aaf +aaa +aaa +aaa +cOT +cgm +czY +cOT +aaf +aaf +aaf +aaf +aaf +cNW +cNW +cOT +cqu +cOT +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(177,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alP +aoP +alP +alP +apE +alP +atB +alP +alP +awx +aye +ayd +aAc +ayd +aCI +aEd +aFw +aHf +aIz +aJM +aLa +cBZ +aFw +aPh +aQs +aFu +aTd +aUE +aVT +aYW +aYW +aZd +aFu +aYV +aXq +aYV +bfX +bhy +biP +bko +blE +bnj +bov +bpU +brq +bsW +buj +bvE +bxd +byk +bzC +bAH +bCb +bDc +bEo +bDf +bEb +bGY +bGY +bJN +bMp +bNp +bOx +bPI +bJN +bEm +bEm +bUi +bJN +bEm +bEm +bUi +bJN +bEm +bEm +bUi +bDb +aaf +aaf +aaa +aaa +cOT +cgm +czY +cOT +aaa +aaa +aaa +aaf +aaf +cNW +cwy +cmn +cmn +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(178,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +alP +alP +alP +alP +alP +anf +anf +anf +anf +anf +anf +aty +anf +awx +avI +asA +apE +arx +aCo +aEf +aFw +aGU +aIC +aJU +aLe +aMX +aFw +aCR +aCR +aCR +aCR +aCR +aCR +aWe +aWe +aCR +aCR +bcs +aXq +aYV +bfX +bfV +bfV +bfV +bfV +bfV +box +bpW +brs +box +box +buo +bxd +byk +byk +byk +byk +bDc +bDc +bJR +bEg +bDc +bDc +bLe +bMr +bNr +bIT +bJN +bJN +bJN +bJN +bJN +bJN +bJN +bJN +bDb +bDb +bDb +bDb +bDb +bDb +cNW +cNW +cNW +cNW +cNW +czX +cAc +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cmn +cmn +cmn +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(179,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alO +amx +anf +anf +anf +anf +alP +alP +alP +asB +asB +asB +avo +awx +avH +asB +asB +asB +aCK +aEf +aFw +aHg +aIA +aJT +aLc +aMX +aFw +aFz +aFz +aRR +aTe +aUG +aFz +aRS +aXW +baz +aCR +bcx +aXq +aYV +bfY +bhA +biR +bkq +bjZ +bvx +boz +boM +bzE +bsX +bsz +btW +bxf +bzE +bzE +bzE +bzE +bDd +bEq +bDl +bEf +bFQ +bHc +bHK +bIb +bID +bOA +bPK +bQO +bSb +bOu +bUj +bVl +bWo +bXh +bQZ +bTl +bZY +caX +bTl +bQZ +cdQ +cOe +cNW +czG +czR +czW +cAb +cko +clq +cmq +ciI +cnJ +cri +cTI +cmn +cBT +cBU +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(180,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +alP +alP +alP +alP +alP +anf +alP +aqD +arz +asB +atD +auJ +asB +awQ +avK +azt +aAy +asB +aCN +aEf +aFw +aGY +aII +aJW +aMX +aMX +aNW +aPl +aQv +aPl +aTg +aUI +aTg +aRS +aZf +aFz +bbF +aYV +aXq +aYV +bfX +bhB +bgp +bhU +bhU +blX +bow +boO +bhU +bsZ +cdX +ceX +bvg +bvD +bvD +cBx +bzB +bAa +bBE +bDm +bEr +bFR +bHf +bHM +bFR +bIE +bJr +bJO +bWr +bWr +bWr +bUk +bVn +bWq +bXj +bYj +bZc +bTl +bTl +bTl +bQZ +bNB +ceM +ccU +cgo +czS +cOb +cAd +cNW +cOx +cBL +cOe +cOe +cvO +cNW +cNW +cNW +cNW +cNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(181,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaf +alP +anf +alP +aqC +ary +asB +atC +auI +auI +awP +avJ +awO +awO +asB +aCM +aEg +aFw +aHi +aHi +aJV +aFw +aFw +aFw +aPk +aQu +aPk +aTf +aUH +aTf +aRS +aZf +baA +bbF +aYV +aXq +aYV +bfZ +bhA +biS +bkr +blH +bnm +boy +bpX +brt +brm +bsA +bvH +bvf +brt +bwO +bxF +bzA +bzZ +bBD +bBD +bBD +bBD +bBD +bHL +bBD +bBD +bJo +bPK +bWr +bWr +bWr +bWr +bWr +bWp +bXi +bYi +bTl +bTl +caY +cbV +bQZ +blQ +cPA +cfs +cgm +cQw +cNW +cNW +cNW +cNW +cNW +cNW +cOe +csy +cko +cAf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(182,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +alP +anf +alP +alP +alP +asB +atE +auI +auI +awT +avM +azv +aAA +asB +cSz +aEi +aFw +aHl +aID +aID +aFw +aMM +aFz +aFz +aQw +aRS +aRS +aRS +aRS +aRS +aZf +aRS +bbF +aYV +aXq +aYV +bga +bgc +bgc +bgc +bgc +bgc +boB +boB +boB +btb +buo +bvJ +bvJ +bvJ +bwQ +bxW +bvK +bvK +bEt +bDn +bEz +bFS +bJT +bLh +bMs +bMs +bMs +bPN +bQS +bSf +bWr +bWr +bWr +bWr +bXl +caZ +cba +bTl +cbc +bTl +bQZ +cdR +ceO +cNW +cgm +chw +ciK +cjC +ckp +cls +cmr +cNW +cOe +cmo +cNW +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(183,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +alP +anf +apE +anf +anf +asB +asB +asB +avL +awR +auI +azu +aAz +asB +aCO +aEh +aFz +aHk +aFz +aFz +aTe +aML +aFz +aFz +aQw +cdl +aRS +aRS +aRS +aRS +aZf +aRS +bbF +aYV +aXq +aYV +bfX +bhC +biU +bks +blI +bnn +boA +bpZ +boB +bta +buo +bvJ +bCk +byo +aDH +bxP +bCf +bvK +bEs +bGc +bHm +bGc +bEs +bEs +aaf +aaf +aaf +bPN +bQR +bSe +bMf +bNe +bNm +bNX +bTf +bQZ +bTl +bTl +cbb +bTl +bQZ +cdR +ceN +cNW +cgp +chv +ciJ +cbf +cbf +clr +bnt +cNW +cOe +cou +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(184,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +alP +aoQ +alP +aqE +arA +asB +atG +auL +avN +axa +auI +azw +aAA +asB +aCQ +aEk +aFB +aHn +aFB +csT +aFB +aLr +aFB +aPn +aQy +aPn +aTi +aUK +aVU +aWg +aZf +baA +bbF +aYV +aXq +aYV +bfX +bhD +biV +biW +blK +bnp +bng +boQ +brx +bro +buo +bvJ +bxj +byq +bwR +bxY +bCh +bvK +bEv +bFU +bFU +bFU +bJV +bEC +bMu +bMu +bMu +bEC +bQU +bQU +bTl +bQU +bXr +bWr +bOw +bQZ +bQZ +bQZ +cka +bQZ +bQZ +bQZ +bQZ +bQZ +cgr +chx +cNW +cNW +cNW +clt +bnt +cNW +cOe +bMB +cOT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(185,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +alP +alP +alP +alP +alP +asB +atF +auK +auJ +awS +auI +awO +awO +asB +aCP +aEj +aFA +aHm +aEj +aEj +aEj +aEj +aEj +aPm +aQx +aPm +aTh +aUJ +aTh +aXz +aZg +aFz +bbF +aYV +bdv +aYV +bgb +bhC +biU +biW +blJ +bno +bnf +boP +bqf +brn +bsC +bvK +bxi +byp +bzJ +bxY +bCg +bvK +bEu +bFU +bFU +bFU +bJU +bEC +bMt +bNt +bNt +bEC +bQT +bSg +bTk +bSh +bXr +bWr +bOv +bYk +bYk +bZZ +cjW +bZZ +ccR +cdS +ceP +bQZ +cgq +chx +cNW +aaa +cNW +cgr +cms +cNW +cOe +bNA +cNW +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(186,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +asB +atH +auM +avO +awU +ayj +azx +aAB +asB +aCR +aEm +aCR +aPl +aQv +aPl +aQv +aCR +aNY +aCR +aQA +aCR +aTj +aFz +aVV +aXB +aZh +baB +aCR +bcq +bdx +bcq +bgc +bgc +biX +bhV +bka +blZ +bnk +bpo +bqk +brp +bsD +bvK +bxl +bys +bzM +bya +bCj +bvK +bEx +bFU +bFU +bGl +bJX +bEC +bMw +cBE +bOE +bEC +bQV +coT +bTm +bUn +bXr +bWr +bOv +bYm +bYm +bZZ +ckN +bZZ +ccR +cdS +ceP +bQZ +cgt +chx +cOT +aaa +cOT +clt +bnt +cOe +cOe +cNW +cNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(187,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +asB +asB +asB +asB +asB +asB +asB +asB +asB +aCR +bfb +aCR +aHo +aIE +aKe +aIE +aCR +aNX +aPo +aQz +aCR +aCR +aCR +aCR +aXy +aZe +aCR +aCR +bcy +bdw +beG +bgc +bhE +biW +bkv +blL +biW +bnh +biW +brx +bte +bup +bvK +cBu +byr +bzL +bxZ +bCi +bvK +bEw +bFU +bEL +bGk +bJW +bEC +bMv +bNu +bMv +bEC +bQT +bSi +bUn +bTl +bXr +bNZ +bOy +bZd +bYl +caa +ckM +cbW +ceQ +ceQ +ceQ +cft +cgs +chy +cOT +aaa +cOT +clt +cQw +cNW +cNW +cNW +aaa +aaa +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aba +aaS +aaS +aaS +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(188,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +atS +aaf +aoV +aoV +atS +aaf +aaf +aaf +atS +aCR +aEn +aCR +aHq +aHq +aHq +aHq +aCR +aCR +aCR +aCR +aCR +aTl +aUL +aVW +aXD +aZj +baD +bbG +aTk +bdy +beI +bgc +bhF +biW +bib +bki +bma +bnl +bpq +boB +bth +bus +bvK +bxm +byu +bzN +byb +aGs +bvK +bBF +bFU +oce +bGz +bJZ +kzT +bMx +bNw +bOF +fcG +bQW +bSj +bTn +bUo +bNq +bOk +bOB +bPs +bYo +bSc +bSc +cbd +ccT +bSc +bSc +cfu +cgu +chA +cNW +aaa +cNW +clt +cQw +aaf +aaf +aaf +aaf +aaf +aaS +aaa +aaf +aaa +acy +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(189,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +atS +aoV +aoV +aoV +atS +aoV +aoV +aaf +atS +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aMZ +aNZ +aPp +aQB +aNa +aTk +aPq +aPq +aXC +aZi +baC +aPq +aPq +bdy +beH +bgc +bgc +bgc +bgc +bgc +bgc +bgc +bpp +bgc +brr +bsE +bvK +bvK +byt +byt +byt +byt +byt +bEy +bFU +bFT +bFU +bJY +bEC +bMv +bNv +bMv +rcD +wkN +wkN +wkN +wkN +wkN +lAB +lQG +bPb +bQG +lAB +wkN +wkN +bSl +bQZ +bQZ +bQZ +cNW +chz +cNW +cNW +cNW +clt +cQw +aaa +aaa +aaa +aaa +aaa +aaS +aaa +cMQ +crB +cNa +aaa +cMQ +crB +cNa +aaa +cMQ +crB +cNa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(190,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +atS +aoV +aoV +aoV +aaH +aoV +aoV +aaf +atS +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aMZ +aOb +aPr +aQC +aRU +aQC +aQC +aQC +czO +aZl +baE +bbH +bcA +bdz +beJ +bge +bhH +biY +biY +biY +bmd +bnr +bpr +bgc +btj +buu +bvM +bxo +bqe +bzO +bzO +bzO +bqe +bEB +bFW +bFT +tOq +bFU +bLi +bMz +bNy +bOH +dvO +bQY +vzp +hRa +bUp +mNi +mRe +olr +bPL +cVK +bTo +eaI +cbZ +bSl +cmo +cNW +cOx +cNW +chC +ciL +cOe +cOe +clv +cmt +aaa +aaa +aaa +aaa +aaa +aba +aaf +cMQ +crC +cNa +aaa +cMQ +crC +cNa +aaa +cMQ +crC +cNa +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(191,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +atS +aoV +aoV +aoV +aaH +aoV +aoV +aoV +atS +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aMZ +aOa +aVX +aTm +aRL +aTm +aTm +aTm +aWh +aZk +aTm +aTm +bcz +aTm +aTm +bgd +bhG +bhG +bhG +blO +bmc +bnq +bgc +bgc +bru +bsF +btY +bxn +bqe +bzO +bzO +bzO +bqe +bEA +bFV +bFT +bGA +bFU +bFU +bMy +bNx +bOG +wkN +uoB +bSk +bXs +bXs +lMg +qeQ +qeQ +bPF +bQI +bXs +sSW +cbY +bSl +cOe +cNW +cNW +cNW +ccp +cbf +cbf +cbf +clu +cmt +aaa +aaa +aaa +aaa +aaa +aaf +aaa +cMQ +crC +cNa +aaf +cMQ +crC +cNa +aaf +cMQ +crC +cNa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(192,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaH +aoV +aoV +aoV +atS +aoV +aoV +aoV +atS +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aNa +aOd +aOU +aPq +aNa +aPq +aPq +aPq +aOU +aPq +aPq +aPq +bcC +cBl +aPq +bgg +aNa +aaa +bky +bqh +bme +bnx +bqe +brA +brw +buw +bvO +bxq +byv +bzO +bAR +bzO +bqe +bED +bFX +bFT +bGF +bKa +bFU +bMA +bNz +bOI +wkN +bRa +cbe +bTp +vCt +bVs +fKl +bXt +bPM +bZh +itG +cbe +wvX +bSl +cOe +ceS +cae +cNW +ccq +cdq +cjE +ckr +clw +cmu +aaf +aaf +aaf +aaf +aaf +aaf +aaf +cMQ +crC +cNa +aaa +cMQ +crC +cNa +aaa +cMQ +crC +cNa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(193,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +atS +aoV +aoV +aoV +atS +aoV +aoV +aoV +aaf +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aNa +aOc +aPs +aPq +aNa +aPq +aPs +aPs +aXG +aZm +aPs +aPq +bcB +aPq +aPs +bgf +aNa +aaf +bky +blP +bns +boF +bqe +brz +brv +cBt +bvN +bxp +byv +bzO +bAQ +bCl +bqe +bEC +bEC +bEM +bGC +bEC +bEC +bEC +bEC +bEC +bSl +dMZ +bXs +bXs +bXs +gwd +ycu +oHU +uNu +bXs +bXs +bXs +bXs +bSl +cOe +ceR +cbf +cbv +uVS +cQw +cjD +cjD +cjD +cjD +cnj +aaa +aaa +aaa +aaa +aaf +aaa +cMQ +crC +cNa +aaa +cMQ +crC +cNa +aaa +cMQ +crC +cNa +aaa +aaf +aaS +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(194,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +atS +aoV +aoV +aoV +atS +aoV +aoV +aoV +aoV +aaf +aaa +aaf +aaf +aaf +aaf +aaf +aNa +aNa +aNa +aQF +aNa +aTn +aNa +aNa +aNa +aNa +aNa +cyp +aNa +bdA +aNa +aNa +aNa +aaa +bky +blR +bns +boF +bqe +brC +brv +buv +bvO +bxr +byv +bzO +bzO +bzO +bqe +bEF +bky +bEO +bGK +bKc +cNW +bMB +bNA +cOe +bSl +bUq +flc +vPE +bXs +bVt +dfh +jSO +jgm +oUh +vPE +jrE +saK +bSl +cOx +sLv +ckS +cNW +jVl +cds +cjD +ckt +cly +cmw +cnj +cnj +cnj +aaa +aaa +aaf +aaa +aaa +crD +aaa +aaa +aaa +crD +aaa +aaa +aaa +csZ +aaa +aaa +aaa +aaf +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(195,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aoV +aoV +aoV +atS +aoV +aoV +aoV +aoV +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aaf +aaf +aNa +aQE +aNa +aQE +aNa +aaa +aaf +aaa +aNa +aQE +aNa +aQE +aNa +aaf +aaf +aaf +bky +cyC +bns +boF +bqe +brB +brv +bsG +bvP +bxn +bqe +bzO +bzO +bzO +bqe +bEE +bFY +bEN +bGG +bKb +cNX +cNZ +cNZ +jCq +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +bSl +cNW +cgr +cNW +cNW +ccr +cdr +cjF +cks +clx +cmv +cnk +cnK +cyU +cpi +cpi +cpi +cqJ +crk +crk +crk +crk +crk +crk +crk +csE +cpi +csY +cpi +cpi +cpi +ctB +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(196,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aoV +aoV +aoV +aaf +aoV +aoV +aoV +aoV +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aaf +aaa +aNa +aQE +aNa +aQE +aNa +aaf +aaf +aaf +aNa +aQE +aNa +aQE +aNa +aaa +aaf +aaa +aaf +aaa +bns +boF +bqe +brD +brP +bsI +bvO +bxs +byw +bzO +bzO +bzO +bqe +bEG +bGa +bHs +bGL +bKd +cNY +bMC +cOb +jHt +bPO +kob +bSm +bTr +bTr +bTr +bTr +bTr +bTr +bTr +bTr +cbg +bTr +bTr +bTr +nGt +cbg +bTr +cct +cdu +cjG +cku +clz +cmx +cnj +cnj +cnj +aaa +aaa +aaf +aaa +aaa +crF +aaa +aaa +aaa +crF +aaa +aaa +aaa +csZ +aaa +aaa +aaa +aaf +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(197,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aoV +aoV +aoV +aaf +aoV +aoV +aoV +aoV +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aNa +aeR +aNa +aQE +aNa +aaf +aaa +aaf +aNa +aQE +aNa +afE +aNa +aaa +aaa +aaa +aaf +aaa +bns +boF +bqe +bqe +bry +bsH +bqe +bqe +bqe +bqe +bqe +bqe +bqe +bEG +bFZ +bHr +bIS +bEs +bEs +bEs +cNW +sOs +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +clt +cNW +cNW +cNW +cNW +cjD +cjD +cjD +cjD +cnj +aaa +aaa +aaa +aaa +aaf +aaa +cMQ +crE +cNa +aaa +cMQ +crE +cNa +aaa +cMQ +crE +cNa +aaa +aaf +aaS +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(198,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aNa +aQE +aNa +aQE +aNa +aaf +aaf +aaf +aNa +aQE +aNa +aQE +aNa +aaa +aaa +aaa +aaf +aaf +bns +boH +biY +brF +brQ +bsM +buz +buz +buz +buz +buz +cNU +buz +bEI +bFZ +bHu +bIV +bKf +bLk +bEs +bNC +nRG +cbf +cbf +cbf +cbf +cbf +cbf +cbf +cbf +bYr +clr +cad +cbi +cNW +ccW +cdV +clt +cNW +cgy +ccV +cNW +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +cMQ +crE +cNa +aaa +cMQ +crE +cNa +aaa +cMQ +crE +cNa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(199,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +avT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aNa +cyh +aRW +aTo +aNa +aaa +aaf +aaa +aNa +aTo +aRW +cyr +aNa +aaa +aaa +aaf +aaf +aaf +bnu +bhG +bhG +bhG +bhG +bsJ +brE +bhG +bhG +bhG +bhG +cNV +bhG +bEH +bGb +cBA +bIU +bKe +bLj +bEs +bNB +cac +bPP +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +clt +cac +cbh +cNW +ccV +cOe +clt +cfv +cBL +cOe +cNW +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +cMQ +crE +cNa +aaf +cMQ +crE +cNa +aaf +cMQ +crE +cNa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(200,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +afa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bky +btp +brH +bvQ +bxt +cNT +bCm +bDh +bEs +ydD +bHv +bIW +bKe +vHY +bEs +rmX +xIa +vxh +cNW +aaa +aaa +aaf +aaa +aaf +cNW +bYs +nRG +ciJ +cbf +cbf +cbf +cbf +ceT +cNW +cOe +chH +cNW +aaf +aaf +aaa +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +cMQ +crE +cNa +aaa +cMQ +crE +cNa +aaa +cMQ +crE +cNa +aaf +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(201,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bZi +bqg +brG +brG +cNR +brG +brG +bDg +bEs +bGd +poc +rNc +bEs +bLm +bEs +cOT +cOT +cOT +cNW +aaa +aaa +aaf +aaa +aaf +cNW +cNW +cOT +cOT +cOT +cNW +cNW +cNW +cPH +cNW +cNW +cNW +cNW +aaf +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aba +aaa +cMQ +crG +cNa +aaa +cMQ +crG +cNa +aaa +cMQ +crG +cNa +aaa +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(202,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bZi +btq +brI +bvR +cNS +byx +brI +bky +bky +bEs +bGc +bGc +bEs +bLl +bEs +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aag +aaf +aaa +aaa +aaa +aaf +aaf +cNW +ceU +cNW +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaS +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aba +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(203,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bky +bky +bky +bky +bky +bky +bky +bky +aaf +gXs +gXs +gXs +aaf +aaa +aaf +gXs +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aag +aaf +aaa +aaa +aaa +aaa +aaf +cNW +cPI +cNW +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(204,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaf +aaf +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaf +aag +aag +aag +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(205,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(206,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(207,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(208,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(209,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(210,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(211,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cxn +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(213,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(214,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(215,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(216,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(217,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(218,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(219,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(220,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(221,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(222,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +gXs +aaa +gXs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(223,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(224,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(225,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +bGf +bLo +bGf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(226,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +bIX +bGf +bLn +bGf +bIX +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(227,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +bGf +bGf +bKh +bLo +bMD +bGf +bGf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(228,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +bGe +bGe +bIY +bKg +bKg +bKg +bND +bGe +bGe +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(229,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +bGf +bHw +bJa +bKg +bLp +bKg +bNF +bOJ +bGf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(230,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +bGe +bGe +bIZ +bKg +bKg +bKg +bNE +bGe +bGe +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(231,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +bGf +bGf +bKi +bLr +bME +bNG +bNG +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(232,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +bIX +bGf +bLq +bGf +bIX +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(233,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +bGf +bGe +bGf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(234,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(235,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(236,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(237,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(238,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(239,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(240,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(241,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(242,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(243,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(244,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(245,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(246,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(247,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(248,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aoV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(249,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(250,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(251,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(252,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(253,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(254,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(255,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index b0f513e41d..79b7561ebb 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -89232,7 +89232,7 @@ /area/maintenance/port) "cTz" = ( /obj/effect/decal/remains/xeno, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/circuit/green, /area/science/xenobiology) "cTA" = ( @@ -93013,10 +93013,10 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cZK" = ( -/obj/item/twohanded/required/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/machinery/bloodbankgen, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cZL" = ( @@ -127842,8 +127842,7 @@ icon_state = "airlock_control_standby"; id = "chapelgun"; name = "Mass Driver Controller"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /turf/open/floor/plasteel/dark, /area/chapel/office) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 43c8b1155b..522d9801ca 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -56605,11 +56605,6 @@ /turf/open/floor/plasteel/dark, /area/medical/sleeper) "cfK" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 4 - }, /obj/machinery/light_switch{ pixel_x = 11; pixel_y = 23 @@ -56624,6 +56619,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/bloodbankgen, /turf/open/floor/plasteel/dark, /area/medical/sleeper) "cfL" = ( diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 24a5cd834a..a87c17836c 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -30073,10 +30073,8 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bbs" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, /obj/effect/turf_decal/tile/blue, +/obj/machinery/bloodbankgen, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bbt" = ( @@ -43077,7 +43075,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "vsf" = ( -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 386ab45c6b..698eb6cd5a 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -24138,8 +24138,7 @@ dir = 8 }, /obj/machinery/keycard_auth{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel, /area/quartermaster/qm) @@ -31872,14 +31871,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_y = 3 - }, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/machinery/bloodbankgen, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bwG" = ( diff --git a/_maps/shuttles/arrival_box.dmm b/_maps/shuttles/arrival_box.dmm index 4c63ce80b4..07644e5291 100644 --- a/_maps/shuttles/arrival_box.dmm +++ b/_maps/shuttles/arrival_box.dmm @@ -9,6 +9,7 @@ /obj/machinery/door/airlock/titanium{ name = "Arrivals Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/arrival) "d" = ( @@ -150,17 +151,21 @@ }, /turf/open/floor/plating/airless, /area/shuttle/arrival) +"B" = ( +/obj/machinery/porta_turret/centcom_shuttle, +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) "S" = ( /turf/open/floor/mineral/titanium, /area/shuttle/arrival) (1,1,1) = {" a -b +B o d d -b +B a "} (2,1,1) = {" diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm index 4f883436a6..62e30ef335 100644 --- a/_maps/shuttles/arrival_delta.dmm +++ b/_maps/shuttles/arrival_delta.dmm @@ -165,6 +165,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/arrival) "o" = ( @@ -449,6 +450,10 @@ }, /turf/open/floor/plasteel, /area/shuttle/arrival) +"T" = ( +/obj/machinery/porta_turret/centcom_shuttle, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/arrival) "U" = ( /obj/machinery/computer{ dir = 1; @@ -480,7 +485,7 @@ (1,1,1) = {" a -d +T f g n @@ -632,7 +637,7 @@ a "} (9,1,1) = {" a -d +T f g n diff --git a/_maps/shuttles/arrival_omega.dmm b/_maps/shuttles/arrival_omega.dmm index c4eeecbecf..f580149163 100644 --- a/_maps/shuttles/arrival_omega.dmm +++ b/_maps/shuttles/arrival_omega.dmm @@ -87,6 +87,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/arrival) "k" = ( diff --git a/_maps/shuttles/arrival_pubby.dmm b/_maps/shuttles/arrival_pubby.dmm index c8e6427add..9932e9f3e8 100644 --- a/_maps/shuttles/arrival_pubby.dmm +++ b/_maps/shuttles/arrival_pubby.dmm @@ -9,6 +9,7 @@ /obj/machinery/door/airlock/titanium{ name = "Arrivals Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/arrival) "d" = ( @@ -139,16 +140,20 @@ }, /turf/open/floor/plating/airless, /area/shuttle/arrival) +"w" = ( +/obj/machinery/porta_turret/centcom_shuttle, +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) "C" = ( /turf/open/floor/mineral/titanium, /area/shuttle/arrival) (1,1,1) = {" a -b +w m m -b +w a "} (2,1,1) = {" diff --git a/_maps/shuttles/emergency_airless.dmm b/_maps/shuttles/emergency_airless.dmm index b69a11ee7b..47ef968c28 100644 --- a/_maps/shuttles/emergency_airless.dmm +++ b/_maps/shuttles/emergency_airless.dmm @@ -28,7 +28,7 @@ /turf/closed/wall, /area/shuttle/escape) "f" = ( -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/shuttle/escape) "g" = ( /obj/docking_port/mobile/emergency/shuttle_build{ @@ -39,32 +39,45 @@ preferred_direction = 2; width = 30 }, -/turf/open/floor/plating/airless, +/obj/machinery/door/airlock, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"h" = ( +/obj/machinery/computer/emergency_shuttle{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"K" = ( +/obj/machinery/door/airlock, +/obj/structure/fans/tiny, +/turf/open/floor/plating, /area/shuttle/escape) (1,1,1) = {" a c e -f -f -f -f -f -f -f -f +e +e +e +e +e +e +K +e g -f -f -f -f -f -f -f -f -f -f +e +e +e +e +e +K +e +K +e +e e e a @@ -128,7 +141,7 @@ f f f f -f +e a a a @@ -192,8 +205,8 @@ f f e e -f -f +e +e e e "} @@ -257,7 +270,7 @@ f f f f -f +e "} (8,1,1) = {" c @@ -288,7 +301,7 @@ f f f f -f +e "} (9,1,1) = {" b @@ -318,8 +331,8 @@ f f f f -f -f +h +e "} (10,1,1) = {" b @@ -350,7 +363,7 @@ f f f f -f +e "} (11,1,1) = {" c @@ -381,7 +394,7 @@ f f f f -f +e "} (12,1,1) = {" b @@ -412,7 +425,7 @@ f f f f -f +e "} (13,1,1) = {" b @@ -471,8 +484,8 @@ f f e e -f -f +e +e e e "} @@ -531,7 +544,7 @@ f f f f -f +e a a a @@ -573,25 +586,25 @@ a a c e -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f -f +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e e e a diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index 7687241791..1d76177190 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -2,6 +2,13 @@ "aa" = ( /turf/template_noop, /area/template_noop) +"ab" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) "ac" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) @@ -16,17 +23,7 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"ah" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/escape) -"ai" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aj" = ( +"af" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, @@ -37,8 +34,13 @@ name = "Asteroid emergency shuttle"; width = 28 }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/titanium, /area/shuttle/escape) +"ah" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) "al" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock"; @@ -618,7 +620,7 @@ aa aa "} (12,1,1) = {" -ai +ab at at at @@ -708,7 +710,7 @@ aa aa "} (18,1,1) = {" -aj +af at at at diff --git a/_maps/shuttles/emergency_backup.dmm b/_maps/shuttles/emergency_backup.dmm index 6b59c17ec1..d7aedbb2f5 100644 --- a/_maps/shuttles/emergency_backup.dmm +++ b/_maps/shuttles/emergency_backup.dmm @@ -5,9 +5,10 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape/backup) -"c" = ( +"b" = ( /obj/machinery/door/airlock/titanium, /obj/docking_port/mobile/emergency/backup, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape/backup) "f" = ( @@ -55,7 +56,7 @@ (1,1,1) = {" m m -c +b m m m diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 544e8891a4..7c14d9ebd0 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -10,15 +10,8 @@ /turf/open/floor/plating, /area/shuttle/escape) "ad" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/shuttle, +/turf/open/space/basic, /area/shuttle/escape) "ae" = ( /turf/closed/wall/mineral/titanium/nodiagonal, @@ -45,19 +38,10 @@ pixel_x = -4; pixel_y = 6 }, +/obj/item/reagent_containers/food/drinks/bottle/whiskey, +/obj/item/storage/box/drinkingglasses, /turf/open/floor/carpet, /area/shuttle/escape) -"aj" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) "ak" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 30 @@ -88,12 +72,6 @@ }, /turf/open/floor/carpet, /area/shuttle/escape) -"ap" = ( -/obj/machinery/computer/security{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/shuttle/escape) "aq" = ( /obj/machinery/computer/crew{ dir = 4 @@ -122,17 +100,53 @@ pixel_x = 6; pixel_y = -24 }, -/obj/structure/table/wood/poker, -/obj/item/storage/box/drinkingglasses, -/obj/item/reagent_containers/food/drinks/bottle/whiskey, /obj/machinery/light, /turf/open/floor/carpet, /area/shuttle/escape) "au" = ( -/obj/machinery/computer/communications{ - dir = 8 +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"av" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" }, -/turf/open/floor/carpet, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"aw" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + name = "The Emergency Escape Bar" + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"ax" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"ay" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel/freezer, /area/shuttle/escape) "az" = ( /obj/machinery/door/airlock/public/glass{ @@ -145,6 +159,12 @@ /obj/machinery/status_display/evac, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) +"aB" = ( +/obj/machinery/computer/security{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/shuttle/escape) "aC" = ( /obj/structure/chair/comfy/shuttle, /turf/open/floor/mineral/plastitanium/red/brig, @@ -183,10 +203,10 @@ /turf/open/floor/plasteel/grimy, /area/shuttle/escape) "aG" = ( -/obj/structure/chair/stool{ - can_buckle = 1 +/obj/machinery/computer/communications{ + dir = 8 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/carpet, /area/shuttle/escape) "aH" = ( /obj/machinery/flasher{ @@ -220,11 +240,10 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aK" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" +/obj/structure/chair/stool{ + can_buckle = 1 }, -/turf/open/floor/mineral/plastitanium/red/brig, +/turf/open/floor/plasteel/grimy, /area/shuttle/escape) "aL" = ( /obj/structure/extinguisher_cabinet{ @@ -267,6 +286,12 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) +"aQ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/shuttle/escape) "aR" = ( /obj/structure/table/wood/bar{ boot_dir = 8 @@ -278,6 +303,15 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aS" = ( +/obj/structure/table/wood/bar, +/obj/item/instrument/guitar, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aT" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, @@ -290,19 +324,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"aT" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "The Emergency Escape Bar" - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) "aU" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -311,6 +332,17 @@ /mob/living/simple_animal/hostile/alien/maid/barmaid, /turf/open/floor/plasteel, /area/shuttle/escape) +"aV" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) "aW" = ( /obj/structure/chair/wood/normal, /turf/open/floor/plasteel/grimy, @@ -341,6 +373,17 @@ /obj/effect/spawner/lootdrop/gambling, /turf/open/floor/plasteel/grimy, /area/shuttle/escape) +"bb" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) "bc" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; @@ -369,10 +412,29 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bg" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" +"bf" = ( +/obj/structure/table, +/obj/item/storage/box/drinkingglasses, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/storage/fancy/cigarettes/cigars/havana, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bg" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bh" = ( +/obj/machinery/vending/cigarette, /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -382,13 +444,24 @@ "bi" = ( /turf/open/floor/mineral/titanium, /area/shuttle/escape) +"bj" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) "bk" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/machinery/sleeper{ + dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"bl" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, /area/shuttle/escape) "bm" = ( /obj/machinery/door/airlock{ @@ -402,10 +475,13 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "bo" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" +/obj/structure/table, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/plasteel/freezer, +/turf/open/floor/mineral/titanium, /area/shuttle/escape) "bp" = ( /turf/open/floor/plasteel/freezer, @@ -417,10 +493,8 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "br" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, +/obj/machinery/computer/card, +/turf/open/floor/carpet, /area/shuttle/escape) "bs" = ( /obj/machinery/door/airlock{ @@ -442,7 +516,6 @@ /area/shuttle/escape) "bw" = ( /obj/structure/table/optable, -/obj/item/surgical_drapes, /obj/machinery/light/small{ brightness = 3; dir = 8 @@ -465,15 +538,12 @@ }, /turf/open/floor/plasteel/freezer, /area/shuttle/escape) -"bz" = ( -/obj/structure/table, -/obj/item/circular_saw, -/obj/item/hemostat, -/obj/item/retractor, -/obj/item/scalpel, -/obj/item/surgicaldrill, -/obj/item/cautery, -/turf/open/floor/mineral/titanium, +"bA" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/turf/open/floor/plasteel, /area/shuttle/escape) "bC" = ( /obj/structure/window/reinforced{ @@ -486,10 +556,6 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, /area/shuttle/escape) -"bF" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plasteel/freezer, -/area/shuttle/escape) "bG" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; @@ -505,15 +571,6 @@ "bH" = ( /turf/open/floor/plasteel/grimy, /area/shuttle/escape) -"bI" = ( -/obj/structure/table/wood/bar, -/obj/item/instrument/guitar, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) "bJ" = ( /obj/structure/table/wood/bar, /obj/item/storage/fancy/donut_box, @@ -535,17 +592,6 @@ }, /turf/open/floor/plasteel/grimy, /area/shuttle/escape) -"bN" = ( -/obj/structure/table, -/obj/item/storage/box/drinkingglasses, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/storage/fancy/cigarettes/cigars/havana, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) "bO" = ( /obj/structure/table/wood/bar, /obj/item/folder/red, @@ -584,25 +630,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bT" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10" - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"bU" = ( -/obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/brute{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bV" = ( /obj/structure/table/wood/bar{ boot_dir = 8 @@ -616,12 +643,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bW" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/shuttle/escape) "bX" = ( /obj/machinery/light{ dir = 8 @@ -658,15 +679,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"cb" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) (1,1,1) = {" aa @@ -676,17 +688,17 @@ aa ab ab ab -aK +av ab -aT +aw ab ac ac ac ab -bg +ax ab -bo +ay ab ab ab @@ -703,11 +715,11 @@ aH aL ab bY -bH -aZ -bc -aZ -bH +bA +bA +bA +bA +bA bZ ab bp @@ -727,11 +739,11 @@ aI aM ab aE -aW -ba -bL -bO -bQ +bH +aZ +bc +aZ +bH bR ab bp @@ -752,9 +764,9 @@ aM ab aE aW -bJ -bM -bP +ba +bL +bO bQ aE ab @@ -775,11 +787,11 @@ aJ ac ae aE -bH -bK -bH -bK -bH +aW +bJ +bM +bP +bQ aE aA bp @@ -799,11 +811,11 @@ aE aE bX aE -aE -aE -aE -aE -aE +bH +bK +bH +bK +bH aE bm bp @@ -814,10 +826,34 @@ bE "} (7,1,1) = {" ac -ag +br an an az +bA +bA +bA +bA +bA +bA +bA +bA +bA +bA +bA +ae +ae +ab +ab +bC +bE +"} +(8,1,1) = {" +ad +ag +an +an +ab aE aE aN @@ -830,13 +866,13 @@ aN aE ca ae -ab -ab -ab +bw +bi +au bC bE "} -(8,1,1) = {" +(9,1,1) = {" ac ai ao @@ -855,16 +891,16 @@ aN aE bn bi -bw -bz +bi +bi bC bE "} -(9,1,1) = {" +(10,1,1) = {" ab ae -ap -au +aB +aG ab aF bH @@ -884,32 +920,32 @@ bS bC bE "} -(10,1,1) = {" -aa -ab -ab -ab -ab -aG -bW -bI -aS -ad -aY -aj -bN -be -bT -bk -bF -br -cb -bU -ab -ab -"} (11,1,1) = {" aa +ab +ab +ab +ab +aK +aQ +aS +aT +aV +aY +bb +bf +be +bg +bh +bj +bk +bl +bo +ab +ab +"} +(12,1,1) = {" +aa aa aa aa diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index 940d655f43..43a6a85bf7 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -112,6 +112,11 @@ /obj/machinery/light, /turf/open/floor/mineral/titanium, /area/shuttle/escape) +"w" = ( +/obj/machinery/door/airlock/titanium, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) "x" = ( /obj/structure/table, /obj/machinery/recharger{ @@ -197,6 +202,7 @@ width = 14; name = "Birdboat emergency escape shuttle" }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "L" = ( @@ -574,7 +580,7 @@ p u b b -G +w K b b diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm index 19c1bf7720..349e1130f8 100644 --- a/_maps/shuttles/emergency_box.dmm +++ b/_maps/shuttles/emergency_box.dmm @@ -2,6 +2,14 @@ "aa" = ( /turf/template_noop, /area/template_noop) +"ab" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" + }, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) "ac" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -37,6 +45,23 @@ /obj/item/storage/firstaid/fire, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) +"aj" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + name = "Box emergency shuttle" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"ak" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "al" = ( /obj/machinery/computer/atmos_alert{ dir = 4 @@ -171,13 +196,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aI" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/plastitanium/red/brig, -/area/shuttle/escape) "aJ" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -192,15 +210,6 @@ /obj/structure/table, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aP" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "Box emergency shuttle" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aQ" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -5; @@ -235,12 +244,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aV" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aW" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -30 @@ -362,10 +365,19 @@ "ga" = ( /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) +"gJ" = ( +/obj/structure/table/optable, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) "XC" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) +"ZQ" = ( +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/structure/table, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) (1,1,1) = {" aa @@ -375,17 +387,17 @@ aa ad ad ad -aI +ab ad -aP +aj ad ac ac ac ad -aV +ak ad -aV +ak ad ad ad @@ -531,7 +543,7 @@ aC ac XC bs -XC +gJ bi bk "} @@ -555,7 +567,7 @@ aC aZ ga ga -ga +ZQ bi bk "} diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index 47ad888f11..23de211226 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -507,6 +507,35 @@ /obj/item/book/manual/wiki/security_space_law, /turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) +"aW" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"aX" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dheight = 0; + dwidth = 15; + height = 20; + name = "Cere emergency shuttle"; + width = 42 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"aY" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "aZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -639,13 +668,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bv" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "bw" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -696,19 +718,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bE" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dwidth = 15; - height = 20; - name = "Cere emergency shuttle"; - width = 42 - }, -/turf/open/floor/plating, -/area/shuttle/escape) "bF" = ( /obj/structure/closet/crate/bin, /obj/effect/turf_decal/tile/neutral{ @@ -936,12 +945,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bY" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "bZ" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -28 @@ -1291,26 +1294,17 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/circular_saw, -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/hemostat, -/obj/item/surgicaldrill, -/obj/item/cautery{ - pixel_x = 4 - }, -/obj/item/retractor, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, +/obj/item/storage/backpack/duffelbag/med/surgery, /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/shuttle/escape) "cG" = ( @@ -1361,15 +1355,13 @@ /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/gloves/color/latex, /obj/item/clothing/mask/surgical, -/obj/item/surgical_drapes, -/obj/item/razor, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, /obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -1762,17 +1754,17 @@ ab ab ab ab -bv +aW ab -bE +aX ab aa aa aa ab -bY +aY ab -bY +aY ab aa aa diff --git a/_maps/shuttles/emergency_clown.dmm b/_maps/shuttles/emergency_clown.dmm index d2329af155..666746ad20 100644 --- a/_maps/shuttles/emergency_clown.dmm +++ b/_maps/shuttles/emergency_clown.dmm @@ -117,6 +117,23 @@ }, /turf/open/floor/mineral/bananium, /area/shuttle/escape) +"aw" = ( +/obj/machinery/door/airlock/bananium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + name = "Snappop(tm)!" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"ax" = ( +/obj/machinery/door/airlock/bananium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "ay" = ( /obj/structure/table, /obj/item/storage/firstaid/fire, @@ -137,6 +154,8 @@ /obj/machinery/door/airlock/bananium/glass{ name = "Emergency Shuttle Greentext" }, +/obj/structure/fans/tiny, +/obj/structure/barricade/wooden/crude, /turf/open/floor/bluespace, /area/shuttle/escape) "aC" = ( @@ -170,15 +189,6 @@ /obj/item/toy/sword, /turf/open/floor/mineral/bananium, /area/shuttle/escape) -"aI" = ( -/obj/machinery/door/airlock/bananium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "Snappop(tm)!" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aJ" = ( /obj/item/toy/snappop/phoenix, /obj/machinery/light/small{ @@ -233,12 +243,6 @@ }, /turf/open/floor/mineral/bananium, /area/shuttle/escape) -"aQ" = ( -/obj/machinery/door/airlock/bananium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aR" = ( /obj/item/toy/snappop/phoenix, /obj/machinery/light/small, @@ -338,6 +342,11 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, /area/shuttle/escape) +"bL" = ( +/obj/item/toy/snappop/phoenix, +/obj/item/pneumatic_cannon/pie/selfcharge, +/turf/open/floor/bluespace, +/area/shuttle/escape) "Zf" = ( /obj/structure/closet/emcloset, /obj/item/toy/sword, @@ -354,15 +363,15 @@ ab ab ab ab -aI +aw ab ac ac ac ab -aQ +ax ab -aQ +ax ab ab ab @@ -467,7 +476,7 @@ bg (6,1,1) = {" ac ag -ak +bL aq ab av diff --git a/_maps/shuttles/emergency_cramped.dmm b/_maps/shuttles/emergency_cramped.dmm index 863b5bd088..08ac96bf69 100644 --- a/_maps/shuttles/emergency_cramped.dmm +++ b/_maps/shuttles/emergency_cramped.dmm @@ -11,6 +11,7 @@ name = "Emergency Shuttle Airlock"; req_access_txt = "2" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "d" = ( @@ -64,6 +65,7 @@ name = "Secure Transport Vessel 5"; width = 14 }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "l" = ( @@ -97,6 +99,7 @@ /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "r" = ( diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 471232a295..564115443d 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -147,7 +147,6 @@ /area/shuttle/escape) "al" = ( /obj/structure/table/optable, -/obj/item/surgical_drapes, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -157,18 +156,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "am" = ( -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/circular_saw, -/obj/item/retractor{ - pixel_x = 4 - }, -/obj/item/hemostat{ - pixel_x = -4 - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, +/obj/item/storage/backpack/duffelbag/med/surgery, /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -176,8 +164,6 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/item/surgicaldrill, -/obj/item/cautery, /turf/open/floor/plasteel/white, /area/shuttle/escape) "an" = ( @@ -490,6 +476,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "aP" = ( @@ -562,6 +549,7 @@ preferred_direction = 2; port_direction = 4 }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "aX" = ( @@ -796,6 +784,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "bw" = ( @@ -908,6 +897,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel, /area/shuttle/escape) "bM" = ( diff --git a/_maps/shuttles/emergency_discoinferno.dmm b/_maps/shuttles/emergency_discoinferno.dmm index 025a7cf743..e142208e12 100644 --- a/_maps/shuttles/emergency_discoinferno.dmm +++ b/_maps/shuttles/emergency_discoinferno.dmm @@ -83,6 +83,7 @@ /obj/machinery/door/airlock/gold{ req_access_txt = "19" }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/gold, /area/shuttle/escape) "q" = ( @@ -110,6 +111,7 @@ heat_proof = 1; resistance_flags = 2 }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/plasma, /area/shuttle/escape) "v" = ( @@ -118,6 +120,7 @@ /area/shuttle/escape) "w" = ( /obj/machinery/door/airlock/gold, +/obj/structure/fans/tiny, /turf/open/floor/wood, /area/shuttle/escape) "x" = ( @@ -220,6 +223,11 @@ "O" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) +"P" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel/elevatorshaft, +/area/shuttle/escape) (1,1,1) = {" a @@ -262,7 +270,7 @@ r r r q -c +P x C I @@ -274,7 +282,7 @@ b b h m -c +P r r r @@ -286,7 +294,7 @@ r r r r -c +P x D D @@ -298,7 +306,7 @@ c d i i -c +P r r r @@ -310,7 +318,7 @@ j r r r -c +P x x x @@ -322,7 +330,7 @@ c e j j -c +P r r s @@ -334,7 +342,7 @@ j s r r -c +P y E y @@ -346,7 +354,7 @@ c f j n -c +P r j j @@ -358,7 +366,7 @@ t j j r -c +P z F J @@ -382,7 +390,7 @@ j s r r -c +P y G y @@ -394,7 +402,7 @@ c g k k -c +P r r r @@ -406,7 +414,7 @@ j r r r -c +P x x x @@ -418,7 +426,7 @@ b b l o -c +P r r r @@ -430,7 +438,7 @@ r r r r -c +P A x K @@ -454,7 +462,7 @@ r r r q -c +P B H L diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm index 8e254729e8..be7408793c 100644 --- a/_maps/shuttles/emergency_goon.dmm +++ b/_maps/shuttles/emergency_goon.dmm @@ -28,6 +28,7 @@ /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "h" = ( @@ -41,6 +42,7 @@ name = "NES Port"; width = 19 }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "l" = ( @@ -67,9 +69,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "q" = ( -/obj/machinery/sleeper{ - dir = 4 - }, +/obj/machinery/sleeper, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "r" = ( @@ -93,11 +93,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"v" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/mineral/titanium/white, -/area/shuttle/escape) "w" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Infirmary" @@ -186,12 +181,18 @@ /obj/structure/window/reinforced, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) +"P" = ( +/obj/structure/table/optable, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) "Q" = ( /obj/machinery/light, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "R" = ( /obj/machinery/light/small, +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "S" = ( @@ -272,8 +273,8 @@ X c d q -v -q +n +P d H H @@ -284,7 +285,7 @@ Y (4,1,1) = {" d l -n +q n R d diff --git a/_maps/shuttles/emergency_gorilla.dmm b/_maps/shuttles/emergency_gorilla.dmm new file mode 100644 index 0000000000..0c75cd8b7e --- /dev/null +++ b/_maps/shuttles/emergency_gorilla.dmm @@ -0,0 +1,641 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/closed/wall/rust, +/area/shuttle/escape) +"ac" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plasteel/elevatorshaft, +/area/shuttle/escape) +"ad" = ( +/turf/closed/wall, +/area/shuttle/escape) +"ae" = ( +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"af" = ( +/obj/machinery/computer/emergency_shuttle, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ag" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ah" = ( +/obj/machinery/computer/atmos_alert{ + dir = 4 + }, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ai" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"aj" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ak" = ( +/obj/item/chair, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"al" = ( +/obj/machinery/computer/security{ + dir = 8 + }, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"am" = ( +/obj/machinery/computer/crew{ + dir = 4 + }, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"an" = ( +/obj/machinery/light, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ao" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ap" = ( +/obj/machinery/status_display/evac, +/turf/closed/wall/rust, +/area/shuttle/escape) +"aq" = ( +/obj/machinery/door/airlock/gold{ + req_access_txt = "19" + }, +/turf/open/floor/holofloor/wood, +/area/shuttle/escape) +"ar" = ( +/obj/structure/urinal{ + pixel_y = 31 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"as" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"at" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/escape) +"au" = ( +/obj/machinery/deepfryer, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"av" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aw" = ( +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"ax" = ( +/turf/open/floor/plating, +/area/shuttle/escape) +"ay" = ( +/obj/machinery/flasher{ + id = "shuttle_flasher"; + pixel_x = -24; + pixel_y = 6 + }, +/obj/machinery/button/flasher{ + id = "shuttle_flasher"; + pixel_x = -24; + pixel_y = -6 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"az" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"aA" = ( +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"aB" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Emergency Shuttle Brig"; + req_access_txt = "2" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/escape) +"aC" = ( +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aD" = ( +/obj/structure/closet, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aE" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"aF" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"aG" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aH" = ( +/obj/structure/noticeboard, +/turf/closed/wall/rust, +/area/shuttle/escape) +"aI" = ( +/obj/docking_port/mobile/emergency{ + height = 15; + name = "Gorilla Emergency Shuttle" + }, +/obj/machinery/door/airlock/security/glass{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"aJ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/escape) +"aK" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aL" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aM" = ( +/obj/structure/reagent_dispensers/keg/mead, +/turf/open/floor/plating, +/area/shuttle/escape) +"aN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/escape) +"aO" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aP" = ( +/obj/structure/fluff/broken_flooring, +/turf/open/floor/plating, +/area/shuttle/escape) +"aQ" = ( +/obj/structure/closet/crate/freezer, +/turf/open/floor/plating, +/area/shuttle/escape) +"aR" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aS" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aT" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"aU" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aV" = ( +/obj/effect/decal/cleanable/blood/innards, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aW" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"aX" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aY" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"aZ" = ( +/obj/structure/closet/crate/freezer, +/turf/open/floor/plasteel/freezer, +/area/shuttle/escape) +"ba" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"bb" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"bc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"bd" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/plating, +/area/shuttle/escape) +"be" = ( +/obj/structure/chair/sofa/right, +/turf/open/floor/plating, +/area/shuttle/escape) +"bf" = ( +/obj/structure/chair/sofa, +/mob/living/simple_animal/hostile/gorilla, +/turf/open/floor/plating, +/area/shuttle/escape) +"bg" = ( +/obj/structure/chair/sofa, +/turf/open/floor/plating, +/area/shuttle/escape) +"bh" = ( +/obj/structure/chair/sofa, +/mob/living/simple_animal/hostile/gorilla, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"bi" = ( +/obj/structure/chair/sofa/left, +/mob/living/simple_animal/hostile/gorilla, +/turf/open/floor/plating, +/area/shuttle/escape) +"bj" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/shuttle/escape) +"bk" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Emergency Shuttle Brig"; + req_access_txt = "2" + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"bl" = ( +/mob/living/simple_animal/hostile/gorilla, +/turf/open/floor/plating, +/area/shuttle/escape) +"bm" = ( +/obj/effect/decal/cleanable/blood/gibs/limb, +/mob/living/simple_animal/hostile/gorilla, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"bn" = ( +/obj/structure/reagent_dispensers/keg/semen, +/turf/open/floor/plating, +/area/shuttle/escape) +"bo" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"bp" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/turf/open/floor/plating, +/area/shuttle/escape) +"bq" = ( +/mob/living/simple_animal/hostile/gorilla, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"br" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"bs" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/plasma/reinforced{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"bt" = ( +/turf/template_noop, +/area/space) +"bu" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"fV" = ( +/turf/closed/wall/r_wall, +/area/shuttle/escape) +"IR" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/shuttle/escape) +"Pi" = ( +/obj/structure/chair/sofa, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) + +(1,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +aE +ab +aI +ab +at +at +at +ab +bb +ab +bb +ab +ad +ad +bt +"} +(2,1,1) = {" +aa +ad +ab +ad +ab +ar +ay +aA +aH +ax +aN +aR +aW +aR +ba +av +ad +ax +ax +bo +ab +ab +"} +(3,1,1) = {" +ab +ab +ah +am +ap +as +az +aF +ab +aJ +av +aS +av +ax +av +bc +ab +bd +bj +bp +bs +bu +"} +(4,1,1) = {" +ac +ae +ai +ae +ab +as +aA +aF +ad +aK +av +aP +av +av +ax +av +fV +fV +bk +fV +bs +bu +"} +(5,1,1) = {" +ac +ae +ae +ak +ab +at +aB +at +ab +aL +av +aT +aT +aT +aT +aT +IR +be +aN +bl +bs +bu +"} +(6,1,1) = {" +ac +af +aj +an +ad +au +av +av +av +av +aO +ab +ab +ad +ab +ad +fV +bf +bl +bq +bs +bu +"} +(7,1,1) = {" +ac +ae +ae +ae +aq +av +ax +av +av +aM +aP +aU +aC +aC +aX +aD +fV +Pi +bm +bn +bs +bu +"} +(8,1,1) = {" +ac +ag +ak +ae +ab +ab +ad +ad +ab +ad +ab +ab +aC +aC +aY +aX +fV +bh +aP +bq +bs +bu +"} +(9,1,1) = {" +ab +ad +al +ao +ab +aw +aC +ax +aG +aC +aD +aC +ax +aC +aZ +ax +IR +bg +bl +br +bs +bu +"} +(10,1,1) = {" +aa +ad +ab +ad +ab +ax +aD +aG +aD +aC +aQ +aV +aC +aC +aX +aD +fV +bi +bn +bl +fV +ab +"} +(11,1,1) = {" +aa +aa +aa +aa +ab +ab +ad +ab +ab +ad +ab +ad +ab +ad +ad +ab +fV +fV +fV +fV +fV +aa +"} diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 1fd515fb76..2834f0c93f 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -3,94 +3,90 @@ /turf/template_noop, /area/template_noop) "ab" = ( -/turf/closed/indestructible/riveted/uranium, +/obj/structure/table/wood/fancy, +/obj/item/toy/cards/deck, +/turf/open/floor/carpet/red, /area/shuttle/escape/luxury) "ac" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/wood{ - icon_state = "wood-broken2" - }, +/turf/closed/wall/mineral/gold, /area/shuttle/escape/luxury) "ad" = ( /obj/machinery/door/airlock/gold, -/obj/effect/forcefield/luxury_shuttle{ - name = "Ticket Booth" - }, -/turf/open/floor/mineral/gold, +/obj/structure/fans/tiny, +/turf/open/floor/carpet/red, /area/shuttle/escape/luxury) "ae" = ( /obj/docking_port/mobile/emergency{ dir = 2; dwidth = 5; height = 14; + movement_force = list("KNOCKDOWN" = 3, "THROW" = 0); name = "Luxury emergency shuttle"; width = 25 }, /obj/machinery/door/airlock/gold, -/obj/effect/forcefield/luxury_shuttle{ - name = "Ticket Booth" - }, -/turf/open/floor/mineral/gold, +/obj/structure/fans/tiny, +/turf/open/floor/carpet/red, /area/shuttle/escape/luxury) "af" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken3" - }, +/turf/open/floor/carpet/red, /area/shuttle/escape/luxury) "ag" = ( -/turf/open/floor/wood, +/obj/machinery/light{ + dir = 4; + light_range = 8 + }, +/turf/open/floor/carpet/red, /area/shuttle/escape/luxury) "ah" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, +/turf/open/floor/plasteel/white, /area/shuttle/escape/luxury) "ai" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" +/obj/structure/chair/comfy{ + dir = 8 }, +/turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape/luxury) "aj" = ( -/turf/open/floor/mineral/gold, +/obj/machinery/door/airlock/gold/glass{ + name = "shuttle brig"; + req_access_txt = "2" + }, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape/luxury) "ak" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10" - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"al" = ( -/obj/structure/mirror{ - pixel_y = 32 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"am" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/shuttle/escape/luxury) -"an" = ( -/obj/machinery/light/small, -/turf/open/floor/wood{ - icon_state = "wood-broken2" - }, -/area/shuttle/escape/luxury) -"ao" = ( -/obj/machinery/light/small, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/shuttle/escape/luxury) -"ap" = ( -/obj/structure/toilet{ +/obj/structure/chair/comfy{ dir = 4 }, -/turf/open/floor/mineral/gold, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape/luxury) +"al" = ( +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape/luxury) +"am" = ( +/turf/open/floor/carpet/royalblue, +/area/shuttle/escape/luxury) +"an" = ( +/turf/open/floor/carpet/royalblack, +/area/shuttle/escape/luxury) +"ao" = ( +/obj/structure/chair/comfy, +/turf/open/floor/carpet/royalblack, +/area/shuttle/escape/luxury) +"ap" = ( +/obj/machinery/light{ + dir = 4; + light_range = 8 + }, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aq" = ( -/obj/machinery/door/airlock/gold, -/turf/open/floor/mineral/gold, +/obj/machinery/light{ + dir = 4; + light_range = 8 + }, +/turf/open/floor/plasteel/white, /area/shuttle/escape/luxury) "ar" = ( /obj/structure/shuttle/engine/propulsion{ @@ -108,647 +104,768 @@ /turf/open/floor/plating/airless, /area/shuttle/escape/luxury) "at" = ( -/turf/open/floor/carpet, +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/meatballspaghetti, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "au" = ( -/obj/structure/chair/comfy, -/turf/open/floor/carpet, +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/notasandwich, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "av" = ( -/obj/structure/chair/comfy{ - dir = 4 - }, -/turf/open/floor/mineral/gold, +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/pastatomato, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aw" = ( -/obj/machinery/computer/communications{ - dir = 8 - }, -/turf/open/floor/mineral/gold, +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/kebab/tofu, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "ax" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/meatballspaghetti, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/honkdae, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "ay" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/notasandwich, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/enchiladas, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "az" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/pastatomato, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/candiedapple, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aA" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/kebab/tofu, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/burger/baconburger, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aB" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/honkdae, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/benedict, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aC" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/enchiladas, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/cakeslice/chocolate, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aD" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/candiedapple, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/chowmein, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aE" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/burger/baconburger, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/dulcedebatataslice, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aF" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/benedict, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/salad/validsalad, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aG" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/cakeslice/chocolate, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/carneburrito, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aH" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/chowmein, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/chawanmushi, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aI" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/dulcedebatataslice, -/turf/open/floor/carpet, +/obj/structure/mirror{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, /area/shuttle/escape/luxury) "aJ" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/salad/validsalad, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/melonfruitbowl, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aK" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/carneburrito, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/khachapuri, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aL" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/chawanmushi, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/grilledcheese, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aM" = ( -/obj/machinery/computer/emergency_shuttle{ - dir = 8 - }, -/turf/open/floor/mineral/gold, +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aN" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/melonfruitbowl, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/honeybun, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aO" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/khachapuri, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/eggplantparm, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aP" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/grilledcheese, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/copypasta, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aQ" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/bearsteak, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aR" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/honeybun, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/boiledspaghetti, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aS" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/eggplantparm, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/cherrycupcake, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aT" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/copypasta, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/customizable/pizza, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aU" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/bearsteak, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/hotdog, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aV" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/boiledspaghetti, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/pie/grapetart, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aW" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/cherrycupcake, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/burger/superbite, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aX" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/customizable/pizza, -/turf/open/floor/carpet, +/obj/item/reagent_containers/food/snacks/cakeslice/slimecake, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) "aY" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/hotdog, -/turf/open/floor/carpet, +/obj/structure/chair/comfy{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, /area/shuttle/escape/luxury) "aZ" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/pie/grapetart, -/turf/open/floor/carpet, -/area/shuttle/escape/luxury) -"ba" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/burger/superbite, -/turf/open/floor/carpet, -/area/shuttle/escape/luxury) -"bb" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/snacks/cakeslice/slimecake, -/turf/open/floor/carpet, -/area/shuttle/escape/luxury) -"bc" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/communications{ dir = 8 }, -/turf/open/floor/mineral/gold, +/turf/open/floor/carpet/royalblue, /area/shuttle/escape/luxury) -"bd" = ( +"ba" = ( /obj/structure/chair/comfy{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/royalblack, /area/shuttle/escape/luxury) -"be" = ( -/obj/machinery/computer/crew{ +"bb" = ( +/obj/machinery/computer/emergency_shuttle{ dir = 8 }, -/turf/open/floor/mineral/gold, +/turf/open/floor/carpet/royalblue, /area/shuttle/escape/luxury) -"bf" = ( +"bc" = ( /obj/machinery/sleeper{ dir = 4 }, -/turf/open/floor/mineral/gold, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bd" = ( +/obj/machinery/computer/station_alert{ + dir = 8 + }, +/turf/open/floor/carpet/royalblue, +/area/shuttle/escape/luxury) +"be" = ( +/turf/open/floor/wood, +/area/shuttle/escape/luxury) +"bf" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/carpet/royalblue, /area/shuttle/escape/luxury) "bg" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 + icon_state = "plant-10" }, -/turf/open/floor/mineral/gold, +/turf/open/floor/carpet/red, /area/shuttle/escape/luxury) "bh" = ( /turf/open/floor/plating/beach/coastline_b, /area/shuttle/escape/luxury) "bi" = ( -/obj/machinery/light, -/turf/open/floor/mineral/gold, +/obj/machinery/door/airlock/gold/glass{ + req_access_txt = "19" + }, +/turf/open/floor/carpet/royalblue, /area/shuttle/escape/luxury) "bj" = ( -/obj/machinery/light{ - dir = 8 +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 }, -/turf/open/floor/mineral/gold, +/turf/open/floor/wood, /area/shuttle/escape/luxury) "bk" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"bl" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-10" }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/gold, +/turf/open/floor/carpet/royalblue, /area/shuttle/escape/luxury) -"bp" = ( +"bl" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 }, /obj/machinery/light, -/turf/open/floor/mineral/gold, +/turf/open/floor/wood, +/area/shuttle/escape/luxury) +"bm" = ( +/obj/structure/chair/comfy, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bn" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/bottle/wine, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bo" = ( +/obj/structure/chair/comfy{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bp" = ( +/obj/item/toy/cards/deck/cas/black, +/obj/structure/table/wood/fancy, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bq" = ( +/obj/structure/table/wood/fancy, +/obj/item/toy/cards/deck/cas, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"br" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/bottle/whiskey, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bs" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/bottle/grappa, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bt" = ( +/obj/structure/table/optable, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bu" = ( +/obj/machinery/door/airlock/gold/glass, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bv" = ( +/obj/structure/table/plasmaglass, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bw" = ( +/obj/structure/table/plasmaglass, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bx" = ( +/obj/machinery/door/airlock/gold, +/turf/open/floor/plasteel/white, +/area/shuttle/escape/luxury) +"by" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape/luxury) +"bz" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape/luxury) +"bA" = ( +/obj/structure/bed, +/turf/open/floor/wood, +/area/shuttle/escape/luxury) +"bC" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bD" = ( +/obj/machinery/vending/boozeomat/all_access, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bE" = ( +/obj/machinery/light{ + dir = 1; + light_range = 8 + }, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bF" = ( +/obj/machinery/light{ + dir = 4; + light_range = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/carpet/red, +/area/shuttle/escape/luxury) +"bG" = ( +/obj/machinery/light{ + light_range = 8 + }, +/turf/open/floor/plating/beach/coastline_b, +/area/shuttle/escape/luxury) +"bH" = ( +/obj/machinery/light{ + dir = 1; + light_range = 8 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape/luxury) +"bI" = ( +/obj/machinery/light{ + light_range = 8 + }, +/turf/open/floor/carpet/royalblue, +/area/shuttle/escape/luxury) +"Uj" = ( +/obj/machinery/door/airlock/gold/glass{ + name = "shuttle brig"; + req_access_txt = "2" + }, +/turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape/luxury) (1,1,1) = {" -aa -ab -ab -ab -ab +ac +ac +ac +ac +ac ar ar ar ar -ab -ab -ab -ab +ac +ac +ac +ac aa "} (2,1,1) = {" -ab -ab -am -ab -ab +ac +bz +ah +by +ac as as as as -ab -bf -bf -ab -ab +ac +bc +bc +ac +ac "} (3,1,1) = {" -ab +ac +aI +ah +aq +ac +ac +ac +ac +ac +ac af -ag -ab -ab -ab -ab -ab -ab -ab -aj -aj -ab -ab +af +bv +ac "} (4,1,1) = {" -ab -ag +ac +ac +bx +ac +ac an -ab -bl -aj -aj -aj -aj -bj -aj -aj -ak -ab +an +an +an +bu +af +af +bt +ac "} (5,1,1) = {" -ab -ag -ag -ab -aj -at -at -at -at -aj -aj -aj -aj -ab -"} -(6,1,1) = {" -ab -ag -ag -ab -aj -au -ax -aN -bd -aj -aj -bg -bp -ab -"} -(7,1,1) = {" -ab -ah -ag -ab -aj -au -ay -aO -bd -aj -aj -bh -bh -ab -"} -(8,1,1) = {" -ab -ag -ag -ab -aj -au -az -aP -bd -aj -aj -bh -bh -ab -"} -(9,1,1) = {" -ab -ag -ag -ab -aj -au -aA -aQ -bd -aj -aj -bh -bh -ab -"} -(10,1,1) = {" -ab -ai -ao -ab -aj -au -aB -aR -bd -aj -aj -bh -bh -ab -"} -(11,1,1) = {" -ab -ag -ag -ab -aj -au -aC -aS -bd -aj -aj -bh -bh -ab -"} -(12,1,1) = {" ac +af +af +af +bg +ao +at +aJ +ba +bu ag af -ab -aj -au -aD -aT -bd -aj -aj -bh -bh -ab +bw +ac "} -(13,1,1) = {" -ab -ab -ab -ab -aj -au -aE -aU -bd -aj -aj -bh -bh -ab -"} -(14,1,1) = {" -ad -aj -aj -bj -aj -au -aF -aV -bd -aj -aj -bh -bh -ab -"} -(15,1,1) = {" -ab -aj -aj -aj -aj -au -aG -aW -bd -aj -aj -bh -bh -ab -"} -(16,1,1) = {" -ab -aj -aj -aj -aj -au -aH -aX -bd -aj -aj -bh -bh -ab -"} -(17,1,1) = {" -ab -aj -aj -aj -aj -au -aI -aY -bd -aj -aj -bh -bh -ab -"} -(18,1,1) = {" -ab -aj -aj -aj -aj -au -aJ -aZ -bd -aj -aj -bh -bh -ab -"} -(19,1,1) = {" -ab -aj -aj -aj -aj +(6,1,1) = {" +ac +bE +af +af +af +ao au aK ba -bd -aj -aj +ac +ac +ac +ac +ac +"} +(7,1,1) = {" +ac +af +af +af +af +ao +av +aL +ba +af +be +bj +bj +ac +"} +(8,1,1) = {" +ac +bm +bn +bo +af +ao +aw +aM +ba +af +be bh bh +ac +"} +(9,1,1) = {" +ac +bm ab +bo +af +ao +ax +aN +ba +af +bA +bh +bh +ac +"} +(10,1,1) = {" +ac +bm +br +bo +af +ao +ay +aO +ba +af +bA +bh +bh +ac +"} +(11,1,1) = {" +ac +bE +af +af +af +ao +az +aP +ba +af +bA +bh +bG +ac +"} +(12,1,1) = {" +ad +af +af +af +af +ao +aA +aQ +ba +af +bA +bh +bh +ac +"} +(13,1,1) = {" +ac +bg +af +af +af +ao +aB +aR +ba +af +bA +bh +bh +ac +"} +(14,1,1) = {" +ad +af +af +af +af +ao +aC +aS +ba +af +bA +bh +bh +ac +"} +(15,1,1) = {" +ac +bE +af +af +af +ao +aD +aT +ba +af +bA +bh +bG +ac +"} +(16,1,1) = {" +ac +bm +bs +bo +af +ao +aE +aU +ba +af +bA +bh +bh +ac +"} +(17,1,1) = {" +ac +bm +bp +bo +af +ao +aF +aV +ba +af +bA +bh +bh +ac +"} +(18,1,1) = {" +ac +bm +bq +bo +af +ao +aG +aW +ba +af +bA +bh +bh +ac +"} +(19,1,1) = {" +ac +bE +af +af +af +ao +aH +aX +ba +af +be +bh +bh +ac "} (20,1,1) = {" ae -aj -aj -bk -aj -au -aL -bb -bd -aj -aj -bg -bp -ab +af +af +af +bF +an +an +ap +an +af +be +bj +bl +ac "} (21,1,1) = {" -ab -ab -ab -ab -aj -at -at -at -at -aj -aj -aj -aj -ab +ac +ac +ac +ac +ac +af +af +ac +ac +ac +ac +ac +ac +ac "} (22,1,1) = {" -ab +aj +al ak -ap -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab +ak +ac +af +af +bi +am +am +am +am +am +ac "} (23,1,1) = {" -ab -aj -bi -ab -aj -av -av -av -av -aj -aj -aj -aj -ab +ac +bH +al +al +Uj +af +af +ac +aY +aY +aY +aY +bI +ac "} (24,1,1) = {" -ab -al -aj -aq +ac +ai +ai +ai +ac +bC +bD +ac +aZ +bb +bd +bf bk -aw -aM -bc -be -bk -aj -aj -ak -ab +ac "} (25,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac "} diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index 0a357d2308..8df487714e 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -2,6 +2,13 @@ "aa" = ( /turf/template_noop, /area/template_noop) +"ab" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) "ac" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -9,17 +16,7 @@ "ad" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"af" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"ag" = ( -/obj/structure/sign/warning/nosmoking, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ah" = ( +"ae" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, @@ -30,8 +27,21 @@ name = "Meta emergency shuttle"; width = 25 }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) +"af" = ( +/obj/machinery/door/airlock/external{ + name = "Emergency Recovery Airlock" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"ag" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) "al" = ( /obj/structure/table, /obj/item/phone{ @@ -513,7 +523,6 @@ /area/shuttle/escape) "bz" = ( /obj/structure/table/optable, -/obj/item/surgical_drapes, /obj/machinery/light{ dir = 8 }, @@ -576,25 +585,12 @@ /area/shuttle/escape) "bH" = ( /obj/structure/table, -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/circular_saw, -/obj/item/retractor{ - pixel_x = 4 - }, -/obj/item/hemostat{ - pixel_x = -4 - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, +/obj/item/storage/backpack/duffelbag/med/surgery, /obj/item/radio/intercom{ dir = 2; name = "Station Intercom (General)"; pixel_x = -27 }, -/obj/item/surgicaldrill, -/obj/item/cautery, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "bI" = ( @@ -939,7 +935,7 @@ be cc be be -bf +af "} (6,1,1) = {" ac @@ -955,7 +951,7 @@ bf bT be be -bf +af "} (7,1,1) = {" ac @@ -1038,7 +1034,7 @@ bF ac "} (12,1,1) = {" -af +ab LY LY aE @@ -1070,7 +1066,7 @@ ad ad "} (14,1,1) = {" -af +ab LY LY aE @@ -1166,7 +1162,7 @@ bM ad "} (20,1,1) = {" -ah +ae LY LY aE @@ -1198,7 +1194,7 @@ bO ac "} (22,1,1) = {" -af +ab LY LY LY diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index 1be681e5b3..5e1157062a 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -113,6 +113,21 @@ /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"v" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dir = 8; + dwidth = 8; + height = 9; + name = "Mini emergency shuttle"; + width = 21 + }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "x" = ( @@ -145,19 +160,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"B" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dir = 8; - dwidth = 8; - height = 9; - name = "Mini emergency shuttle"; - width = 21 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "D" = ( /obj/structure/table, /obj/item/storage/firstaid/fire, @@ -453,7 +455,7 @@ b n b b -B +v b b b diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm index 80046340e8..8adbd6f392 100644 --- a/_maps/shuttles/emergency_narnar.dmm +++ b/_maps/shuttles/emergency_narnar.dmm @@ -6,7 +6,8 @@ /turf/closed/wall/mineral/cult, /area/shuttle/escape) "c" = ( -/obj/effect/forcefield/cult, +/obj/machinery/door/airlock/cult/friendly, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "d" = ( @@ -125,6 +126,10 @@ /area/shuttle/escape) "x" = ( /obj/machinery/door/airlock/cult/friendly, +/obj/docking_port/mobile/emergency{ + name = "shuttle 667" + }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "y" = ( @@ -156,13 +161,6 @@ /obj/effect/decal/remains/human, /turf/open/floor/plasteel/cult, /area/shuttle/escape) -"E" = ( -/obj/machinery/door/airlock/cult/friendly, -/obj/docking_port/mobile/emergency{ - name = "shuttle 667" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "F" = ( /obj/effect/decal/cleanable/blood/gibs/down, /turf/open/floor/plasteel/cult, @@ -262,6 +260,10 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, /area/shuttle/escape) +"W" = ( +/obj/effect/spawner/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/escape) (1,1,1) = {" a @@ -271,17 +273,17 @@ a b b b -x -b -E -b -c -c c b x b -x +W +W +W +b +c +b +c b b b @@ -336,7 +338,7 @@ U V "} (4,1,1) = {" -c +W d i n @@ -360,7 +362,7 @@ U V "} (5,1,1) = {" -c +W e j o @@ -384,7 +386,7 @@ U V "} (6,1,1) = {" -c +W f j j @@ -408,7 +410,7 @@ U V "} (7,1,1) = {" -c +W e j j @@ -424,7 +426,7 @@ j j K L -c +W t j t @@ -432,7 +434,7 @@ U V "} (8,1,1) = {" -c +W g k k @@ -472,7 +474,7 @@ A j j j -c +W j j j @@ -496,7 +498,7 @@ j j j M -c +W P Q P @@ -509,21 +511,21 @@ a a a b -c +W b -c +W b b b -c -c -c +W +W +W b b b -c +W b -c +W b a "} diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm index 1601c97020..bd99f35bb5 100644 --- a/_maps/shuttles/emergency_omega.dmm +++ b/_maps/shuttles/emergency_omega.dmm @@ -185,6 +185,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "ar" = ( @@ -287,6 +288,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "az" = ( @@ -509,6 +511,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "aQ" = ( @@ -782,41 +785,27 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bn" = ( -/obj/item/scalpel{ - pixel_y = 12 +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/item/circular_saw, -/obj/item/retractor{ - pixel_x = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/item/hemostat{ - pixel_x = -4 - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, /obj/structure/table/reinforced, /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/item/cautery, -/obj/item/surgicaldrill, +/obj/item/storage/backpack/duffelbag/med/surgery, /turf/open/floor/plasteel/white, /area/shuttle/escape) "bo" = ( /obj/structure/table/optable, -/obj/item/surgical_drapes, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/shuttle/escape) "bp" = ( diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index dc58ecf201..7b4bcc71f5 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -58,6 +58,29 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) +"am" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"an" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dir = 8; + dwidth = 27; + height = 8; + name = "PubbyStation emergency shuttle"; + port_direction = 4; + preferred_direction = 1; + width = 46 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "ap" = ( /obj/structure/chair/comfy, /obj/machinery/computer/security/telescreen/entertainment{ @@ -133,12 +156,6 @@ "ax" = ( /turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) -"ay" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "az" = ( /obj/structure/chair/comfy{ dir = 1 @@ -440,14 +457,12 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aZ" = ( -/obj/structure/table/glass, +/obj/machinery/sleeper, /obj/machinery/light{ dir = 1 }, -/obj/item/storage/firstaid/regular, /obj/structure/window/reinforced{ - dir = 4; - layer = 2.9 + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -487,13 +502,18 @@ /turf/open/floor/plasteel/cafeteria, /area/shuttle/escape) "be" = ( -/obj/structure/chair/comfy/shuttle, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/structure/table, +/obj/item/storage/firstaid, +/obj/item/storage/firstaid/fire{ + pixel_x = -3; + pixel_y = 3 }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/shuttle/escape) "bf" = ( @@ -509,30 +529,12 @@ /turf/open/floor/plating, /area/shuttle/escape) "bh" = ( -/obj/structure/window/reinforced, -/obj/structure/table/glass, -/obj/item/defibrillator/loaded, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/shuttle/escape) -"bi" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/storage/firstaid/regular, /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, /turf/open/floor/plasteel/white, /area/shuttle/escape) "bj" = ( @@ -551,11 +553,8 @@ /turf/open/floor/plating, /area/shuttle/escape) "bn" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, +/obj/structure/reagent_dispensers/fueltank, /obj/machinery/light, -/obj/item/storage/toolbox/mechanical, /turf/open/floor/plating, /area/shuttle/escape) "bo" = ( @@ -675,21 +674,6 @@ }, /turf/open/floor/plating, /area/shuttle/escape) -"bL" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dir = 8; - dwidth = 27; - height = 8; - name = "PubbyStation emergency shuttle"; - port_direction = 4; - preferred_direction = 1; - width = 46 - }, -/turf/open/floor/plating, -/area/shuttle/escape) "bO" = ( /obj/machinery/door/airlock/public/glass{ name = "Cockpit"; @@ -710,6 +694,21 @@ }, /turf/open/floor/plating, /area/shuttle/escape) +"sI" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/structure/table, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) "xt" = ( /obj/structure/window/reinforced{ dir = 8; @@ -717,6 +716,17 @@ }, /turf/open/floor/plating, /area/shuttle/escape) +"Jw" = ( +/obj/structure/window/reinforced, +/obj/structure/table/optable, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) "Uu" = ( /obj/structure/window/reinforced{ dir = 4 @@ -804,9 +814,9 @@ aX bb be bh +Jw +bg bl -bg -bg ab aa bs @@ -851,8 +861,8 @@ ab aZ bb bb -bi -bl +bh +sI bg bn ab @@ -1071,17 +1081,17 @@ ab ab ab ab -ay +am ab -ay +am ab ab aa ab ab -bL +an ab -ay +am ab ac ab diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 294b2e8c40..2c04837c79 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -149,9 +149,6 @@ /area/shuttle/escape) "as" = ( /obj/structure/table/optable, -/obj/item/surgical_drapes, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -228,18 +225,13 @@ /area/shuttle/escape) "aB" = ( /obj/structure/table/reinforced, -/obj/item/scalpel, -/obj/item/circular_saw, -/obj/item/retractor, -/obj/item/hemostat, +/obj/item/storage/backpack/duffelbag/med/surgery, /obj/effect/turf_decal/tile/purple{ dir = 1 }, /obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/item/surgicaldrill, -/obj/item/cautery, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aC" = ( @@ -427,6 +419,22 @@ "aW" = ( /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape) +"aX" = ( +/obj/machinery/door/airlock/hatch, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) +"aY" = ( +/obj/docking_port/mobile/emergency{ + dwidth = 14; + height = 18; + name = "CentCom Raven Battlecruiser"; + width = 32 + }, +/obj/machinery/door/airlock/hatch, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "aZ" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -761,16 +769,6 @@ }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) -"bE" = ( -/obj/docking_port/mobile/emergency{ - dwidth = 14; - height = 18; - name = "CentCom Raven Battlecruiser"; - width = 32 - }, -/obj/machinery/door/airlock/hatch, -/turf/open/floor/plating, -/area/shuttle/escape) "bF" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -1331,9 +1329,13 @@ "eP" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) -"UQ" = ( -/obj/machinery/door/airlock/hatch, -/turf/open/floor/plating, +"Mb" = ( +/obj/machinery/door/airlock/hatch{ + name = "Shuttle EVA"; + req_access_txt = "19" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel/dark, /area/shuttle/escape) (1,1,1) = {" @@ -1349,17 +1351,17 @@ bJ cs bJ bJ -UQ +aX cs -bE +aY bJ bJ cs ad aa -UQ +aX bJ -UQ +aX cs bJ cs @@ -1651,7 +1653,7 @@ cs ad cr cs -aR +Mb cs ar br @@ -1893,7 +1895,7 @@ bJ bJ bJ cs -cs +en ad ad ad @@ -1909,7 +1911,7 @@ ab bJ bJ cs -cs +en ad ad ad diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm index abc40aa523..65fc7e30a2 100644 --- a/_maps/shuttles/emergency_russiafightpit.dmm +++ b/_maps/shuttles/emergency_russiafightpit.dmm @@ -235,6 +235,7 @@ name = "Emergency Shuttle Airlock"; req_access_txt = "2" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "aP" = ( @@ -282,6 +283,7 @@ /obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "aX" = ( @@ -375,7 +377,9 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape) "bk" = ( -/obj/structure/kitchenspike, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "bl" = ( @@ -420,6 +424,7 @@ /obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "bs" = ( @@ -460,13 +465,10 @@ /turf/open/floor/plating, /area/shuttle/escape) "bz" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/turf/open/floor/plating, +/turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "bA" = ( -/obj/structure/closet/emcloset, +/obj/machinery/sleeper, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -487,17 +489,12 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bD" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/obj/structure/closet/emcloset, +/turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape) "bE" = ( -/obj/machinery/sleeper{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/sleeper, /turf/open/floor/plasteel, /area/shuttle/escape) "bF" = ( @@ -567,13 +564,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) -"bP" = ( -/obj/structure/kitchenspike, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/escape) "bQ" = ( /obj/machinery/light, /turf/open/floor/mineral/plastitanium/red, @@ -584,6 +574,56 @@ }, /turf/open/floor/plating, /area/shuttle/escape) +"bS" = ( +/obj/structure/kitchenspike, +/turf/open/floor/plating, +/area/shuttle/escape) +"bT" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/structure/kitchenspike, +/turf/open/floor/plating, +/area/shuttle/escape) +"bU" = ( +/obj/machinery/vending/sovietsoda, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"ca" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"cb" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating, +/area/shuttle/escape) +"cd" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"ce" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"cf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"cg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) (1,1,1) = {" aa @@ -712,7 +752,7 @@ aj ao ad aw -ax +aR ax aR ax @@ -721,9 +761,9 @@ ax aR ax bj -ax +aR ab -by +bS bx bI bK @@ -736,6 +776,30 @@ ak ak at ax +aR +ax +ax +ax +aR +aR +aR +aR +aR +ax +ab +bT +bx +bI +ca +cb +"} +(8,1,1) = {" +ac +ag +ak +ap +ab +ax aJ aJ aJ @@ -745,30 +809,6 @@ ax bc bc bc -ax -ab -bz -bx -bI -bK -bL -"} -(8,1,1) = {" -ac -ag -ak -ap -ab -ay -ay -ay -aS -aY -bf -ax -ax -ax -ax bQ bv ad @@ -783,6 +823,30 @@ af al aq au +ay +ay +ay +aS +aY +bf +ax +ax +ax +ax +ax +ad +bA +cg +ce +bK +bL +"} +(10,1,1) = {" +ac +bU +ak +aq +au az aK aQ @@ -792,16 +856,16 @@ ax ax bl ax -ax +bD ax ad -bA bE -bA +bB +bJ bK bL "} -(10,1,1) = {" +(11,1,1) = {" ac ah ak @@ -821,16 +885,16 @@ ax ac bB bB -bJ +cf bK bL "} -(11,1,1) = {" +(12,1,1) = {" ad ab am ar -au +ac aB aA aA @@ -849,12 +913,12 @@ bB bK bL "} -(12,1,1) = {" +(13,1,1) = {" aa ad ab ad -as +bv aC aK bM @@ -869,11 +933,11 @@ ax ac bB bB -bD +bF ad ad "} -(13,1,1) = {" +(14,1,1) = {" aa aa aa @@ -892,41 +956,41 @@ ax ax ad bC -bF +cd ad ad aa "} -(14,1,1) = {" -aa -aa -aa -aa -ab -aE -aN -aN -aV -aD -bi -bk -bk -bk -bP -bt -ab -bD -ab -ad -aa -aa -"} (15,1,1) = {" aa aa aa aa ad +aE +aN +aN +aV +aD +bi +bz +bz +bz +bk +bt +ab +cd +ab +ad +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa aD aE aE diff --git a/_maps/shuttles/emergency_scrapheap.dmm b/_maps/shuttles/emergency_scrapheap.dmm index 226dee7d9d..4bd8f07c8e 100644 --- a/_maps/shuttles/emergency_scrapheap.dmm +++ b/_maps/shuttles/emergency_scrapheap.dmm @@ -106,6 +106,7 @@ name = "Emergency Shuttle Airlock"; req_access_txt = "2" }, +/obj/structure/fans/tiny, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "at" = ( @@ -174,6 +175,7 @@ name = "Emergency Shuttle Airlock"; req_access_txt = "2" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "aD" = ( @@ -227,6 +229,7 @@ /obj/docking_port/mobile/emergency{ name = "Scrapheap Challenge" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "aL" = ( @@ -309,6 +312,7 @@ /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "ba" = ( diff --git a/_maps/shuttles/emergency_supermatter.dmm b/_maps/shuttles/emergency_supermatter.dmm index fcdbf48a3d..71f791fad0 100644 --- a/_maps/shuttles/emergency_supermatter.dmm +++ b/_maps/shuttles/emergency_supermatter.dmm @@ -2,6 +2,13 @@ "aa" = ( /turf/template_noop, /area/template_noop) +"ab" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "ac" = ( /obj/structure/sign/warning/radiation, /turf/closed/wall/mineral/titanium, @@ -13,6 +20,16 @@ "ae" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) +"af" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + name = "Hyperfractal Gigashuttle" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "ag" = ( /obj/structure/closet/radiation{ anchored = 1 @@ -33,6 +50,14 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) +"ak" = ( +/obj/machinery/door/airlock/external{ + name = "Emergency Launch Catwalk"; + req_access_txt = "10;13" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/escape) "al" = ( /obj/machinery/shower{ dir = 8 @@ -101,12 +126,6 @@ "ax" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"aA" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aB" = ( /obj/machinery/power/supermatter_crystal/shard/hugbox/fakecrystal, /turf/open/floor/plating, @@ -125,26 +144,10 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"aF" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "Hyperfractal Gigashuttle" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aI" = ( /obj/structure/sign/warning/radiation, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"aL" = ( -/obj/machinery/door/airlock/external{ - name = "Emergency Launch Catwalk"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aM" = ( /turf/open/floor/plating/airless, /area/shuttle/escape) @@ -348,9 +351,9 @@ aa aa aa aw -aA +ab ac -aF +af aw aa aa @@ -472,7 +475,7 @@ aB bf at at -aL +ak aM aM hD @@ -588,9 +591,9 @@ aa aa aa aw -aA +ab ac -aA +ab aw aa aa diff --git a/_maps/shuttles/emergency_syndicate.dmm b/_maps/shuttles/emergency_syndicate.dmm index 6e76bbc5f6..85048b9d89 100644 --- a/_maps/shuttles/emergency_syndicate.dmm +++ b/_maps/shuttles/emergency_syndicate.dmm @@ -116,7 +116,6 @@ id = "shuttleshutters"; name = "Bridge Blast Shutters"; pixel_x = -26; - pixel_y = 0; req_access_txt = "19" }, /obj/effect/turf_decal/tile/neutral{ @@ -199,8 +198,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -309,8 +307,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -408,7 +405,6 @@ id = "smindicate"; name = "external door control"; pixel_x = 26; - pixel_y = 0; req_access_txt = "150" }, /obj/structure/fans/tiny, @@ -420,8 +416,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -878,6 +873,7 @@ /area/shuttle/escape) "bz" = ( /obj/machinery/door/airlock/hatch, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "bA" = ( @@ -991,6 +987,7 @@ /obj/docking_port/mobile/emergency{ name = "Syndicate Battlecruiser" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "bL" = ( @@ -1064,10 +1061,7 @@ /area/shuttle/escape) "bR" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/storage/box/drinkingglasses, /obj/item/storage/box/drinkingglasses{ pixel_x = -3; pixel_y = 3 @@ -1499,8 +1493,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -1606,8 +1599,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -1634,10 +1626,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/storage/toolbox/emergency{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/syndicate{ pixel_x = -3; pixel_y = 3 @@ -1717,38 +1706,31 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/retractor, -/obj/item/hemostat, -/obj/item/cautery, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, +/obj/item/storage/backpack/duffelbag/med/surgery, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "cI" = ( /obj/structure/table/reinforced, -/obj/item/circular_saw, -/obj/item/surgicaldrill, -/obj/item/scalpel{ - pixel_y = 15 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "cJ" = ( diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm index c2707b19e9..68434a3a66 100644 --- a/_maps/shuttles/emergency_wabbajack.dmm +++ b/_maps/shuttles/emergency_wabbajack.dmm @@ -119,12 +119,7 @@ /area/shuttle/escape) "ar" = ( /obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/crowbar, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "as" = ( @@ -166,6 +161,7 @@ name = "Emergency Shuttle Airlock"; req_access_txt = "2" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "ay" = ( @@ -206,22 +202,23 @@ /obj/docking_port/mobile/emergency{ name = "NT Lepton Violet" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/shuttle/escape) "aF" = ( -/obj/machinery/door/window/eastleft, -/turf/open/floor/mineral/titanium, +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, /area/shuttle/escape) "aG" = ( +/obj/machinery/sleeper{ + dir = 8 + }, /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, -/obj/structure/table/glass, -/obj/item/storage/box/syringes{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/beakers, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "aH" = ( @@ -244,72 +241,36 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aK" = ( -/obj/machinery/sleeper{ - dir = 4 +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 }, +/obj/item/storage/firstaid/fire, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "aL" = ( -/obj/structure/table/reinforced, -/turf/open/floor/mineral/titanium, +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "aM" = ( -/obj/machinery/chem_dispenser, -/obj/machinery/light/small{ +/obj/structure/chair/comfy/shuttle{ dir = 4 }, -/turf/open/floor/mineral/titanium/white, -/area/shuttle/escape) -"aN" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/firstaid/regular{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/wrench/medical, -/turf/open/floor/mineral/titanium/white, -/area/shuttle/escape) -"aO" = ( -/turf/open/floor/plating, -/area/shuttle/escape) -"aP" = ( -/obj/structure/chair/office/light{ +/obj/structure/window/reinforced{ dir = 8 }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aQ" = ( -/obj/machinery/chem_heater, -/turf/open/floor/mineral/titanium/white, -/area/shuttle/escape) -"aR" = ( -/obj/machinery/chem_master, -/turf/open/floor/mineral/titanium/white, -/area/shuttle/escape) -"aS" = ( -/obj/machinery/door/window/eastright, -/turf/open/floor/mineral/titanium, +/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aT" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/structure/table/optable, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "aU" = ( /obj/machinery/door/airlock/public/glass, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aV" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -517,21 +478,21 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) +"cF" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) "ji" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"Ec" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/white, -/area/shuttle/escape) "MK" = ( /obj/structure/chair/comfy/shuttle, /turf/open/floor/mineral/titanium/blue, @@ -553,9 +514,9 @@ as as as ab -aV +aF ab -aV +aF ab ab ab @@ -644,9 +605,9 @@ ab ab ab aq -aK -aN -aK +aM +aM +aM aq ab ji @@ -673,10 +634,10 @@ aq aq bn aH -ab -ab -ab -ab +as +as +as +as be bf bg @@ -691,11 +652,11 @@ ao au az ab -aF -Ec aq -Ec -aS +aJ +aJ +aJ +aq as aI aI @@ -716,9 +677,9 @@ av aA ab aq -aL -aO -aL +aM +aM +aM aq aU aq @@ -741,7 +702,7 @@ aq aC aq aq -aP +aq aq aq as @@ -764,9 +725,9 @@ aw aw ab aG -aM -aQ -aR +aK +cF +aL aT as MK diff --git a/_maps/shuttles/ferry_fancy.dmm b/_maps/shuttles/ferry_fancy.dmm index 432791c936..a5705ad37f 100644 --- a/_maps/shuttles/ferry_fancy.dmm +++ b/_maps/shuttles/ferry_fancy.dmm @@ -11,6 +11,7 @@ /area/shuttle/transport) "d" = ( /obj/machinery/door/airlock/external, +/obj/structure/fans/tiny, /turf/open/floor/pod/dark, /area/shuttle/transport) "e" = ( @@ -74,6 +75,7 @@ preferred_direction = 4; width = 5 }, +/obj/structure/fans/tiny, /turf/open/floor/pod/light, /area/shuttle/transport) "o" = ( @@ -98,6 +100,7 @@ /area/shuttle/transport) "r" = ( /obj/machinery/door/airlock/external, +/obj/structure/fans/tiny, /turf/open/floor/pod/light, /area/shuttle/transport) diff --git a/_maps/templates/hilbertshotel.dmm b/_maps/templates/hilbertshotel.dmm new file mode 100644 index 0000000000..4e4d8f8267 --- /dev/null +++ b/_maps/templates/hilbertshotel.dmm @@ -0,0 +1,545 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/bluespace, +/area/hilbertshotel) +"b" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotel) +"c" = ( +/obj/machinery/jukebox{ + req_access = null + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"d" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"e" = ( +/obj/structure/table/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"f" = ( +/obj/structure/table/wood, +/obj/structure/showcase/machinery/tv, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"g" = ( +/obj/structure/dresser, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"h" = ( +/obj/structure/table/wood/fancy, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"i" = ( +/obj/structure/table/wood/fancy, +/obj/structure/mirror{ + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"j" = ( +/obj/structure/table/wood/fancy, +/obj/item/flashlight/lamp/green, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"k" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"l" = ( +/obj/structure/table/wood/poker, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"m" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"n" = ( +/obj/effect/landmark/xmastree, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"o" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"p" = ( +/obj/structure/mineral_door/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"q" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"r" = ( +/obj/structure/closet/cabinet{ + anchored = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"s" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/grown/poppy, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"t" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"u" = ( +/obj/structure/mineral_door/paperframe, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"v" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"w" = ( +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"x" = ( +/obj/structure/curtain, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"y" = ( +/obj/machinery/door/window/northleft, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"z" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"A" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"B" = ( +/obj/structure/chair/stool/bar, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"C" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"D" = ( +/obj/machinery/light_switch{ + pixel_x = 32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"E" = ( +/obj/structure/table/reinforced, +/obj/item/soap/deluxe, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"F" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"G" = ( +/obj/machinery/light_switch{ + pixel_x = -32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"H" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"I" = ( +/turf/closed/indestructible/hoteldoor, +/area/hilbertshotel) +"J" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"K" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"L" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"M" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"N" = ( +/obj/structure/table/reinforced, +/obj/item/soap/deluxe, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"O" = ( +/obj/item/bikehorn/rubberducky, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"P" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"Q" = ( +/obj/machinery/smartfridge/food, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"R" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"S" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"T" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"U" = ( +/obj/structure/table/reinforced, +/obj/structure/sink/kitchen, +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"V" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/three_course_meal, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +b +b +b +I +b +b +b +b +b +b +b +a +"} +(3,1,1) = {" +a +b +d +d +k +d +d +t +d +y +t +H +z +b +a +"} +(4,1,1) = {" +a +b +e +d +l +o +d +d +B +z +d +d +z +b +a +"} +(5,1,1) = {" +a +b +f +d +l +o +d +d +B +V +d +d +U +b +a +"} +(6,1,1) = {" +a +b +e +d +l +o +d +d +B +z +d +d +z +b +a +"} +(7,1,1) = {" +a +b +c +d +m +d +D +K +v +z +M +Q +z +b +a +"} +(8,1,1) = {" +a +b +b +b +b +p +b +b +b +b +b +b +b +b +a +"} +(9,1,1) = {" +a +b +g +d +t +d +G +u +w +A +N +A +E +b +a +"} +(10,1,1) = {" +a +b +h +d +d +d +d +b +w +w +w +w +w +b +a +"} +(11,1,1) = {" +a +b +i +d +n +d +J +b +L +w +R +w +P +b +a +"} +(12,1,1) = {" +a +b +h +d +d +d +r +b +x +F +S +T +x +b +a +"} +(13,1,1) = {" +a +b +d +d +d +d +d +b +w +w +w +w +w +b +a +"} +(14,1,1) = {" +a +b +d +j +q +q +s +b +w +C +O +C +w +b +a +"} +(15,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/templates/hilbertshotelempty.dmm b/_maps/templates/hilbertshotelempty.dmm new file mode 100644 index 0000000000..a0482c93ba --- /dev/null +++ b/_maps/templates/hilbertshotelempty.dmm @@ -0,0 +1,289 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/bluespace, +/area/hilbertshotel) +"b" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotel) +"c" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"d" = ( +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"e" = ( +/turf/closed/indestructible/hoteldoor, +/area/hilbertshotel) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +b +b +b +e +b +b +b +b +b +b +b +a +"} +(3,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(4,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(5,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(6,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(7,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(8,1,1) = {" +a +b +b +b +b +c +b +b +b +b +b +b +b +b +a +"} +(9,1,1) = {" +a +b +c +c +c +c +c +c +d +d +d +d +d +b +a +"} +(10,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(11,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(12,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(13,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(14,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(15,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/templates/hilbertshotellore.dmm b/_maps/templates/hilbertshotellore.dmm new file mode 100644 index 0000000000..f6be66bd06 --- /dev/null +++ b/_maps/templates/hilbertshotellore.dmm @@ -0,0 +1,639 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space/bluespace, +/area/hilbertshotel) +"ab" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotel) +"ac" = ( +/obj/structure/table/wood/fancy, +/obj/structure/mirror{ + broken = 1; + desc = "Oh no, seven years of bad luck!"; + icon_state = "mirror_broke"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ad" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ae" = ( +/obj/structure/table/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"af" = ( +/obj/structure/table/wood, +/obj/structure/showcase/machinery/tv, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ag" = ( +/obj/structure/dresser, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ah" = ( +/obj/structure/table/wood/fancy, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ai" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aj" = ( +/obj/structure/table/wood/fancy, +/obj/item/flashlight/lamp/green, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ak" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"al" = ( +/obj/structure/table/wood/poker, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"am" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"an" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ap" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aq" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ar" = ( +/obj/structure/mineral_door/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"as" = ( +/turf/closed/indestructible/hoteldoor, +/area/hilbertshotel) +"at" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"au" = ( +/obj/machinery/light_switch{ + pixel_x = -32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"av" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aw" = ( +/obj/structure/closet/cabinet{ + anchored = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ax" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ay" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"az" = ( +/obj/structure/mineral_door/paperframe, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aA" = ( +/obj/structure/chair/stool/bar, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aB" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aC" = ( +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aD" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aE" = ( +/obj/structure/curtain, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aF" = ( +/obj/machinery/door/window/northleft, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aG" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aH" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aI" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aJ" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aK" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aM" = ( +/obj/structure/table/wood/poker, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aN" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aO" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aP" = ( +/obj/item/bikehorn/rubberducky, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aQ" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aR" = ( +/obj/machinery/smartfridge/food, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aS" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aT" = ( +/obj/structure/table/reinforced, +/obj/structure/sink/kitchen, +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aU" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aV" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aW" = ( +/obj/machinery/jukebox{ + req_access = null + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aX" = ( +/obj/machinery/light_switch{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aY" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/vomit, +/obj/effect/mob_spawn/human/doctorhilbert, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bb" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bc" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bd" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"be" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bg" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bh" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/soap/homemade{ + name = "used soap" + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bi" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bj" = ( +/obj/structure/table/reinforced, +/obj/item/soap/homemade{ + name = "used soap" + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bk" = ( +/obj/structure/table/reinforced, +/obj/item/analyzer/hilbertsanalyzer, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bl" = ( +/obj/structure/table/reinforced, +/obj/item/paper/crumpled/bloody/docsdeathnote, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +ab +ab +ab +ab +ab +as +ab +ab +ab +ab +ab +ab +ab +aa +"} +(3,1,1) = {" +aa +ab +at +aL +ak +ad +aL +an +ad +aF +be +aQ +aG +ab +aa +"} +(4,1,1) = {" +aa +ab +ae +ad +al +aq +ad +ad +aA +aH +ad +aL +aG +ab +aa +"} +(5,1,1) = {" +aa +ab +af +ad +ai +aq +aL +ad +aY +bl +ad +aL +aT +ab +aa +"} +(6,1,1) = {" +aa +ab +ae +ad +aM +aq +ad +ad +aA +bk +bf +bf +aG +ab +aa +"} +(7,1,1) = {" +aa +ab +aW +aL +am +ad +aX +ay +aB +aG +bg +aR +aG +ab +aa +"} +(8,1,1) = {" +aa +ab +ab +ab +ab +ar +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(9,1,1) = {" +aa +ab +ag +ad +an +ad +au +az +aC +bb +bh +aI +bj +ab +aa +"} +(10,1,1) = {" +aa +ab +ah +ad +aL +aL +ad +ab +aZ +aZ +aC +aZ +aZ +ab +aa +"} +(11,1,1) = {" +aa +ab +ac +ad +ad +aL +av +ab +aD +aC +aN +bi +aV +ab +aa +"} +(12,1,1) = {" +aa +ab +ah +ad +aL +ad +aw +ab +aE +aJ +aO +aS +aE +ab +aa +"} +(13,1,1) = {" +aa +ab +ad +ad +aL +ad +ad +ab +aC +bc +aZ +aZ +aC +ab +aa +"} +(14,1,1) = {" +aa +ab +ax +aj +ap +aU +ah +ab +ba +bd +aP +aK +aC +ab +aa +"} +(15,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/templates/hilbertshotelstorage.dmm b/_maps/templates/hilbertshotelstorage.dmm new file mode 100644 index 0000000000..756e2e5155 --- /dev/null +++ b/_maps/templates/hilbertshotelstorage.dmm @@ -0,0 +1,23 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotelstorage) +"b" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotelstorage) + +(1,1,1) = {" +a +a +a +"} +(2,1,1) = {" +a +b +a +"} +(3,1,1) = {" +a +a +a +"} diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 7be3533d47..4052dce40d 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -105,6 +105,7 @@ #define MATRIXED 22 //if icon is color matrix'd #define SKINTONE 23 //uses skin tones #define HORNCOLOR 24 +#define WINGCOLOR 25 //organ slots #define ORGAN_SLOT_BRAIN "brain" @@ -130,6 +131,11 @@ #define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun" #define ORGAN_SLOT_TAIL "tail" #define ORGAN_SLOT_PENIS "penis" +#define ORGAN_SLOT_WOMB "womb" +#define ORGAN_SLOT_VAGINA "vagina" +#define ORGAN_SLOT_TESTICLES "testicles" +#define ORGAN_SLOT_BREASTS "breasts" + ////organ defines #define STANDARD_ORGAN_THRESHOLD 100 diff --git a/code/__DEFINES/__513_compatibility.dm b/code/__DEFINES/__513_compatibility.dm new file mode 100644 index 0000000000..12577fb68b --- /dev/null +++ b/code/__DEFINES/__513_compatibility.dm @@ -0,0 +1,32 @@ + +#if DM_VERSION < 513 + +#define ismovableatom(A) (istype(A, /atom/movable)) + +#define islist(L) (istype(L, /list)) + +#define CLAMP01(x) (CLAMP(x, 0, 1)) + +#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) + +#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) + +#define TAN(x) (sin(x) / cos(x)) + +#define arctan(x) (arcsin(x/sqrt(1+x*x))) + +////////////////////////////////////////////////// + +#else + +#define ismovableatom(A) ismovable(A) + +#define CLAMP01(x) clamp(x, 0, 1) + +#define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) + +#define TAN(x) tan(x) + +#define ATAN2(x, y) arctan(x, y) + +#endif diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index c9d545fc03..c2021a86f2 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -6,7 +6,7 @@ #define ACCESS_MORGUE 6 #define ACCESS_TOX 7 //R&D department, R&D console, burn chamber on some maps #define ACCESS_TOX_STORAGE 8 //Toxins storage, burn chamber on some maps -#define ACCESS_GENETICS 9 +#define ACCESS_GENETICS 9 #define ACCESS_ENGINE 10 //Engineering area, power monitor, power flow control console #define ACCESS_ENGINE_EQUIP 11 //APCs, EngiVend/YouTool, engineering equipment lockers #define ACCESS_MAINT_TUNNELS 12 @@ -64,6 +64,8 @@ #define ACCESS_WEAPONS 66 //Weapon authorization for secbots #define ACCESS_NETWORK 67 //NTnet diagnostics/monitoring software #define ACCESS_CLONING 68 //Cloning room and clone pod ejection +#define ACCESS_ENTER_GENPOP 69 +#define ACCESS_LEAVE_GENPOP 70 //BEGIN CENTCOM ACCESS /*Should leave plenty of room if we need to add more access levels. diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index d966c73d23..f557da49ba 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -18,6 +18,23 @@ #define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, border=0, color="#04080F") //organ defines +#define VAGINA_LAYER_INDEX 1 +#define TESTICLES_LAYER_INDEX 2 +#define GENITAL_LAYER_INDEX 3 +#define PENIS_LAYER_INDEX 4 + +#define GENITAL_LAYER_INDEX_LENGTH 4 //keep it updated with each new index added, thanks. + +//genital flags +#define GENITAL_BLACKLISTED (1<<0) //for genitals that shouldn't be added to GLOB.genitals_list. +#define GENITAL_INTERNAL (1<<1) +#define GENITAL_HIDDEN (1<<2) +#define GENITAL_THROUGH_CLOTHES (1<<3) +#define GENITAL_FUID_PRODUCTION (1<<4) +#define CAN_MASTURBATE_WITH (1<<5) +#define MASTURBATE_LINKED_ORGAN (1<<6) //used to pass our mission to the linked organ +#define CAN_CLIMAX_WITH (1<<7) + #define COCK_SIZE_MIN 1 #define COCK_SIZE_MAX 20 @@ -50,27 +67,6 @@ #define BREASTS_VOLUME_BASE 50 //base volume for the reagents in the breasts, multiplied by the size then multiplier. 50u for A cups, 850u for HH cups. #define BREASTS_VOLUME_MULT 1 //global multiplier for breast volume. -#define BREASTS_SIZE_FLAT 0 -#define BREASTS_SIZE_A 1 -#define BREASTS_SIZE_AA 1.5 -#define BREASTS_SIZE_B 2 -#define BREASTS_SIZE_BB 2.5 -#define BREASTS_SIZE_C 3 -#define BREASTS_SIZE_CC 3.5 -#define BREASTS_SIZE_D 4 -#define BREASTS_SIZE_DD 4.5 -#define BREASTS_SIZE_E 5 -#define BREASTS_SIZE_EE 5.5 -#define BREASTS_SIZE_F 6 -#define BREASTS_SIZE_FF 6.5 -#define BREASTS_SIZE_G 7 -#define BREASTS_SIZE_GG 7.5//Are these even real sizes? The world may never know because cup sizes make no fucking sense. -#define BREASTS_SIZE_H 8 -#define BREASTS_SIZE_HH 8.5//Largest size, ever. For now. - -#define BREASTS_SIZE_MIN BREASTS_SIZE_A -#define BREASTS_SIZE_DEF BREASTS_SIZE_C -#define BREASTS_SIZE_MAX BREASTS_SIZE_HH #define MILK_RATE 5 #define MILK_RATE_MULT 1 @@ -93,12 +89,6 @@ #define isgenital(A) (istype(A, /obj/item/organ/genital)) #define isborer(A) (istype(A, /mob/living/simple_animal/borer)) -#define isipcperson(A) (is_species(A, /datum/species/ipc)) -#define ismammal(A) (is_species(A, /datum/species/mammal)) -#define isavian(A) (is_species(A, /datum/species/avian)) -#define isaquatic(A) (is_species(A, /datum/species/aquatic)) -#define isinsect(A) (is_species(A, /datum/species/insect)) -#define isxenoperson(A) (is_species(A, /datum/species/xeno)) #define CITADEL_MENTOR_OOC_COLOUR "#224724" diff --git a/code/__DEFINES/cleaning.dm b/code/__DEFINES/cleaning.dm index c4db590e90..6049fd7918 100644 --- a/code/__DEFINES/cleaning.dm +++ b/code/__DEFINES/cleaning.dm @@ -5,8 +5,3 @@ #define CLEAN_STRONG 4 // Industrial strength #define CLEAN_IMPRESSIVE 5 // Cleaning strong enough your granny would be proud #define CLEAN_GOD 6 // Cleans things spotless down to the atomic structure - -//How strong things have to be to wipe forensic evidence... -#define CLEAN_STRENGTH_FINGERPRINTS CLEAN_IMPRESSIVE -#define CLEAN_STRENGTH_BLOOD CLEAN_WEAK -#define CLEAN_STRENGTH_FIBERS CLEAN_IMPRESSIVE diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index 47b00e67f7..2f2f94413b 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -8,6 +8,7 @@ GLOBAL_VAR_INIT(clockwork_construction_value, 0) //The total value of all structures built by the clockwork cult GLOBAL_VAR_INIT(clockwork_vitality, 0) //How much Vitality is stored, total GLOBAL_VAR_INIT(clockwork_power, 0) //How many watts of power are globally available to the clockwork cult +GLOBAL_VAR_INIT(neovgre_exists, 0) //Does neovgre exist? GLOBAL_LIST_EMPTY(all_clockwork_objects) //All clockwork items, structures, and effects in existence GLOBAL_LIST_EMPTY(all_clockwork_mobs) //All clockwork SERVANTS (not creatures) in existence diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index e31d2a278e..3664da4a5d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -104,8 +104,7 @@ #define SHOVE_KNOCKDOWN_HUMAN 30 #define SHOVE_KNOCKDOWN_TABLE 30 #define SHOVE_KNOCKDOWN_COLLATERAL 10 -//Shove slowdown -#define SHOVE_SLOWDOWN_ID "shove_slowdown" +//for the shove slowdown, see __DEFINES/movespeed_modification.dm #define SHOVE_SLOWDOWN_LENGTH 30 #define SHOVE_SLOWDOWN_STRENGTH 0.85 //multiplier //Shove disarming item list diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index c2482f6fbf..7ed8ee558b 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -2,11 +2,8 @@ #define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) ) -//shorthand -#define GET_COMPONENT_FROM(varname, path, target) var##path/##varname = ##target.GetComponent(##path) -#define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src) - #define COMPONENT_INCOMPATIBLE 1 +#define COMPONENT_NOTRANSFER 2 // How multiple components of the exact same type are handled in the same datum @@ -129,7 +126,7 @@ #define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize() (can_reenter_corpse) #define COMPONENT_BLOCK_GHOSTING 1 #define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj -#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (magic, holy, protection_sources) +#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) #define COMPONENT_BLOCK_MAGIC 1 #define COMSIG_MOB_HUD_CREATED "mob_hud_created" //from base of mob/create_mob_hud(): () #define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" //from base of @@ -225,14 +222,18 @@ #define COMSIG_TURF_MAKE_DRY "make_turf_try" //(max_strength, immediate, duration_decrease = INFINITY): Returns bool. #define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength) +//Blood color +#define COMSIG_BLOOD_COLOR "blood_DNA_to_color" //RGB blood stuff //Food #define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) +//Gibs +#define COMSIG_GIBS_STREAK "gibs_streak" // from base of /obj/effect/decal/cleanable/blood/gibs/streak(): (list/directions, list/diseases) + //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. -#define COMSIG_INCREASE_SANITY "decrease_sanity" //Called when you want to increase sanity from anywhere in the code. -#define COMSIG_DECREASE_SANITY "increase_sanity" //Same as above but to decrease sanity instead. +#define COMSIG_MODIFY_SANITY "modify_sanity" //Called when you want to increase or decrease sanity from anywhere in the code. //NTnet #define COMSIG_COMPONENT_NTNET_RECEIVE "ntnet_receive" //called on an object by its NTNET connection component on receive. (sending_id(number), sending_netname(text), data(datum/netdata)) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index d9b30bf0e3..9e8a4f71c2 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -58,6 +58,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define GROUND (1<<0) #define FLYING (1<<1) #define VENTCRAWLING (1<<2) +#define FLOATING (1<<3) //Fire and Acid stuff, for resistance_flags #define LAVA_PROOF (1<<0) diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm index ef96b83cc8..16d763606b 100644 --- a/code/__DEFINES/footsteps.dm +++ b/code/__DEFINES/footsteps.dm @@ -15,6 +15,15 @@ //misc footstep sounds #define FOOTSTEP_GENERIC_HEAVY "heavy" +#define FOOTPRINT_SHOE "shoe" +#define FOOTPRINT_FOOT "foot" +#define FOOTPRINT_PAW "paw" +#define FOOTPRINT_CLAW "claw" +#define FOOTPRINT_WHEEL "wheels" +#define FOOTPRINT_TRAIL "trails_" +#define FOOTPRINT_SNAKE "snake" +#define FOOTPRINT_DRAG "drag" + /* id = list( diff --git a/code/__DEFINES/forensics.dm b/code/__DEFINES/forensics.dm deleted file mode 100644 index bb512edcde..0000000000 --- a/code/__DEFINES/forensics.dm +++ /dev/null @@ -1,2 +0,0 @@ -#define IF_HAS_BLOOD_DNA(__thing) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA)) -#define IF_HAS_BLOOD_DNA_AND(__thing, __conditions...) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA) && (##__conditions)) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 24d381d1a8..632e4adef9 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -28,7 +28,9 @@ #define ITEM_SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. #define ITEM_SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. #define ITEM_SLOT_NECK (1<<13) -#define ITEM_SLOT_SUITSTORE (1<<14) +#define ITEM_SLOT_HANDS (1<<14) +#define ITEM_SLOT_BACKPACK (1<<15) +#define ITEM_SLOT_SUITSTORE (1<<16) //SLOTS #define SLOT_BACK 1 @@ -86,6 +88,10 @@ . = ITEM_SLOT_ICLOTHING if(SLOT_L_STORE, SLOT_R_STORE) . = ITEM_SLOT_POCKET + if(SLOT_HANDS) + . = ITEM_SLOT_HANDS + if(SLOT_IN_BACKPACK) + . = ITEM_SLOT_BACKPACK if(SLOT_S_STORE) . = ITEM_SLOT_SUITSTORE @@ -237,3 +243,6 @@ GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( //Internals checker #define GET_INTERNAL_SLOTS(C) list(C.head, C.wear_mask) + +//Slots that won't trigger humans' update_genitals() on equip(). +GLOBAL_LIST_INIT(no_genitals_update_slots, list(SLOT_L_STORE, SLOT_R_STORE, SLOT_S_STORE, SLOT_IN_BACKPACK, SLOT_LEGCUFFED, SLOT_HANDCUFFED, SLOT_HANDS, SLOT_GENERC_DEXTROUS_STORAGE)) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 1709714904..0dee8bd1e8 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -1,11 +1,7 @@ // simple is_type and similar inline helpers -#define islist(L) (istype(L, /list)) - #define in_range(source, user) (get_dist(source, user) <= 1 && (get_step(source, 0)?:z) == (get_step(user, 0)?:z)) -#define ismovableatom(A) (istype(A, /atom/movable)) - #define isatom(A) (isloc(A)) #define isweakref(D) (istype(D, /datum/weakref)) @@ -61,6 +57,15 @@ #define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) ) #define isdwarf(A) (is_species(A, /datum/species/dwarf)) +// Citadel specific species +#define isipcperson(A) (is_species(A, /datum/species/ipc)) +#define ismammal(A) (is_species(A, /datum/species/mammal)) +#define isavian(A) (is_species(A, /datum/species/avian)) +#define isaquatic(A) (is_species(A, /datum/species/aquatic)) +#define isinsect(A) (is_species(A, /datum/species/insect)) +#define isxenoperson(A) (is_species(A, /datum/species/xeno)) +#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime)) + //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) @@ -176,6 +181,8 @@ GLOBAL_LIST_INIT(heavyfootmob, typecacheof(list( #define iscameramob(A) (istype(A, /mob/camera)) +#define isaicamera(A) (istype(A, /mob/camera/aiEye)) + #define iseminence(A) (istype(A, /mob/camera/eminence)) //Footstep helpers @@ -235,4 +242,4 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) -#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) +#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) \ No newline at end of file diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 179f501fd1..3c0921fa01 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -92,3 +92,7 @@ require only minor tweaks. #define PLACE_SAME_Z "same" #define PLACE_SPACE_RUIN "space" #define PLACE_LAVA_RUIN "lavaland" + + +//Map type stuff. +#define MAP_TYPE_STATION "station" diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index 5bce51293f..ad93dd2d54 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -16,7 +16,6 @@ #define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(TICK_USAGE_REAL - starting_tickusage)) #define PERCENT(val) (round((val)*100, 0.1)) -#define CLAMP01(x) (CLAMP(x, 0, 1)) //time of day but automatically adjusts to the server going into the next day within the same round. //for when you need a reliable time number that doesn't depend on byond time. @@ -30,17 +29,12 @@ // round() acts like floor(x, 1) by default but can't handle other values #define FLOOR(x, y) ( round((x) / (y)) * (y) ) -#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) - // Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive #define WRAP(val, min, max) ( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ) // Real modulus that handles decimals #define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) ) -// Tangent -#define TAN(x) (sin(x) / cos(x)) - // Cotangent #define COT(x) (1 / TAN(x)) @@ -50,8 +44,6 @@ // Cosecant #define CSC(x) (1 / sin(x)) -#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) - // Greatest Common Divisor - Euclid's algorithm /proc/Gcd(a, b) return b ? Gcd(b, (a) % (b)) : a @@ -207,4 +199,4 @@ #define LORENTZ_CUMULATIVE_DISTRIBUTION(x, y, s) ( (1/PI)*TORADIANS(arctan((x-y)/s)) + 1/2 ) #define RULE_OF_THREE(a, b, x) ((a*x)/b) -// ) +// ) \ No newline at end of file diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index bccf1f28dd..77487ca839 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -51,24 +51,25 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS -#define MUTATIONS_LAYER 31 //mutations. Tk headglows, cold resistance glow, etc -#define GENITALS_BEHIND_LAYER 30 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer -#define BODY_BEHIND_LAYER 29 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 28 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define MARKING_LAYER 27 //Matrixed body markings because clashing with snouts? -#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define GENITALS_FRONT_LAYER 25 //Draws some genitalia above clothes and the TAUR body if need be. -#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup) -#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define DAMAGE_LAYER 22 //damage indicators (cuts and burns) -#define UNIFORM_LAYER 21 -#define ID_LAYER 20 +#define MUTATIONS_LAYER 32 //mutations. Tk headglows, cold resistance glow, etc +#define GENITALS_BEHIND_LAYER 31 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer +#define BODY_BEHIND_LAYER 30 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 29 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define MARKING_LAYER 28 //Matrixed body markings because clashing with snouts? +#define BODY_ADJ_LAYER 27 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define GENITALS_FRONT_LAYER 26 //Draws some genitalia above clothes and the TAUR body if need be. +#define BODY_LAYER 25 //underwear, undershirts, socks, eyes, lips(makeup) +#define FRONT_MUTATIONS_LAYER 24 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define DAMAGE_LAYER 23 //damage indicators (cuts and burns) +#define UNIFORM_LAYER 22 +#define ID_LAYER 21 #define HANDS_PART_LAYER 20 #define SHOES_LAYER 19 #define GLOVES_LAYER 18 #define EARS_LAYER 17 #define BODY_TAUR_LAYER 16 #define SUIT_LAYER 15 +#define GENITALS_EXPOSED_LAYER 14 #define GLASSES_LAYER 13 #define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt? #define SUIT_STORE_LAYER 11 @@ -82,7 +83,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define HANDS_LAYER 3 #define BODY_FRONT_LAYER 2 #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 30 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 32 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" @@ -171,12 +172,22 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_LOSS_IN_SPREAD 20 //Bloody shoe blood states -#define BLOOD_STATE_HUMAN "blood" -#define BLOOD_STATE_XENO "xeno" +#define BLOOD_STATE_BLOOD "blood" #define BLOOD_STATE_OIL "oil" #define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" #define BLOOD_AMOUNT_PER_DECAL 20 +//Blood Decal Colors +#define BLOOD_COLOR_HUMAN "#dc0000" +#define BLOOD_COLOR_XENO "#94a83c" +#define BLOOD_COLOR_OIL "#301d02" +#define BLOOD_COLOR_SYNTHETIC "#3f48aa" +#define BLOOD_COLOR_SLIME "#00ff90" +#define BLOOD_COLOR_LIZARD "#db004D" +#define BLOOD_COLOR_UNIVERSAL "#db3300" +#define BLOOD_COLOR_BUG "#a37c0f" + + //suit sensors: sensor_mode defines #define SENSOR_OFF 0 diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index 4336ad28f7..50e1a10fa1 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -1,12 +1,19 @@ #define MOVESPEED_DATA_INDEX_PRIORITY 1 #define MOVESPEED_DATA_INDEX_FLAGS 2 #define MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN 3 +#define MOVESPEED_DATA_INDEX_MOVETYPE 4 +#define MOVESPEED_DATA_INDEX_BL_MOVETYPE 5 +#define MOVESPEED_DATA_INDEX_CONFLICT 6 -#define MOVESPEED_DATA_INDEX_MAX 3 +#define MOVESPEED_DATA_INDEX_MAX 6 //flags #define IGNORE_NOSLOW (1 << 0) +//conflict types + +#define MOVE_CONFLICT_JETPACK "JETPACK" + //ids #define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN" @@ -16,15 +23,29 @@ #define MOVESPEED_ID_SLIME_HEALTHMOD "SLIME_HEALTH_MODIFIER" #define MOVESPEED_ID_SLIME_TEMPMOD "SLIME_TEMPERATURE_MODIFIER" +#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS" + +#define MOVESPEED_ID_TARANTULA_WEB "TARANTULA_WEB" + #define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD" #define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT" #define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED" +#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT" + +#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB" + +#define MOVESPEED_ID_TARFOOT "TARFOOT" + +#define MOVESPEED_ID_SEPIA "SEPIA" + #define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD" #define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD" #define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD" +#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES" + #define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER" #define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER" @@ -32,5 +53,18 @@ #define MOVESPEED_ID_SANITY "MOOD_SANITY" +#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD" + #define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG" -#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY" \ No newline at end of file +#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY" + +#define MOVESPEED_ID_TASED_STATUS "TASED" + +#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER" + +#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER" +#define MOVESPEED_ID_JETPACK "JETPACK" + +#define MOVESPEED_ID_SHOVE "SHOVE" + +#define MOVESPEED_ID_MKULTRA "MKULTRA" \ No newline at end of file diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 1917d73a1b..1885dd2621 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -2,43 +2,45 @@ #define EMAGGED (1<<0) -#define IN_USE (1<<1) // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! -#define CAN_BE_HIT (1<<2) //can this be bludgeoned by items? -#define BEING_SHOCKED (1<<3) // Whether this thing is currently (already) being shocked by a tesla -#define DANGEROUS_POSSESSION (1<<4) //Admin possession yes/no -#define ON_BLUEPRINTS (1<<5) //Are we visible on the station blueprints at roundstart? -#define UNIQUE_RENAME (1<<6) // can you customize the description/name of the thing? +#define IN_USE (1<<1) //If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! +#define CAN_BE_HIT (1<<2) //can this be bludgeoned by items? +#define BEING_SHOCKED (1<<3) //Whether this thing is currently (already) being shocked by a tesla +#define DANGEROUS_POSSESSION (1<<4) //Admin possession yes/no +#define ON_BLUEPRINTS (1<<5) //Are we visible on the station blueprints at roundstart? +#define UNIQUE_RENAME (1<<6) //can you customize the description/name of the thing? #define USES_TGUI (1<<7) //put on things that use tgui on ui_interact instead of custom/old UI. #define FROZEN (1<<8) -#define SHOVABLE_ONTO (1<<9) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check. +#define SHOVABLE_ONTO (1<<9) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check. // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support // Flags for the item_flags var on /obj/item #define BEING_REMOVED (1<<0) -#define IN_INVENTORY (1<<1) //is this item equipped into an inventory slot or hand of a mob? used for tooltips -#define FORCE_STRING_OVERRIDE (1<<2) // used for tooltips -#define NEEDS_PERMIT (1<<3) //Used by security bots to determine if this item is safe for public use. +#define IN_INVENTORY (1<<1) //is this item equipped into an inventory slot or hand of a mob? used for tooltips +#define FORCE_STRING_OVERRIDE (1<<2) //used for tooltips +#define NEEDS_PERMIT (1<<3) //Used by security bots to determine if this item is safe for public use. #define SLOWS_WHILE_IN_HAND (1<<4) -#define NO_MAT_REDEMPTION (1<<5) // Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. -#define DROPDEL (1<<6) // When dropped, it calls qdel on itself -#define NOBLUDGEON (1<<7) // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define ABSTRACT (1<<8) // for all things that are technically items but used for various different stuff -#define IMMUTABLE_SLOW (1<<9) //When players should not be able to change the slowdown of the item (Speed potions, ect) +#define NO_MAT_REDEMPTION (1<<5) //Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. +#define DROPDEL (1<<6) //When dropped, it calls qdel on itself +#define NOBLUDGEON (1<<7) //when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() +#define ABSTRACT (1<<8) //for all things that are technically items but used for various different stuff +#define IMMUTABLE_SLOW (1<<9) //When players should not be able to change the slowdown of the item (Speed potions, ect) #define SURGICAL_TOOL (1<<10) //Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes) -#define NO_UNIFORM_REQUIRED (1<<11) // Can be worn on certain slots (currently belt and id) that would otherwise require an uniform. +#define NO_UNIFORM_REQUIRED (1<<11) //Can be worn on certain slots (currently belt and id) that would otherwise require an uniform. // Flags for the clothing_flags var on /obj/item/clothing -#define LAVAPROTECT (1<<0) +#define LAVAPROTECT (1<<0) #define STOPSPRESSUREDAMAGE (1<<1) //SUIT and HEAD items which stop pressure damage. To stop you taking all pressure damage you must have both a suit and head item with this flag. -#define BLOCK_GAS_SMOKE_EFFECT (1<<2) // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! -#define ALLOWINTERNALS (1<<3) // mask allows internals -#define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc -#define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. -#define VOICEBOX_TOGGLABLE (1<<6) // The voicebox in this clothing can be toggled. -#define VOICEBOX_DISABLED (1<<7) // The voicebox is currently turned off. +#define BLOCK_GAS_SMOKE_EFFECT (1<<2) //blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! +#define ALLOWINTERNALS (1<<3) //mask allows internals +#define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc +#define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. +#define VOICEBOX_TOGGLABLE (1<<6) //The voicebox in this clothing can be toggled. +#define VOICEBOX_DISABLED (1<<7) //The voicebox is currently turned off. +#define SNUG_FIT (1<<8) //Prevents knock-off from things like hat-throwing. +#define ANTI_TINFOIL_MANEUVER (1<<9) //Hats with negative effects when worn (i.e the tinfoil hat). // Flags for the organ_flags var on /obj/item/organ @@ -47,4 +49,4 @@ #define ORGAN_FAILING (1<<2) //Failing organs perform damaging effects until replaced or fixed #define ORGAN_EXTERNAL (1<<3) //Was this organ implanted/inserted/etc, if true will not be removed during species change. #define ORGAN_VITAL (1<<4) //Currently only the brain -#define ORGAN_NO_SPOIL (1<<5) //Do not spoil under any circumstances +#define ORGAN_NO_SPOIL (1<<5) //Do not spoil under any circumstances \ No newline at end of file diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index 7cebc37d94..8f01f453b6 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -27,45 +27,18 @@ #define NOBLIUM_RESEARCH_AMOUNT 1000 #define BZ_RESEARCH_SCALE 4 #define BZ_RESEARCH_MAX_AMOUNT 400 -#define MIASMA_RESEARCH_AMOUNT 160 +#define MIASMA_RESEARCH_AMOUNT 6 #define STIMULUM_RESEARCH_AMOUNT 50 //Plasma fusion properties #define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction -#define FUSION_TEMPERATURE_THRESHOLD 1000 //Temperature required to start a fusion reaction #define FUSION_MOLE_THRESHOLD 250 //Mole count required (tritium/plasma) to start a fusion reaction -#define FUSION_RELEASE_ENERGY_SUPER 3e9 //Amount of energy released in the fusion process, super tier -#define FUSION_RELEASE_ENERGY_HIGH 1e9 //Amount of energy released in the fusion process, high tier -#define FUSION_RELEASE_ENERGY_MID 5e8 //Amount of energy released in the fusion process, mid tier -#define FUSION_RELEASE_ENERGY_LOW 1e8 //Amount of energy released in the fusion process, low tier -#define FUSION_MEDIATION_FACTOR 80 //Arbitrary -#define FUSION_SUPER_TIER_THRESHOLD 50 //anything above this is super tier -#define FUSION_HIGH_TIER_THRESHOLD 20 //anything above this and below 50 is high tier -#define FUSION_MID_TIER_THRESHOLD 5 //anything above this and below 20 is mid tier - below this is low tier, but that doesnt need a define -#define FUSION_ENERGY_DIVISOR_SUPER 25 //power_ratio is divided by this during energy calculations -#define FUSION_ENERGY_DIVISOR_HIGH 20 -#define FUSION_ENERGY_DIVISOR_MID 10 -#define FUSION_ENERGY_DIVISOR_LOW 2 -#define FUSION_GAS_CREATION_FACTOR_TRITIUM 0.40 //trit - one gas rather than two, so think about that when calculating stuff - 40% in total -#define FUSION_GAS_CREATION_FACTOR_STIM 0.05 //stim percentage creation from high tier - 5%, 60% in total with pluox -#define FUSION_GAS_CREATION_FACTOR_PLUOX 0.55 //pluox percentage creation from high tier - 55%, 60% in total with stim -#define FUSION_GAS_CREATION_FACTOR_NITRYL 0.20 //nitryl and N2O - 80% in total -#define FUSION_GAS_CREATION_FACTOR_N2O 0.60 //nitryl and N2O - 80% in total -#define FUSION_GAS_CREATION_FACTOR_BZ 0.05 //BZ - 5% - 90% in total with CO2 -#define FUSION_GAS_CREATION_FACTOR_CO2 0.85 //CO2 - 85% - 90% in total with BZ -#define FUSION_MID_TIER_RAD_PROB_FACTOR 2 //probability of radpulse is power ratio * this for whatever tier -#define FUSION_LOW_TIER_RAD_PROB_FACTOR 5 -#define FUSION_EFFICIENCY_BASE 60 //used in the fusion efficiency calculations -#define FUSION_EFFICIENCY_DIVISOR 0.6 //ditto -#define FUSION_RADIATION_FACTOR 15000 //horizontal asymptote -#define FUSION_RADIATION_CONSTANT 30 //equation is form of (ax) / (x + b), where a = radiation factor and b = radiation constant and x = power ratio (https://www.desmos.com/calculator/4i1f296phl) -#define FUSION_ZAP_POWER_ASYMPTOTE 50000 //maximum value - not enough to instacrit but it'll still hurt like shit -#define FUSION_ZAP_POWER_CONSTANT 75 //equation is of from [ax / (x + b)] + c, where a = zap power asymptote, b = zap power constant, c = zap power base and x = power ratio -#define FUSION_ZAP_POWER_BASE 1000 //(https://www.desmos.com/calculator/vvbmhf4unm) -#define FUSION_ZAP_RANGE_SUPER 9 //range of the tesla zaps that occur from fusion -#define FUSION_ZAP_RANGE_HIGH 7 -#define FUSION_ZAP_RANGE_MID 5 -#define FUSION_ZAP_RANGE_LOW 3 -#define FUSION_PARTICLE_FACTOR_SUPER 4 //# of particles fired out is equal to rand(3,6) * this for whatever tier -#define FUSION_PARTICLE_FACTOR_HIGH 3 -#define FUSION_PARTICLE_FACTOR_MID 2 -#define FUSION_PARTICLE_FACTOR_LOW 1 +#define FUSION_TRITIUM_CONVERSION_COEFFICIENT (1e-10) +#define INSTABILITY_GAS_POWER_FACTOR 0.003 +#define FUSION_TRITIUM_MOLES_USED 1 +#define PLASMA_BINDING_ENERGY 20000000 +#define TOROID_VOLUME_BREAKEVEN 1000 +#define FUSION_TEMPERATURE_THRESHOLD 10000 +#define PARTICLE_CHANCE_CONSTANT (-20000000) +#define FUSION_RAD_MAX 2000 +#define FUSION_RAD_COEFFICIENT (-1000) +#define FUSION_INSTABILITY_ENDOTHERMALITY 2 diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index 0820d63247..a05e6f6160 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -50,3 +50,7 @@ #define ASSEMBLY_THIRD_STEP 2 #define ASSEMBLY_FOURTH_STEP 3 #define ASSEMBLY_FIFTH_STEP 4 + + +//Checks to determine borg availability depending on the server's config. These are defines in the interest of reducing copypasta +#define BORG_SEC_AVAILABLE (!CONFIG_GET(flag/disable_secborg) && GLOB.security_level >= CONFIG_GET(number/minimum_secborg_alert)) \ No newline at end of file diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index e655408db1..af06a5a2d0 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -23,6 +23,8 @@ #define MODE_WHISPER "whisper" #define MODE_WHISPER_CRIT "whispercrit" +#define MODE_CUSTOM_SAY "custom_say" + #define MODE_DEPARTMENT "department" #define MODE_KEY_DEPARTMENT "h" #define MODE_TOKEN_DEPARTMENT ":h" diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 5afd705420..f6302813f5 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -3,12 +3,12 @@ #define CHANNEL_ADMIN 1023 #define CHANNEL_VOX 1022 #define CHANNEL_JUKEBOX 1021 -#define CHANNEL_JUKEBOX_START 1020 -#define CHANNEL_JUSTICAR_ARK 1019 -#define CHANNEL_HEARTBEAT 1018 //sound channel for heartbeats -#define CHANNEL_AMBIENCE 1017 -#define CHANNEL_BUZZ 1016 -#define CHANNEL_BICYCLE 1015 +#define CHANNEL_JUKEBOX_START 1016 //The gap between this and CHANNEL_JUKEBOX determines the amount of free jukebox channels. This currently allows 6 jukebox channels to exist. +#define CHANNEL_JUSTICAR_ARK 1015 +#define CHANNEL_HEARTBEAT 1014 //sound channel for heartbeats +#define CHANNEL_AMBIENCE 1013 +#define CHANNEL_BUZZ 1012 +#define CHANNEL_BICYCLE 1011 //CIT CHANNELS - TRY NOT TO REGRESS #define CHANNEL_PRED 1010 diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 3cd64af8c7..ff19976cff 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -44,6 +44,8 @@ #define STATUS_EFFECT_SLEEPING /datum/status_effect/incapacitating/sleeping //the affected is asleep +#define STATUS_EFFECT_TASED /datum/status_effect/electrode //the affected has been tased, preventing fine muscle control + #define STATUS_EFFECT_PACIFY /datum/status_effect/pacify //the affected is pacified, preventing direct hostile actions #define STATUS_EFFECT_BELLIGERENT /datum/status_effect/belligerent //forces the affected to walk, doing damage if they try to run @@ -72,6 +74,9 @@ #define STATUS_EFFECT_ICHORIAL_STAIN /datum/status_effect/ichorial_stain //Prevents a servant from being revived by vitality matrices for one minute. +#define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk. + +#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above. ///////////// // NEUTRAL // ///////////// diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index d4086bc4d9..2fd929a07d 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -99,7 +99,6 @@ #define FIRE_PRIORITY_GARBAGE 15 #define FIRE_PRIORITY_WET_FLOORS 20 #define FIRE_PRIORITY_AIR 20 -#define FIRE_PRIORITY_NPC 20 #define FIRE_PRIORITY_PROCESS 25 #define FIRE_PRIORITY_THROWING 25 #define FIRE_PRIORITY_SPACEDRIFT 30 @@ -112,6 +111,7 @@ #define FIRE_PRIORITY_AIR_TURFS 40 #define FIRE_PRIORITY_DEFAULT 50 #define FIRE_PRIORITY_PARALLAX 65 +#define FIRE_PRIORITY_NPC 80 #define FIRE_PRIORITY_FLIGHTPACKS 80 #define FIRE_PRIORITY_MOBS 100 #define FIRE_PRIORITY_TGUI 110 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e22dcfbbe0..1f37556d1d 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -70,8 +70,6 @@ #define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE #define TRAIT_PACIFISM "pacifism" #define TRAIT_IGNORESLOWDOWN "ignoreslow" -#define TRAIT_GOTTAGOFAST "fast" -#define TRAIT_GOTTAGOREALLYFAST "2fast" #define TRAIT_DEATHCOMA "deathcoma" //Causes death-like unconsciousness #define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination #define TRAIT_DISFIGURED "disfigured" @@ -147,13 +145,14 @@ #define TRAIT_SKITTISH "skittish" #define TRAIT_POOR_AIM "poor_aim" #define TRAIT_PROSOPAGNOSIA "prosopagnosia" -#define TRAIT_DRUNK_HEALING "drunk_healing" -#define TRAIT_TAGGER "tagger" -#define TRAIT_PHOTOGRAPHER "photographer" -#define TRAIT_MUSICIAN "musician" -#define TRAIT_CROCRIN_IMMUNE "crocin_immune" +#define TRAIT_DRUNK_HEALING "drunk_healing" +#define TRAIT_TAGGER "tagger" +#define TRAIT_PHOTOGRAPHER "photographer" +#define TRAIT_MUSICIAN "musician" +#define TRAIT_CROCRIN_IMMUNE "crocin_immune" #define TRAIT_NYMPHO "nymphomania" #define TRAIT_MASO "masochism" +#define TRAIT_EXHIBITIONIST "exhibitionist" #define TRAIT_HIGH_BLOOD "high_blood" #define TRAIT_PHARMA "hepatic_pharmacokinesis" #define TRAIT_PARA "paraplegic" diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 86d0a34e3e..8134494306 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -56,6 +56,7 @@ GLOBAL_LIST_EMPTY(ipc_screens_list) GLOBAL_LIST_EMPTY(ipc_antennas_list) //Genitals and Arousal Lists +GLOBAL_LIST_EMPTY(genitals_list) GLOBAL_LIST_EMPTY(cock_shapes_list)//global_lists.dm for the list initializations //Now also _DATASTRUCTURES globals.dm GLOBAL_LIST_EMPTY(cock_shapes_icons) //Associated list for names->icon_states for cockshapes. GLOBAL_LIST_EMPTY(gentlemans_organ_names) @@ -131,53 +132,53 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /mob/living/carbon/proc/has_penis() - if(getorganslot("penis"))//slot shared with ovipositor - if(istype(getorganslot("penis"), /obj/item/organ/genital/penis)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS) + if(G && istype(G, /obj/item/organ/genital/penis)) + return TRUE return FALSE /mob/living/carbon/proc/has_balls() - if(getorganslot("balls")) - if(istype(getorganslot("balls"), /obj/item/organ/genital/testicles)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_TESTICLES) + if(G && istype(G, /obj/item/organ/genital/testicles)) + return TRUE return FALSE /mob/living/carbon/proc/has_vagina() - if(getorganslot("vagina")) + if(getorganslot(ORGAN_SLOT_VAGINA)) return TRUE return FALSE /mob/living/carbon/proc/has_breasts() - if(getorganslot("breasts")) + if(getorganslot(ORGAN_SLOT_BREASTS)) return TRUE return FALSE /mob/living/carbon/proc/has_ovipositor() - if(getorganslot("penis"))//shared slot - if(istype(getorganslot("penis"), /obj/item/organ/genital/ovipositor)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS) + if(G && istype(G, /obj/item/organ/genital/ovipositor)) + return TRUE return FALSE /mob/living/carbon/human/proc/has_eggsack() - if(getorganslot("balls")) - if(istype(getorganslot("balls"), /obj/item/organ/genital/eggsack)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_TESTICLES) + if(G && istype(G, /obj/item/organ/genital/eggsack)) + return TRUE return FALSE -/mob/living/carbon/human/proc/is_bodypart_exposed(bodypart) - -/mob/living/carbon/proc/is_groin_exposed(var/list/L) +/mob/living/carbon/proc/is_groin_exposed(list/L) if(!L) L = get_equipped_items() - for(var/obj/item/I in L) + for(var/A in L) + var/obj/item/I = A if(I.body_parts_covered & GROIN) return FALSE return TRUE -/mob/living/carbon/proc/is_chest_exposed(var/list/L) +/mob/living/carbon/proc/is_chest_exposed(list/L) if(!L) L = get_equipped_items() - for(var/obj/item/I in L) + for(var/A in L) + var/obj/item/I = A if(I.body_parts_covered & CHEST) return FALSE return TRUE @@ -195,9 +196,9 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) message_admins("[src] gave everyone genitals.") for(var/mob/living/carbon/human/H in GLOB.mob_list) if(H.gender == MALE) - H.give_penis() - H.give_balls() + H.give_genital(/obj/item/organ/genital/penis) + H.give_genital(/obj/item/organ/genital/testicles) else - H.give_vagina() - H.give_womb() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/vagina) + H.give_genital(/obj/item/organ/genital/womb) + H.give_genital(/obj/item/organ/genital/breasts) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index fed283adcd..917615d095 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -379,6 +379,12 @@ i++ return i +/proc/count_occurences_of_value(list/L, val, limit) //special thanks to salmonsnake + . = 0 + for (var/i in 1 to limit) + if (L[i] == val) + .++ + /proc/find_record(field, value, list/L) for(var/datum/data/record/R in L) if(R.fields[field] == value) @@ -514,7 +520,7 @@ used_key_list[input_key] = 1 return input_key -#if DM_VERSION > 512 +#if DM_VERSION > 513 #error Remie said that lummox was adding a way to get a lists #error contents via list.values, if that is true remove this #error otherwise, update the version and bug lummox @@ -564,4 +570,4 @@ if(key in L1) L1[key] += other_value else - L1[key] = other_value + L1[key] = other_value \ No newline at end of file diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 6fca4eed3d..7852251230 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -72,6 +72,10 @@ var/datum/sprite_accessory/testicles/value = GLOB.balls_shapes_list[K] GLOB.balls_shapes_icons[K] = value.icon_state + for(var/gpath in subtypesof(/obj/item/organ/genital)) + var/obj/item/organ/genital/G = gpath + if(!CHECK_BITFIELD(initial(G.genital_flags), GENITAL_BLACKLISTED)) + GLOB.genitals_list[initial(G.name)] = gpath //END OF CIT CHANGES //Species diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 39d58ec15a..8e7938a312 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -160,7 +160,6 @@ "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", - "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = pick(GLOB.cock_shapes_list), @@ -400,6 +399,12 @@ GLOBAL_LIST_EMPTY(species_list) . = 0 break + if(isliving(user)) + var/mob/living/L = user + if(L.recoveringstam) + . = 0 + break + if(!QDELETED(Tloc) && (QDELETED(target) || Tloc != target.loc)) if((Uloc != Tloc || Tloc != user) && !drifting) . = 0 diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index 8819eb4d04..d06912b701 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -1,4 +1,4 @@ -/proc/priority_announce(text, title = "", sound = 'sound/ai/attention.ogg', type , sender_override) +/proc/priority_announce(text, title = "", sound = "attention", type , sender_override) if(!text) return @@ -29,19 +29,110 @@ announcement += "
[html_encode(text)]
" announcement += "
" - var/s = sound(sound) + var/s = sound(get_announcer_sound(sound)) for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && M.can_hear()) to_chat(M, announcement) if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS) SEND_SOUND(M, s) +/proc/get_announcer_sound(soundid) + if(isfile(soundid)) + return soundid + else if(!istext(soundid)) + CRASH("Invalid type passed to get_announcer_sound()") + switch(GLOB.announcertype) //These are all individually hardcoded to allow the announcer sounds to be included in the rsc, reducing lag from sending resources midgame. + if("classic") + switch(soundid) + if("aimalf") + . = 'sound/announcer/classic/aimalf.ogg' + if("aliens") + . = 'sound/announcer/classic/aliens.ogg' + if("animes") + . = 'sound/announcer/classic/animes.ogg' + if("attention") + . = 'sound/announcer/classic/attention.ogg' + if("commandreport") + . = 'sound/announcer/classic/commandreport.ogg' + if("granomalies") + . = 'sound/announcer/classic/granomalies.ogg' + if("intercept") + . = 'sound/announcer/classic/intercept.ogg' + if("ionstorm") + . = 'sound/announcer/classic/ionstorm.ogg' + if("meteors") + . = 'sound/announcer/classic/meteors.ogg' + if("newAI") + . = 'sound/announcer/classic/newAI.ogg' + if("outbreak5") + . = 'sound/announcer/classic/outbreak5.ogg' + if("outbreak7") + . = 'sound/announcer/classic/outbreak7.ogg' + if("poweroff") + . = 'sound/announcer/classic/poweroff.ogg' + if("poweron") + . = 'sound/announcer/classic/poweron.ogg' + if("radiation") + . = 'sound/announcer/classic/radiation.ogg' + if("shuttlecalled") + . = 'sound/announcer/classic/shuttlecalled.ogg' + if("shuttledock") + . = 'sound/announcer/classic/shuttledock.ogg' + if("shuttlerecalled") + . = 'sound/announcer/classic/shuttlerecalled.ogg' + if("spanomalies") + . = 'sound/announcer/classic/spanomalies.ogg' + if("welcome") + . = 'sound/announcer/classic/welcome.ogg' + if("medibot") + switch(soundid) + if("aimalf") + . = 'sound/announcer/classic/aimalf.ogg' + if("aliens") + . = 'sound/announcer/medibot/aliens.ogg' + if("animes") + . = 'sound/announcer/medibot/animes.ogg' + if("attention") + . = 'sound/announcer/medibot/attention.ogg' + if("commandreport") + . = 'sound/announcer/medibot/commandreport.ogg' + if("granomalies") + . = 'sound/announcer/medibot/granomalies.ogg' + if("intercept") + . = 'sound/announcer/medibot/intercept.ogg' + if("ionstorm") + . = 'sound/announcer/medibot/ionstorm.ogg' + if("meteors") + . = 'sound/announcer/medibot/meteors.ogg' + if("newAI") + . = 'sound/announcer/medibot/newAI.ogg' + if("outbreak5") + . = 'sound/announcer/medibot/outbreak5.ogg' + if("outbreak7") + . = 'sound/announcer/medibot/outbreak7.ogg' + if("poweroff") + . = 'sound/announcer/medibot/poweroff.ogg' + if("poweron") + . = 'sound/announcer/medibot/poweron.ogg' + if("radiation") + . = 'sound/announcer/medibot/radiation.ogg' + if("shuttlecalled") + . = 'sound/announcer/medibot/shuttlecalled.ogg' + if("shuttledock") + . = 'sound/announcer/medibot/shuttledocked.ogg' + if("shuttlerecalled") + . = 'sound/announcer/medibot/shuttlerecalled.ogg' + if("spanomalies") + . = 'sound/announcer/medibot/spanomalies.ogg' + if("welcome") + . = 'sound/announcer/medibot/welcome.ogg' + /proc/print_command_report(text = "", title = null, announce=TRUE) if(!title) title = "Classified [command_name()] Update" if(announce) - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") var/datum/comm_message/M = new M.title = title diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 3c8d62ce3a..27b70d28c5 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -451,10 +451,6 @@ Turf and target are separate in case you want to teleport some distance from a t var/y = min(world.maxy, max(1, A.y + dy)) return locate(x,y,A.z) -/proc/arctan(x) - var/y=arcsin(x/sqrt(1+x*x)) - return y - /* Gets all contents of contents and returns them all in a list. */ @@ -756,7 +752,6 @@ Turf and target are separate in case you want to teleport some distance from a t loc = loc.loc return null - //For objects that should embed, but make no sense being is_sharp or is_pointed() //e.g: rods GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( @@ -1550,3 +1545,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) for(var/i in L) if(condition.Invoke(i)) . |= i + +/proc/CallAsync(datum/source, proctype, list/arguments) + set waitfor = FALSE + return call(source, proctype)(arglist(arguments)) \ No newline at end of file diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 755105dc27..e49d458ceb 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -142,6 +142,8 @@ GLOBAL_LIST_INIT(bitfields, list( "THICKMATERIAL" = THICKMATERIAL, "VOICEBOX_TOGGLABLE" = VOICEBOX_TOGGLABLE, "VOICEBOX_DISABLED" = VOICEBOX_DISABLED, + "SNUG_FIT" = SNUG_FIT, + "ANTI_TINFOIL_MANEUVER" = ANTI_TINFOIL_MANEUVER, ), "tesla_flags" = list( "TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE, @@ -200,4 +202,14 @@ GLOBAL_LIST_INIT(bitfields, list( "ORGAN_VITAL" = ORGAN_VITAL, "ORGAN_NO_SPOIL" = ORGAN_NO_SPOIL ), - )) + "genital_flags" = list( + "GENITAL_BLACKLISTED" = GENITAL_BLACKLISTED, + "GENITAL_INTERNAL" = GENITAL_INTERNAL, + "GENITAL_HIDDEN" = GENITAL_HIDDEN, + "GENITAL_THROUGH_CLOTHES" = GENITAL_THROUGH_CLOTHES, + "GENITAL_FUID_PRODUCTION" = GENITAL_FUID_PRODUCTION, + "CAN_MASTURBATE_WITH" = CAN_MASTURBATE_WITH, + "MASTURBATE_LINKED_ORGAN" = MASTURBATE_LINKED_ORGAN, + "CAN_CLIMAX_WITH" = CAN_CLIMAX_WITH + ) + )) \ No newline at end of file diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index c883254afe..8b5657a6f6 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -58,3 +58,64 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito for(var/i in GLOB.mob_list) var/mob/M = i M.update_config_movespeed() + +GLOBAL_LIST_INIT(noodle_taurs, list( + "Naga", + "Tentacle" + )) + +GLOBAL_LIST_INIT(paw_taurs, list( + "Fox", + "Wolf", + "Otie", + "Drake", + "Lab", + "Shepherd", + "Husky", + "Eevee", + "Panther", + "Horse", + "Cow", + "Tiger" + )) + + //blood types +GLOBAL_LIST_INIT(regular_bloods,list( + "O-", + "O+", + "A-", + "A+", + "B-", + "B+", + "AB-", + "AB+" + )) + +GLOBAL_LIST_INIT(all_types_bloods,list( + "O-", + "O+", + "A-", + "A+", + "B-", + "B+", + "AB-", + "AB+", + "SY", + "X*", + "HF", + "L", + "U", + "GEL", + "BUG" + )) + +GLOBAL_LIST_INIT(blood_types, list( + "blood", + "jellyblood" + )) + +GLOBAL_LIST_INIT(blood_id_types, list( + "blood" = /datum/reagent/blood, + "jellyblood" = /datum/reagent/blood/jellyblood + )) + diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 037e5067d8..af31e2b5a5 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -2,6 +2,12 @@ GLOBAL_VAR_INIT(admin_notice, "") // Admin notice that all clients see when join GLOBAL_VAR_INIT(timezoneOffset, 0) // The difference betwen midnight (of the host computer) and 0 world.ticks. +GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) +GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? + + +GLOBAL_VAR_INIT(announcertype, "standard") + // For FTP requests. (i.e. downloading runtime logs.) // However it'd be ok to use for accessing attack logs and such too, which are even laggier. GLOBAL_VAR_INIT(fileaccess_timer, 0) @@ -24,4 +30,4 @@ GLOBAL_VAR(bible_name) GLOBAL_VAR(bible_icon_state) GLOBAL_VAR(bible_item_state) GLOBAL_VAR(holy_weapon_type) -GLOBAL_VAR(holy_armor_type) \ No newline at end of file +GLOBAL_VAR(holy_armor_type) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 5f0e7c9b22..58eabbdbcf 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -200,7 +200,7 @@ if (!target.loc) continue - if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH)) + if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH) && target.loc.canReachInto(src, ultimate_target, next, view_only, tool)) next += target.loc checking = next @@ -215,6 +215,10 @@ /mob/living/DirectAccess(atom/target) return ..() + GetAllContents() +//This is called reach into but it's called on the deepest things first so uh, make sure to account for that! +/atom/proc/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool) + return TRUE + /atom/proc/AllowClick() return FALSE diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index ae36b4abb4..167fa989b2 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -49,9 +49,9 @@ #define ui_storage1 "CENTER+1:18,SOUTH:5" #define ui_storage2 "CENTER+2:20,SOUTH:5" -#define ui_borg_sensor "CENTER-3:16, SOUTH:5" //borgs -#define ui_borg_lamp "CENTER-4:16, SOUTH:5" //borgs -#define ui_borg_thrusters "CENTER-5:16, SOUTH:5" //borgs +#define ui_borg_sensor "CENTER-3:15, SOUTH:5" //borgs +#define ui_borg_lamp "CENTER-4:15, SOUTH:5" //borgs +#define ui_borg_thrusters "CENTER-5:15, SOUTH:5" //borgs #define ui_inv1 "CENTER-2:16,SOUTH:5" //borgs #define ui_inv2 "CENTER-1 :16,SOUTH:5" //borgs #define ui_inv3 "CENTER :16,SOUTH:5" //borgs @@ -59,7 +59,7 @@ #define ui_borg_store "CENTER+2:16,SOUTH:5" //borgs #define ui_borg_camera "CENTER+3:21,SOUTH:5" //borgs #define ui_borg_album "CENTER+4:21,SOUTH:5" //borgs -#define ui_borg_language_menu "CENTER+4:21,SOUTH+1:5" //borgs +#define ui_borg_language_menu "EAST-1:27,SOUTH+2:8" //borgs #define ui_monkey_head "CENTER-5:13,SOUTH:5" //monkey #define ui_monkey_mask "CENTER-4:14,SOUTH:5" //monkey diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 54a81efddd..11517d79b8 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -88,6 +88,26 @@ var/mob/living/silicon/robot/R = usr R.toggle_ionpulse() +/obj/screen/robot/sensors + name = "Sensor Augmentation" + icon_state = "cyborg_sensor" + +/obj/screen/robot/sensors/Click() + if(..()) + return + var/mob/living/silicon/S = usr + S.toggle_sensors() + +/obj/screen/robot/language_menu + name = "silicon language selection" + icon_state = "talk_wheel" + +/obj/screen/robot/language_menu/Click() + if(..()) + return + var/mob/living/silicon/S = usr + S.open_language_menu(usr) + /datum/hud/robot ui_style = 'icons/mob/screen_cyborg.dmi' @@ -96,7 +116,7 @@ var/mob/living/silicon/robot/mymobR = mymob var/obj/screen/using - using = new/obj/screen/language_menu + using = new/obj/screen/robot/language_menu using.screen_loc = ui_borg_language_menu static_inventory += using @@ -133,7 +153,7 @@ static_inventory += using //Sec/Med HUDs - using = new /obj/screen/ai/sensors() + using = new /obj/screen/robot/sensors() using.screen_loc = ui_borg_sensor static_inventory += using diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 6455b4ccb6..472766a59e 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -40,7 +40,7 @@ return TRUE user.changeNext_move(CLICK_CD_MELEE) if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it? - GET_COMPONENT_FROM(butchering, /datum/component/butchering, I) + var/datum/component/butchering/butchering = I.GetComponent(/datum/component/butchering) if(butchering && butchering.butchering_enabled) to_chat(user, "You begin to butcher [src]...") playsound(loc, butchering.butcher_sound, 50, TRUE, -1) @@ -82,7 +82,7 @@ log_combat(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") add_fingerprint(user) - user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes attacking things cause stamina loss + user.adjustStaminaLossBuffered(getweight()*0.8)//CIT CHANGE - makes attacking things cause stamina loss //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 3ac103affc..4406655375 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -1,6 +1,7 @@ #define VALUE_MODE_NUM 0 #define VALUE_MODE_TEXT 1 #define VALUE_MODE_FLAG 2 +#define VALUE_MODE_NUM_LIST 3 #define KEY_MODE_TEXT 0 #define KEY_MODE_TYPE 1 @@ -191,6 +192,18 @@ if(VALUE_MODE_TEXT) new_value = key_value continue_check_value = new_value + if(VALUE_MODE_NUM_LIST) + // this is all copy+pasted from number list up there, but it's super basic so I don't see it being changed soon + var/list/new_list = list() + var/list/values = splittext(key_value," ") + for(var/I in values) + var/temp = text2num(I) + if(isnull(temp)) + log_admin("invalid number list entry in [key_name]: [I]") + continue_check_value = FALSE + new_list += temp + new_value = new_list + continue_check_value = new_list.len if(continue_check_value && continue_check_key && ValidateListEntry(new_key, new_value)) config_entry_value[new_key] = new_value return TRUE diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index cfd57b4850..72ea0ecbd6 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -66,10 +66,17 @@ /datum/config_entry/flag/disable_human_mood +/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down? + +/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules + /datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen. /datum/config_entry/flag/disable_peaceborg +/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen. + config_entry_value = 3 + /datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors config_entry_value = 6 min_val = 1 @@ -364,3 +371,27 @@ /datum/config_entry/number/auto_transfer_delay config_entry_value = 72000 min_val = 0 + +/datum/config_entry/number/dynamic_high_pop_limit + config_entry_value = 55 + min_val = 1 + +/datum/config_entry/number/dynamic_pop_per_requirement + config_entry_value = 6 + min_val = 1 + +/datum/config_entry/keyed_list/dynamic_cost + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + +/datum/config_entry/keyed_list/dynamic_weight + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + +/datum/config_entry/keyed_list/dynamic_requirements + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM_LIST + +/datum/config_entry/keyed_list/dynamic_high_population_requirement + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM diff --git a/code/controllers/subsystem/jukeboxes.dm b/code/controllers/subsystem/jukeboxes.dm index d0001603a1..1532a3f41a 100644 --- a/code/controllers/subsystem/jukeboxes.dm +++ b/code/controllers/subsystem/jukeboxes.dm @@ -3,6 +3,7 @@ SUBSYSTEM_DEF(jukeboxes) wait = 5 var/list/songs = list() var/list/activejukeboxes = list() + var/list/freejukeboxchannels = list() /datum/track var/song_name = "generic" @@ -21,23 +22,39 @@ SUBSYSTEM_DEF(jukeboxes) /datum/controller/subsystem/jukeboxes/proc/addjukebox(obj/jukebox, datum/track/T, jukefalloff = 1) if(!istype(T)) CRASH("[src] tried to play a song with a nonexistant track") - var/channeltoreserve = CHANNEL_JUKEBOX_START + activejukeboxes.len - 1 - if(channeltoreserve > CHANNEL_JUKEBOX) + var/channeltoreserve = pick(freejukeboxchannels) + if(!channeltoreserve) return FALSE + freejukeboxchannels -= channeltoreserve + var/list/youvegotafreejukebox = list(T, channeltoreserve, jukebox, jukefalloff) activejukeboxes.len++ - activejukeboxes[activejukeboxes.len] = list(T, channeltoreserve, jukebox, jukefalloff) + activejukeboxes[activejukeboxes.len] = youvegotafreejukebox + + //Due to changes in later versions of 512, SOUND_UPDATE no longer properly plays audio when a file is defined in the sound datum. As such, we are now required to init the audio before we can actually do anything with it. + //Downsides to this? This means that you can *only* hear the jukebox audio if you were present on the server when it started playing, and it means that it's now impossible to add loops to the jukebox track list. + var/sound/song_to_init = sound(T.song_path) + song_to_init.status = SOUND_MUTE + for(var/mob/M in GLOB.player_list) + if(!M.client) + continue + if(!(M.client.prefs.toggles & SOUND_INSTRUMENTS)) + continue + + M.playsound_local(M, null, 100, channel = youvegotafreejukebox[2], S = song_to_init) return activejukeboxes.len /datum/controller/subsystem/jukeboxes/proc/removejukebox(IDtoremove) if(islist(activejukeboxes[IDtoremove])) + var/jukechannel = activejukeboxes[IDtoremove][2] for(var/mob/M in GLOB.player_list) if(!M.client) continue - M.stop_sound_channel(activejukeboxes[IDtoremove][2]) + M.stop_sound_channel(jukechannel) + freejukeboxchannels |= jukechannel activejukeboxes.Cut(IDtoremove, IDtoremove+1) return TRUE else - to_chat(world, "If you see this, screenshot it and send it to a dev. Tried to remove jukebox with invalid ID") + CRASH("Tried to remove jukebox with invalid ID") /datum/controller/subsystem/jukeboxes/proc/findjukeboxindex(obj/jukebox) if(activejukeboxes.len) @@ -57,6 +74,8 @@ SUBSYSTEM_DEF(jukeboxes) T.song_beat = text2num(L[3]) T.song_associated_id = L[4] songs |= T + for(var/i in CHANNEL_JUKEBOX_START to CHANNEL_JUKEBOX) + freejukeboxchannels |= i return ..() /datum/controller/subsystem/jukeboxes/fire() @@ -64,14 +83,15 @@ SUBSYSTEM_DEF(jukeboxes) return for(var/list/jukeinfo in activejukeboxes) if(!jukeinfo.len) - to_chat(world, "If you see this, screenshot it and send it to a dev. Active jukebox without any associated metadata") + EXCEPTION("Active jukebox without any associated metadata.") + continue var/datum/track/juketrack = jukeinfo[1] if(!istype(juketrack)) - to_chat(world, "If you see this, screenshot it and send it to a dev. After jukebox track grabbing") + EXCEPTION("Invalid jukebox track datum.") continue var/obj/jukebox = jukeinfo[3] if(!istype(jukebox)) - to_chat(world, "If you see this, screenshot it and send it to a dev. Nonexistant or invalid jukebox in active jukebox list") + EXCEPTION("Nonexistant or invalid object associated with jukebox.") continue var/sound/song_played = sound(juketrack.song_path) var/area/currentarea = get_area(jukebox) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index a365405ce6..dec6cf8466 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -33,6 +33,7 @@ SUBSYSTEM_DEF(mapping) var/list/z_list var/datum/space_level/transit var/datum/space_level/empty_space + var/num_of_res_levels = 1 //dlete dis once #39770 is resolved /datum/controller/subsystem/mapping/proc/HACK_LoadMapConfig() @@ -53,6 +54,8 @@ SUBSYSTEM_DEF(mapping) if(!config || config.defaulted) to_chat(world, "Unable to load next or default map config, defaulting to Box Station") config = old_config + GLOB.year_integer += config.year_offset + GLOB.announcertype = (config.announcertype == "standard" ? (prob(1) ? "medibot" : "classic") : config.announcertype) loadWorld() repopulate_sorted_areas() process_teleport_locs() //Sets up the wizard teleport locations @@ -449,6 +452,11 @@ GLOBAL_LIST_EMPTY(the_station_areas) for(var/i in levels_by_trait(ZTRAIT_RESERVED)) if(reserve.Reserve(width, height, i)) return reserve + //If we didn't return at this point, theres a good chance we ran out of room on the exisiting reserved z levels, so lets try a new one + num_of_res_levels += 1 + var/newReserved = add_new_zlevel("Transit/Reserved [num_of_res_levels]", list(ZTRAIT_RESERVED = TRUE)) + if(reserve.Reserve(width, height, newReserved)) + return reserve else if(!level_trait(z, ZTRAIT_RESERVED)) qdel(reserve) @@ -481,6 +489,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) LAZYINITLIST(unused_turfs["[T.z]"]) unused_turfs["[T.z]"] |= T T.flags_1 |= UNUSED_RESERVATION_TURF_1 + GLOB.areas_by_type[world.area].contents += T CHECK_TICK //DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations(). diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index d93f1f2407..830db298c9 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(npcpool) name = "NPC Pool" - flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND + flags = SS_KEEP_TIMING | SS_NO_INIT priority = FIRE_PRIORITY_NPC runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 455b53b1df..1b7cade71f 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -1,4 +1,5 @@ #define FILE_ANTAG_REP "data/AntagReputation.json" +#define MAX_RECENT_MAP_RECORD 10 SUBSYSTEM_DEF(persistence) name = "Persistence" @@ -11,6 +12,7 @@ SUBSYSTEM_DEF(persistence) var/list/obj/structure/chisel_message/chisel_messages = list() var/list/saved_messages = list() var/list/saved_modes = list(1,2,3) + var/list/saved_maps var/list/saved_trophies = list() var/list/spawned_objects = list() var/list/antag_rep = list() @@ -25,6 +27,7 @@ SUBSYSTEM_DEF(persistence) LoadChiselMessages() LoadTrophies() LoadRecentModes() + LoadRecentMaps() LoadPhotoPersistence() if(CONFIG_GET(flag/use_antag_rep)) LoadAntagReputation() @@ -163,6 +166,15 @@ SUBSYSTEM_DEF(persistence) return saved_modes = json["data"] +/datum/controller/subsystem/persistence/proc/LoadRecentMaps() + var/json_file = file("data/RecentMaps.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + if(!json) + return + saved_maps = json["maps"] + /datum/controller/subsystem/persistence/proc/LoadAntagReputation() var/json = file2text(FILE_ANTAG_REP) if(!json) @@ -204,6 +216,7 @@ SUBSYSTEM_DEF(persistence) CollectSecretSatchels() CollectTrophies() CollectRoundtype() + RecordMaps() SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. if(CONFIG_GET(flag/use_antag_rep)) CollectAntagReputation() @@ -359,6 +372,15 @@ SUBSYSTEM_DEF(persistence) fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) +/datum/controller/subsystem/persistence/proc/RecordMaps() + saved_maps = saved_maps?.len ? list("[SSmapping.config.map_name]") | saved_maps : list("[SSmapping.config.map_name]") + var/json_file = file("data/RecentMaps.json") + var/list/file_data = list() + file_data["maps"] = saved_maps + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) + + /datum/controller/subsystem/persistence/proc/CollectAntagReputation() var/ANTAG_REP_MAXIMUM = CONFIG_GET(number/antag_rep_maximum) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 08f657a1b9..bc8afe3c5b 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -373,7 +373,7 @@ SUBSYSTEM_DEF(shuttle) emergency.setTimer(emergencyDockTime) priority_announce("Hostile environment resolved. \ You have 3 minutes to board the Emergency Shuttle.", - null, 'sound/ai/shuttledock.ogg', "Priority") + null, "shuttledock", "Priority") //try to move/request to dockHome if possible, otherwise dockAway. Mainly used for admin buttons /datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttleId, dockHome, dockAway, timed) diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 77ad712b99..4b91944ec8 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -43,6 +43,7 @@ SUBSYSTEM_DEF(throwing) var/atom/movable/thrownthing var/atom/target var/turf/target_turf + var/target_zone var/init_dir var/maxrange var/speed diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 14e1e86f7d..2ab06f4d59 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -303,7 +303,7 @@ SUBSYSTEM_DEF(ticker) SSdbcore.SetRoundStart() to_chat(world, "Welcome to [station_name()], enjoy your stay!") - SEND_SOUND(world, sound('sound/ai/welcome.ogg')) + SEND_SOUND(world, sound(get_announcer_sound("welcome"))) current_state = GAME_STATE_PLAYING Master.SetRunLevel(RUNLEVEL_GAME) diff --git a/code/controllers/subsystem/vis_overlays.dm b/code/controllers/subsystem/vis_overlays.dm index 435414a899..107d65a558 100644 --- a/code/controllers/subsystem/vis_overlays.dm +++ b/code/controllers/subsystem/vis_overlays.dm @@ -6,11 +6,9 @@ SUBSYSTEM_DEF(vis_overlays) var/list/vis_overlay_cache var/list/currentrun - var/datum/callback/rotate_cb /datum/controller/subsystem/vis_overlays/Initialize() vis_overlay_cache = list() - rotate_cb = CALLBACK(src, .proc/rotate_vis_overlay) return ..() /datum/controller/subsystem/vis_overlays/fire(resumed = FALSE) @@ -52,7 +50,7 @@ SUBSYSTEM_DEF(vis_overlays) if(!thing.managed_vis_overlays) thing.managed_vis_overlays = list(overlay) - RegisterSignal(thing, COMSIG_ATOM_DIR_CHANGE, rotate_cb) + RegisterSignal(thing, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_vis_overlay) else thing.managed_vis_overlays += overlay diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 2f56c69384..e29382377f 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -208,9 +208,19 @@ SUBSYSTEM_DEF(vote) if("gamemode") choices.Add(config.votable_modes) if("map") - choices.Add(config.maplist) - for(var/i in choices)//this is necessary because otherwise we'll end up with a bunch of /datum/map_config's as the default vote value instead of 0 as intended - choices[i] = 0 + var/players = GLOB.clients.len + var/list/lastmaps = SSpersistence.saved_maps?.len ? list("[SSmapping.config.map_name]") | SSpersistence.saved_maps : list("[SSmapping.config.map_name]") + for(var/M in config.maplist) //This is a typeless loop due to the finnicky nature of keyed lists in this kind of context + var/datum/map_config/targetmap = config.maplist[M] + if(!istype(targetmap)) + continue + if(!targetmap.voteweight) + continue + if((targetmap.config_min_users && players < targetmap.config_min_users) || (targetmap.config_max_users && players > targetmap.config_max_users)) + continue + if(targetmap.max_round_search_span && count_occurences_of_value(lastmaps, M, targetmap.max_round_search_span) >= targetmap.max_rounds_played) + continue + choices |= M if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote choices.Add("secret", "extended") if("custom") diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index b3d3b46434..fbe94cbb9e 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -2,6 +2,10 @@ var/dupe_mode = COMPONENT_DUPE_HIGHLANDER var/dupe_type var/datum/parent + //only set to true if you are able to properly transfer this component + //At a minimum RegisterWithParent and UnregisterFromParent should be used + //Make sure you also implement PostTransfer for any post transfer handling + var/can_transfer = FALSE /datum/component/New(datum/P, ...) parent = P @@ -83,7 +87,7 @@ /datum/component/proc/UnregisterFromParent() return -/datum/proc/RegisterSignal(datum/target, sig_type_or_types, proc_or_callback, override = FALSE) +/datum/proc/RegisterSignal(datum/target, sig_type_or_types, proctype, override = FALSE) if(QDELETED(src) || QDELETED(target)) return @@ -96,15 +100,12 @@ if(!lookup) target.comp_lookup = lookup = list() - if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now - proc_or_callback = CALLBACK(src, proc_or_callback) - var/list/sig_types = islist(sig_type_or_types) ? sig_type_or_types : list(sig_type_or_types) for(var/sig_type in sig_types) if(!override && procs[target][sig_type]) stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning") - procs[target][sig_type] = proc_or_callback + procs[target][sig_type] = proctype if(!lookup[sig_type]) // Nothing has registered here yet lookup[sig_type] = src @@ -154,7 +155,7 @@ return /datum/component/proc/PostTransfer() - return + return COMPONENT_INCOMPATIBLE //Do not support transfer by default as you must properly support it /datum/component/proc/_GetInverseTypeList(our_type = type) //we can do this one simple trick @@ -171,17 +172,20 @@ var/datum/C = target if(!C.signal_enabled) return NONE - var/datum/callback/CB = C.signal_procs[src][sigtype] - return CB.InvokeAsync(arglist(arguments)) + var/proctype = C.signal_procs[src][sigtype] + return NONE | CallAsync(C, proctype, arguments) . = NONE for(var/I in target) var/datum/C = I if(!C.signal_enabled) continue - var/datum/callback/CB = C.signal_procs[src][sigtype] - . |= CB.InvokeAsync(arglist(arguments)) + var/proctype = C.signal_procs[src][sigtype] + . |= CallAsync(C, proctype, arguments) -/datum/proc/GetComponent(c_type) +// The type arg is casted so initial works, you shouldn't be passing a real instance into this +/datum/proc/GetComponent(datum/component/c_type) + if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED) + stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") var/list/dc = datum_components if(!dc) return null @@ -220,10 +224,6 @@ if(ispath(nt)) if(nt == /datum/component) CRASH("[nt] attempted instantiation!") - if(!isnum(dm)) - CRASH("[nt]: Invalid dupe_mode ([dm])!") - if(dt && !ispath(dt)) - CRASH("[nt]: Invalid dupe_type ([dt])!") else new_comp = nt nt = new_comp.type @@ -285,10 +285,13 @@ if(target.parent) target.RemoveComponent() target.parent = src - if(target.PostTransfer() == COMPONENT_INCOMPATIBLE) - var/c_type = target.type - qdel(target) - CRASH("Incompatible [c_type] transfer attempt to a [type]!") + var/result = target.PostTransfer() + switch(result) + if(COMPONENT_INCOMPATIBLE) + var/c_type = target.type + qdel(target) + CRASH("Incompatible [c_type] transfer attempt to a [type]!") + if(target == AddComponent(target)) target._JoinParent() @@ -298,10 +301,13 @@ return var/comps = dc[/datum/component] if(islist(comps)) - for(var/I in comps) - target.TakeComponent(I) + for(var/datum/component/I in comps) + if(I.can_transfer) + target.TakeComponent(I) else - target.TakeComponent(comps) + var/datum/component/C = comps + if(C.can_transfer) + target.TakeComponent(comps) /datum/component/ui_host() return parent diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index df03918c5d..6f289af1fc 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -1,26 +1,48 @@ /datum/component/anti_magic var/magic = FALSE var/holy = FALSE + var/psychic = FALSE + var/allowed_slots = ~ITEM_SLOT_BACKPACK + var/charges = INFINITY + var/blocks_self = TRUE + var/datum/callback/reaction + var/datum/callback/expire -/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE) +/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _allowed_slots, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire) if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) else if(ismob(parent)) - RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect) + RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect) else return COMPONENT_INCOMPATIBLE magic = _magic holy = _holy + psychic = _psychic + if(_allowed_slots) + allowed_slots = _allowed_slots + if(!isnull(_charges)) + charges = _charges + blocks_self = _blocks_self + reaction = _reaction + expire = _expire /datum/component/anti_magic/proc/on_equip(datum/source, mob/equipper, slot) - RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect, TRUE) + if(!CHECK_BITFIELD(allowed_slots, slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic + UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC) + return + RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE) /datum/component/anti_magic/proc/on_drop(datum/source, mob/user) UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC) -/datum/component/anti_magic/proc/can_protect(datum/source, _magic, _holy, list/protection_sources) - if((_magic && magic) || (_holy && holy)) +/datum/component/anti_magic/proc/protect(datum/source, mob/user, _magic, _holy, _psychic, chargecost = 1, self, list/protection_sources) + if(((_magic && magic) || (_holy && holy) || (_psychic && psychic)) && (!self || blocks_self)) protection_sources += parent + reaction?.Invoke(user, chargecost) + charges -= chargecost + if(charges <= 0) + expire?.Invoke(user) + qdel(src) return COMPONENT_BLOCK_MAGIC diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 013334bc27..bc185994f6 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -65,7 +65,7 @@ return FALSE if(!isliving(AM) && !isobj(AM)) return FALSE - if(is_type_in_typecache(AM, forbidden_types) || AM.throwing || AM.floating) + if(is_type_in_typecache(AM, forbidden_types) || AM.throwing || (AM.movement_type & FLOATING)) return FALSE //Flies right over the chasm if(ismob(AM)) diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm index 05c26efcc1..5324a87fee 100644 --- a/code/datums/components/cleaning.dm +++ b/code/datums/components/cleaning.dm @@ -8,32 +8,39 @@ /datum/component/cleaning/proc/Clean() var/atom/movable/AM = parent - var/turf/tile = AM.loc - if(!isturf(tile)) - return - - SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - for(var/A in tile) + var/turf/T = AM.loc + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + for(var/A in T) if(is_cleanable(A)) qdel(A) - else if(istype(A, /obj/item)) - var/obj/item/I = A - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - if(ismob(I.loc)) - var/mob/M = I.loc + else if(isitem(A)) + var/obj/item/cleaned_item = A + SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_item.clean_blood() + if(ismob(cleaned_item.loc)) + var/mob/M = cleaned_item.loc M.regenerate_icons() else if(ishuman(A)) var/mob/living/carbon/human/cleaned_human = A if(cleaned_human.lying) if(cleaned_human.head) - SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.head.clean_blood() + cleaned_human.update_inv_head() if(cleaned_human.wear_suit) - SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.wear_suit.clean_blood() + cleaned_human.update_inv_wear_suit() else if(cleaned_human.w_uniform) - SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.w_uniform.clean_blood() + cleaned_human.update_inv_w_uniform() if(cleaned_human.shoes) - SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.shoes.clean_blood() + cleaned_human.update_inv_shoes() + SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.clean_blood() cleaned_human.wash_cream() cleaned_human.regenerate_icons() - to_chat(cleaned_human, "[AM] cleans your face!") + to_chat(cleaned_human, "[src] cleans your face!") \ No newline at end of file diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index e5547ee0ec..bdc1d3a2f6 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -1,6 +1,6 @@ /datum/component/decal dupe_mode = COMPONENT_DUPE_ALLOWED - + can_transfer = TRUE var/cleanable var/description var/mutable_appearance/pic diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index 7fae975678..c8be6251b5 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -1,39 +1,13 @@ -/datum/component/decal/blood - dupe_mode = COMPONENT_DUPE_UNIQUE - -/datum/component/decal/blood/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_STRENGTH_BLOOD, _color, _layer=ABOVE_OBJ_LAYER) - if(!isitem(parent)) - return COMPONENT_INCOMPATIBLE - . = ..() - RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) - -/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) - var/obj/item/I = parent - if(!_icon) - _icon = 'icons/effects/blood.dmi' - if(!_icon_state) - _icon_state = "itemblood" - var/icon = initial(I.icon) - var/icon_state = initial(I.icon_state) - if(!icon || !icon_state) - // It's something which takes on the look of other items, probably - icon = I.icon - icon_state = I.icon_state - var/static/list/blood_splatter_appearances = list() - //try to find a pre-processed blood-splatter. otherwise, make a new one - var/index = "[REF(icon)]-[icon_state]" - pic = blood_splatter_appearances[index] - - if(!pic) - var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) - blood_splatter_appearances[index] = pic - return TRUE - -/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) - var/atom/A = parent - override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" - override[EXAMINE_POSITION_BEFORE] = " blood-stained " - return COMPONENT_EXNAME_CHANGED +/datum/component/decal/blood + dupe_mode = COMPONENT_DUPE_UNIQUE + +/datum/component/decal/blood/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_STRENGTH_BLOOD, _color, _layer=ABOVE_OBJ_LAYER) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + . = ..() + RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) + +/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) + var/atom/A = parent + + return COMPONENT_EXNAME_CHANGED diff --git a/code/datums/components/earprotection.dm b/code/datums/components/earprotection.dm index 2084943756..9256c4310a 100644 --- a/code/datums/components/earprotection.dm +++ b/code/datums/components/earprotection.dm @@ -1,11 +1,11 @@ /datum/component/wearertargeting/earprotection signals = list(COMSIG_CARBON_SOUNDBANG) mobtype = /mob/living/carbon + proctype = .proc/reducebang /datum/component/wearertargeting/earprotection/Initialize(_valid_slots) . = ..() valid_slots = _valid_slots - callback = CALLBACK(src, .proc/reducebang) /datum/component/wearertargeting/earprotection/proc/reducebang(datum/source, list/reflist) reflist[1]-- diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm deleted file mode 100644 index c7a1f7eba5..0000000000 --- a/code/datums/components/forensics.dm +++ /dev/null @@ -1,159 +0,0 @@ -/datum/component/forensics - dupe_mode = COMPONENT_DUPE_UNIQUE - var/list/fingerprints //assoc print = print - var/list/hiddenprints //assoc ckey = realname/gloves/ckey - var/list/blood_DNA //assoc dna = bloodtype - var/list/fibers //assoc print = print - -/datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. - fingerprints = fingerprints | F.fingerprints - hiddenprints = hiddenprints | F.hiddenprints - blood_DNA = blood_DNA | F.blood_DNA - fibers = fibers | F.fibers - check_blood() - return ..() - -/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers) - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - fingerprints = new_fingerprints - hiddenprints = new_hiddenprints - blood_DNA = new_blood_DNA - fibers = new_fibers - check_blood() - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) - -/datum/component/forensics/proc/wipe_fingerprints() - fingerprints = null - return TRUE - -/datum/component/forensics/proc/wipe_hiddenprints() - return //no. - -/datum/component/forensics/proc/wipe_blood_DNA() - blood_DNA = null - if(isitem(parent)) - qdel(parent.GetComponent(/datum/component/decal/blood)) - return TRUE - -/datum/component/forensics/proc/wipe_fibers() - fibers = null - return TRUE - -/datum/component/forensics/proc/clean_act(datum/source, strength) - if(strength >= CLEAN_STRENGTH_FINGERPRINTS) - wipe_fingerprints() - if(strength >= CLEAN_STRENGTH_BLOOD) - wipe_blood_DNA() - if(strength >= CLEAN_STRENGTH_FIBERS) - wipe_fibers() - -/datum/component/forensics/proc/add_fingerprint_list(list/_fingerprints) //list(text) - if(!length(_fingerprints)) - return - LAZYINITLIST(fingerprints) - for(var/i in _fingerprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. - fingerprints[i] = i - return TRUE - -/datum/component/forensics/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) - if(!M) - return - add_hiddenprint(M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - add_fibers(H) - if(H.gloves) //Check if the gloves (if any) hide fingerprints - var/obj/item/clothing/gloves/G = H.gloves - if(G.transfer_prints) - ignoregloves = TRUE - if(!ignoregloves) - H.gloves.add_fingerprint(H, TRUE) //ignoregloves = 1 to avoid infinite loop. - return - var/full_print = md5(H.dna.uni_identity) - LAZYSET(fingerprints, full_print, full_print) - return TRUE - -/datum/component/forensics/proc/add_fiber_list(list/_fibertext) //list(text) - if(!length(_fibertext)) - return - LAZYINITLIST(fibers) - for(var/i in _fibertext) //We use an associative list, make sure we don't just merge a non-associative list into ours. - fibers[i] = i - return TRUE - -/datum/component/forensics/proc/add_fibers(mob/living/carbon/human/M) - var/fibertext - var/item_multiplier = isitem(src)?1.2:1 - if(M.wear_suit) - fibertext = "Material from \a [M.wear_suit]." - if(prob(10*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - if(!(M.wear_suit.body_parts_covered & CHEST)) - if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(12*item_multiplier) && !LAZYACCESS(fibers, fibertext)) //Wearing a suit means less of the uniform exposed. - LAZYSET(fibers, fibertext, fibertext) - if(!(M.wear_suit.body_parts_covered & HANDS)) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - else if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(15*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - // "Added fibertext: [fibertext]" - LAZYSET(fibers, fibertext, fibertext) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - else if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - return TRUE - -/datum/component/forensics/proc/add_hiddenprint_list(list/_hiddenprints) //list(ckey = text) - if(!length(_hiddenprints)) - return - LAZYINITLIST(hiddenprints) - for(var/i in _hiddenprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. - hiddenprints[i] = _hiddenprints[i] - return TRUE - -/datum/component/forensics/proc/add_hiddenprint(mob/living/M) - if(!M || !M.key) - return - var/hasgloves = "" - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.gloves) - hasgloves = "(gloves)" - var/current_time = TIME_STAMP("hh:mm:ss", FALSE) - if(!LAZYACCESS(hiddenprints, M.key)) - LAZYSET(hiddenprints, M.key, "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]") - else - var/laststamppos = findtext(LAZYACCESS(hiddenprints, M.key), " Last: ") - if(laststamppos) - LAZYSET(hiddenprints, M.key, copytext(hiddenprints[M.key], 1, laststamppos)) - hiddenprints[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" //made sure to be existing by if(!LAZYACCESS);else - var/atom/A = parent - A.fingerprintslast = M.ckey - return TRUE - -/datum/component/forensics/proc/add_blood_DNA(list/dna) //list(dna_enzymes = type) - if(!length(dna)) - return - LAZYINITLIST(blood_DNA) - for(var/i in dna) - blood_DNA[i] = dna[i] - check_blood() - return TRUE - -/datum/component/forensics/proc/check_blood() - if(!isitem(parent)) - return - if(!length(blood_DNA)) - return - parent.LoadComponent(/datum/component/decal/blood) diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index cd5df8220b..ad2b7ded14 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -6,21 +6,28 @@ /datum/component/infective/Initialize(list/datum/disease/_diseases, expire_in) if(islist(_diseases)) - diseases = diseases + diseases = _diseases else diseases = list(_diseases) if(expire_in) expire_time = world.time + expire_in QDEL_IN(src, expire_in) + + if(!ismovableatom(parent)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/try_infect_collide) RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone) - RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) + if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) + if(istype(parent, /obj/item/reagent_containers/food/snacks)) + RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat) + else if(istype(parent, /obj/effect/decal/cleanable/blood/gibs)) + RegisterSignal(parent, COMSIG_GIBS_STREAK, .proc/try_infect_streak) /datum/component/infective/proc/try_infect_eat(datum/source, mob/living/eater, mob/living/feeder) for(var/V in diseases) @@ -73,6 +80,9 @@ if(isliving(M)) try_infect(M, BODY_ZONE_PRECISE_L_FOOT) +/datum/component/infective/proc/try_infect_streak(datum/source, list/directions, list/output_diseases) + output_diseases |= diseases + /datum/component/infective/proc/try_infect(mob/living/L, target_zone) for(var/V in diseases) L.ContactContractDisease(V, target_zone) diff --git a/code/datums/components/lockon_aiming.dm b/code/datums/components/lockon_aiming.dm index cc41e793ed..38b707ac19 100644 --- a/code/datums/components/lockon_aiming.dm +++ b/code/datums/components/lockon_aiming.dm @@ -237,6 +237,3 @@ LOCKON_RANGING_BREAK_CHECK cd++ CHECK_TICK - -/datum/component/lockon_aiming/PostTransfer(datum/new_parent) - return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/mirage_border.dm b/code/datums/components/mirage_border.dm index 2e6f8f79f6..20e3b317ec 100644 --- a/code/datums/components/mirage_border.dm +++ b/code/datums/components/mirage_border.dm @@ -1,4 +1,5 @@ /datum/component/mirage_border + can_transfer = TRUE var/obj/effect/abstract/mirage_holder/holder /datum/component/mirage_border/Initialize(turf/target, direction, range=world.view) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index eb381af577..8c6013aeab 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -10,7 +10,6 @@ var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets var/datum/mood_event/list/mood_events = list() var/insanity_effect = 0 //is the owner being punished for low mood? If so, how much? - var/holdmyinsanityeffect = 0 //before we edit our sanity lets take a look var/obj/screen/mood/screen_obj /datum/component/mood/Initialize() @@ -21,8 +20,7 @@ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event) RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event) - RegisterSignal(parent, COMSIG_INCREASE_SANITY, .proc/IncreaseSanity) - RegisterSignal(parent, COMSIG_DECREASE_SANITY, .proc/DecreaseSanity) + RegisterSignal(parent, COMSIG_MODIFY_SANITY, .proc/modify_sanity) RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud) var/mob/living/owner = parent @@ -131,29 +129,23 @@ switch(mood_level) if(1) - DecreaseSanity(src, 0.2) + setSanity(sanity-0.2) if(2) - DecreaseSanity(src, 0.125, SANITY_CRAZY) + setSanity(sanity-0.125, minimum=SANITY_CRAZY) if(3) - DecreaseSanity(src, 0.075, SANITY_UNSTABLE) + setSanity(sanity-0.075, minimum=SANITY_UNSTABLE) if(4) - DecreaseSanity(src, 0.025, SANITY_DISTURBED) + setSanity(sanity-0.025, minimum=SANITY_DISTURBED) if(5) - IncreaseSanity(src, 0.1) + setSanity(sanity+0.1) if(6) - IncreaseSanity(src, 0.15) + setSanity(sanity+0.15) if(7) - IncreaseSanity(src, 0.20) + setSanity(sanity+0.20) if(8) - IncreaseSanity(src, 0.25, SANITY_GREAT) + setSanity(sanity+0.25, maximum=SANITY_GREAT) if(9) - IncreaseSanity(src, 0.4, SANITY_GREAT) - - if(insanity_effect != holdmyinsanityeffect) - if(insanity_effect > holdmyinsanityeffect) - owner.crit_threshold += (insanity_effect - holdmyinsanityeffect) - else - owner.crit_threshold -= (holdmyinsanityeffect - insanity_effect) + setSanity(sanity+0.4, maximum=SANITY_GREAT) if(HAS_TRAIT(owner, TRAIT_DEPRESSION)) if(prob(0.05)) @@ -164,8 +156,6 @@ add_event(null, "jolly", /datum/mood_event/jolly) clear_event(null, "depression") - holdmyinsanityeffect = insanity_effect - HandleNutrition(owner) /datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions. @@ -187,7 +177,7 @@ sanity = amount switch(sanity) - if(SANITY_INSANE to SANITY_CRAZY) + if(-INFINITY to SANITY_CRAZY) setInsanityEffect(MAJOR_INSANITY_PEN) master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1.5) //Did we change something ? movetypes is runtiming, movetypes=(~FLYING)) sanity_level = 6 @@ -216,35 +206,12 @@ /datum/component/mood/proc/setInsanityEffect(newval)//More code so that the previous proc works if(newval == insanity_effect) return - var/mob/living/master = parent - master.crit_threshold = (master.crit_threshold - insanity_effect) + newval + //var/mob/living/master = parent + //master.crit_threshold = (master.crit_threshold - insanity_effect) + newval insanity_effect = newval -/datum/component/mood/proc/DecreaseSanity(datum/source, amount, minimum = SANITY_INSANE) - if(sanity < minimum) //This might make KevinZ stop fucking pinging me. - IncreaseSanity(src, 0.5) - else - sanity = max(minimum, sanity - amount) - if(sanity < SANITY_UNSTABLE) - if(sanity < SANITY_CRAZY) - insanity_effect = (MAJOR_INSANITY_PEN) - else - insanity_effect = (MINOR_INSANITY_PEN) - -/datum/component/mood/proc/IncreaseSanity(datum/source, amount, maximum = SANITY_NEUTRAL) - // Disturbed stops you from getting any more sane - I'm just gonna bung this in here - var/mob/living/owner = parent - if(HAS_TRAIT(owner, TRAIT_UNSTABLE)) - return - if(sanity > maximum) - DecreaseSanity(src, 0.5) //Removes some sanity to go back to our current limit. - else - sanity = min(maximum, sanity + amount) - if(sanity > SANITY_CRAZY) - if(sanity > SANITY_UNSTABLE) - insanity_effect = 0 - else - insanity_effect = MINOR_INSANITY_PEN +/datum/component/mood/proc/modify_sanity(datum/source, amount, minimum = -INFINITY, maximum = INFINITY) + setSanity(sanity + amount, minimum, maximum) /datum/component/mood/proc/add_event(datum/source, category, type, param) //Category will override any events in the same category, should be unique unless the event is based on the same thing like hunger. var/datum/mood_event/the_event @@ -264,8 +231,6 @@ if(the_event.timeout) addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE) - return the_event - /datum/component/mood/proc/clear_event(datum/source, category) var/datum/mood_event/event = mood_events[category] if(!event) diff --git a/code/datums/components/ntnet_interface.dm b/code/datums/components/ntnet_interface.dm index d945f68ca9..7c364a61ab 100644 --- a/code/datums/components/ntnet_interface.dm +++ b/code/datums/components/ntnet_interface.dm @@ -6,7 +6,7 @@ return /datum/proc/ntnet_send(datum/netdata/data, netid) - GET_COMPONENT(NIC, /datum/component/ntnet_interface) + var/datum/component/ntnet_interface/NIC = GetComponent(/datum/component/ntnet_interface) if(!NIC) return FALSE return NIC.__network_send(data, netid) diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index 301e50dc42..efa0fd14d5 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -1,8 +1,7 @@ /datum/component/orbiter + can_transfer = TRUE dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS var/list/orbiters - var/datum/callback/orbiter_spy - var/datum/callback/orbited_spy //radius: range to orbit at, radius of the circle formed by orbiting (in pixels) //clockwise: whether you orbit clockwise or anti clockwise @@ -14,8 +13,6 @@ return COMPONENT_INCOMPATIBLE orbiters = list() - orbiter_spy = CALLBACK(src, .proc/orbiter_move_react) - orbited_spy = CALLBACK(src, .proc/move_react) var/atom/master = parent master.orbiters = src @@ -25,7 +22,7 @@ /datum/component/orbiter/RegisterWithParent() var/atom/target = parent while(ismovableatom(target)) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, orbited_spy) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react) target = target.loc /datum/component/orbiter/UnregisterFromParent() @@ -40,8 +37,6 @@ for(var/i in orbiters) end_orbit(i) orbiters = null - QDEL_NULL(orbiter_spy) - QDEL_NULL(orbited_spy) return ..() /datum/component/orbiter/InheritComponent(datum/component/orbiter/newcomp, original, list/arguments) @@ -64,7 +59,7 @@ orbiter.orbiting.end_orbit(orbiter) orbiters[orbiter] = TRUE orbiter.orbiting = src - RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, orbiter_spy) + RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, .proc/orbiter_move_react) var/matrix/initial_transform = matrix(orbiter.transform) // Head first! @@ -120,7 +115,7 @@ if(orbited?.loc && orbited.loc != newturf) // We want to know when anything holding us moves too var/atom/target = orbited.loc while(ismovableatom(target)) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, orbited_spy, TRUE) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react, TRUE) target = target.loc var/atom/curloc = master.loc diff --git a/code/datums/components/phantomthief.dm b/code/datums/components/phantomthief.dm new file mode 100644 index 0000000000..ff1c48936f --- /dev/null +++ b/code/datums/components/phantomthief.dm @@ -0,0 +1,39 @@ +//This component applies a customizable drop_shadow filter to its wearer when they toggle combat mode on or off. This can stack. + +/datum/component/wearertargeting/phantomthief + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + signals = list(COMSIG_COMBAT_TOGGLED) + proctype = .proc/handlefilterstuff + var/filter_x + var/filter_y + var/filter_size + var/filter_border + var/filter_color + +/datum/component/wearertargeting/phantomthief/Initialize(_x = -2, _y = 0, _size = 0, _border = 0, _color = "#E62111", list/_valid_slots = list(SLOT_GLASSES)) + . = ..() + if(. == COMPONENT_INCOMPATIBLE) + return + filter_x = _x + filter_y = _y + filter_size = _size + filter_border = _border + filter_color = _color + valid_slots = _valid_slots + +/datum/component/wearertargeting/phantomthief/proc/handlefilterstuff(datum/source, mob/user, combatmodestate) + if(istype(user)) + var/thefilter = filter(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, border = filter_border, color = filter_color) + if(!combatmodestate) + user.filters -= thefilter + else + user.filters += thefilter + +/datum/component/wearertargeting/phantomthief/proc/stripdesiredfilter(mob/user) + if(istype(user)) + var/thefilter = filter(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, border = filter_border, color = filter_color) + user.filters -= thefilter + +/datum/component/wearertargeting/phantomthief/on_drop(datum/source, mob/user) + . = ..() + stripdesiredfilter(user) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index ff424dc02e..a044ca301e 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -44,19 +44,21 @@ if(src.rotation_flags & ROTATION_CLOCKWISE) default_rotation_direction = ROTATION_CLOCKWISE - if(src.rotation_flags & ROTATION_ALTCLICK) +/datum/component/simple_rotation/proc/add_signals() + if(rotation_flags & ROTATION_ALTCLICK) RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage) - if(src.rotation_flags & ROTATION_WRENCH) + if(rotation_flags & ROTATION_WRENCH) RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/WrenchRot) - if(src.rotation_flags & ROTATION_VERBS) +/datum/component/simple_rotation/proc/add_verbs() + if(rotation_flags & ROTATION_VERBS) var/atom/movable/AM = parent - if(src.rotation_flags & ROTATION_FLIP) + if(rotation_flags & ROTATION_FLIP) AM.verbs += /atom/movable/proc/simple_rotate_flip - if(src.rotation_flags & ROTATION_CLOCKWISE) + if(rotation_flags & ROTATION_CLOCKWISE) AM.verbs += /atom/movable/proc/simple_rotate_clockwise - if(src.rotation_flags & ROTATION_COUNTERCLOCKWISE) + if(rotation_flags & ROTATION_COUNTERCLOCKWISE) AM.verbs += /atom/movable/proc/simple_rotate_counterclockwise /datum/component/simple_rotation/proc/remove_verbs() @@ -66,11 +68,30 @@ AM.verbs -= /atom/movable/proc/simple_rotate_clockwise AM.verbs -= /atom/movable/proc/simple_rotate_counterclockwise -/datum/component/simple_rotation/Destroy() +/datum/component/simple_rotation/proc/remove_signals() + UnregisterSignal(parent, list(COMSIG_CLICK_ALT, COMSIG_PARENT_EXAMINE, COMSIG_PARENT_ATTACKBY)) + +/datum/component/simple_rotation/RegisterWithParent() + add_verbs() + add_signals() + . = ..() + +/datum/component/simple_rotation/PostTransfer() + //Because of the callbacks which we don't track cleanly we can't transfer this + //item cleanly, better to let the new of the new item create a new rotation datum + //instead (there's no real state worth transferring) + return COMPONENT_NOTRANSFER + +/datum/component/simple_rotation/UnregisterFromParent() remove_verbs() + remove_signals() + . = ..() + +/datum/component/simple_rotation/Destroy() QDEL_NULL(can_user_rotate) QDEL_NULL(can_be_rotated) QDEL_NULL(after_rotation) + //Signals + verbs removed via UnRegister . = ..() /datum/component/simple_rotation/RemoveComponent() @@ -122,22 +143,22 @@ set name = "Rotate Clockwise" set category = "Object" set src in oview(1) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) - rotcomp.HandRot(usr,ROTATION_CLOCKWISE) + rotcomp.HandRot(null,usr,ROTATION_CLOCKWISE) /atom/movable/proc/simple_rotate_counterclockwise() set name = "Rotate Counter-Clockwise" set category = "Object" set src in oview(1) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) - rotcomp.HandRot(usr,ROTATION_COUNTERCLOCKWISE) + rotcomp.HandRot(null,usr,ROTATION_COUNTERCLOCKWISE) /atom/movable/proc/simple_rotate_flip() set name = "Flip" set category = "Object" set src in oview(1) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) - rotcomp.HandRot(usr,ROTATION_FLIP) + rotcomp.HandRot(null,usr,ROTATION_FLIP) diff --git a/code/datums/components/signal_redirect.dm b/code/datums/components/signal_redirect.dm deleted file mode 100644 index db98d5664a..0000000000 --- a/code/datums/components/signal_redirect.dm +++ /dev/null @@ -1,33 +0,0 @@ -// This should only be used by non components trying to listen to a signal -// If you use this inside a component I will replace your eyes with lemons ~ninjanomnom - -/datum/component/redirect - dupe_mode = COMPONENT_DUPE_ALLOWED - var/list/signals - var/datum/callback/turfchangeCB - -/datum/component/redirect/Initialize(list/_signals, flags=NONE) - //It's not our job to verify the right signals are registered here, just do it. - if(!LAZYLEN(_signals)) - return COMPONENT_INCOMPATIBLE - if(flags & REDIRECT_TRANSFER_WITH_TURF && isturf(parent)) - // If they also want to listen to the turf change then we need to set it up so both callbacks run - if(_signals[COMSIG_TURF_CHANGE]) - turfchangeCB = _signals[COMSIG_TURF_CHANGE] - if(!istype(turfchangeCB)) - . = COMPONENT_INCOMPATIBLE - CRASH("Redirect components must be given instanced callbacks, not proc paths.") - _signals[COMSIG_TURF_CHANGE] = CALLBACK(src, .proc/turf_change) - - signals = _signals - -/datum/component/redirect/RegisterWithParent() - for(var/signal in signals) - RegisterSignal(parent, signal, signals[signal]) - -/datum/component/redirect/UnregisterFromParent() - UnregisterSignal(parent, signals) - -/datum/component/redirect/proc/turf_change(datum/source, path, new_baseturfs, flags, list/transfers) - transfers += src - return turfchangeCB?.InvokeAsync(arglist(args)) diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm index 0b78605869..f7ca711421 100644 --- a/code/datums/components/storage/concrete/_concrete.dm +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -4,6 +4,7 @@ // /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement /datum/component/storage/concrete + can_transfer = TRUE var/drop_all_on_deconstruct = TRUE var/drop_all_on_destroy = FALSE var/drop_all_on_break = FALSE diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 84be4fdca4..7e4a561422 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -56,7 +56,7 @@ /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/firing_pin + /obj/item/firing_pin, /obj/item/gun/ballistic/automatic/pistol )) /datum/component/storage/concrete/pockets/shoes/clown/Initialize() @@ -67,7 +67,7 @@ /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/firing_pin, /obj/item/bikehorn)) + /obj/item/firing_pin, /obj/item/bikehorn, /obj/item/gun/ballistic/automatic/pistol)) /datum/component/storage/concrete/pockets/pocketprotector max_items = 3 diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index adec6f67ce..a92ae9e629 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -57,6 +57,10 @@ var/screen_start_x = 4 //These two are where the storage starts being rendered, screen_loc wise. var/screen_start_y = 2 //End + + var/limited_random_access = FALSE //Quick if statement in accessible_items to determine if we care at all about what people can access at once. + var/limited_random_access_stack_position = 0 //If >0, can only access top items + var/limited_random_access_stack_bottom_up = FALSE //If TRUE, above becomes bottom items /datum/component/storage/Initialize(datum/component/storage/concrete/master) if(!isatom(parent)) @@ -96,6 +100,7 @@ RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup) RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/close_all) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/check_views) RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click) RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto) @@ -145,6 +150,19 @@ var/datum/component/storage/concrete/master = master() return master? master.real_location() : null +//What players can access +//this proc can probably eat a refactor at some point. +/datum/component/storage/proc/accessible_items(random_access = TRUE) + var/list/contents = contents() + if(contents) + if(limited_random_access && random_access) + if(limited_random_access_stack_position && (length(contents) > limited_random_access_stack_position)) + if(limited_random_access_stack_bottom_up) + contents.Cut(1, limited_random_access_stack_position + 1) + else + contents.Cut(1, length(contents) - limited_random_access_stack_position + 1) + return contents + /datum/component/storage/proc/canreach_react(datum/source, list/next) var/datum/component/storage/concrete/master = master() if(!master) @@ -283,8 +301,7 @@ /datum/component/storage/proc/_process_numerical_display() . = list() - var/atom/real_location = real_location() - for(var/obj/item/I in real_location.contents) + for(var/obj/item/I in accessible_items()) if(QDELETED(I)) continue if(!.[I.type]) @@ -295,8 +312,8 @@ //This proc determines the size of the inventory to be displayed. Please touch it only if you know what you're doing. /datum/component/storage/proc/orient2hud(mob/user, maxcolumns) - var/atom/real_location = real_location() - var/adjusted_contents = real_location.contents.len + var/list/accessible_contents = accessible_items() + var/adjusted_contents = length(accessible_contents) //Numbered contents display var/list/datum/numbered_display/numbered_contents @@ -328,8 +345,7 @@ if(cy - screen_start_y >= rows) break else - var/atom/real_location = real_location() - for(var/obj/O in real_location) + for(var/obj/O in accessible_items()) if(QDELETED(O)) continue O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip" @@ -350,9 +366,8 @@ return FALSE var/list/cview = getviewsize(M.client.view) var/maxallowedscreensize = cview[1]-8 - var/atom/real_location = real_location() if(M.active_storage != src && (M.stat == CONSCIOUS)) - for(var/obj/item/I in real_location) + for(var/obj/item/I in accessible_items()) if(I.on_found(M)) return FALSE if(M.active_storage) @@ -360,7 +375,7 @@ orient2hud(M, (isliving(M) ? maxallowedscreensize : 7)) M.client.screen |= boxes M.client.screen |= closer - M.client.screen |= real_location.contents + M.client.screen |= accessible_items() M.active_storage = src LAZYOR(is_using, M) return TRUE @@ -386,6 +401,11 @@ close(M) . = TRUE //returns TRUE if any mobs actually got a close(M) call +/datum/component/storage/proc/check_views() + for(var/mob/M in can_see_contents()) + if(!isobserver(M) && !M.CanReach(src, view_only = TRUE)) + close(M) + /datum/component/storage/proc/emp_act(datum/source, severity) if(emp_shielded) return @@ -587,7 +607,7 @@ return FALSE if(isitem(host)) var/obj/item/IP = host - GET_COMPONENT_FROM(STR_I, /datum/component/storage, I) + var/datum/component/storage/STR_I = I.GetComponent(/datum/component/storage) if((I.w_class >= IP.w_class) && STR_I && !allow_big_nesting) if(!stop_messages) to_chat(M, "[IP] cannot hold [I] as it's a storage item of the same size!") diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index 17b2178df6..64844c4c32 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -12,7 +12,7 @@ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm) /datum/component/swarming/proc/join_swarm(datum/source, atom/movable/AM) - GET_COMPONENT_FROM(other_swarm, /datum/component/swarming, AM) + var/datum/component/swarming/other_swarm = AM.GetComponent(/datum/component/swarming) if(!other_swarm) return swarm() @@ -21,7 +21,7 @@ other_swarm.swarm_members |= src /datum/component/swarming/proc/leave_swarm(datum/source, atom/movable/AM) - GET_COMPONENT_FROM(other_swarm, /datum/component/swarming, AM) + var/datum/component/swarming/other_swarm = AM.GetComponent(/datum/component/swarming) if(!other_swarm || !(other_swarm in swarm_members)) return swarm_members -= other_swarm diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm index 750cc045ce..f8f0679e9b 100644 --- a/code/datums/components/virtual_reality.dm +++ b/code/datums/components/virtual_reality.dm @@ -1,5 +1,5 @@ /datum/component/virtual_reality - dupe_mode = COMPONENT_DUPE_ALLOWED //mindswap memes, shouldn't stack up otherwise. + can_transfer = TRUE var/datum/mind/mastermind // where is my mind t. pixies var/datum/mind/current_mind var/obj/machinery/vr_sleeper/vr_sleeper diff --git a/code/datums/components/wearertargeting.dm b/code/datums/components/wearertargeting.dm index 0aa0831127..feaa88f934 100644 --- a/code/datums/components/wearertargeting.dm +++ b/code/datums/components/wearertargeting.dm @@ -3,7 +3,7 @@ /datum/component/wearertargeting var/list/valid_slots = list() var/list/signals = list() - var/datum/callback/callback = CALLBACK(GLOBAL_PROC, .proc/pass) + var/proctype = .proc/pass var/mobtype = /mob/living /datum/component/wearertargeting/Initialize() @@ -14,13 +14,9 @@ /datum/component/wearertargeting/proc/on_equip(datum/source, mob/equipper, slot) if((slot in valid_slots) && istype(equipper, mobtype)) - RegisterSignal(equipper, signals, callback, TRUE) + RegisterSignal(equipper, signals, proctype, TRUE) else UnregisterSignal(equipper, signals) /datum/component/wearertargeting/proc/on_drop(datum/source, mob/user) - UnregisterSignal(user, signals) - -/datum/component/wearertargeting/Destroy() - QDEL_NULL(callback) //is likely to ourselves. - return ..() \ No newline at end of file + UnregisterSignal(user, signals) \ No newline at end of file diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 6d504cefd4..84b0320375 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -1,5 +1,6 @@ /datum/component/wet_floor dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + can_transfer = TRUE var/highest_strength = TURF_DRY var/lube_flags = NONE //why do we have this? var/list/time_left_list //In deciseconds. @@ -26,14 +27,19 @@ if(!isopenturf(parent)) return COMPONENT_INCOMPATIBLE add_wet(strength, duration_minimum, duration_add, duration_maximum) - RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) - RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) permanent = _permanent if(!permanent) START_PROCESSING(SSwet_floors, src) addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization. last_process = world.time +/datum/component/wet_floor/RegisterWithParent() + RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) + RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) + +/datum/component/wet_floor/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY)) + /datum/component/wet_floor/Destroy() STOP_PROCESSING(SSwet_floors, src) var/turf/T = parent @@ -138,12 +144,19 @@ /datum/component/wet_floor/PreTransfer() var/turf/O = parent O.cut_overlay(current_overlay) + //That turf is no longer slippery, we're out of here + //Slippery components don't transfer due to callbacks + qdel(O.GetComponent(/datum/component/slippery)) /datum/component/wet_floor/PostTransfer() if(!isopenturf(parent)) return COMPONENT_INCOMPATIBLE var/turf/T = parent T.add_overlay(current_overlay) + //Make sure to add/update any slippery component on the new turf (update_flags calls LoadComponent) + update_flags() + + //NB it's possible we get deleted after this, due to inherit /datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME, _permanent = FALSE) var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 33e92e4de5..8a3fd82cb9 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -42,8 +42,8 @@ destination.dna.unique_enzymes = unique_enzymes destination.dna.uni_identity = uni_identity destination.dna.blood_type = blood_type - destination.set_species(species.type, icon_update=0) destination.dna.features = features.Copy() + destination.set_species(species.type, icon_update=0) destination.dna.real_name = real_name destination.dna.nameless = nameless destination.dna.custom_species = custom_species diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index dcc16f1ba5..c859f8127d 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -11,6 +11,8 @@ var/config_max_users = 0 var/config_min_users = 0 var/voteweight = 1 + var/max_round_search_span = 0 //If this is nonzero, then if the map has been played more than max_rounds_played within the search span (max determined by define in persistence.dm), this map won't be available. + var/max_rounds_played = 0 // Config actually from the JSON - should default to Box var/map_name = "Box Station" @@ -23,6 +25,10 @@ var/minetype = "lavaland" + var/maptype = MAP_TYPE_STATION //This should be used to adjust ingame behavior depending on the specific type of map being played. For instance, if an overmap were added, it'd be appropriate for it to only generate with a MAP_TYPE_SHIP + + var/announcertype = "standard" //Determines the announcer the map uses. standard uses the default announcer, classic, but has a random chance to use other similarly-themed announcers, like medibot + var/allow_custom_shuttles = TRUE var/shuttles = list( "cargo" = "cargo_box", @@ -30,6 +36,8 @@ "whiteship" = "whiteship_box", "emergency" = "emergency_box") + var/year_offset = 540 //The offset of ingame year from the actual IRL year. You know you want to make a map that takes place in the 90's. Don't lie. + /proc/load_map_config(filename = "data/next_map.json", default_to_box, delete_after, error_if_missing = TRUE) var/datum/map_config/config = new if (default_to_box) @@ -122,8 +130,21 @@ log_world("map_config space_empty_levels is not a number!") return + temp = json["year_offset"] + if (isnum(temp)) + year_offset = temp + else if (!isnull(temp)) + log_world("map_config year_offset is not a number!") + return + if ("minetype" in json) minetype = json["minetype"] + + if ("maptype" in json) + maptype = json["maptype"] + + if ("announcertype" in json) + announcertype = json["announcertype"] allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm index 1b095c555d..31023b3fc7 100644 --- a/code/datums/mutable_appearance.dm +++ b/code/datums/mutable_appearance.dm @@ -10,10 +10,11 @@ // And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var // Helper similar to image() -/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE) +/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE, color = "#FFFFFF") var/mutable_appearance/MA = new() MA.icon = icon MA.icon_state = icon_state MA.layer = layer MA.plane = plane + MA.color = color return MA diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 9762426608..34a676603e 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -282,6 +282,11 @@ name = "Ancient Cloning Lab" description = "An experimental cloning lab snapped off from an ancient ship. The cloner model inside lacks many modern functionalities and security measures." +/datum/map_template/ruin/space/hilbertresearchfacility + id = "hilbert_facility" + suffix = "hilbertshoteltestingsite.dmm" + name = "Hilbert Research Facility" + description = "A research facility of great bluespace discoveries. Long since abandoned, willingly or not..." /datum/map_template/ruin/space/augmentation id = "augmentationfacility" suffix = "augmentationfacility.dmm" diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index e6147297df..e6d80bedb5 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -177,8 +177,8 @@ /datum/map_template/shuttle/emergency/airless suffix = "airless" name = "Build your own shuttle kit" - description = "Save money by building your own shuttle! The chassis will dock upon purchase, but launch will have to be authorized as usual via shuttle call. Interior and atmosphere not included." - admin_notes = "No brig, no medical facilities, no air." + description = "Save money by building your own shuttle! The chassis will dock upon purchase, but launch will have to be authorized as usual via shuttle call. Interior and lighting not included." + admin_notes = "No brig, no medical facilities, just an empty box." credit_cost = -7500 /datum/map_template/shuttle/emergency/airless/prerequisites_met() @@ -222,9 +222,9 @@ /datum/map_template/shuttle/emergency/luxury suffix = "luxury" name = "Luxury Shuttle" - description = "A luxurious golden shuttle complete with an indoor swimming pool. Each crewmember wishing to board must bring 500 credits, payable in cash and mineral coin." - admin_notes = "Due to the limited space for non paying crew, this shuttle may cause a riot." - credit_cost = 10000 + description = "A luxurious golden shuttle complete with an indoor swimming pool. Entry is free, so long as you can afford the initial cost." + admin_notes = "Fancy, and very roomy!" + credit_cost = 17500 /datum/map_template/shuttle/emergency/discoinferno suffix = "discoinferno" @@ -300,7 +300,7 @@ suffix = "syndicate" name = "Syndicate GM Battlecruiser" credit_cost = 20000 - description = "Manufactured by the Gorlex Marauders, this cruiser has been specially designed with high occupancy in mind, while remaining robust in combat situations. Features a fully stocked EVA storage, armory, medbay, and bar!" + description = "(Emag only) Manufactured by the Gorlex Marauders, this cruiser has been specially designed with high occupancy in mind, while remaining robust in combat situations. Features a fully stocked EVA storage, armory, medbay, and bar!" admin_notes = "An emag exclusive, stocked with syndicate equipment and turrets that will target any simplemob." /datum/map_template/shuttle/emergency/syndicate/prerequisites_met() @@ -333,7 +333,7 @@ /datum/map_template/shuttle/emergency/supermatter suffix = "supermatter" name = "Hyperfractal Gigashuttle" - description = "\"I dunno, this seems kinda needlessly complicated.\"\n\ + description = "(Emag only) \"I dunno, this seems kinda needlessly complicated.\"\n\ \"This shuttle has very a very high safety record, according to CentCom Officer Cadet Yins.\"\n\ \"Are you sure?\"\n\ \"Yes, it has a safety record of N-A-N, which is apparently larger than 100%.\"" @@ -341,7 +341,12 @@ Outside of admin intervention, it cannot explode. \ It does, however, still dust anything on contact, emits high levels of radiation, and induce hallucinations in anyone looking at it without protective goggles. \ Emitters spawn powered on, expect admin notices, they are harmless." - credit_cost = 100000 + credit_cost = 15000 + +/datum/map_template/shuttle/emergency/supermatter/prerequisites_met() + if("emagged" in SSshuttle.shuttle_purchase_requirements_met) + return TRUE + return FALSE /datum/map_template/shuttle/emergency/imfedupwiththisworld suffix = "imfedupwiththisworld" @@ -372,6 +377,12 @@ description = "On the smaller size with a modern design, this shuttle is for the crew who like the cosier things, while still being able to stretch their legs." credit_cost = 1000 +/datum/map_template/shuttle/emergency/gorilla + suffix = "gorilla" + name = "Gorilla Cargo Freighter" + description = "A rustic, barely excuseable shuttle transporting important cargo. Not for crew who are about to go ape." + credit_cost = 2000 + /datum/map_template/shuttle/ferry/base suffix = "base" name = "transport ferry" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index da59c79ac5..fb636f6911 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -80,6 +80,36 @@ desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are." icon_state = "asleep" +//TASER +/datum/status_effect/electrode + id = "tased" + blocks_combatmode = TRUE + status_type = STATUS_EFFECT_REPLACE + alert_type = null + +/datum/status_effect/electrode/on_creation(mob/living/new_owner, set_duration) + if(isnum(set_duration)) + duration = set_duration + . = ..() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + if(C.combatmode) + C.toggle_combat_mode(TRUE) + C.add_movespeed_modifier(MOVESPEED_ID_TASED_STATUS, TRUE, override = TRUE, multiplicative_slowdown = 8) + +/datum/status_effect/electrode/on_remove() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + C.remove_movespeed_modifier(MOVESPEED_ID_TASED_STATUS) + . = ..() + +/datum/status_effect/electrode/tick() + if(owner) + owner.adjustStaminaLoss(5) //if you really want to try to stamcrit someone with a taser alone, you can, but it'll take time and good timing. + +/datum/status_effect/electrode/nextmove_modifier() //why is this a proc. its no big deal since this doesnt get called often at all but literally w h y + return 2 + //OTHER DEBUFFS /datum/status_effect/his_wrath //does minor damage over time unless holding His Grace id = "his_wrath" @@ -125,7 +155,7 @@ /datum/status_effect/belligerent/proc/do_movement_toggle(force_damage) var/number_legs = owner.get_num_legs(FALSE) - if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check() && number_legs) + if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check(chargecost = 0) && number_legs) if(force_damage || owner.m_intent != MOVE_INTENT_WALK) if(GLOB.ratvar_awakens) owner.Knockdown(20) @@ -218,7 +248,7 @@ if(owner.confused) owner.confused = 0 severity = 0 - else if(!owner.anti_magic_check() && owner.stat != DEAD && severity) + else if(!owner.anti_magic_check(chargecost = 0) && owner.stat != DEAD && severity) var/static/hum = get_sfx('sound/effects/screech.ogg') //same sound for every proc call if(owner.getToxLoss() > MANIA_DAMAGE_TO_CONVERT) if(is_eligible_servant(owner)) diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index dfe0a1d94e..0041799314 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -5,7 +5,6 @@ alert_type = /obj/screen/alert/status_effect/freon var/icon/cube var/can_melt = TRUE - var/datum/weakref/redirect_component /obj/screen/alert/status_effect/freon name = "Frozen Solid" @@ -13,7 +12,7 @@ icon_state = "frozen" /datum/status_effect/freon/on_apply() - redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) + RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) if(!owner.stat) to_chat(owner, "You become frozen in a cube!") cube = icon('icons/effects/freeze.dmi', "ice_cube") @@ -40,8 +39,7 @@ owner.cut_overlay(cube) owner.adjust_bodytemperature(100) owner.update_canmove() - qdel(redirect_component.resolve()) - redirect_component = null + UnregisterSignal(owner, COMSIG_LIVING_RESIST) /datum/status_effect/freon/watcher duration = 8 diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm index c8bcd831e2..bc1cfba112 100644 --- a/code/datums/status_effects/status_effect.dm +++ b/code/datums/status_effects/status_effect.dm @@ -11,6 +11,7 @@ var/on_remove_on_mob_delete = FALSE //if we call on_remove() when the mob is deleted var/examine_text //If defined, this text will appear when the mob is examined - to use he, she etc. use "SUBJECTPRONOUN" and replace it in the examines themselves var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description + var/blocks_combatmode //Does this status effect prevent the user from toggling combat mode? var/obj/screen/alert/status_effect/linked_alert = null //the alert itself, if it exists /datum/status_effect/New(list/arguments) diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index dffdc92630..80a5f24250 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -16,13 +16,13 @@ mood_quirk = TRUE /datum/quirk/apathetic/add() - GET_COMPONENT_FROM(mood, /datum/component/mood, quirk_holder) + var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood) if(mood) mood.mood_modifier = 0.8 /datum/quirk/apathetic/remove() if(quirk_holder) - GET_COMPONENT_FROM(mood, /datum/component/mood, quirk_holder) + var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood) if(mood) mood.mood_modifier = 1 //Change this once/if species get their own mood modifiers. diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index f70e3a3c68..c015dba5ec 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -94,6 +94,51 @@ lose_text = "You don't feel as prudish as before." medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." +/datum/quirk/libido + name = "Nymphomania" + desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." + value = 0 + mob_trait = TRAIT_NYMPHO + gain_text = "You are feeling extra wild." + lose_text = "You don't feel that burning sensation anymore." + +/datum/quirk/libido/add() + var/mob/living/M = quirk_holder + M.min_arousal = 16 + M.arousal_rate = 3 + +/datum/quirk/libido/remove() + var/mob/living/M = quirk_holder + M.min_arousal = initial(M.min_arousal) + M.arousal_rate = initial(M.arousal_rate) + +/datum/quirk/maso + name = "Masochism" + desc = "You are aroused by pain." + value = 0 + mob_trait = TRAIT_MASO + gain_text = "You desire to be hurt." + lose_text = "Pain has become less exciting for you." + +/datum/quirk/exhibitionism + name = "Exhibitionism" + desc = "You don't mind showing off your bare body to strangers, in fact you find it quite satistying." + value = 0 + medical_record_text = "Patient has been diagnosed with exhibitionistic disorder." + mob_trait = TRAIT_EXHIBITIONIST + gain_text = "You feel like exposing yourself to the world." + lose_text = "Indecent exposure doesn't sound as charming to you anymore." + +/datum/quirk/pharmacokinesis //Prevents unwanted organ additions. + name = "Acute hepatic pharmacokinesis" + desc = "You've a rare genetic disorder that causes Incubus draft and Sucubus milk to be absorbed by your liver instead." + value = 0 + mob_trait = TRAIT_PHARMA + lose_text = "Your liver feels different." + var/active = FALSE + var/power = 0 + var/cachedmoveCalc = 1 + /datum/quirk/assblastusa name = "Buns of Steel" desc = "You've never skipped ass day. With this trait, you are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand." diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index f3b8118087..6765cdf2cd 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -18,7 +18,7 @@ area_type = /area protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer, - /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle) + /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/security/prison) target_trait = ZTRAIT_STATION immunity_type = "rad" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 7c9dc3f4fe..68f22242e1 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -36,6 +36,12 @@ var/rad_flags = NONE // Will move to flags_1 when i can be arsed to var/rad_insulation = RAD_NO_INSULATION + var/icon/blood_splatter_icon + var/list/fingerprints + var/list/fingerprintshidden + var/list/blood_DNA + var/list/suit_fibers + /atom/New(loc, ...) //atom creation method that preloads variables at creation if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New() @@ -220,7 +226,7 @@ return FALSE /atom/proc/CheckExit() - return 1 + return TRUE /atom/proc/HasProximity(atom/movable/AM as mob|obj) return @@ -254,14 +260,26 @@ if(article) . = "[article] [src]" override[EXAMINE_POSITION_ARTICLE] = article + + var/should_override = FALSE + if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) + should_override = TRUE + + + if(blood_DNA && !istype(src, /obj/effect/decal)) + override[EXAMINE_POSITION_BEFORE] = " blood-stained " + should_override = TRUE + + if(should_override) . = override.Join("") +///Generate the full examine string of this atom (including icon for goonchat) /atom/proc/get_examine_string(mob/user, thats = FALSE) . = "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]" /atom/proc/examine(mob/user) - to_chat(user, get_examine_string(user, TRUE)) + to_chat(user, "[get_examine_string(user, TRUE)].") if(desc) to_chat(user, desc) @@ -326,12 +344,14 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() - if(get_blood_id() != "blood") + var/blood_id = get_blood_id() + if(!(blood_id =="blood" || blood_id == "jellyblood")) return return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - if(get_blood_id() != "blood") + var/blood_id = get_blood_id() + if(!(blood_id =="blood" || blood_id == "jellyblood")) return var/list/blood_dna = list() if(dna) @@ -349,18 +369,116 @@ var/new_blood_dna = L.get_blood_dna_list() if(!new_blood_dna) return FALSE - var/old_length = blood_DNA_length() - add_blood_DNA(new_blood_dna) - if(blood_DNA_length() == old_length) + LAZYINITLIST(blood_DNA) //if our list of DNA doesn't exist yet, initialise it. + var/old_length = blood_DNA.len + blood_DNA |= new_blood_dna + if(blood_DNA.len == old_length) return FALSE return TRUE +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) + LAZYINITLIST(blood_DNA) + var/old_length = blood_DNA.len + blood_DNA |= blood_dna + if(blood_DNA.len > old_length) + return TRUE + //some new blood DNA was added + //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() if(!blood_dna) return FALSE - return add_blood_DNA(blood_dna) + return add_blood_DNA(blood_dna, M.diseases) + +//to add blood onto something, with blood dna info to include. +/atom/proc/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + return FALSE + +/obj/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + return transfer_blood_dna(blood_dna, diseases) + +/obj/item/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + . = ..() + if(!.) + return + add_blood_overlay() + +/obj/item/proc/add_blood_overlay() + if(!blood_DNA.len) + return + if(initial(icon) && initial(icon_state)) + blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) + add_overlay(blood_splatter_icon) + +/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + . = ..() + transfer_blood = rand(2, 4) + +/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src + if(!B) + B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) + B.transfer_blood_dna(blood_dna, diseases) //give blood info to the blood decal. + return TRUE //we bloodied the floor + +/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + if(head) + head.add_blood_DNA(blood_dna, diseases) + update_inv_head() + else if(wear_mask) + wear_mask.add_blood_DNA(blood_dna, diseases) + update_inv_wear_mask() + if(wear_neck) + wear_neck.add_blood_DNA(blood_dna, diseases) + update_inv_neck() + if(wear_suit) + wear_suit.add_blood_DNA(blood_dna, diseases) + update_inv_wear_suit() + else if(w_uniform) + w_uniform.add_blood_DNA(blood_dna, diseases) + update_inv_w_uniform() + if(gloves) + var/obj/item/clothing/gloves/G = gloves + G.add_blood_DNA(blood_dna, diseases) + else + transfer_blood_dna(blood_dna, diseases) + bloody_hands = rand(2, 4) + update_inv_gloves() //handles bloody hands overlays and updating + return TRUE + +/atom/proc/blood_DNA_to_color() + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in blood_DNA) + if(colors[blood_DNA[bloop]]) + colors[blood_DNA[bloop]]++ + else + colors[blood_DNA[bloop]] = 1 + + var/final_rgb = BLOOD_COLOR_HUMAN //a default so we don't have white blood graphics if something messed up + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb + +/atom/proc/clean_blood() + if(islist(blood_DNA)) + blood_DNA = null + return TRUE /atom/proc/wash_cream() return TRUE @@ -410,7 +528,7 @@ /atom/proc/component_storage_contents_dump_act(datum/component/storage/src_object, mob/user) var/list/things = src_object.contents() var/datum/progressbar/progress = new(user, things.len, src) - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress))) stoplag(1) qdel(progress) @@ -711,7 +829,7 @@ Proc for attack log creation, because really why not return filters[filter_data.Find(name)] /atom/movable/proc/remove_filter(name) - if(filter_data[name]) + if(filter_data && filter_data[name]) filter_data -= name update_filters() - return TRUE + return TRUE \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 83762240bc..0957db5fcb 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -27,7 +27,6 @@ glide_size = 8 appearance_flags = TILE_BOUND|PIXEL_SCALE var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm - var/floating = FALSE var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. var/atom/movable/pulling var/grab_state = 0 @@ -422,6 +421,9 @@ var/atom/movable/AM = item AM.onTransitZ(old_z,new_z) +/atom/movable/proc/setMovetype(newval) + movement_type = newval + //Called whenever an object moves and by mobs when they attempt to move themselves through space //And when an object or action applies a force on src, see newtonian_move() below //Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting @@ -518,6 +520,8 @@ TT.thrower = thrower TT.diagonals_first = diagonals_first TT.callback = callback + if(!QDELETED(thrower)) + TT.target_zone = thrower.zone_selected var/dist_x = abs(target.x - src.x) var/dist_y = abs(target.y - src.y) @@ -684,14 +688,14 @@ /atom/movable/proc/float(on) if(throwing) return - if(on && !floating) + if(on && !(movement_type & FLOATING)) animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) sleep(10) animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) - floating = TRUE - else if (!on && floating) + setMovetype(movement_type | FLOATING) + else if (!on && (movement_type & FLOATING)) animate(src, pixel_y = initial(pixel_y), time = 10) - floating = FALSE + setMovetype(movement_type & ~FLOATING) /* Language procs */ /atom/movable/proc/get_language_holder(shadow=TRUE) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 9d1a3b650c..79890e4cdd 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -39,12 +39,12 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize() . = ..() - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) bananium.insert_amount(max_recharge, MAT_BANANIUM) START_PROCESSING(SSobj, src) /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/process() - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) var/bananium_amount = bananium.amount(MAT_BANANIUM) if(bananium_amount < max_recharge) bananium.insert_amount(min(recharge_rate, max_recharge - bananium_amount), MAT_BANANIUM) @@ -73,19 +73,19 @@ /obj/item/melee/transforming/energy/sword/bananium/Initialize() . = ..() AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/melee/transforming/energy/sword/bananium/attack(mob/living/M, mob/living/user) ..() if(active) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(M) /obj/item/melee/transforming/energy/sword/bananium/throw_impact(atom/hit_atom, throwingdatum) . = ..() if(active) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(hit_atom) /obj/item/melee/transforming/energy/sword/bananium/attackby(obj/item/I, mob/living/user, params) @@ -98,7 +98,7 @@ /obj/item/melee/transforming/energy/sword/bananium/transform_weapon(mob/living/user, supress_message_text) ..() - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/melee/transforming/energy/sword/bananium/ignition_effect(atom/A, mob/user) @@ -108,7 +108,7 @@ if(!active) transform_weapon(user, TRUE) user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku, but the blade slips off of [user.p_them()] harmlessly!") - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(user) return SHAME @@ -130,12 +130,12 @@ /obj/item/shield/energy/bananium/Initialize() . = ..() AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/shield/energy/bananium/attack_self(mob/living/carbon/human/user) ..() - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/shield/energy/bananium/throw_at(atom/target, range, speed, mob/thrower, spin=1) @@ -149,7 +149,7 @@ if(active) var/caught = hit_atom.hitby(src, 0, 0) if(iscarbon(hit_atom) && !caught)//if they are a carbon and they didn't catch it - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(hit_atom) if(thrownby && !caught) throw_at(thrownby, throw_range+2, throw_speed, null, 1) @@ -267,6 +267,7 @@ operation_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/honker/dark max_equip = 3 + spawn_tracked = FALSE /obj/mecha/combat/honker/dark/GrantActions(mob/living/user, human_occupant = 0) ..() diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index e22b785670..6efa6c974a 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -107,6 +107,11 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /// If a only ruleset has been executed. var/only_ruleset_executed = FALSE +/datum/game_mode/dynamic/New() // i have NO IDEA if this is the proper way to do this. + ..() + pop_per_requirement = CONFIG_GET(number/dynamic_pop_per_requirement) + GLOB.dynamic_high_pop_limit = CONFIG_GET(number/dynamic_high_pop_limit) + /datum/game_mode/dynamic/admin_panel() var/list/dat = list("Game Mode Panel

Game Mode Panel

") dat += "Dynamic Mode \[VV\]
" @@ -216,7 +221,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) . += G.get_report() print_command_report(., "Central Command Status Summary", announce=FALSE) - priority_announce("A summary has been copied and printed to all communications consoles.", "Security level elevated.", 'sound/ai/intercept.ogg') + priority_announce("A summary has been copied and printed to all communications consoles.", "Security level elevated.", "intercept") if(GLOB.security_level < SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 66afcbfb92..011b6ec251 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -3,6 +3,8 @@ var/name = "" /// For admin logging and round end screen, do not change this unless making a new rule type. var/ruletype = "" + /// For config purposes, similar to config_tag for secret game modes. + var/config_tag = null /// If set to TRUE, the rule won't be discarded after being executed, and dynamic will call rule_process() every time it ticks. var/persistent = FALSE /// If set to TRUE, dynamic mode will be able to draft this ruleset again later on. (doesn't apply for roundstart rules) @@ -65,7 +67,18 @@ restricted_roles += protected_roles if(CONFIG_GET(flag/protect_assistant_from_antagonist)) restricted_roles += "Assistant" - + var/weights = CONFIG_GET(keyed_list/dynamic_weight) + var/costs = CONFIG_GET(keyed_list/dynamic_cost) + var/requirementses = CONFIG_GET(keyed_list/dynamic_requirements) // can't damn well use requirements + var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement) + if(config_tag in weights) + weight = weights[config_tag] + if(config_tag in costs) + cost = costs[config_tag] + if(config_tag in requirementses) + requirements = requirementses[config_tag] + if(config_tag in high_population_requirements) + high_population_requirement = high_population_requirements[config_tag] if (istype(SSticker.mode, /datum/game_mode/dynamic)) mode = SSticker.mode else if (GLOB.master_mode != "dynamic") // This is here to make roundstart forced ruleset function. diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 24b4c67357..fde020a3ae 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -52,6 +52,7 @@ /datum/dynamic_ruleset/latejoin/infiltrator name = "Syndicate Infiltrator" + config_tag = "latejoin_traitor" antag_datum = /datum/antagonist/traitor antag_flag = ROLE_TRAITOR restricted_roles = list("AI", "Cyborg") @@ -72,6 +73,7 @@ /datum/dynamic_ruleset/latejoin/provocateur name = "Provocateur" + config_tag = "latejoin_revolution" antag_datum = /datum/antagonist/rev/head antag_flag = ROLE_REV_HEAD antag_flag_override = ROLE_REV diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 4da085d5a9..f24301d716 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -169,6 +169,7 @@ /datum/dynamic_ruleset/midround/autotraitor name = "Syndicate Sleeper Agent" + config_tag = "midround_traitor" antag_datum = /datum/antagonist/traitor antag_flag = ROLE_TRAITOR restricted_roles = list("AI", "Cyborg", "Positronic Brain") @@ -224,6 +225,7 @@ /datum/dynamic_ruleset/midround/malf name = "Malfunctioning AI" + config_tag = "malf_ai" antag_datum = /datum/antagonist/traitor antag_flag = ROLE_MALF enemy_roles = list("Security Officer", "Warden","Detective","Head of Security", "Captain", "Scientist", "Chemist", "Research Director", "Chief Engineer") @@ -261,7 +263,7 @@ M.mind.special_role = antag_flag M.mind.add_antag_datum(AI) if(prob(ion_announce)) - priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/ionstorm.ogg') + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", "ionstorm") if(prob(removeDontImproveChance)) M.replace_random_law(generate_ion_law(), list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION)) else @@ -276,6 +278,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/wizard name = "Wizard" + config_tag = "midround_wizard" antag_datum = /datum/antagonist/wizard antag_flag = ROLE_WIZARD enemy_roles = list("Security Officer","Detective","Head of Security", "Captain") @@ -308,6 +311,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/nuclear name = "Nuclear Assault" + config_tag = "midround_nuclear" antag_flag = ROLE_OPERATIVE antag_datum = /datum/antagonist/nukeop enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain") @@ -351,6 +355,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/blob name = "Blob" + config_tag = "blob" antag_datum = /datum/antagonist/blob antag_flag = ROLE_BLOB enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") @@ -374,6 +379,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/xenomorph name = "Alien Infestation" + config_tag = "xenos" antag_datum = /datum/antagonist/xeno antag_flag = ROLE_ALIEN enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") @@ -420,6 +426,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/nightmare name = "Nightmare" + config_tag = "nightmare" antag_datum = /datum/antagonist/nightmare antag_flag = "Nightmare" antag_flag_override = ROLE_ALIEN diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 38ce6f68d0..6a9aefa996 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -7,6 +7,7 @@ /datum/dynamic_ruleset/roundstart/traitor name = "Traitors" + config_tag = "traitor" persistent = TRUE antag_flag = ROLE_TRAITOR antag_datum = /datum/antagonist/traitor/ @@ -48,6 +49,7 @@ /datum/dynamic_ruleset/roundstart/traitorbro name = "Blood Brothers" + config_tag = "traitorbro" antag_flag = ROLE_BROTHER antag_datum = /datum/antagonist/brother/ restricted_roles = list("AI", "Cyborg") @@ -100,6 +102,7 @@ /datum/dynamic_ruleset/roundstart/changeling name = "Changelings" + config_tag = "changeling" antag_flag = ROLE_CHANGELING antag_datum = /datum/antagonist/changeling restricted_roles = list("AI", "Cyborg") @@ -149,6 +152,7 @@ // Dynamic is a wonderful thing that adds wizards to every round and then adds even more wizards during the round. /datum/dynamic_ruleset/roundstart/wizard name = "Wizard" + config_tag = "wizard" antag_flag = ROLE_WIZARD antag_datum = /datum/antagonist/wizard minimum_required_age = 14 @@ -194,6 +198,7 @@ /datum/dynamic_ruleset/roundstart/bloodcult name = "Blood Cult" + config_tag = "cult" antag_flag = ROLE_CULTIST antag_datum = /datum/antagonist/cult minimum_required_age = 14 @@ -254,6 +259,7 @@ /datum/dynamic_ruleset/roundstart/nuclear name = "Nuclear Emergency" + config_tag = "nuclear" antag_flag = ROLE_OPERATIVE antag_datum = /datum/antagonist/nukeop var/datum/antagonist/antag_leader_datum = /datum/antagonist/nukeop/leader @@ -343,6 +349,7 @@ /datum/dynamic_ruleset/roundstart/delayed/revs name = "Revolution" + config_tag = "revolution" persistent = TRUE antag_flag = ROLE_REV_HEAD antag_flag_override = ROLE_REV @@ -433,6 +440,7 @@ /datum/dynamic_ruleset/roundstart/extended name = "Extended" + config_tag = "extended" antag_flag = null antag_datum = null restricted_roles = list() @@ -456,6 +464,7 @@ /datum/dynamic_ruleset/roundstart/clockcult name = "Clockcult" + config_tag = "clockwork_cult" antag_flag = ROLE_SERVANT_OF_RATVAR antag_datum = /datum/antagonist/clockcult restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") @@ -559,6 +568,7 @@ /datum/dynamic_ruleset/roundstart/nuclear/clown_ops name = "Clown Ops" + config_tag = "clownops" antag_datum = /datum/antagonist/nukeop/clownop antag_leader_datum = /datum/antagonist/nukeop/leader/clownop requirements = list(101,101,101,101,101,101,101,101,101,101) @@ -584,6 +594,7 @@ /datum/dynamic_ruleset/roundstart/devil name = "Devil" + config_tag = "devil" antag_flag = ROLE_DEVIL antag_datum = /datum/antagonist/devil restricted_roles = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") @@ -642,6 +653,7 @@ /datum/dynamic_ruleset/roundstart/monkey name = "Monkey" + config_tag = "monkey" antag_flag = ROLE_MONKEY antag_datum = /datum/antagonist/monkey/leader restricted_roles = list("Cyborg", "AI") @@ -704,6 +716,7 @@ /datum/dynamic_ruleset/roundstart/meteor name = "Meteor" + config_tag = "meteor" persistent = TRUE required_candidates = 0 weight = 3 diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 6013b48016..8d3254933a 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -1,5 +1,5 @@ /proc/power_failure() - priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg') + priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", "poweroff") for(var/obj/machinery/power/smes/S in GLOB.machines) if(istype(get_area(S), /area/ai_monitored/turret_protected) || !is_station_level(S.z)) continue @@ -48,7 +48,7 @@ /proc/power_restore() - priority_announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/ai/poweron.ogg') + priority_announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", "poweron") for(var/obj/machinery/power/apc/C in GLOB.machines) if(C.cell && is_station_level(C.z)) C.cell.charge = C.cell.maxcharge @@ -70,7 +70,7 @@ /proc/power_restore_quick() - priority_announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/ai/poweron.ogg') + priority_announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", "poweron") for(var/obj/machinery/power/smes/S in GLOB.machines) if(!is_station_level(S.z)) continue diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index c1ae2287ef..1229a9cf8c 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -29,4 +29,4 @@ /datum/game_mode/extended/announced/send_intercept(report = 0) if(flipseclevel) //CIT CHANGE - allows the sec level to be flipped roundstart return ..() - priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", 'sound/ai/commandreport.ogg') + priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", "commandreport") diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index f790053863..17e26e66af 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -258,7 +258,7 @@ /datum/game_mode/proc/send_intercept() if(flipseclevel && !(config_tag == "extended"))//CIT CHANGE - lets the security level be flipped roundstart - priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", 'sound/ai/commandreport.ogg') + priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", "commandreport") return var/intercepttext = "Central Command Status Summary
" intercepttext += "Central Command has intercepted and partially decoded a Syndicate transmission with vital information regarding their movements. The following report outlines the most \ @@ -288,7 +288,7 @@ intercepttext += G.get_report() print_command_report(intercepttext, "Central Command Status Summary", announce=FALSE) - priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", 'sound/ai/intercept.ogg') + priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", "intercept") if(GLOB.security_level < SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 426d23b4ab..58f551c648 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) - new /obj/effect/decal/cleanable/xenoblood(T) + new /obj/effect/decal/cleanable/blood/xeno(T) //Station buster Tunguska /obj/effect/meteor/tunguska diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 5a54ccd5df..1c6e21491c 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -80,7 +80,7 @@ popup.open() /obj/machinery/autolathe/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() /obj/machinery/autolathe/attackby(obj/item/O, mob/user, params) @@ -164,7 +164,7 @@ var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff)) busy = TRUE use_power(power) @@ -188,7 +188,7 @@ return /obj/machinery/autolathe/proc/make_item(power, metal_cost, glass_cost, multiplier, coeff, is_stack) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/A = drop_location() use_power(power) var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) @@ -213,7 +213,7 @@ var/T = 0 for(var/obj/item/stock_parts/matter_bin/MB in component_parts) T += MB.rating*75000 - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = T T=1.2 for(var/obj/item/stock_parts/manipulator/M in component_parts) @@ -262,7 +262,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -294,7 +294,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -309,7 +309,7 @@ return dat /obj/machinery/autolathe/proc/materials_printout() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] @@ -322,7 +322,7 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) return FALSE if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm new file mode 100644 index 0000000000..c489f6c9c9 --- /dev/null +++ b/code/game/machinery/bloodbankgen.dm @@ -0,0 +1,361 @@ +/obj/machinery/bloodbankgen + name = "blood bank generator" + desc = "Generates universally applicable synthetics for all blood types. Add regular blood to convert." + icon = 'icons/obj/bloodbank.dmi' + icon_state = "bloodbank-off" + density = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 80 + circuit = /obj/item/circuitboard/machine/bloodbankgen + interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_ALLOW_SILICON + var/draining = FALSE + var/filling = FALSE + var/obj/item/reagent_containers/blood/bag = null + var/obj/item/reagent_containers/blood/outbag = null + var/bloodstored = 0 + var/maxbloodstored = 1000 + var/menustat = "menu" + var/efficiency = 0 + var/productivity = 0 + +/obj/machinery/bloodbankgen/Initialize() + . = ..() + create_reagents(1000) + update_icon() + +/obj/machinery/bloodbankgen/Destroy() + QDEL_NULL(bag) + QDEL_NULL(outbag) + return ..() + +/obj/machinery/bloodbankgen/contents_explosion(severity, target) + ..() + if(bag) + bag.ex_act(severity, target) + if(outbag) + outbag.ex_act(severity, target) + +/obj/machinery/bloodbankgen/handle_atom_del(atom/A) + ..() + if(A == bag) + bag = null + update_icon() + updateUsrDialog() + if(A == outbag) + outbag = null + update_icon() + updateUsrDialog() + +/obj/machinery/bloodbankgen/RefreshParts() + var/E = 0 + var/P = 0 + for(var/obj/item/stock_parts/manipulator/M in component_parts) + E += M.rating + efficiency = E + productivity = P + +/obj/machinery/bloodbankgen/update_icon() + cut_overlays() + if(is_operational()) + icon_state = "bloodbank-on" + + if(panel_open) + add_overlay("bloodbank-panel") + + if(src.bag) + add_overlay("bloodbag-input") + if(bag.reagents.total_volume) + var/mutable_appearance/filling_overlay = mutable_appearance(icon, "input-reagent") + + var/percent = round((bag.reagents.total_volume / bag.volume) * 100) + switch(percent) + if(0 to 9) + filling_overlay.icon_state = "input-reagent0" + if(10 to 24) + filling_overlay.icon_state = "input-reagent10" + if(25 to 49) + filling_overlay.icon_state = "input-reagent25" + if(50 to 74) + filling_overlay.icon_state = "input-reagent50" + if(75 to 79) + filling_overlay.icon_state = "input-reagent75" + if(80 to 90) + filling_overlay.icon_state = "input-reagent80" + if(91 to INFINITY) + filling_overlay.icon_state = "input-reagent100" + + filling_overlay.color = list(mix_color_from_reagents(bag.reagents.reagent_list)) + add_overlay(filling_overlay) + + if(src.outbag) + add_overlay("bloodbag-output") + if(outbag.reagents.total_volume) + var/mutable_appearance/filling_overlay = mutable_appearance(icon, "output-reagent") + + var/percent = round((outbag.reagents.total_volume / outbag.volume) * 100) + switch(percent) + if(0 to 9) + filling_overlay.icon_state = "output-reagent0" + if(10 to 24) + filling_overlay.icon_state = "output-reagent10" + if(25 to 49) + filling_overlay.icon_state = "output-reagent25" + if(50 to 74) + filling_overlay.icon_state = "output-reagent50" + if(75 to 79) + filling_overlay.icon_state = "output-reagent75" + if(80 to 90) + filling_overlay.icon_state = "output-reagent80" + if(91 to INFINITY) + filling_overlay.icon_state = "output-reagent100" + + filling_overlay.color = list(mix_color_from_reagents(outbag.reagents.reagent_list)) + add_overlay(filling_overlay) + return + +/obj/machinery/bloodbankgen/process() + if(!is_operational()) + return PROCESS_KILL + + bloodstored = reagents.total_volume + + var/transfer_amount = 20 + + if(draining) + if(reagents.total_volume >= reagents.maximum_volume) + draining = FALSE + return + + if(bag) + if(bag.reagents.total_volume) + var/datum/reagent/blood/B = bag.reagents.has_reagent("blood") + if(B) + var/amount = reagents.maximum_volume - reagents.total_volume //monitor the machine's internal storage + amount = min(amount, transfer_amount) + if(!amount) + draining = FALSE + updateUsrDialog() + visible_message("[src] beeps loudly.") + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + return + + if(bag.blood_type == "SY") //no infinite loops using synthetics. + reagents.add_reagent("syntheticblood", amount) + else + reagents.add_reagent("syntheticblood", (amount+(5*efficiency))) + + if(bag.reagents.total_volume >= amount) + bag.reagents.remove_reagent("blood", amount) + else + visible_message("[src] beeps loudly.") + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + draining = FALSE + + bag.update_icon() + update_icon() + updateUsrDialog() + else + draining = FALSE + updateUsrDialog() + return + + if(filling) + if(!reagents || !reagents.total_volume) + filling = FALSE //there ain't anything in the machine yo. + return + if(outbag && outbag.reagents.total_volume < outbag.reagents.maximum_volume) + var/amount = outbag.reagents.maximum_volume - outbag.reagents.total_volume //monitor the output bag's internal storage + amount = min(amount, transfer_amount) + if(!amount) + filling = FALSE + visible_message("[src] pings.") + playsound(loc, 'sound/machines/beep.ogg', 50, 1) + updateUsrDialog() + return + + reagents.trans_to(outbag, amount) + outbag.update_icon() + update_icon() + updateUsrDialog() + else + visible_message("[src] pings.") + playsound(loc, 'sound/machines/beep.ogg', 50, 1) + filling = FALSE + updateUsrDialog() + return + +/obj/machinery/bloodbankgen/attackby(obj/item/O, mob/user, params) + if(user.a_intent == INTENT_HARM) + return ..() + + if(default_deconstruction_screwdriver(user, "bloodbank-off", "bloodbank-off", O)) + if(bag) + var/obj/item/reagent_containers/blood/B = bag + B.forceMove(drop_location()) + bag = null + if(outbag) + var/obj/item/reagent_containers/blood/B = outbag + B.forceMove(drop_location()) + outbag = null + update_icon() + return + + if(default_deconstruction_crowbar(O)) + return + + if(istype(O, /obj/item/reagent_containers/blood)) + . = 1 //no afterattack + if(!panel_open) + if(bag && outbag) + to_chat(user, "This machine already has bags attached.") + + if(!bag && !outbag) + var/choice = alert(user, "Choose where to place [O]", "", "Input", "Cancel", "Output") + switch(choice) + if("Cancel") + return FALSE + if("Input") + attachinput(O, user) + if("Output") + attachoutput(O, user) + else if(!bag) + attachinput(O, user) + else if(!outbag) + attachoutput(O, user) + else + to_chat(user, "Close the maintenance panel first.") + return + + else + to_chat(user, "You cannot put this in [src]!") + +/obj/machinery/bloodbankgen/ui_interact(mob/user) + . = ..() + + if(!is_operational()) + return + + var/dat + switch(menustat) + if("noblood") + dat += "
You do not have enough blood product to create synthetics.
" + menustat = "menu" + if("complete") + dat += "
Operation complete.
" + menustat = "menu" + if("nobagspace") + dat += "
Not enough space left in container. Please replace receptical.
" + menustat = "menu" + + dat+= "
Current Synthetics stockpile: [reagents.total_volume] units.
" + + dat += "
Supply Bag
" + if(bag) + dat += "
Current Capacity: [bag.reagents.total_volume] of [bag.reagents.maximum_volume]" + if(bag.reagents && bag.reagents.total_volume) + dat += "
Drain" + + dat += "
Detach" + + + dat += "

Synthetics Bag
" + if(outbag) + dat += "
Current Capacity:[outbag.reagents.total_volume] of [outbag.reagents.maximum_volume]" + if(!(outbag.reagents.total_volume >= outbag.reagents.maximum_volume)) + dat += "
Fill" + dat += "
Detach" + + if(!bag && !outbag) + dat += "
No containers inside, please insert container.
" + + var/datum/browser/popup = new(user, "bloodbankgen", name, 350, 520) + popup.set_content(dat) + popup.open() + +/obj/machinery/bloodbankgen/proc/activateinput() + if(bag) + draining = TRUE + update_icon() + else + to_chat(usr, "There is no blood bag in the input slot.") + return + +/obj/machinery/bloodbankgen/proc/activateoutput() + if(outbag) + filling = TRUE + update_icon() + else + to_chat(usr, "There is no blood bag in the output slot.") + return + +/obj/machinery/bloodbankgen/proc/check_container_volume(list/reagents, multiplier = 1) + var/sum_reagents = 0 + for(var/R in reagents) + sum_reagents += reagents[R] + sum_reagents *= multiplier + + if(outbag.reagents.total_volume + sum_reagents > outbag.reagents.maximum_volume) + menustat = "nobagspace" + return FALSE + + return TRUE + +/obj/machinery/bloodbankgen/proc/detachinput() + if(bag) + bag.forceMove(drop_location()) + if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) + usr.put_in_hands(bag) + bag = null + update_icon() + +/obj/machinery/bloodbankgen/proc/detachoutput() + if(outbag) + outbag.forceMove(drop_location()) + if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) + usr.put_in_hands(outbag) + outbag = null + update_icon() + +/obj/machinery/bloodbankgen/proc/attachinput(obj/item/O, mob/user) + if(!bag) + if(!user.transferItemToLoc(O, src)) + return + bag = O + to_chat(user, "You add [O] to the machine's input slot.") + update_icon() + updateUsrDialog() + else + to_chat(user, "There is already something in this slot!") + +/obj/machinery/bloodbankgen/proc/attachoutput(obj/item/O, mob/user) + if(!outbag) + if(!user.transferItemToLoc(O, src)) + return + outbag = O + to_chat(user, "You add [O] to the machine's output slot.") + update_icon() + updateUsrDialog() + else + to_chat(user, "There is already something in this slot!") + +/obj/machinery/bloodbankgen/Topic(href, href_list) + if(..() || panel_open) + return + + usr.set_machine(src) + + if(href_list["activateinput"]) + activateinput() + updateUsrDialog() + + else if(href_list["detachinput"]) + detachinput() + updateUsrDialog() + + else if(href_list["activateoutput"]) + activateoutput() + updateUsrDialog() + + else if(href_list["detachoutput"]) + detachoutput() + updateUsrDialog() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 4bce450359..b988bd8d35 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,8 +1,7 @@ #define ARCADE_WEIGHT_TRICK 4 #define ARCADE_WEIGHT_USELESS 2 #define ARCADE_WEIGHT_RARE 1 -#define ARCADE_WEIGHT_PLUSH 65 - +#define ARCADE_RATIO_PLUSH 0.20 // average 1 out of 6 wins is a plush. /obj/machinery/computer/arcade name = "random arcade" @@ -27,7 +26,6 @@ /obj/item/toy/katana = ARCADE_WEIGHT_TRICK, /obj/item/toy/minimeteor = ARCADE_WEIGHT_TRICK, /obj/item/toy/nuke = ARCADE_WEIGHT_TRICK, - /obj/item/toy/plush/random = ARCADE_WEIGHT_PLUSH, /obj/item/toy/redbutton = ARCADE_WEIGHT_TRICK, /obj/item/toy/spinningtoy = ARCADE_WEIGHT_TRICK, /obj/item/toy/sword = ARCADE_WEIGHT_TRICK, @@ -90,6 +88,9 @@ var/obj/item/circuitboard/CB = new thegame() new CB.build_path(loc, CB) return INITIALIZE_HINT_QDEL + //The below object acts as a spawner with a wide array of possible picks, most being uninspired references to past/current player characters. + //Nevertheless, this keeps its ratio constant with the sum of all the others prizes. + prizes[/obj/item/toy/plush/random] = counterlist_sum(prizes) * ARCADE_RATIO_PLUSH Reset() /obj/machinery/computer/arcade/proc/prizevend(mob/user, list/rarity_classes) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 7dcd85d310..11935e2bfc 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -17,7 +17,7 @@ network += lowertext(i) /obj/machinery/computer/security/check_eye(mob/user) - if( (stat & (NOPOWER|BROKEN)) || user.incapacitated() || user.eye_blind ) + if(CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !in_view_range(user, src) || !user.canUseTopic(src, !issilicon(user), FALSE)) user.unset_machine() return if(!(user in watchers)) @@ -30,14 +30,6 @@ if(!C.can_use()) user.unset_machine() return - if(!issilicon(user)) - if(!Adjacent(user)) - user.unset_machine() - return - else if(iscyborg(user)) - var/list/viewing = viewers(src) - if(!viewing.Find(user)) - user.unset_machine() /obj/machinery/computer/security/on_unset_machine(mob/user) watchers.Remove(user) @@ -97,36 +89,22 @@ user.unset_machine() playsound(src, 'sound/machines/terminal_off.ogg', 25, 0) return - if(C) - var/camera_fail = 0 - if(!C.can_use() || user.machine != src || user.eye_blind || user.incapacitated()) - camera_fail = 1 - else if(iscyborg(user)) - var/list/viewing = viewers(src) - if(!viewing.Find(user)) - camera_fail = 1 - else if(!issilicon(user)) - if(!Adjacent(user)) - camera_fail = 1 - - if(camera_fail) - user.unset_machine() - return 0 - - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0) - if(isAI(user)) - var/mob/living/silicon/ai/A = user - A.eyeobj.setLoc(get_turf(C)) - A.client.eye = A.eyeobj - else - user.reset_perspective(C) - user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static) - user.clear_fullscreen("flash", 5) - watchers[user] = C - use_power(50) - addtimer(CALLBACK(src, .proc/use_camera_console, user), 5) - else + if(!C || !C.can_use() || CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !in_view_range(user, src) || !user.canUseTopic(src, !issilicon(user), FALSE)) user.unset_machine() + return FALSE + + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0) + if(isAI(user)) + var/mob/living/silicon/ai/A = user + A.eyeobj.setLoc(get_turf(C)) + A.client.eye = A.eyeobj + else + user.reset_perspective(C) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static) + user.clear_fullscreen("flash", 5) + watchers[user] = C + use_power(50) + addtimer(CALLBACK(src, .proc/use_camera_console, user), 5) //returns the list of cameras accessible from this computer /obj/machinery/computer/security/proc/get_available_cameras() diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 5cbd2d8975..43cfbdb33b 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -298,13 +298,15 @@ src.updateUsrDialog() playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) say("Initiating scan...") - + var/prev_locked = scanner.locked + scanner.locked = TRUE spawn(20) src.scan_occupant(scanner.occupant) loading = 0 src.updateUsrDialog() playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + scanner.locked = prev_locked //No locking an open scanner. diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 557f2f0636..f3612078d6 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -335,7 +335,7 @@ Nuke_request(input, usr) to_chat(usr, "Request sent.") usr.log_message("has requested the nuclear codes from CentCom", LOG_SAY) - priority_announce("The codes for the on-station nuclear self-destruct have been requested by [usr]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested",'sound/ai/commandreport.ogg') + priority_announce("The codes for the on-station nuclear self-destruct have been requested by [usr]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested","commandreport") CM.lastTimeUsed = world.time diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index d4fe3e27a2..93bc637d8d 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -484,7 +484,7 @@ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", authenticated, rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", authenticated, rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer, t1) else if(href_list["del_c"]) if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) @@ -575,7 +575,7 @@ if(user) if(message) if(authenticated) - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, !issilicon(user))) if(!record1 || record1 == active1) if(!record2 || record2 == active2) return 1 diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 1823e34100..ae235dc73f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -455,7 +455,7 @@ What a mess.*/ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer, t1) if("Delete Record (ALL)") if(active1) @@ -801,7 +801,7 @@ What a mess.*/ /obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 0, record1, record2) if(user) if(authenticated) - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, !issilicon(user))) if(!trim(message1)) return 0 if(!record1 || record1 == active1) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 692bc8f038..67407d220e 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(uplinkholder) to_chat(user, "[src] already has an uplink in it.") return - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + var/datum/component/uplink/hidden_uplink = I.GetComponent(/datum/component/uplink) if(hidden_uplink) if(!user.transferItemToLoc(I, src)) return @@ -57,7 +57,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/donateTC(amt, addLog = 1) if(uplinkholder && linkedboss) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + var/datum/component/uplink/hidden_uplink = uplinkholder.GetComponent(/datum/component/uplink) if(amt < 0) linkedboss.storedcrystals += hidden_uplink.telecrystals if(addLog) @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/giveTC(amt, addLog = 1) if(uplinkholder && linkedboss) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + var/datum/component/uplink/hidden_uplink = uplinkholder.GetComponent(/datum/component/uplink) if(amt < 0) hidden_uplink.telecrystals += linkedboss.storedcrystals if(addLog) @@ -94,7 +94,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E dat += "No linked management consoles detected. Scan for uplink stations using the management console.

" if(uplinkholder) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + var/datum/component/uplink/hidden_uplink = uplinkholder.GetComponent(/datum/component/uplink) dat += "[hidden_uplink.telecrystals] telecrystals remain in this uplink.
" if(linkedboss) dat += "Donate TC: 1 | 5 | All" @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) dat += "[A.name] | " if(A.uplinkholder) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, A.uplinkholder) + var/datum/component/uplink/hidden_uplink = A.uplinkholder.GetComponent(/datum/component/uplink) dat += "[hidden_uplink.telecrystals] telecrystals." if(storedcrystals) dat+= "
Add TC: 1 | 5 | 10 | All" diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 0e6a059c7b..b5869ef36b 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -90,6 +90,7 @@ say("Processing hub calibration to target...") calibrating = 1 + power_station.update_icon() spawn(50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration calibrating = 0 if(check_hub_connection()) @@ -97,6 +98,7 @@ say("Calibration complete.") else say("Error: Unable to detect hub.") + power_station.update_icon() updateDialog() updateDialog() @@ -139,7 +141,7 @@ L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = M var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) //check if we are still around + if(!user.canUseTopic(src, !issilicon(user), NO_DEXTERY)) //check if we are still around return target = L[desc] if(imp_t) @@ -167,7 +169,7 @@ to_chat(user, "No active connected stations located.") return var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) //again, check if we are still around + if(!user.canUseTopic(src, !issilicon(user), NO_DEXTERY)) //again, check if we are still around return var/obj/machinery/teleport/station/target_station = L[desc] if(!target_station || !target_station.teleporter_hub) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 2e78d72b96..eaf8faef12 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -74,7 +74,8 @@ to_chat(user, "You start adding [I] to [src]...") if(do_after(user, 50, target=src)) W.use(5) - new /turf/closed/wall/mineral/wood/nonmetal(get_turf(src)) + var/turf/T = get_turf(src) + T.PlaceOnTop(/turf/closed/wall/mineral/wood/nonmetal) qdel(src) return return ..() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a2da7de29a..3ac386e1fb 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -326,7 +326,7 @@ else //for simple_animals & borgs L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) var/turf/location = get_turf(src) - //add_blood doesn't work for borgs/xenos, but add_blood_floor does. + //add_blood_DNA doesn't work for borgs/xenos, but add_blood_floor does. if(iscarbon(L)) var/mob/living/carbon/C = L C.bleed(DOOR_CRUSH_DAMAGE) diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 7c92c158b3..b121057315 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -146,7 +146,7 @@ if((stat & (NOPOWER|BROKEN)) || !anchored) return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(!materials.has_materials(using_materials)) return // We require more minerals @@ -211,7 +211,7 @@ /obj/machinery/droneDispenser/attackby(obj/item/I, mob/living/user) if(istype(I, /obj/item/crowbar)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() I.play_tool_sound(src) to_chat(user, "You retrieve the materials from [src].") diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm index 6b944f762d..a2d0460d25 100644 --- a/code/game/machinery/gulag_teleporter.dm +++ b/code/game/machinery/gulag_teleporter.dm @@ -135,18 +135,19 @@ The console is located at computer/gulag_teleporter.dm if(linked_reclaimer) linked_reclaimer.stored_items[occupant] = list() var/mob/living/mob_occupant = occupant - for(var/obj/item/W in mob_occupant) - if(!is_type_in_typecache(W, telegulag_required_items)) - if(mob_occupant.temporarilyRemoveItemFromInventory(W)) - if(istype(W, /obj/item/restraints/handcuffs)) - W.forceMove(get_turf(src)) - continue - if(linked_reclaimer) - linked_reclaimer.stored_items[mob_occupant] += W - linked_reclaimer.contents += W - W.forceMove(linked_reclaimer) - else - W.forceMove(src) + for(var/A in mob_occupant.get_equipped_items(TRUE)) + var/obj/item/I = A + if(is_type_in_typecache(I, telegulag_required_items) || !mob_occupant.temporarilyRemoveItemFromInventory(I)) + continue + if(istype(I, /obj/item/restraints/handcuffs)) + I.forceMove(get_turf(src)) + continue + if(linked_reclaimer) + linked_reclaimer.stored_items[mob_occupant] += I + linked_reclaimer.contents += I + I.forceMove(linked_reclaimer) + else + I.forceMove(src) /obj/machinery/gulag_teleporter/proc/handle_prisoner(obj/item/id, datum/data/record/R) if(!ishuman(occupant)) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index b217c14e53..621ca266bb 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -8,14 +8,14 @@ icon_state = "iv_drip" anchored = FALSE mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/mob/living/carbon/attached = null + var/mob/living/carbon/attached var/mode = IV_INJECTING - var/obj/item/reagent_containers/beaker = null + var/obj/item/reagent_containers/beaker var/static/list/drip_containers = typecacheof(list(/obj/item/reagent_containers/blood, /obj/item/reagent_containers/food, /obj/item/reagent_containers/glass)) -/obj/machinery/iv_drip/Initialize() +/obj/machinery/iv_drip/Initialize(mapload) . = ..() update_icon() @@ -84,6 +84,8 @@ if(Adjacent(target) && usr.Adjacent(target)) if(beaker) usr.visible_message("[usr] attaches [src] to [target].", "You attach [src] to [target].") + log_combat(usr, target, "attached", src, "containing: [beaker.name] - ([beaker.reagents.log_list()])") + add_fingerprint(usr) attached = target START_PROCESSING(SSmachines, src) update_icon() @@ -100,6 +102,8 @@ return beaker = W to_chat(user, "You attach [W] to [src].") + user.log_message("attached a [W] to [src] at [AREACOORD(src)] containing ([beaker.reagents.log_list()])", LOG_ATTACK) + add_fingerprint(user) update_icon() return else @@ -142,10 +146,11 @@ if(!amount) if(prob(5)) visible_message("[src] pings.") + playsound(loc, 'sound/machines/beep.ogg', 50, 1) return // If the human is losing too much blood, beep. - if(attached.blood_volume < ( (BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) ) ) + if(attached.blood_volume < ((BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) && ishuman(attached))) //really couldn't care less about monkeys visible_message("[src] beeps loudly.") playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) attached.transfer_blood_to(beaker, amount) @@ -178,9 +183,10 @@ if(usr.incapacitated()) return - if(beaker) - beaker.forceMove(drop_location()) + if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) + if(!usr.put_in_hands(beaker)) + beaker.forceMove(drop_location()) beaker = null update_icon() @@ -195,27 +201,27 @@ if(usr.incapacitated()) return - mode = !mode to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].") update_icon() /obj/machinery/iv_drip/examine(mob/user) - ..() + . = ..() if(get_dist(user, src) > 2) return - to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") + . += "[src] is [mode ? "injecting" : "taking blood"].\n" if(beaker) if(beaker.reagents && beaker.reagents.reagent_list.len) - to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") + . += "\tAttached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.\n" else - to_chat(user, "Attached is an empty [beaker.name].") + . += "\tAttached is an empty [beaker.name].\n" else - to_chat(user, "No chemicals are attached.") + . += "\tNo chemicals are attached.\n" - to_chat(user, "[attached ? attached : "No one"] is attached.") + . += "\t[attached ? attached : "No one"] is attached." + to_chat(user,.) #undef IV_TAKING -#undef IV_INJECTING +#undef IV_INJECTING \ No newline at end of file diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index b0a75c99dc..165170cf0f 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -40,6 +40,8 @@ var/stun_projectile = null //stun mode projectile type var/stun_projectile_sound + var/nonlethal_projectile //projectile to use in stun mode when the target is resting, if any + var/nonlethal_projectile_sound var/lethal_projectile = null //lethal mode projectile type var/lethal_projectile_sound @@ -535,13 +537,22 @@ T = closer break + var/mob/living/carbon/C + if(iscarbon(target)) + C = target + update_icon() var/obj/item/projectile/A //any emagged turrets drains 2x power and uses a different projectile? if(mode == TURRET_STUN) - use_power(reqpower) - A = new stun_projectile(T) - playsound(loc, stun_projectile_sound, 75, 1) + if(nonlethal_projectile && C && C.resting) + use_power(reqpower*0.5) + A = new nonlethal_projectile(T) + playsound(loc, nonlethal_projectile_sound, 75, 1) + else + use_power(reqpower) + A = new stun_projectile(T) + playsound(loc, stun_projectile_sound, 75, 1) else use_power(reqpower * 2) A = new lethal_projectile(T) @@ -653,6 +664,8 @@ base_icon_state = "standard" stun_projectile = /obj/item/projectile/energy/electrode stun_projectile_sound = 'sound/weapons/taser.ogg' + nonlethal_projectile = /obj/item/projectile/beam/disabler + nonlethal_projectile_sound = 'sound/weapons/taser2.ogg' lethal_projectile = /obj/item/projectile/beam/laser lethal_projectile_sound = 'sound/weapons/laser.ogg' desc = "An energy blaster auto-turret." @@ -662,6 +675,8 @@ base_icon_state = "standard" stun_projectile = /obj/item/projectile/energy/electrode stun_projectile_sound = 'sound/weapons/taser.ogg' + nonlethal_projectile = /obj/item/projectile/beam/disabler + nonlethal_projectile_sound = 'sound/weapons/taser2.ogg' lethal_projectile = /obj/item/projectile/beam/laser/heavylaser lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg' desc = "An energy blaster auto-turret." @@ -681,6 +696,8 @@ /obj/machinery/porta_turret/ai faction = list("silicon") + nonlethal_projectile = /obj/item/projectile/beam/disabler + nonlethal_projectile_sound = 'sound/weapons/taser2.ogg' /obj/machinery/porta_turret/ai/assess_perp(mob/living/carbon/human/perp) return 10 //AI turrets shoot at everything not in their faction diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 9d431487e0..1a8bc7ece4 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -32,10 +32,10 @@ mat_mod *= 50000 for(var/obj/item/stock_parts/manipulator/M in component_parts) amt_made = 12.5 * M.rating //% of materials salvaged - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = mat_mod amount_produced = min(50, amt_made) + 50 - GET_COMPONENT(butchering, /datum/component/butchering) + var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering) butchering.effectiveness = amount_produced butchering.bonus_modifier = amount_produced/5 @@ -99,7 +99,7 @@ /obj/machinery/recycler/proc/eat(atom/AM0, sound=TRUE) var/list/to_eat if(isitem(AM0)) - to_eat = AM0.GetAllContents() + to_eat = AM0.GetAllContentsIgnoring(GLOB.typecache_mob) else to_eat = list(AM0) @@ -144,7 +144,7 @@ qdel(L) return else - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) @@ -195,7 +195,7 @@ L.Unconscious(100) L.adjustBruteLoss(crush_damage) if(L.stat == DEAD && (L.butcher_results || L.guaranteed_butcher_results)) - GET_COMPONENT(butchering, /datum/component/butchering) + var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering) butchering.Butcher(src,L) /obj/machinery/recycler/deathtrap diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index d308d180d0..f35caf514c 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -265,6 +265,8 @@ things_to_clear += occupant.GetAllContents() for(var/atom/movable/AM in things_to_clear) //Scorches away blood and forensic evidence, although the SSU itself is unaffected SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRONG) + AM.clean_blood() + AM.fingerprints = list() var/datum/component/radioactive/contamination = AM.GetComponent(/datum/component/radioactive) if(contamination) qdel(contamination) @@ -435,4 +437,4 @@ if(I) I.forceMove(loc) . = TRUE - update_icon() + update_icon() \ No newline at end of file diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 1f1f13ee22..ae71a0b844 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -209,5 +209,7 @@ icon_state = "controller-o" else if(stat & (BROKEN|NOPOWER)) icon_state = "controller-p" + else if(teleporter_console && teleporter_console.calibrating) + icon_state = "controller-c" else icon_state = "controller" diff --git a/code/game/machinery/turnstile.dm b/code/game/machinery/turnstile.dm new file mode 100644 index 0000000000..1fd78056d4 --- /dev/null +++ b/code/game/machinery/turnstile.dm @@ -0,0 +1,84 @@ +/obj/machinery/turnstile + name = "turnstile" + desc = "A mechanical door that permits one-way access and prevents tailgating." + icon = 'icons/obj/turnstile.dmi' + icon_state = "turnstile_map" + density = FALSE + armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 90, acid = 70) + anchored = TRUE + use_power = FALSE + idle_power_usage = 2 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + layer = OPEN_DOOR_LAYER + +/obj/machinery/turnstile/Initialize() + . = ..() + icon_state = "turnstile" + +/obj/machinery/turnstile/CanAtmosPass(turf/T) + return TRUE + +/obj/machinery/turnstile/bullet_act(obj/item/projectile/P, def_zone) + return -1 //Pass through! + +/obj/machinery/turnstile/proc/allowed_access(var/mob/B) + if(B.pulledby && ismob(B.pulledby)) + return allowed(B.pulledby) | allowed(B) + else + return allowed(B) + +/obj/machinery/turnstile/CanPass(atom/movable/AM, turf/T) + if(ismob(AM)) + var/mob/B = AM + if(isliving(AM)) + var/mob/living/M = AM + + if(world.time - M.last_bumped <= 5) + return FALSE + M.last_bumped = world.time + + var/allowed_access = FALSE + var/turf/behind = get_step(src, dir) + + if(B in behind.contents) + allowed_access = allowed_access(B) + else + to_chat(usr, "\the [src] resists your efforts.") + return FALSE + + if(allowed_access) + flick("operate", src) + playsound(src,'sound/items/ratchet.ogg',50,0,3) + return TRUE + else + flick("deny", src) + playsound(src,'sound/machines/deniedbeep.ogg',50,0,3) + return FALSE + if(ispath(AM, /obj/item/)) + return TRUE + else + return FALSE + +/obj/machinery/turnstile/CheckExit(atom/movable/AM as mob|obj, target) + if(isliving(AM)) + var/mob/living/M = AM + var/outdir = dir + if(allowed_access(M)) + switch(dir) + if(NORTH) + outdir = SOUTH + if(SOUTH) + outdir = NORTH + if(EAST) + outdir = WEST + if(WEST) + outdir = EAST + var/turf/outturf = get_step(src, outdir) + var/canexit = (target == src.loc) | (target == outturf) + + if(!canexit && world.time - M.last_bumped <= 5) + to_chat(usr, "\the [src] resists your efforts.") + M.last_bumped = world.time + return canexit + else + return TRUE \ No newline at end of file diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 5e8515d3d5..8be079656b 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -11,10 +11,6 @@ var/obj/item/color_source var/max_wash_capacity = 5 -/obj/machinery/washing_machine/ComponentInitialize() - . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) - /obj/machinery/washing_machine/examine(mob/user) ..() to_chat(user, "Alt-click it to start a wash cycle.") @@ -59,7 +55,8 @@ M.Translate(rand(-3, 3), rand(-1, 3)) animate(src, transform=M, time=2) -/obj/machinery/washing_machine/proc/clean_blood() +/obj/machinery/washing_machine/clean_blood() + ..() if(!busy) bloody_mess = FALSE update_icon() @@ -67,7 +64,8 @@ /obj/machinery/washing_machine/proc/wash_cycle() for(var/X in contents) var/atom/movable/AM = X - SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + AM.clean_blood() AM.machine_wash(src) busy = FALSE diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index ea51693135..431d4c30b3 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -3,3 +3,9 @@ internal_damage_threshold = 50 armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) mouse_pointer = 'icons/mecha/mecha_mouse.dmi' + var/spawn_tracked = TRUE + +/obj/mecha/combat/Initialize() + . = ..() + if(spawn_tracked) + trackers += new /obj/item/mecha_parts/mecha_tracking(src) \ No newline at end of file diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index cd7051d074..caaa3e3a00 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -19,7 +19,3 @@ /obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0) ..() defense_action.Remove(user) - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 564f308df3..c7c180af41 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -29,6 +29,7 @@ operation_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/gygax/dark max_equip = 4 + spawn_tracked = FALSE /obj/mecha/combat/gygax/dark/loaded/Initialize() . = ..() @@ -48,7 +49,6 @@ return cell = new /obj/item/stock_parts/cell/hyper(src) - /obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0) ..() overload_action.Grant(user, src) @@ -65,7 +65,3 @@ /obj/mecha/combat/gygax/dark/RemoveActions(mob/living/user, human_occupant = 0) ..() thrusters_action.Remove(user) - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index 4c32e9c367..ed29809f91 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -152,8 +152,4 @@ var/color="" for (var/i=0;i<6;i++) color = color+pick(colors) - return color - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) + return color \ No newline at end of file diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 21f8259e69..42817b586c 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -16,6 +16,7 @@ force = 45 max_equip = 4 bumpsmash = 1 + spawn_tracked = FALSE /obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0) ..() diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm new file mode 100644 index 0000000000..b1f2cdd02a --- /dev/null +++ b/code/game/mecha/combat/neovgre.dm @@ -0,0 +1,97 @@ +/obj/mecha/combat/neovgre + name = "Neovgre, the Anima Bulwark" + desc = "Nezbere's most powerful creation, a mighty war machine of unmatched power said to have ended wars in a single night." + icon = 'icons/mecha/neovgre.dmi' + icon_state = "neovgre" + max_integrity = 500 //This is THE ratvarian superweaon, its deployment is an investment + armor = list("melee" = 50, "bullet" = 40, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) //Its similar to the clockwork armour albeit with a few buffs becuase RATVARIAN SUPERWEAPON!! + force = 50 //SMASHY SMASHY!! + internal_damage_threshold = 0 + step_in = 3 + pixel_x = -16 + layer = ABOVE_MOB_LAYER + breach_time = 100 //ten seconds till all goes to shit + recharge_rate = 100 + wreckage = /obj/structure/mecha_wreckage/durand/neovgre + spawn_tracked = FALSE + +/obj/mecha/combat/neovgre/GrantActions(mob/living/user, human_occupant = 0) //No Eject action for you sonny jim, your life for Ratvar! + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + +/obj/mecha/combat/neovgre/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + +/obj/mecha/combat/neovgre/MouseDrop_T(mob/M, mob/user) + if(!is_servant_of_ratvar(user)) + to_chat(user, "BEGONE HERETIC!") + return + else + ..() + +/obj/mecha/combat/neovgre/moved_inside(mob/living/carbon/human/H) + var/list/Itemlist = H.get_contents() + for(var/obj/item/clockwork/slab/W in Itemlist) + to_chat(H, "You safely store [W] inside [src].") + qdel(W) + . = ..() + +/obj/mecha/combat/neovgre/obj_destruction() + for(var/mob/M in src) + to_chat(M, "You are consumed by the fires raging within Neovgre...") + M.dust() + playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, 0) + src.visible_message("The reactor has gone critical, its going to blow!") + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/combat/neovgre/proc/go_critical() + explosion(get_turf(loc), 3, 5, 10, 20, 30) + Destroy(src) + +/obj/mecha/combat/neovgre/container_resist(mob/living/user) + to_chat(user, "Neovgre requires a lifetime commitment friend, no backing out now!") + return + +/obj/mecha/combat/neovgre/process() + ..() + if(GLOB.ratvar_awakens) // At this point only timley intervention by lord singulo could hople to stop the superweapon + cell.charge = INFINITY + max_integrity = INFINITY + obj_integrity = max_integrity + CHECK_TICK //Just to be on the safe side lag wise + else if(cell.charge < cell.maxcharge) + for(var/obj/effect/clockwork/sigil/transmission/T in range(SIGIL_ACCESS_RANGE, src)) + var/delta = min(recharge_rate, cell.maxcharge - cell.charge) + if (get_clockwork_power() <= delta) + cell.charge += delta + adjust_clockwork_power(-delta) + CHECK_TICK + +/obj/mecha/combat/neovgre/Initialize() + .=..() + GLOB.neovgre_exists ++ + var/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/neovgre/N = new + N.attach(src) + +/obj/structure/mecha_wreckage/durand/neovgre + name = "\improper Neovgre wreckage?" + desc = "On closer inspection this looks like the wreck of a durand with some spraypainted cardboard duct taped to it!" + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/neovgre + equip_cooldown = 8 //Rapid fire heavy laser cannon, simple yet elegant + energy_drain = 30 + name = "Aribter Laser Cannon" + desc = "Please re-attach this to neovgre and stop asking questions about why it looks like a normal Nanotrasen issue Solaris laser cannon - Nezbere" + fire_sound = "sound/weapons/neovgre_laser.ogg" + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/neovgre/can_attach(obj/mecha/combat/neovgre/M) + if(istype(M)) + return 1 + return 0 diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 1264a647c4..15b865c1e9 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -27,7 +27,3 @@ ..() switch_damtype_action.Remove(user) phasing_action.Remove(user) - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index 4cd8c01517..7e8c865517 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -18,6 +18,7 @@ stepsound = null turnsound = null opacity = 0 + spawn_tracked = FALSE /obj/mecha/combat/reticence/loaded/Initialize() . = ..() diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index eb3261bb27..4044951c42 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -100,12 +100,12 @@ /obj/item/mecha_parts/mecha_equipment/drill/attach(obj/mecha/M) ..() - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = TRUE /obj/item/mecha_parts/mecha_equipment/drill/detach(atom/moveto) ..() - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = FALSE /obj/item/mecha_parts/mecha_equipment/drill/proc/drill_mob(mob/living/target, mob/user) @@ -115,7 +115,7 @@ if(target.stat == DEAD && target.getBruteLoss() >= 200) log_combat(user, target, "gibbed", name) if(LAZYLEN(target.butcher_results) || LAZYLEN(target.guaranteed_butcher_results)) - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.Butcher(chassis, target) else target.gib() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index e1dc80911f..4acf7981bc 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -47,7 +47,7 @@ //maximum stocking amount (default 300000, 600000 at T4) for(var/obj/item/stock_parts/matter_bin/M in component_parts) T += M.rating - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = (200000 + (T*50000)) //resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55) @@ -109,7 +109,7 @@ /obj/machinery/mecha_part_fabricator/proc/output_available_resources() var/output - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] output += "[M.name]: [M.amount] cm³" @@ -130,7 +130,7 @@ /obj/machinery/mecha_part_fabricator/proc/check_resources(datum/design/D) if(D.reagents_list.len) // No reagents storage - no reagent designs. return FALSE - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(materials.has_materials(get_resources_w_coeff(D))) return TRUE return FALSE @@ -140,7 +140,7 @@ desc = "It's building \a [initial(D.name)]." var/list/res_coef = get_resources_w_coeff(D) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.use_amount(res_coef) add_overlay("fab-active") use_power = ACTIVE_POWER_USE @@ -384,14 +384,14 @@ break if(href_list["remove_mat"] && href_list["material"]) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_sheets(text2num(href_list["remove_mat"]), href_list["material"]) updateUsrDialog() return /obj/machinery/mecha_part_fabricator/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() ..() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 22aac63d2b..717c94362c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -49,6 +49,8 @@ var/lights = FALSE var/lights_power = 6 var/last_user_hud = 1 // used to show/hide the mecha hud while preserving previous preference + var/breach_time = 0 + var/recharge_rate = 0 var/bumpsmash = 0 //Whether or not the mech destroys walls by running into it. //inner atmos @@ -1023,7 +1025,7 @@ /obj/mecha/log_message(message as text, message_type=LOG_GAME, color=null, log_globally) log.len++ - log[log.len] = list("time"="[STATION_TIME_TIMESTAMP("hh:mm:ss")]","date","year"="[GLOB.year_integer+540]","message"="[color?"":null][message][color?"":null]") + log[log.len] = list("time"="[STATION_TIME_TIMESTAMP("hh:mm:ss")]","date","year"="[GLOB.year_integer]","message"="[color?"":null][message][color?"":null]") ..() return log.len @@ -1032,9 +1034,6 @@ last_entry["message"] += "
[red?"":null][message][red?"":null]" return -GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) -GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? - /////////////////////// ///// Power stuff ///// /////////////////////// diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index ef3ba969e9..19656f2d7d 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -47,7 +47,7 @@ /obj/mecha/working/ripley/update_icon() ..() - GET_COMPONENT(C,/datum/component/armor_plate) + var/datum/component/armor_plate/C = GetComponent(/datum/component/armor_plate) if (C.amount) cut_overlays() if(C.amount < 3) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d5aff99f32..2eb4a6aa0c 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -8,6 +8,7 @@ /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() + LAZYINITLIST(blood_DNA) //Kinda needed if (random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0) icon_state = pick(random_icon_states) create_reagents(300) @@ -27,7 +28,7 @@ /obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal if(mergeable_decal) - return TRUE + qdel(C) /obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks)) @@ -81,7 +82,9 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - S.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + S.add_blood_DNA(blood_DNA) + S.add_blood_overlay() S.blood_state = blood_state update_icon() H.update_inv_shoes() @@ -90,4 +93,4 @@ if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return bloodiness else - return 0 + return FALSE diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index ca2a8ccaff..a4d0da1bbe 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -1,71 +1,70 @@ -// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/xenoblood +/obj/effect/decal/cleanable/blood/xeno name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" - icon = 'icons/effects/blood.dmi' - icon_state = "xfloor1" - random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") - bloodiness = BLOOD_AMOUNT_PER_DECAL - blood_state = BLOOD_STATE_XENO + color = BLOOD_COLOR_XENO -/obj/effect/decal/cleanable/xenoblood/Initialize() +/obj/effect/decal/cleanable/blood/splatter/xeno + color = BLOOD_COLOR_XENO + +/obj/effect/decal/cleanable/blood/gibs/xeno + color = BLOOD_COLOR_XENO + gibs_reagent_id = "liquidxenogibs" + gibs_bloodtype = "X*" + +/obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() - add_blood_DNA(list("UNKNOWN DNA" = "X*")) + update_icon() -/obj/effect/decal/cleanable/xenoblood/xsplatter - random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") +/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() + add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]x_flesh") + flesh.appearance_flags = RESET_COLOR + flesh.color = body_colors + add_overlay(flesh) -/obj/effect/decal/cleanable/xenoblood/xgibs - name = "xeno gibs" - desc = "Gnarly..." - icon = 'icons/effects/blood.dmi' - icon_state = "xgib1" - layer = LOW_OBJ_LAYER - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") - mergeable_decal = FALSE - -/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions) - set waitfor = 0 +/obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) + set waitfor = FALSE + var/list/diseases = list() + SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, diseases) var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + for(var/i in 0 to pick(0, 200; 1, 150; 2, 50)) sleep(2) if(i > 0) - new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc) + var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) + splat.transfer_blood_dna(blood_DNA, diseases) if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act() - return +/obj/effect/decal/cleanable/blood/gibs/xeno/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") -/obj/effect/decal/cleanable/xenoblood/xgibs/up - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") +/obj/effect/decal/cleanable/blood/gibs/xeno/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") -/obj/effect/decal/cleanable/xenoblood/xgibs/down - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") +/obj/effect/decal/cleanable/blood/gibs/xeno/body + random_icon_states = list("gibhead", "gibtorso") -/obj/effect/decal/cleanable/xenoblood/xgibs/body - random_icon_states = list("xgibhead", "xgibtorso") +/obj/effect/decal/cleanable/blood/gibs/xeno/torso + random_icon_states = list("gibtorso") -/obj/effect/decal/cleanable/xenoblood/xgibs/torso - random_icon_states = list("xgibtorso") +/obj/effect/decal/cleanable/blood/gibs/xeno/limb + random_icon_states = list("gibleg", "gibarm") -/obj/effect/decal/cleanable/xenoblood/xgibs/limb - random_icon_states = list("xgibleg", "xgibarm") +/obj/effect/decal/cleanable/blood/gibs/xeno/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") -/obj/effect/decal/cleanable/xenoblood/xgibs/core - random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") - -/obj/effect/decal/cleanable/xenoblood/xgibs/larva +/obj/effect/decal/cleanable/blood/gibs/xeno/larva random_icon_states = list("xgiblarva1", "xgiblarva2") -/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body +/obj/effect/decal/cleanable/blood/gibs/xeno/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") /obj/effect/decal/cleanable/blood/xtracks - icon_state = "xtracks" + icon_state = "tracks" random_icon_states = null /obj/effect/decal/cleanable/blood/xtracks/Initialize() - . = ..() - add_blood_DNA(list("Unknown DNA" = "X*")) + add_blood_DNA(list("UNKNOWN DNA" = "X*")) + . = ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm new file mode 100644 index 0000000000..03eeca7d0b --- /dev/null +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -0,0 +1,231 @@ +/obj/effect/decal/cleanable/blood/gibs + name = "gibs" + desc = "They look bloody and gruesome." + icon_state = "gibbl5" + layer = LOW_OBJ_LAYER + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + mergeable_decal = FALSE + var/body_colors = "#e3ba84" //a default color just in case. + var/gibs_reagent_id = "liquidgibs" + var/gibs_bloodtype = "A+" + +/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) + . = ..() + if(random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0) + icon_state = pick(random_icon_states) + if(gibs_reagent_id) + reagents.add_reagent(gibs_reagent_id, 5) + if(gibs_bloodtype) + add_blood_DNA(list("Non-human DNA" = gibs_bloodtype, diseases)) + update_icon() + + +/obj/effect/decal/cleanable/blood/gibs/update_icon() + add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]_guts") + guts.appearance_flags = RESET_COLOR + add_overlay(guts) + var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]_flesh") + flesh.appearance_flags = RESET_COLOR + flesh.color = body_colors + add_overlay(flesh) + +/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) + return + +/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) + if(istype(L) && has_gravity(loc)) + playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(L,TRAIT_LIGHT_STEP) ? 20 : 50, 1) + . = ..() + +/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) + set waitfor = FALSE + var/list/diseases = list() + SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, diseases) + var/direction = pick(directions) + for(var/i in 0 to pick(0, 200; 1, 150; 2, 50)) + sleep(2) + if(i > 0) + var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + splat.transfer_blood_dna(blood_DNA, diseases) + if(!step_to(src, get_step(src, direction), 0)) + break + +/obj/effect/decal/cleanable/blood/gibs/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + +/obj/effect/decal/cleanable/blood/gibs/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + +/obj/effect/decal/cleanable/blood/gibs/body + random_icon_states = list("gibhead", "gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/torso + random_icon_states = list("gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/limb + random_icon_states = list("gibleg", "gibarm") + +/obj/effect/decal/cleanable/blood/gibs/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + +/obj/effect/decal/cleanable/blood/gibs/old + name = "old rotting gibs" + desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." + bloodiness = 0 + +/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) + . = ..() + setDir(pick(GLOB.cardinals)) + icon_state += "-old" + update_icon() + +/obj/effect/decal/cleanable/blood/drip + name = "drips of blood" + desc = "It's gooey." + icon_state = "1" + random_icon_states = list("drip1","drip2","drip3","drip4","drip5") + bloodiness = 0 + var/drips = 1 + +/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() + return TRUE + +/obj/effect/decal/cleanable/blood/gibs/human + +/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) + . = ..() + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/human/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + +/obj/effect/decal/cleanable/blood/gibs/human/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + +/obj/effect/decal/cleanable/blood/gibs/human/body + random_icon_states = list("gibhead", "gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/human/torso + random_icon_states = list("gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/human/limb + random_icon_states = list("gibleg", "gibarm") + +/obj/effect/decal/cleanable/blood/gibs/human/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + + +//Lizards +/obj/effect/decal/cleanable/blood/gibs/human/lizard + body_colors = "117720" + gibs_reagent_id = "liquidgibs" + gibs_bloodtype = "L" + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) + . = ..() + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/body + random_icon_states = list("gibhead", "gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/torso + random_icon_states = list("gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/limb + random_icon_states = list("gibleg", "gibarm") + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + +// Slime Gibs +/obj/effect/decal/cleanable/blood/gibs/slime + desc = "They look gooey and gruesome." + gibs_reagent_id = "liquidslimegibs" + gibs_bloodtype = "GEL" + +/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) + . = ..() + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/slime/update_icon() + add_atom_colour(body_colors, FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]s_guts") + guts.appearance_flags = RESET_COLOR + guts.color = body_colors + add_overlay(guts) + var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]_flesh") + flesh.appearance_flags = RESET_COLOR + flesh.color = body_colors + add_overlay(flesh) + +/obj/effect/decal/cleanable/blood/gibs/slime/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + +/obj/effect/decal/cleanable/blood/gibs/slime/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + +/obj/effect/decal/cleanable/blood/gibs/slime/body + random_icon_states = list("gibhead", "gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/slime/torso + random_icon_states = list("gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/slime/limb + random_icon_states = list("gibleg", "gibarm") + +/obj/effect/decal/cleanable/blood/gibs/slime/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + gibs_reagent_id = "liquidsyntheticgibs" + gibs_bloodtype = "SY" + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + update_icon() + +//IPCs +/obj/effect/decal/cleanable/blood/gibs/ipc + desc = "They look sharp yet oozing." + body_colors = "00ff00" + gibs_reagent_id = "liquidoilgibs" + gibs_bloodtype = "HF" + +/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) + . = ..() + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/ipc/update_icon() + add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]r-overlay") + guts.appearance_flags = RESET_COLOR + add_overlay(guts) + +/obj/effect/decal/cleanable/blood/gibs/ipc/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + +/obj/effect/decal/cleanable/blood/gibs/ipc/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + +/obj/effect/decal/cleanable/blood/gibs/ipc/body + random_icon_states = list("gibhead", "gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/ipc/torso + random_icon_states = list("gibtorso") + +/obj/effect/decal/cleanable/blood/gibs/ipc/limb + random_icon_states = list("gibleg", "gibarm") + +/obj/effect/decal/cleanable/blood/gibs/ipc/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 35f06c2768..842b230b53 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -1,31 +1,45 @@ /obj/effect/decal/cleanable/blood name = "blood" - desc = "It's red and gooey. Perhaps it's the chef's cooking?" + desc = "It's gooey. Perhaps it's the chef's cooking?" icon = 'icons/effects/blood.dmi' icon_state = "floor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") - blood_state = BLOOD_STATE_HUMAN - bloodiness = BLOOD_AMOUNT_PER_DECAL + blood_state = BLOOD_STATE_BLOOD + bloodiness = MAX_SHOE_BLOODINESS + color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - C.add_blood_DNA(return_blood_DNA()) - if (bloodiness) - if (C.bloodiness < MAX_SHOE_BLOODINESS) - C.bloodiness += bloodiness - return ..() + if (C.blood_DNA) + blood_DNA |= C.blood_DNA.Copy() + update_icon() + ..() + +/obj/effect/decal/cleanable/blood/transfer_blood_dna() + ..() + update_icon() + +/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() + . = ..() + update_icon() + +/obj/effect/decal/cleanable/blood/update_icon() + color = blood_DNA_to_color() /obj/effect/decal/cleanable/blood/old name = "dried blood" - desc = "Looks like it's been here a while. Eew." + desc = "Looks like it's been here a while. Eew." bloodiness = 0 /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) - icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. - add_blood_DNA(list("Non-human DNA" = "A+")) // Needs to happen before ..() - return ..() + ..() + icon_state += "-old" + add_blood_DNA(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/blood/splats + random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") /obj/effect/decal/cleanable/blood/splatter - random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") + random_icon_states = list("splatter1", "splatter2", "splatter3", "splatter4", "splatter5") /obj/effect/decal/cleanable/blood/tracks icon_state = "tracks" @@ -39,84 +53,23 @@ random_icon_states = null var/list/existing_dirs = list() +/obj/effect/decal/cleanable/trail_holder/update_icon() + color = blood_DNA_to_color() + +/obj/effect/cleanable/trail_holder/Initialize() + . = ..() + update_icon() + /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE -/obj/effect/decal/cleanable/blood/gibs - name = "gibs" - desc = "They look bloody and gruesome." - icon = 'icons/effects/blood.dmi' - icon_state = "gibbl5" - layer = LOW_OBJ_LAYER - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") - mergeable_decal = FALSE +/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna() + ..() + update_icon() -/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) +/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() . = ..() - reagents.add_reagent("liquidgibs", 5) - -/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) - return - -/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) - if(istype(L) && has_gravity(loc)) - playsound(loc, 'sound/effects/gib_step.ogg', HAS_TRAIT(L, TRAIT_LIGHT_STEP) ? 20 : 50, 1) - . = ..() - -/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases - new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - if(!step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - -/obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - -/obj/effect/decal/cleanable/blood/gibs/body - random_icon_states = list("gibhead", "gibtorso") - -/obj/effect/decal/cleanable/blood/gibs/torso - random_icon_states = list("gibtorso") - -/obj/effect/decal/cleanable/blood/gibs/limb - random_icon_states = list("gibleg", "gibarm") - -/obj/effect/decal/cleanable/blood/gibs/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - -/obj/effect/decal/cleanable/blood/gibs/old - name = "old rotting gibs" - desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." - bloodiness = 0 - -/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) - . = ..() - setDir(pick(1,2,4,8)) - icon_state += "-old" - add_blood_DNA(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/blood/drip - name = "drips of blood" - desc = "It's red." - icon_state = "1" - random_icon_states = list("drip1","drip2","drip3","drip4","drip5") - bloodiness = 0 - var/drips = 1 - -/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() - return TRUE - + update_icon() //BLOODY FOOTPRINTS /obj/effect/decal/cleanable/blood/footprints @@ -127,15 +80,16 @@ random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 - blood_state = BLOOD_STATE_HUMAN //the icon state to load images from + blood_state = BLOOD_STATE_BLOOD //the icon state to load images from var/list/shoe_types = list() /obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype)) + return S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) @@ -143,21 +97,21 @@ update_icon() /obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color + return S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() - /obj/effect/decal/cleanable/blood/footprints/update_icon() + ..() cut_overlays() - for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] @@ -170,7 +124,7 @@ GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) add_overlay(bloodstep_overlay) - alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness + alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness /obj/effect/decal/cleanable/blood/footprints/examine(mob/user) @@ -179,16 +133,62 @@ . += "You recognise the footprints as belonging to:\n" for(var/shoe in shoe_types) var/obj/item/clothing/shoes/S = shoe - . += "[icon2html(initial(S.icon), user)] Some [initial(S.name)].\n" + . += "some [initial(S.name)] [icon2html(initial(S.icon), user)]\n" to_chat(user, .) /obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C) if(blood_state != C.blood_state) //We only replace footprints of the same type as us return + if(color != C.color) + return ..() /obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) - return 1 - return 0 + return TRUE + return FALSE + +/* Eventually TODO: make snowflake trails like baycode's +/obj/effect/decal/cleanable/blood/footprints/tracks/shoe + name = "footprints" + desc = "They look like tracks left by footwear." + icon_state = FOOTPRINT_SHOE + print_state = FOOTPRINT_SHOE + +/obj/effect/decal/cleanable/blood/footprints/tracks/foot + name = "footprints" + desc = "They look like tracks left by a bare foot." + icon_state = FOOTPRINT_FOOT + print_state = FOOTPRINT_FOOT + +/obj/effect/decal/cleanable/blood/footprints/tracks/snake + name = "tracks" + desc = "They look like tracks left by a giant snake." + icon_state = FOOTPRINT_SNAKE + print_state = FOOTPRINT_SNAKE + +/obj/effect/decal/cleanable/blood/footprints/tracks/paw + name = "footprints" + desc = "They look like tracks left by paws." + icon_state = FOOTPRINT_PAW + print_state = FOOTPRINT_PAW + +/obj/effect/decal/cleanable/blood/footprints/tracks/claw + name = "footprints" + desc = "They look like tracks left by claws." + icon_state = FOOTPRINT_CLAW + print_state = FOOTPRINT_CLAW + +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels + name = "tracks" + desc = "They look like tracks left by wheels." + gender = PLURAL + icon_state = FOOTPRINT_WHEEL + print_state = FOOTPRINT_WHEEL + +/obj/effect/decal/cleanable/blood/footprints/tracks/body + name = "trails" + desc = "A trail left by something being dragged." + icon_state = FOOTPRINT_DRAG + print_state = FOOTPRINT_DRAG */ diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 484e0438e2..02bf51bdd9 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -11,6 +11,10 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL mergeable_decal = FALSE +/obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidoilgibs", 5) + /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) @@ -50,6 +54,7 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() reagents.add_reagent("oil", 30) + reagents.add_reagent("liquidoilgibs", 5) /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 32d91ee76a..08f698e018 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -170,7 +170,7 @@ if(!victim.client || !istype(victim)) return to_chat(victim, "You feel fast!") - ADD_TRAIT(victim, TRAIT_GOTTAGOREALLYFAST, "yellow_orb") + victim.add_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) sleep(duration) - REMOVE_TRAIT(victim, TRAIT_GOTTAGOREALLYFAST, "yellow_orb") + victim.remove_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB) to_chat(victim, "You slow down.") diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm index de17582f27..6c9525008d 100644 --- a/code/game/objects/effects/proximity.dm +++ b/code/game/objects/effects/proximity.dm @@ -5,7 +5,6 @@ var/list/checkers //list of /obj/effect/abstract/proximity_checkers var/current_range var/ignore_if_not_on_turf //don't check turfs in range if the host's loc isn't a turf - var/datum/component/movement_tracker /datum/proximity_monitor/New(atom/_host, range, _ignore_if_not_on_turf = TRUE) checkers = list() @@ -15,15 +14,17 @@ SetHost(_host) /datum/proximity_monitor/proc/SetHost(atom/H,atom/R) + if(H == host) + return + if(host) + UnregisterSignal(host, COMSIG_MOVABLE_MOVED) if(R) hasprox_receiver = R else if(hasprox_receiver == host) //Default case hasprox_receiver = H host = H + RegisterSignal(host, COMSIG_MOVABLE_MOVED, .proc/HandleMove) last_host_loc = host.loc - if(movement_tracker) - QDEL_NULL(movement_tracker) - movement_tracker = host.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/HandleMove))) SetRange(current_range,TRUE) /datum/proximity_monitor/Destroy() @@ -31,7 +32,6 @@ last_host_loc = null hasprox_receiver = null QDEL_LIST(checkers) - QDEL_NULL(movement_tracker) return ..() /datum/proximity_monitor/proc/HandleMove() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index e99a2fcbc6..dd39bc567a 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -1,25 +1,69 @@ /obj/effect/gibspawner - var/sparks = 0 //whether sparks spread + var/sparks = FALSE //whether sparks spread var/virusProb = 20 //the chance for viruses to spread on the gibs + var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob. + var/gib_mob_species //We'll want to nip-pick their species for blood type stuff + var/sound_to_play = 'sound/effects/blobattack.ogg' + var/sound_vol = 60 var/list/gibtypes = list() //typepaths of the gib decals to spawn var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn. var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards. -/obj/effect/gibspawner/Initialize(mapload, datum/dna/MobDNA, list/datum/disease/diseases) +/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases) . = ..() - - if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len) - to_chat(world, "Gib list length mismatch!") + if(gibtypes.len != gibamounts.len) + stack_trace("Gib list amount length mismatch!") + return + if(gibamounts.len != gibdirections.len) + stack_trace("Gib list dir length mismatch!") return var/obj/effect/decal/cleanable/blood/gibs/gib = null + if(sound_to_play && isnum(sound_vol)) + playsound(src, sound_to_play, sound_vol, TRUE) + if(sparks) var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, loc) s.start() + var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling. + var/body_coloring = "" + if(source_mob) + dna_to_add = source_mob.get_blood_dna_list() //ez pz + if(ishuman(source_mob)) + var/mob/living/carbon/human/H = source_mob + if(H.dna.species.use_skintones) + body_coloring = "#[skintone2hex(H.skin_tone)]" + else + body_coloring = "#[H.dna.features["mcolor"]]" + + else if(gib_mob_type) + var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs. + if(gib_mob_species) + if(ishuman(temp_mob)) + var/mob/living/carbon/human/H = temp_mob + H.set_species(gib_mob_species) + dna_to_add = temp_mob.get_blood_dna_list() + if(H.dna.species.use_skintones) + body_coloring = "#[skintone2hex(H.skin_tone)]" + else + body_coloring = "#[H.dna.features["mcolor"]]" + qdel(H) + else + dna_to_add = temp_mob.get_blood_dna_list() + qdel(temp_mob) + else if(!issilicon(temp_mob)) + dna_to_add = temp_mob.get_blood_dna_list() + qdel(temp_mob) + else + qdel(temp_mob) + else + dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it. + + for(var/i = 1, i<= gibtypes.len, i++) if(gibamounts[i]) for(var/j = 1, j<= gibamounts[i], j++) @@ -29,10 +73,11 @@ var/mob/living/carbon/digester = loc digester.stomach_contents += gib - if(MobDNA) + if(dna_to_add && dna_to_add.len) + gib.add_blood_DNA(dna_to_add) + gib.body_colors = body_coloring + gib.update_icon() - else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey - gib.add_blood_DNA(list("Non-human DNA" = "A+")) var/list/directions = gibdirections[i] if(isturf(loc)) if(directions.len) @@ -41,80 +86,158 @@ return INITIALIZE_HINT_QDEL - /obj/effect/gibspawner/generic gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core) - gibamounts = list(2,2,1) + gibamounts = list(2, 2, 1) + sound_vol = 40 /obj/effect/gibspawner/generic/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 40, 1) - gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list()) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list()) + return ..() + +/obj/effect/gibspawner/generic/animal + gib_mob_type = /mob/living/simple_animal/pet /obj/effect/gibspawner/human - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core) - gibamounts = list(1,1,1,1,1,1,1) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/up, /obj/effect/decal/cleanable/blood/gibs/human/down, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/body, /obj/effect/decal/cleanable/blood/gibs/human/limb, /obj/effect/decal/cleanable/blood/gibs/human/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/human + sound_vol = 50 /obj/effect/gibspawner/human/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 50, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() - -/obj/effect/gibspawner/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso) +/obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/torso) gibamounts = list(1, 1, 1, 1, 1, 1) -/obj/effect/gibspawner/humanbodypartless/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 50, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) - . = ..() +/obj/effect/gibspawner/human/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() +/obj/effect/gibspawner/lizard + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard/up, /obj/effect/decal/cleanable/blood/gibs/human/lizard/down, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/body, /obj/effect/decal/cleanable/blood/gibs/human/lizard/limb, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human/species/lizard + gib_mob_species = /datum/species/lizard + sound_vol = 50 + +/obj/effect/gibspawner/lizard/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/lizard/bodypartless + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) + +/obj/effect/gibspawner/lizard/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/slime + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human/species/roundstartslime + gib_mob_species = /datum/species/jelly/roundstartslime + sound_vol = 50 + +/obj/effect/gibspawner/slime/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/slime/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) + +/obj/effect/gibspawner/slime/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/ipc + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human/species/ipc + gib_mob_species = /datum/species/ipc + sound_vol = 50 + sparks = TRUE + sound_to_play = 'sound/effects/bang.ogg' + +/obj/effect/gibspawner/ipc/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/ipc/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/core, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/core, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) + +/obj/effect/gibspawner/ipc/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core) - gibamounts = list(1,1,1,1,1,1,1) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up, /obj/effect/decal/cleanable/blood/gibs/xeno/down, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/decal/cleanable/blood/gibs/xeno/limb, /obj/effect/decal/cleanable/blood/gibs/xeno/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/alien /obj/effect/gibspawner/xeno/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() - -/obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso) +/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso) gibamounts = list(1, 1, 1, 1, 1, 1) +/obj/effect/gibspawner/xeno/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() -/obj/effect/gibspawner/xenobodypartless/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) - . = ..() +/obj/effect/gibspawner/xeno/xenoperson + gib_mob_type = /mob/living/carbon/human/species/xeno + gib_mob_species = /datum/species/xeno + +/obj/effect/gibspawner/xeno/xenoperson/bodypartless /obj/effect/gibspawner/larva - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body, /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body) gibamounts = list(1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/alien/larva /obj/effect/gibspawner/larva/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs) + return ..() -/obj/effect/gibspawner/larvabodypartless - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva) +/obj/effect/gibspawner/larva/bodypartless + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva) gibamounts = list(1, 1, 1) -/obj/effect/gibspawner/larvabodypartless/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list()) - . = ..() +/obj/effect/gibspawner/larva/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list()) + return ..() /obj/effect/gibspawner/robot - sparks = 1 + sparks = TRUE gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) - gibamounts = list(1,1,1,1,1,1) + gibamounts = list(1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/silicon/robot /obj/effect/gibspawner/robot/Initialize() - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) - gibamounts[6] = pick(0,1,2) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) + gibamounts[6] = pick(0, 1, 2) + return ..() + diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 7d02d9d383..fbad000098 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -6,7 +6,9 @@ layer = BELOW_MOB_LAYER var/splatter_type = "splatter" -/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir) +/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir, new_color) + if(new_color) + color = new_color if(set_dir in GLOB.diagonals) icon_state = "[splatter_type][pick(1, 2, 6)]" else @@ -41,7 +43,7 @@ animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration) /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter - splatter_type = "xsplatter" + color = BLOOD_COLOR_XENO /obj/effect/temp_visual/dir_setting/speedbike_trail name = "speedbike trails" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6a706fede9..9ce2e66abf 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -111,7 +111,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder! - /obj/item/Initialize() materials = typelist("materials", materials) @@ -408,12 +407,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot) for(var/X in actions) var/datum/action/A = X - if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. + if(item_action_slot_check(slot, user, A)) //some items only give their actions buttons when in a specific slot. A.Grant(user) item_flags |= IN_INVENTORY //sometimes we only want to grant the item's action if it's equipped in a specific slot. -/obj/item/proc/item_action_slot_check(slot, mob/user) +/obj/item/proc/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_IN_BACKPACK || slot == SLOT_LEGCUFFED) //these aren't true slots, so avoid granting actions there return FALSE return TRUE @@ -537,6 +536,17 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.become_blind(EYE_DAMAGE) to_chat(M, "You go blind!") +/obj/item/clean_blood() + . = ..() + if(.) + if(blood_splatter_icon) + cut_overlay(blood_splatter_icon) + +/obj/item/clothing/gloves/clean_blood() + . = ..() + if(.) + transfer_blood = 0 + /obj/item/singularity_pull(S, current_size) ..() if(current_size >= STAGE_FOUR) diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index cf706359f7..5e798e1281 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -439,6 +439,9 @@ RLD /obj/item/construction/rcd/proc/rcd_create(atom/A, mob/user) var/list/rcd_results = A.rcd_vals(user, src) + var/turf/the_turf = get_turf(A) + var/turf_coords = "[COORD(the_turf)]" + investigate_log("[user] is attempting to use [src] on [A] (loc [turf_coords] at [the_turf]) with cost [rcd_results["cost"]], delay [rcd_results["delay"]], mode [rcd_results["mode"]].", INVESTIGATE_RCD) if(!rcd_results) return FALSE if(do_after(user, rcd_results["delay"] * delay_mod, target = A)) @@ -447,7 +450,7 @@ RLD if(A.rcd_act(user, src, rcd_results["mode"])) useResource(rcd_results["cost"], user) activate() - investigate_log("[user] used [src] on [cached] (now [A]) with cost [rcd_results["cost"]], delay [rcd_results["delay"]], mode [rcd_results["mode"]].", INVESTIGATE_RCD) + investigate_log("[user] used [src] on [cached] (loc [turf_coords] at [the_turf]) with cost [rcd_results["cost"]], delay [rcd_results["delay"]], mode [rcd_results["mode"]].", INVESTIGATE_RCD) playsound(src, 'sound/machines/click.ogg', 50, 1) return TRUE diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index 63f460f9aa..93293155a3 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -20,8 +20,8 @@ var/ghetto = FALSE lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - var/datum/component/mobhook var/datum/radial_menu/persistent/wiring_gui_menu + var/mob/listeningTo /obj/item/twohanded/rcl/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/stack/cable_coil)) @@ -86,7 +86,7 @@ /obj/item/twohanded/rcl/Destroy() QDEL_NULL(loaded) last = null - QDEL_NULL(mobhook) + listeningTo = null QDEL_NULL(wiring_gui_menu) return ..() @@ -141,9 +141,8 @@ /obj/item/twohanded/rcl/dropped(mob/wearer) ..() - if(mobhook) - active = FALSE - QDEL_NULL(mobhook) + UnregisterSignal(wearer, COMSIG_MOVABLE_MOVED) + listeningTo = null last = null /obj/item/twohanded/rcl/attack_self(mob/user) @@ -158,13 +157,12 @@ break obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook) - if(to_hook) - if(mobhook && mobhook.parent != to_hook) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = to_hook.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/trigger))) - else - QDEL_NULL(mobhook) + if(listeningTo == to_hook) + return + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, .proc/trigger) + listeningTo = to_hook /obj/item/twohanded/rcl/proc/trigger(mob/user) if(active) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 699efaac2e..10fbab56be 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -153,7 +153,9 @@ /area/centcom, /area/asteroid, /area/tdome, - /area/wizard_station + /area/wizard_station, + /area/hilbertshotel, + /area/hilbertshotelstorage ) for (var/type in SPECIALS) if ( istype(A,type) ) diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index ea72197cf0..f0d20afbbd 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -45,8 +45,8 @@ RemoveInfectionImages() AddInfectionImages() -/obj/item/organ/body_egg/proc/AddInfectionImages() +/obj/item/organ/body_egg/proc/AddInfectionImages(mob/living/carbon/C) return -/obj/item/organ/body_egg/proc/RemoveInfectionImages() +/obj/item/organ/body_egg/proc/RemoveInfectionImages(mob/living/carbon/C) return diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 05ffcbf2fd..0e422a3fe9 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -80,6 +80,7 @@ righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' item_flags = NO_MAT_REDEMPTION | NOBLUDGEON var/prox_check = TRUE //If the emag requires you to be in range + var/uses = 15 /obj/item/card/emag/bluespace name = "bluespace cryptographic sequencer" @@ -110,6 +111,37 @@ user.visible_message("[src] fizzles and sparks. It seems like it's out of charges.") playsound(src, 'sound/effects/light_flicker.ogg', 100, 1) +/obj/item/card/emag/examine(mob/user) + . = ..() + to_chat(user, "It has [uses ? uses : "no"] charges left.") + +/obj/item/card/emag/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/emagrecharge)) + var/obj/item/emagrecharge/ER = W + if(ER.uses) + uses += ER.uses + to_chat(user, "You have added [ER.uses] charges to [src]. It now has [uses] charges.") + playsound(src, "sparks", 100, 1) + ER.uses = 0 + else + to_chat(user, "[ER] has no charges left.") + return + . = ..() + +/obj/item/emagrecharge + name = "electromagnet charging device" + desc = "A small cell with two prongs lazily jabbed into it. It looks like it's made for charging the small batteries found in electromagnetic devices, sadly this can't be recharged like a normal cell." + icon = 'icons/obj/module.dmi' + icon_state = "cell_mini" + item_flags = NOBLUDGEON + var/uses = 5 //Dictates how many charges the device adds to compatible items + +/obj/item/emagrecharge/examine(mob/user) + . = ..() + if(uses) + to_chat(user, "It can add up to [uses] charges to compatible devices") + else + to_chat(user, "It has a small, red, blinking light coming from inside of it. It's spent.") /obj/item/card/emagfake desc = "It's a card with a magnetic strip attached to some circuitry. Closer inspection shows that this card is a poorly made replica, with a \"DonkCo\" logo stamped on the back." @@ -342,12 +374,41 @@ update_label("John Doe", "Clowny") lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' assignment = "Prisoner" - registered_name = "Scum" + access = list(ACCESS_ENTER_GENPOP) + + //Lavaland labor camp var/goal = 0 //How far from freedom? var/points = 0 + //Genpop + var/sentence = 0 //When world.time is greater than this number, the card will have its ACCESS_ENTER_GENPOP access replaced with ACCESS_LEAVE_GENPOP the next time it's checked, unless this value is 0/null + var/crime= "\[REDACTED\]" -/obj/item/card/id/prisoner/attack_self(mob/user) - to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.") +/obj/item/card/id/prisoner/GetAccess() + if((sentence && world.time >= sentence) || (goal && points >= goal)) + access = list(ACCESS_LEAVE_GENPOP) + return ..() + +/obj/item/card/id/prisoner/process() + if(!sentence) + STOP_PROCESSING(SSobj, src) + return + if(world.time >= sentence) + playsound(loc, 'sound/machines/ping.ogg', 50, 1) + if(isliving(loc)) + to_chat(loc, "[src] buzzes: You have served your sentence! You may now exit prison through the turnstiles and collect your belongings.") + STOP_PROCESSING(SSobj, src) + return + +/obj/item/card/id/prisoner/examine(mob/user) + . = ..() + if(sentence && world.time < sentence) + to_chat(user, "You're currently serving a sentence for [crime]. [DisplayTimeText(sentence - world.time)] left.") + else if(goal) + to_chat(user, "You have accumulated [points] out of the [goal] points you need for freedom.") + else if(!sentence) + to_chat(user, "You are currently serving a permanent sentence for [crime].") + else + to_chat(user, "Your sentence is up! You're free!") /obj/item/card/id/prisoner/one name = "Prisoner #13-001" @@ -422,3 +483,58 @@ update_label("John Doe", "Clowny") name = "APC Access ID" desc = "A special ID card that allows access to APC terminals." access = list(ACCESS_ENGINE_EQUIP) + +//Polychromatic Knight Badge + +/obj/item/card/id/knight + var/id_color = "#00FF00" //defaults to green + name = "knight badge" + icon_state = "knight" + desc = "A badge denoting the owner as a knight! It has a strip for swiping like an ID" + +/obj/item/card/id/knight/update_label(newname, newjob) + if(newname || newjob) + name = "[(!newname) ? "knight badge" : "[newname]'s Knight Badge"][(!newjob) ? "" : " ([newjob])"]" + return + + name = "[(!registered_name) ? "knight badge" : "[registered_name]'s Knight Badge"][(!assignment) ? "" : " ([assignment])"]" + +/obj/item/card/id/knight/update_icon() + var/mutable_appearance/id_overlay = mutable_appearance(icon, "knight_overlay") + + if(id_color) + id_overlay.color = id_color + cut_overlays() + + add_overlay(id_overlay) + +/obj/item/card/id/knight/AltClick(mob/living/user) + . = ..() + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + if(alert("Are you sure you want to recolor your id?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",id_color) as color|null + if(!in_range(src, user) || !energy_color_input) + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + id_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + +/obj/item/card/id/knight/Initialize() + . = ..() + update_icon() + +/obj/item/card/id/knight/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +/obj/item/card/id/knight/blue + id_color = "#0000FF" + +/obj/item/card/id/knight/captain + id_color = "#FFD700" \ No newline at end of file diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 5db5aa416e..911a07c288 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -37,7 +37,7 @@ PA = new(src) user.put_in_hands(PA) -/obj/item/chrono_eraser/item_action_slot_check(slot, mob/user) +/obj/item/chrono_eraser/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_BACK) return 1 diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 639d570462..1059a310eb 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -31,6 +31,15 @@ /obj/item/stock_parts/manipulator = 1, /obj/item/stack/sheet/glass = 1) +/obj/item/circuitboard/machine/bloodbankgen + name = "Blood Bank Generator (Machine Board)" + build_path = /obj/machinery/bloodbankgen + req_components = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/cable_coil = 5, + /obj/item/stack/sheet/glass = 1) + /obj/item/circuitboard/machine/clonepod name = "Clone Pod (Machine Board)" build_path = /obj/machinery/clonepod diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm index fa4524528b..c98484b81e 100644 --- a/code/game/objects/items/control_wand.dm +++ b/code/game/objects/items/control_wand.dm @@ -33,7 +33,7 @@ // Airlock remote works by sending NTNet packets to whatever it's pointed at. /obj/item/door_remote/afterattack(atom/A, mob/user) . = ..() - GET_COMPONENT_FROM(target_interface, /datum/component/ntnet_interface, A) + var/datum/component/ntnet_interface/target_interface = A.GetComponent(/datum/component/ntnet_interface) if(!target_interface) return diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 102c6a8eed..d014f70315 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -561,7 +561,7 @@ /obj/item/storage/crayons/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 7 STR.can_hold = typecacheof(list(/obj/item/toy/crayon)) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index a4f286bf88..f5799e1a22 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -39,7 +39,6 @@ /obj/item/defibrillator/loaded/Initialize() //starts with hicap . = ..() - paddles = make_paddles() cell = new(src) update_icon() return @@ -193,7 +192,7 @@ remove_paddles(user) update_icon() -/obj/item/defibrillator/item_action_slot_check(slot, mob/user) +/obj/item/defibrillator/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == user.getBackSlot()) return 1 @@ -208,8 +207,8 @@ var/M = get(paddles, /mob) remove_paddles(M) QDEL_NULL(paddles) - . = ..() - update_icon() + QDEL_NULL(cell) + return ..() /obj/item/defibrillator/proc/deductcharge(chrgdeductamt) if(cell) @@ -244,13 +243,12 @@ w_class = WEIGHT_CLASS_NORMAL slot_flags = ITEM_SLOT_BELT -/obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user) +/obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == user.getBeltSlot()) return TRUE /obj/item/defibrillator/compact/loaded/Initialize() . = ..() - paddles = make_paddles() cell = new(src) update_icon() @@ -262,7 +260,6 @@ /obj/item/defibrillator/compact/combat/loaded/Initialize() . = ..() - paddles = make_paddles() cell = new /obj/item/stock_parts/cell/infinite(src) update_icon() @@ -297,31 +294,28 @@ var/grab_ghost = FALSE var/tlimit = DEFIB_TIME_LIMIT * 10 - var/datum/component/mobhook + var/mob/listeningTo /obj/item/twohanded/shockpaddles/equipped(mob/user, slot) . = ..() - if(req_defib) - if (mobhook && mobhook.parent != user) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/check_range))) + if(!req_defib) + return + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_range) /obj/item/twohanded/shockpaddles/Moved() . = ..() check_range() /obj/item/twohanded/shockpaddles/proc/check_range() - if(!req_defib) + if(!req_defib || !defib) return if(!in_range(src,defib)) var/mob/living/L = loc if(istype(L)) to_chat(L, "[defib]'s paddles overextend and come out of your hands!") - L.temporarilyRemoveItemFromInventory(src,TRUE) else visible_message("[src] snap back into [defib].") - snap_back() + snap_back() /obj/item/twohanded/shockpaddles/proc/recharge(var/time) if(req_defib || !time) @@ -362,14 +356,14 @@ /obj/item/twohanded/shockpaddles/dropped(mob/user) if(!req_defib) return ..() - if (mobhook) - QDEL_NULL(mobhook) if(user) + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) var/obj/item/twohanded/offhand/O = user.get_inactive_held_item() if(istype(O)) O.unwield() - to_chat(user, "The paddles snap back into the main unit.") - snap_back() + if(user != loc) + to_chat(user, "The paddles snap back into the main unit.") + snap_back() return unwield(user) /obj/item/twohanded/shockpaddles/proc/snap_back() diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index b0494539ce..92d936e0d4 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -274,7 +274,7 @@ GLOBAL_LIST_EMPTY(PDAs) dat += text("
[id ? "Update PDA Info" : ""]

") dat += "[STATION_TIME_TIMESTAMP("hh:mm:ss")]
" //:[world.time / 100 % 6][world.time / 100 % 10]" - dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]" + dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer]" dat += "

" diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index d85c5d72d8..28bc559b93 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -70,7 +70,7 @@ difficulty++ //if cartridge has manifest access it has extra snowflake difficulty else difficulty += 2 - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else @@ -95,7 +95,7 @@ charges-- var/lock_code = "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) if(!hidden_uplink) hidden_uplink = target.AddComponent(/datum/component/uplink) hidden_uplink.unlock_code = lock_code diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index f39d2ba0d6..dffbb46cbb 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -116,7 +116,7 @@ appearance = saved_appearance if(istype(M.buckled, /obj/vehicle)) var/obj/vehicle/V = M.buckled - GET_COMPONENT_FROM(VRD, /datum/component/riding, V) + var/datum/component/riding/VRD = V.GetComponent(/datum/component/riding) if(VRD) VRD.force_dismount(M) else diff --git a/code/game/objects/items/devices/compressionkit.dm b/code/game/objects/items/devices/compressionkit.dm index 5ac958328d..a5a9377690 100644 --- a/code/game/objects/items/devices/compressionkit.dm +++ b/code/game/objects/items/devices/compressionkit.dm @@ -89,30 +89,23 @@ else to_chat(user, "Anomalous error. Summon a coder.") - if(istype(target, /mob/living)) - var/mob/living/victim = target - if(istype(victim, /mob/living/carbon/human)) - if(user.zone_selected == "groin") // pp smol. There's probably a smarter way to do this but im retarded. If you have a simpler method let me know. - var/list/organs = victim.getorganszone("groin") - for(var/internal_organ in organs) - if(istype(internal_organ, /obj/item/organ/genital/penis)) - var/obj/item/organ/genital/penis/O = internal_organ - playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1) - victim.visible_message("[user] is preparing to shrink [victim]\'s [O.name] with their bluespace compression kit!") - if(do_mob(user, victim, 40) && charges > 0 && O.length > 0) - victim.visible_message("[user] has shrunk [victim]\'s [O.name]!") - playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1) - sparks() - flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN) - charges -= 1 - O.length -= 5 - if(O.length < 1) - victim.visible_message("[user]\'s [O.name] vanishes!") - qdel(O) // no pp for you - else - O.update_size() - O.update_appearance() - + else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_GROIN) + var/mob/living/carbon/human/H = target + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + if(!P) + return + playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1) + H.visible_message("[user] is preparing to shrink [H]\'s [P.name] with their bluespace compression kit!") + if(do_mob(user, H, 40) && charges > 0 && P.length > 0) + H.visible_message("[user] has shrunk [H]\'s [P.name]!") + playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1) + sparks() + flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN) + charges -= 1 + var/p_name = P.name + P.modify_size(-5) + if(QDELETED(P)) + H.visible_message("[H]\'s [p_name] vanishes!") /obj/item/compressionkit/attackby(obj/item/I, mob/user, params) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 90cdd0386c..110676de1b 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -203,21 +203,25 @@ return TRUE /obj/item/geiger_counter/cyborg - var/datum/component/mobhook + var/mob/listeningTo /obj/item/geiger_counter/cyborg/equipped(mob/user) . = ..() - if (mobhook && mobhook.parent != user) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_ATOM_RAD_ACT = CALLBACK(src, .proc/redirect_rad_act))) + if(listeningTo == user) + return + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT) + RegisterSignal(user, COMSIG_ATOM_RAD_ACT, .proc/redirect_rad_act) + listeningTo = user /obj/item/geiger_counter/cyborg/proc/redirect_rad_act(datum/source, amount) rad_act(amount) /obj/item/geiger_counter/cyborg/dropped() . = ..() - QDEL_NULL(mobhook) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT) + listeningTo = null #undef RAD_LEVEL_NORMAL #undef RAD_LEVEL_MODERATE diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 207497922e..cf55d4178e 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -48,7 +48,7 @@ /obj/item/multitool/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/multitool/examine(mob/user) ..() diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 7655654f78..d644e0637e 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -410,7 +410,7 @@ SLIME SCANNER msg += "Subject is bleeding!\n" var/blood_percent = round((C.blood_volume / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100) var/blood_type = C.dna.blood_type - if(blood_id != "blood")//special blood substance + if(blood_id != ("blood" || "jellyblood"))//special blood substance var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id] if(R) blood_type = R.name diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 2c234a59ba..fc768cd38e 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -195,7 +195,7 @@ effective or pretty fucking useless. Deactivate() return -/obj/item/shadowcloak/item_action_slot_check(slot, mob/user) +/obj/item/shadowcloak/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_BELT) return 1 diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index fdb016df38..6ea68bf548 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -432,6 +432,14 @@ user.mind.teach_crafting_recipe(crafting_recipe_type) to_chat(user,"You learned how to make [initial(R.name)].") +/obj/item/book/granter/crafting_recipe/threads //Durathread crafting book + name = "Credible Threads" + desc = "A simple book about sewing and usefull clothing crafting with cloth and durathreads." + crafting_recipe_types = list(/datum/crafting_recipe/durathread_duffelbag, /datum/crafting_recipe/durathread_toolbelt, /datum/crafting_recipe/durathread_bandolier, /datum/crafting_recipe/durathread_helmet, /datum/crafting_recipe/durathread_vest) + icon_state = "tailers_art1" + oneuse = FALSE + remarks = list("Durathread is cloth thats also fire-resistant?", "Strong threads that can be used with leather for some light weight storage!", "The cloth can withstand a beating it said but not that much...") + /obj/item/book/granter/crafting_recipe/cooking_sweets_101 //We start at 101 for 103 and 105 name = "Cooking Desserts 101" desc = "A cook book that teaches you some more of the newest desserts. AI approved, and a best seller on Honkplanet." diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 709fedbe5a..1956a1f317 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -174,6 +174,7 @@ gender = PLURAL var/open_panel = 0 can_attach_mob = TRUE + full_damage_on_mobs = TRUE /obj/item/grenade/plastic/c4/New() wires = new /datum/wires/explosive/c4(src) diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index 3be57d23f1..7e7dddefb6 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -29,7 +29,7 @@ . = ..() START_PROCESSING(SSprocessing, src) GLOB.poi_list += src - AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_POST_THROW = CALLBACK(src, .proc/move_gracefully))) + RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, .proc/move_gracefully) /obj/item/his_grace/Destroy() STOP_PROCESSING(SSprocessing, src) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index ccb82f7029..84439985b2 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -233,7 +233,7 @@ /obj/item/nullrod/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/nullrod/suicide_act(mob/user) user.visible_message("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!") diff --git a/code/game/objects/items/implants/implant_storage.dm b/code/game/objects/items/implants/implant_storage.dm index 739873af00..1f44b5318e 100644 --- a/code/game/objects/items/implants/implant_storage.dm +++ b/code/game/objects/items/implants/implant_storage.dm @@ -21,7 +21,7 @@ for(var/X in target.implants) if(istype(X, type)) var/obj/item/implant/storage/imp_e = X - GET_COMPONENT_FROM(STR, /datum/component/storage, imp_e.pocket) + var/datum/component/storage/STR = imp_e.pocket.GetComponent(/datum/component/storage) if(!STR || (STR && STR.max_items < max_slot_stacking)) imp_e.pocket.AddComponent(/datum/component/storage/concrete/implant) qdel(src) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 57b9973aa3..624dbdd8ef 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -233,3 +233,152 @@ desc = "An extremely sharp blade made out of hard light. Packs quite a punch." icon_state = "lightblade" item_state = "lightblade" + +/*///////////////////////////////////////////////////////////////////////// +///////////// The TRUE Energy Sword /////////////////////////// +*////////////////////////////////////////////////////////////////////////// + +/obj/item/melee/transforming/energy/sword/cx + name = "non-eutactic blade" + desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable." + icon_state = "cxsword_hilt" + item_state = "cxsword" + force = 3 + force_on = 21 + throwforce = 5 + throwforce_on = 20 + hitsound = "swing_hit" //it starts deactivated + hitsound_on = 'sound/weapons/nebhit.ogg' + attack_verb_off = list("tapped", "poked") + throw_speed = 3 + throw_range = 5 + sharpness = IS_SHARP + embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 20, "embedded_fall_chance" = 60) + armour_penetration = 10 + block_chance = 35 + light_color = "#37FFF7" + actions_types = list() + +/obj/item/melee/transforming/energy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/melee/transforming/energy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") + return TRUE + +/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text) + active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE + if(active) //also I'd need to rip out the iconstate changing bits + force = force_on + throwforce = throwforce_on + hitsound = hitsound_on + throw_speed = 4 + if(attack_verb_on.len) + attack_verb = attack_verb_on + w_class = w_class_on + START_PROCESSING(SSobj, src) + set_light(brightness_on) + update_icon() + else + force = initial(force) + throwforce = initial(throwforce) + hitsound = initial(hitsound) + throw_speed = initial(throw_speed) + if(attack_verb_off.len) + attack_verb = attack_verb_off + w_class = initial(w_class) + STOP_PROCESSING(SSobj, src) + set_light(0) + update_icon() + transform_messages(user, supress_message_text) + add_fingerprint(user) + return TRUE + +/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text) + playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1) + if(!supress_message_text) + to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") + +/obj/item/melee/transforming/energy/sword/cx/update_icon() + var/mutable_appearance/blade_overlay = mutable_appearance(icon, "cxsword_blade") + var/mutable_appearance/gem_overlay = mutable_appearance(icon, "cxsword_gem") + + if(light_color) + blade_overlay.color = light_color + gem_overlay.color = light_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(gem_overlay) + + if(active) + add_overlay(blade_overlay) + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() + +/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + + if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null + if(energy_color_input) + light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + update_light() + +/obj/item/melee/transforming/energy/sword/cx/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) + . = ..() + if(active) + if(isinhands) + var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") + blade_inhand.color = light_color + . += blade_inhand + +//Broken version. Not a toy, but not as strong. +/obj/item/melee/transforming/energy/sword/cx/broken + name = "misaligned non-eutactic blade" + desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. This one seems to have a damaged handle and misaligned components, causing the blade to be unstable at best" + force_on = 15 //As strong a survival knife/bone dagger + +/obj/item/melee/transforming/energy/sword/cx/attackby(obj/item/W, mob/living/user, params) + if(istype(W, /obj/item/melee/transforming/energy/sword/cx)) + if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP)) + to_chat(user, "\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!") + return + else + to_chat(user, "You combine the two light swords, making a single supermassive blade! You're cool.") + new /obj/item/twohanded/dualsaber/hypereutactic(user.drop_location()) + qdel(W) + qdel(src) + else + return ..() + +//////// Tatortot NEB /////////////// (same stats as regular esword) +/obj/item/melee/transforming/energy/sword/cx/traitor + name = "\improper Dragon's Tooth Sword" + desc = "The Dragon's Tooth sword is a blackmarket modification of a Non-Eutactic Blade, \ + which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \ + It appears to have a wooden grip and a shaved down guard." + icon_state = "cxsword_hilt_traitor" + force_on = 30 + armour_penetration = 50 + embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10) + block_chance = 50 + hitsound_on = 'sound/weapons/blade1.ogg' + light_color = "#37F0FF" + +/obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text) + playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1) + if(!supress_message_text) + to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index aabb930bb2..850810bdb2 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -69,7 +69,7 @@ var/datum/component/butchering/BT = LoadComponent(/datum/component/butchering) BT.butchering_enabled = TRUE else - GET_COMPONENT(BT, /datum/component/butchering) + var/datum/component/butchering/BT = GetComponent(/datum/component/butchering) if(BT) BT.butchering_enabled = FALSE transform_messages(user, supress_message_text) diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 7524fc9007..3f7fe7ee8d 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -27,6 +27,7 @@ /obj/item/mop/proc/clean(turf/A) if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) + A.clean_blood() for(var/obj/effect/O in A) if(is_cleanable(O)) qdel(O) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 48588cf9f3..4847919a08 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -366,10 +366,10 @@ /obj/item/toy/plush/random name = "Illegal plushie" desc = "Something fucked up" + var/blacklisted_plushes = list(/obj/item/toy/plush/carpplushie/dehy_carp, /obj/item/toy/plush/awakenedplushie, /obj/item/toy/plush/random) /obj/item/toy/plush/random/Initialize() - ..() - var/newtype = pick(subtypesof(/obj/item/toy/plush)) + var/newtype = pick(subtypesof(/obj/item/toy/plush) - typecacheof(blacklisted_plushes)) new newtype(loc) return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 8582725cda..7b3dcb1e00 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -82,14 +82,6 @@ /obj/item/banner/security/mundane inspiration_available = FALSE -/datum/crafting_recipe/security_banner - name = "Securistan Banner" - result = /obj/item/banner/security/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/security = 1) - category = CAT_MISC - /obj/item/banner/medical name = "meditopia banner" desc = "The banner of Meditopia, generous benefactors that cure wounds and shelter the weak." @@ -103,14 +95,6 @@ /obj/item/banner/medical/check_inspiration(mob/living/carbon/human/H) return H.stat //Meditopia is moved to help those in need -/datum/crafting_recipe/medical_banner - name = "Meditopia Banner" - result = /obj/item/banner/medical/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/medical = 1) - category = CAT_MISC - /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) @@ -129,14 +113,6 @@ /obj/item/banner/science/check_inspiration(mob/living/carbon/human/H) return H.on_fire //Sciencia is pleased by dedication to the art of Toxins -/datum/crafting_recipe/science_banner - name = "Sciencia Banner" - result = /obj/item/banner/science/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/scientist = 1) - category = CAT_MISC - /obj/item/banner/cargo name = "cargonia banner" desc = "The banner of the eternal Cargonia, with the mystical power of conjuring any object into existence." @@ -147,14 +123,6 @@ /obj/item/banner/cargo/mundane inspiration_available = FALSE -/datum/crafting_recipe/cargo_banner - name = "Cargonia Banner" - result = /obj/item/banner/cargo/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/cargotech = 1) - category = CAT_MISC - /obj/item/banner/engineering name = "engitopia banner" desc = "The banner of Engitopia, wielders of limitless power." @@ -168,14 +136,6 @@ /obj/item/banner/engineering/special_inspiration(mob/living/carbon/human/H) H.radiation = 0 -/datum/crafting_recipe/engineering_banner - name = "Engitopia Banner" - result = /obj/item/banner/engineering/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/engineer = 1) - category = CAT_MISC - /obj/item/banner/command name = "command banner" desc = "The banner of Command, a staunch and ancient line of bueraucratic kings and queens." @@ -189,14 +149,6 @@ /obj/item/banner/command/check_inspiration(mob/living/carbon/human/H) return HAS_TRAIT(H, TRAIT_MINDSHIELD) //Command is stalwart but rewards their allies. -/datum/crafting_recipe/command_banner - name = "Command Banner" - result = /obj/item/banner/command/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/captainparade = 1) - category = CAT_MISC - /obj/item/banner/red name = "red banner" icon_state = "banner-red" @@ -216,7 +168,7 @@ /obj/item/storage/backpack/bannerpack/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 27 //6 more then normal, for the tradeoff of declaring yourself an antag at all times. /obj/item/storage/backpack/bannerpack/red @@ -286,7 +238,6 @@ var/staffcooldown = 0 var/staffwait = 30 - /obj/item/godstaff/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() if(staffcooldown + staffwait > world.time) @@ -332,19 +283,16 @@ heat_protection = FEET max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - /obj/item/clothing/shoes/plate/red icon_state = "crusader-red" /obj/item/clothing/shoes/plate/blue icon_state = "crusader-blue" - /obj/item/storage/box/itemset/crusader name = "Crusader's Armour Set" //i can't into ck2 references desc = "This armour is said to be based on the armor of kings on another world thousands of years ago, who tended to assassinate, conspire, and plot against everyone who tried to do the same to them. Some things never change." - /obj/item/storage/box/itemset/crusader/blue/New() ..() contents = list() @@ -354,7 +302,6 @@ new /obj/item/clothing/gloves/plate/blue(src) new /obj/item/clothing/shoes/plate/blue(src) - /obj/item/storage/box/itemset/crusader/red/New() ..() contents = list() @@ -364,7 +311,6 @@ new /obj/item/clothing/gloves/plate/red(src) new /obj/item/clothing/shoes/plate/red(src) - /obj/item/claymore/weak desc = "This one is rusted." force = 30 diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 5454b0fdb8..d6effe0727 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -313,7 +313,7 @@ if(M.get_ear_protection() == FALSE) M.confused += 6 audible_message("HUMAN HARM") - playsound(get_turf(src), 'sound/ai/harmalarm.ogg', 70, 3) + playsound(get_turf(src), 'sound/effects/harmalarm.ogg', 70, 3) cooldown = world.time + 200 log_game("[key_name(user)] used a Cyborg Harm Alarm in [AREACOORD(user)]") if(iscyborg(user)) @@ -746,3 +746,73 @@ ..() hud = new /obj/item/clothing/glasses/hud/security(src) return + + +/********************************************************************** + Grippers oh god oh fuck +***********************************************************************/ + +/obj/item/weapon/gripper + name = "circuit gripper" + desc = "A simple grasping tool for inserting circuitboards into machinary." + icon = 'icons/obj/device.dmi' + icon_state = "gripper" + + item_flags = NOBLUDGEON + + //Has a list of items that it can hold. + var/list/can_hold = list( + /obj/item/circuitboard + ) + + var/obj/item/wrapped = null // Item currently being held. + +/obj/item/weapon/gripper/attack_self() + if(wrapped) + wrapped.forceMove(get_turf(wrapped)) + wrapped = null + return ..() + +/obj/item/weapon/gripper/afterattack(var/atom/target, var/mob/living/user, proximity, params) + + if(!proximity) + return + + if(!wrapped) + for(var/obj/item/thing in src.contents) + wrapped = thing + break + + if(wrapped) //Already have an item. + //Temporary put wrapped into user so target's attackby() checks pass. + wrapped.loc = user + + //Pass the attack on to the target. This might delete/relocate wrapped. + var/resolved = target.attackby(wrapped,user) + if(!resolved && wrapped && target) + wrapped.afterattack(target,user,1) + //If wrapped was neither deleted nor put into target, put it back into the gripper. + if(wrapped && user && (wrapped.loc == user)) + wrapped.loc = src + else + wrapped = null + return + + else if(istype(target,/obj/item)) + + var/obj/item/I = target + + var/grab = 0 + for(var/typepath in can_hold) + if(istype(I,typepath)) + grab = 1 + break + + //We can grab the item, finally. + if(grab) + to_chat(user, "You collect \the [I].") + I.loc = src + wrapped = I + return + else + to_chat(user, "Your gripper cannot hold \the [target].") diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 9c929a6ebf..d9045a7a34 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -89,32 +89,36 @@ R.speed = initial(R.speed) /obj/item/borg/upgrade/disablercooler - name = "cyborg rapid disabler cooling module" - desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate." + name = "cyborg rapid energy blaster cooling module" + desc = "Used to cool a mounted energy-based firearm, increasing the potential current in it and thus its recharge rate." icon_state = "cyborg_upgrade3" require_module = 1 /obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R, user = usr) . = ..() if(.) - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - to_chat(user, "There's no disabler in this unit!") + var/successflag + for(var/obj/item/gun/energy/T in R.module.modules) + if(T.charge_delay <= 2) + successflag = successflag || 2 + continue + T.charge_delay = max(2, T.charge_delay - 4) + successflag = 1 + if(!successflag) + to_chat(user, "There's no energy-based firearm in this unit!") return FALSE - if(T.charge_delay <= 2) + if(successflag == 2) to_chat(R, "A cooling unit is already installed!") to_chat(user, "There's no room for another cooling unit!") return FALSE - T.charge_delay = max(2 , T.charge_delay - 4) - /obj/item/borg/upgrade/disablercooler/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - return FALSE - T.charge_delay = initial(T.charge_delay) + for(var/obj/item/gun/energy/T in R.module.modules) + T.charge_delay = initial(T.charge_delay) + return . + return FALSE /obj/item/borg/upgrade/thrusters name = "ion thruster upgrade" @@ -598,10 +602,10 @@ R.update_transform() /obj/item/borg/upgrade/rped - name = "engineering cyborg RPED" + name = "engineering cyborg BSRPED" desc = "A rapid part exchange device for the engineering cyborg." icon = 'icons/obj/storage.dmi' - icon_state = "borgrped" + icon_state = "borg_BS_RPED" require_module = TRUE module_type = list(/obj/item/robot_module/engineering) @@ -609,14 +613,21 @@ . = ..() if(.) + var/obj/item/storage/part_replacer/bluespace/cyborg/BSRPED = locate() in R var/obj/item/storage/part_replacer/cyborg/RPED = locate() in R - if(RPED) - to_chat(user, "This unit is already equipped with a RPED module.") + if(!RPED) + RPED = locate() in R.module + if(!BSRPED) + BSRPED = locate() in R.module //There's gotta be a smarter way to do this. + if(BSRPED) + to_chat(user, "This unit is already equipped with a BSRPED module.") return FALSE - RPED = new(R.module) - R.module.basic_modules += RPED - R.module.add_module(RPED, FALSE, TRUE) + BSRPED = new(R.module) + SEND_SIGNAL(RPED, COMSIG_TRY_STORAGE_QUICK_EMPTY) + qdel(RPED) + R.module.basic_modules += BSRPED + R.module.add_module(BSRPED, FALSE, TRUE) /obj/item/borg/upgrade/rped/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() @@ -680,7 +691,7 @@ action_icon_state = "Chevron_State_0" var/currentState = 0 - var/maxReduction = 2 + var/maxReduction = 1 /obj/effect/proc_holder/silicon/cyborg/vtecControl/Click(mob/living/silicon/robot/user) @@ -688,14 +699,14 @@ currentState = (currentState + 1) % 3 - if(usr) + if(istype(self)) switch(currentState) if (0) - self.speed = maxReduction + self.speed = initial(self.speed) if (1) - self.speed -= maxReduction*0.5 + self.speed = initial(self.speed) - maxReduction * 0.5 if (2) - self.speed -= maxReduction*1.25 + self.speed = initial(self.speed) - maxReduction * 1 action.button_icon_state = "Chevron_State_[currentState]" action.UpdateButtonIcon() diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 5610cbad9a..886997eab9 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -17,7 +17,6 @@ var/self_delay = 50 /obj/item/stack/medical/attack(mob/living/M, mob/user) - if(M.stat == DEAD && !stop_bleeding) var/t_him = "it" if(M.gender == MALE) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 155d1f1643..7654199cf5 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -390,9 +390,9 @@ . = ..() /obj/item/stack/proc/copy_evidences(obj/item/stack/from) - add_blood_DNA(from.return_blood_DNA()) - add_fingerprint_list(from.return_fingerprints()) - add_hiddenprint_list(from.return_hiddenprints()) + blood_DNA = from.blood_DNA + fingerprints = from.fingerprints + fingerprintshidden = from.fingerprintshidden fingerprintslast = from.fingerprintslast //TODO bloody overlay @@ -437,4 +437,4 @@ /datum/stack_recipe_list/New(title, recipes) src.title = title - src.recipes = recipes + src.recipes = recipes \ No newline at end of file diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm index 7c34ae87bf..9b5ca2b066 100644 --- a/code/game/objects/items/stacks/telecrystal.dm +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -13,7 +13,7 @@ var/mob/living/L = user for(var/obj/item/implant/uplink/I in L.implants) if(I?.imp_in) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + var/datum/component/uplink/hidden_uplink = I.GetComponent(/datum/component/uplink) if(hidden_uplink) hidden_uplink.telecrystals += amount use(amount) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index ad8c4306a5..a79eb299da 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -23,7 +23,7 @@ /obj/item/storage/backpack/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 21 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_items = 21 @@ -34,7 +34,7 @@ /obj/item/storage/backpack/old/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 12 /obj/item/storage/backpack/holding @@ -58,7 +58,7 @@ /obj/item/storage/backpack/holding/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_big_nesting = TRUE STR.max_w_class = WEIGHT_CLASS_GIGANTIC STR.max_combined_w_class = 35 @@ -87,7 +87,7 @@ /obj/item/storage/backpack/santabag/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 60 @@ -260,7 +260,7 @@ /obj/item/storage/backpack/satchel/bone/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 20 STR.max_items = 15 @@ -286,7 +286,7 @@ /obj/item/storage/backpack/satchel/flat/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 6 STR.cant_hold = typecacheof(list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks @@ -338,7 +338,7 @@ /obj/item/storage/backpack/duffelbag/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 30 /obj/item/storage/backpack/duffelbag/captain @@ -444,7 +444,7 @@ /obj/item/storage/backpack/duffelbag/syndie/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/backpack/duffelbag/syndie/hitman @@ -594,7 +594,7 @@ // For ClownOps. /obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) slowdown = 0 STR.silent = TRUE diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 0a475b2af1..eafa79798e 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -21,7 +21,7 @@ /obj/item/storage/bag/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_quick_gather = TRUE STR.allow_quick_empty = TRUE STR.display_numerical_stacking = TRUE @@ -44,11 +44,13 @@ /obj/item/storage/bag/trash/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_combined_w_class = 30 STR.max_items = 30 STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + STR.limited_random_access = TRUE + STR.limited_random_access_stack_position = 3 /obj/item/storage/bag/trash/suicide_act(mob/user) user.visible_message("[user] puts [src] over [user.p_their()] head and starts chomping at the insides! Disgusting!") @@ -85,9 +87,10 @@ /obj/item/storage/bag/trash/bluespace/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 60 STR.max_items = 60 + STR.limited_random_access_stack_position = 5 /obj/item/storage/bag/trash/bluespace/cyborg insertable = FALSE @@ -105,12 +108,12 @@ w_class = WEIGHT_CLASS_NORMAL component_type = /datum/component/storage/concrete/stack var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it - var/datum/component/mobhook + var/mob/listeningTo rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE /obj/item/storage/bag/ore/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) STR.max_w_class = WEIGHT_CLASS_HUGE @@ -118,15 +121,17 @@ /obj/item/storage/bag/ore/equipped(mob/user) . = ..() - if (mobhook && mobhook.parent != user) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/Pickup_ores))) + if(listeningTo == user) + return + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_ores) + listeningTo = user /obj/item/storage/bag/ore/dropped() . = ..() - if (mobhook) - QDEL_NULL(mobhook) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + listeningTo = null /obj/item/storage/bag/ore/proc/Pickup_ores(mob/living/user) var/show_message = FALSE @@ -136,7 +141,7 @@ return if (istype(user.pulling, /obj/structure/ore_box)) box = user.pulling - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) if(STR) for(var/A in tile) if (!is_type_in_typecache(A, STR.can_hold)) @@ -166,7 +171,7 @@ /obj/item/storage/bag/ore/cyborg/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) STR.max_w_class = WEIGHT_CLASS_HUGE @@ -178,7 +183,7 @@ /obj/item/storage/bag/ore/large/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) STR.max_w_class = WEIGHT_CLASS_HUGE @@ -191,7 +196,7 @@ /obj/item/storage/bag/ore/holding/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.max_items = INFINITY STR.max_combined_w_class = INFINITY STR.max_combined_stack_amount = INFINITY @@ -209,7 +214,7 @@ /obj/item/storage/bag/plants/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 100 STR.max_items = 100 @@ -249,7 +254,7 @@ /obj/item/storage/bag/sheetsnatcher/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/sheet)) STR.cant_hold = typecacheof(list(/obj/item/stack/sheet/mineral/sandstone, /obj/item/stack/sheet/mineral/wood)) @@ -266,7 +271,7 @@ /obj/item/storage/bag/sheetsnatcher/borg/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.max_combined_stack_amount = 500 // ----------------------------- @@ -283,7 +288,7 @@ /obj/item/storage/bag/books/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 21 STR.max_items = 7 @@ -308,15 +313,14 @@ /obj/item/storage/bag/tray/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.insert_preposition = "on" /obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user) . = ..() // Drop all the things. All of them. var/list/obj/item/oldContents = contents.Copy() - GET_COMPONENT(STR, /datum/component/storage) - STR.quick_empty() + SEND_SIGNAL(src, COMSIG_TRY_STORAGE_QUICK_EMPTY) // Make each item scatter a bit for(var/obj/item/I in oldContents) spawn() @@ -362,7 +366,7 @@ /obj/item/storage/bag/chemistry/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 200 STR.max_items = 50 STR.insert_preposition = "in" @@ -382,7 +386,7 @@ /obj/item/storage/bag/bio/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 200 STR.max_items = 25 STR.insert_preposition = "in" @@ -397,6 +401,6 @@ /obj/item/storage/bag/bio/holding/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = INFINITY STR.max_items = 100 diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index e354123ab9..713dbe4133 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -44,7 +44,7 @@ /obj/item/storage/belt/utility/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) var/static/list/can_hold = typecacheof(list( /obj/item/crowbar, /obj/item/screwdriver, @@ -127,7 +127,7 @@ /obj/item/storage/belt/medical/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_BULKY STR.can_hold = typecacheof(list( /obj/item/healthanalyzer, @@ -199,7 +199,7 @@ /obj/item/storage/belt/security/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list( @@ -238,7 +238,7 @@ /obj/item/storage/belt/mining/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.max_w_class = WEIGHT_CLASS_BULKY STR.max_combined_w_class = 20 @@ -297,7 +297,7 @@ /obj/item/storage/belt/mining/primitive/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 /obj/item/storage/belt/soulstone @@ -308,7 +308,7 @@ /obj/item/storage/belt/soulstone/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( /obj/item/soulstone @@ -331,7 +331,7 @@ /obj/item/storage/belt/champion/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 1 STR.can_hold = list( /obj/item/clothing/mask/luchador @@ -346,7 +346,7 @@ /obj/item/storage/belt/military/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL /obj/item/storage/belt/military/snack @@ -359,7 +359,7 @@ /obj/item/storage/belt/military/snack/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.max_w_class = WEIGHT_CLASS_SMALL STR.can_hold = typecacheof(list( @@ -427,7 +427,7 @@ /obj/item/storage/belt/military/assault/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 /obj/item/storage/belt/durathread @@ -480,7 +480,7 @@ /obj/item/storage/belt/grenade/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 30 STR.display_numerical_stacking = TRUE STR.max_combined_w_class = 60 @@ -533,7 +533,7 @@ /obj/item/storage/belt/wands/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( /obj/item/gun/magic/wand @@ -559,7 +559,7 @@ /obj/item/storage/belt/janitor/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit. STR.can_hold = typecacheof(list( @@ -586,7 +586,7 @@ /obj/item/storage/belt/bandolier/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 18 STR.display_numerical_stacking = TRUE STR.can_hold = typecacheof(list( @@ -602,7 +602,7 @@ /obj/item/storage/belt/bandolier/durathread/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 32 STR.display_numerical_stacking = TRUE STR.can_hold = typecacheof(list( @@ -617,7 +617,7 @@ /obj/item/storage/belt/medolier/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 15 STR.display_numerical_stacking = FALSE STR.allow_quick_gather = TRUE @@ -659,7 +659,7 @@ /obj/item/storage/belt/holster/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 3 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list( @@ -683,7 +683,7 @@ /obj/item/storage/belt/fannypack/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 3 STR.max_w_class = WEIGHT_CLASS_SMALL @@ -750,7 +750,7 @@ /obj/item/storage/belt/sabre/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 1 STR.rustle_sound = FALSE STR.max_w_class = WEIGHT_CLASS_BULKY diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 85a06f0c1e..c658eee3d5 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -11,7 +11,7 @@ /obj/item/storage/book/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 1 /obj/item/storage/book/attack_self(mob/user) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index dd6a6b8453..f50b5d1be6 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -398,7 +398,7 @@ /obj/item/storage/box/donkpockets/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket)) /obj/item/storage/box/donkpockets/PopulateContents() @@ -413,7 +413,7 @@ /obj/item/storage/box/monkeycubes/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 7 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/monkeycube)) @@ -568,7 +568,7 @@ /obj/item/storage/box/snappops/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.can_hold = typecacheof(list(/obj/item/toy/snappop)) STR.max_items = 8 @@ -586,7 +586,7 @@ /obj/item/storage/box/matches/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 10 STR.can_hold = typecacheof(list(/obj/item/match)) @@ -609,7 +609,7 @@ /obj/item/storage/box/lights/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 21 STR.can_hold = typecacheof(list(/obj/item/light/tube, /obj/item/light/bulb)) STR.max_combined_w_class = 21 @@ -1144,7 +1144,7 @@ if(can_expire) expiration_date = rand(expiration_date_min, expiration_date_max) desc += "\nAn expiry date is listed on it. It reads: [expiration_date]
" - var/spess_current_year = GLOB.year_integer + 540 + var/spess_current_year = GLOB.year_integer if(expiration_date < spess_current_year) var/gross_risk = min(round(spess_current_year - expiration_date * 0.1), 1) var/toxic_risk = min(round(spess_current_year - expiration_date * 0.01), 1) diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index ed547bc17d..782ffd3add 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -17,7 +17,7 @@ /obj/item/storage/briefcase/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 21 @@ -48,7 +48,7 @@ /obj/item/storage/briefcase/lawyer/family/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 14 diff --git a/code/game/objects/items/storage/dakis.dm b/code/game/objects/items/storage/dakis.dm index 08748bf37e..2703581a94 100644 --- a/code/game/objects/items/storage/dakis.dm +++ b/code/game/objects/items/storage/dakis.dm @@ -13,7 +13,7 @@ /obj/item/storage/daki/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_combined_w_class = 21 STR.max_items = 3 diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 95639918bb..f0a9ad019b 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -25,7 +25,7 @@ var/fancy_open = FALSE /obj/item/storage/fancy/PopulateContents() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) for(var/i = 1 to STR.max_items) new spawn_type(src) @@ -72,7 +72,7 @@ /obj/item/storage/fancy/donut_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donut)) @@ -93,7 +93,7 @@ /obj/item/storage/fancy/egg_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 12 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/egg)) @@ -115,7 +115,7 @@ /obj/item/storage/fancy/candle_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 /obj/item/storage/fancy/candle_box/attack_self(mob_user) @@ -138,7 +138,7 @@ /obj/item/storage/fancy/cigarettes/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette, /obj/item/lighter)) @@ -276,7 +276,7 @@ /obj/item/storage/fancy/rollingpapers/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 10 STR.can_hold = typecacheof(list(/obj/item/rollingpaper)) @@ -300,7 +300,7 @@ /obj/item/storage/fancy/cigarettes/cigars/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette/cigar)) @@ -347,6 +347,6 @@ /obj/item/storage/fancy/heart_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 8 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/tinychocolate)) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 312ef35430..822a1d5011 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -170,7 +170,7 @@ /obj/item/storage/firstaid/tactical/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL /obj/item/storage/firstaid/tactical/PopulateContents() @@ -200,7 +200,7 @@ /obj/item/storage/pill_bottle/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_quick_gather = TRUE STR.click_gather = TRUE STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/dice)) @@ -337,7 +337,7 @@ /obj/item/storage/pill_bottle/penis_enlargement/PopulateContents() for(var/i in 1 to 7) new /obj/item/reagent_containers/pill/penis_enlargement(src) - + /obj/item/storage/pill_bottle/breast_enlargement name = "breast enlargement pills" desc = "Made by Fermichem - They have a woman with breasts larger than she is on them. The warming states not to take more than 10u at a time." @@ -363,7 +363,7 @@ /obj/item/storage/belt/organbox/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 16 STR.max_w_class = WEIGHT_CLASS_BULKY STR.max_combined_w_class = 20 diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index eeebc6f4c5..1607b19c2f 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -15,7 +15,7 @@ /obj/item/storage/lockbox/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 14 STR.max_items = 4 @@ -101,7 +101,7 @@ /obj/item/storage/lockbox/medal/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_items = 10 STR.max_combined_w_class = 20 diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 20dae54a71..8618e4c3ae 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -26,7 +26,7 @@ /obj/item/storage/secure/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_combined_w_class = 14 @@ -136,7 +136,7 @@ /obj/item/storage/secure/briefcase/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 21 STR.max_w_class = WEIGHT_CLASS_NORMAL @@ -146,7 +146,7 @@ /obj/item/storage/secure/briefcase/syndie/PopulateContents() ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) for(var/i = 0, i < STR.max_items - 2, i++) new /obj/item/stack/spacecash/c1000(src) @@ -170,7 +170,7 @@ /obj/item/storage/secure/safe/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.cant_hold = typecacheof(list(/obj/item/storage/secure/briefcase)) STR.max_w_class = 8 //?? diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index d18212be42..251703f907 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -35,6 +35,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/update_icon() ..() cut_overlays() + if(blood_DNA && blood_DNA.len) + add_blood_overlay() if(has_latches) var/icon/I = icon('icons/obj/storage.dmi', latches) add_overlay(I) @@ -122,7 +124,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/syndicate/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/toolbox/syndicate/PopulateContents() @@ -163,7 +165,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/brass/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 28 STR.max_items = 28 @@ -218,7 +220,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/artistic/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 20 STR.max_items = 10 @@ -256,7 +258,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/gold_real/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 40 STR.max_items = 12 diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index cf5d685b4a..84ebc28afa 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -220,7 +220,7 @@ /obj/item/storage/box/syndie_kit/space/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)) @@ -244,7 +244,7 @@ /obj/item/storage/box/syndie_kit/chemical/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 14 /obj/item/storage/box/syndie_kit/chemical/PopulateContents() diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index cb5790e45f..7a6899ad15 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -11,7 +11,7 @@ /obj/item/storage/wallet/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 4 STR.cant_hold = typecacheof(list(/obj/item/screwdriver/power)) STR.can_hold = typecacheof(list( diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index bfe630ba01..ee126971a7 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -1,4 +1,5 @@ #define STUNBATON_CHARGE_LENIENCY 0.3 +#define STUNBATON_DEPLETION_RATE 0.006 /obj/item/melee/baton name = "stunbaton" @@ -76,7 +77,7 @@ update_icon() /obj/item/melee/baton/process() - deductcharge(hitcost * 0.004, FALSE, FALSE) + deductcharge(round(hitcost * STUNBATON_DEPLETION_RATE), FALSE, FALSE) /obj/item/melee/baton/update_icon() if(status) @@ -250,4 +251,5 @@ sparkler?.activate() . = ..() -#undef STUNBATON_CHARGE_LENIENCY \ No newline at end of file +#undef STUNBATON_CHARGE_LENIENCY +#undef STUNBATON_DEPLETION_RATE diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index b672eb01ca..f592055338 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -17,7 +17,7 @@ /obj/item/tank/jetpack/New() ..() if(gas_type) - air_contents.gases[gas_type] = (6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C) + air_contents.gases[gas_type] = ((6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C)) ion_trail = new ion_trail.set_up(src) @@ -37,42 +37,50 @@ return if(!on) - turn_on() + turn_on(user) to_chat(user, "You turn the jetpack on.") else - turn_off() + turn_off(user) to_chat(user, "You turn the jetpack off.") for(var/X in actions) var/datum/action/A = X A.UpdateButtonIcon() -/obj/item/tank/jetpack/proc/turn_on() +/obj/item/tank/jetpack/proc/turn_on(mob/user) on = TRUE icon_state = "[initial(icon_state)]-on" ion_trail.start() + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react) + if(full_speed) + user.add_movespeed_modifier(MOVESPEED_ID_JETPACK, priority=100, multiplicative_slowdown=-2, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK) -/obj/item/tank/jetpack/proc/turn_off() +/obj/item/tank/jetpack/proc/turn_off(mob/user) on = FALSE stabilizers = FALSE icon_state = initial(icon_state) ion_trail.stop() + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + user.remove_movespeed_modifier(MOVESPEED_ID_JETPACK) + +/obj/item/tank/jetpack/proc/move_react(mob/user) + allow_thrust(0.01, user) /obj/item/tank/jetpack/proc/allow_thrust(num, mob/living/user) if(!on) return if((num < 0.005 || air_contents.total_moles() < num)) - turn_off() + turn_off(user) return var/datum/gas_mixture/removed = air_contents.remove(num) if(removed.total_moles() < 0.005) - turn_off() + turn_off(user) return var/turf/T = get_turf(user) T.assume_air(removed) - return 1 + return TRUE /obj/item/tank/jetpack/suicide_act(mob/user) if (istype(user, /mob/living/carbon/human/)) @@ -96,22 +104,22 @@ if(!on) return if((num < 0.005 || air_contents.total_moles() < num)) - turn_off() + turn_off(user) return if(rand(0,250) == 0) to_chat(user, "You feel your jetpack's engines cut out.") - turn_off() + turn_off(user) return var/datum/gas_mixture/removed = air_contents.remove(num) if(removed.total_moles() < 0.005) - turn_off() + turn_off(user) return var/turf/T = get_turf(user) T.assume_air(removed) - return 1 + return TRUE /obj/item/tank/jetpack/void name = "void jetpack (oxygen)" @@ -178,6 +186,7 @@ full_speed = FALSE var/datum/gas_mixture/temp_air_contents var/obj/item/tank/internals/tank = null + var/mob/living/carbon/human/cur_user /obj/item/tank/jetpack/suit/New() ..() @@ -198,28 +207,30 @@ return ..() -/obj/item/tank/jetpack/suit/turn_on() - if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc)) +/obj/item/tank/jetpack/suit/turn_on(mob/user) + if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc) || loc.loc != user) return - var/mob/living/carbon/human/H = loc.loc + var/mob/living/carbon/human/H = user tank = H.s_store air_contents = tank.air_contents START_PROCESSING(SSobj, src) + cur_user = user ..() -/obj/item/tank/jetpack/suit/turn_off() +/obj/item/tank/jetpack/suit/turn_off(mob/user) tank = null air_contents = temp_air_contents STOP_PROCESSING(SSobj, src) + cur_user = null ..() /obj/item/tank/jetpack/suit/process() if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc)) - turn_off() + turn_off(cur_user) return var/mob/living/carbon/human/H = loc.loc if(!tank || tank != H.s_store) - turn_off() + turn_off(cur_user) return ..() diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 8f2b85098d..f3be8cefc8 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -24,7 +24,7 @@ /obj/item/watertank/ui_action_click(mob/user) toggle_mister(user) -/obj/item/watertank/item_action_slot_check(slot, mob/user) +/obj/item/watertank/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == user.getBackSlot()) return 1 @@ -341,7 +341,7 @@ /obj/item/reagent_containers/chemtank/ui_action_click() toggle_injection() -/obj/item/reagent_containers/chemtank/item_action_slot_check(slot, mob/user) +/obj/item/reagent_containers/chemtank/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_BACK) return 1 diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 40392c19c3..f427bf6c4c 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -6,11 +6,11 @@ item_state = "teleprod" slot_flags = null -/obj/item/melee/baton/cattleprod/teleprod/baton_stun(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit +/obj/item/melee/baton/cattleprod/teleprod/baton_stun(mob/living/L, mob/living/carbon/user)//handles making things teleport when hit . = ..() - if(!. || !istype(M) || M.anchored) + if(!. || L.anchored) return - do_teleport(M, get_turf(M), 15, channel = TELEPORT_CHANNEL_BLUESPACE) + do_teleport(L, get_turf(L), 15, channel = TELEPORT_CHANNEL_BLUESPACE) /obj/item/melee/baton/cattleprod/teleprod/clowning_around(mob/living/user) user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 46fabea8b0..638dcd3556 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -276,6 +276,106 @@ /obj/item/toy/sword/getweight() return (active ? total_mass_on : total_mass) || w_class *1.25 +/obj/item/toy/sword/cx + name = "\improper DX Non-Euplastic LightSword" + desc = "A deluxe toy replica of an energy sword. Realistic visuals and sounds! Ages 8 and up." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "cxsword_hilt" + item_state = "cxsword" + active = FALSE + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("poked", "jabbed", "hit") + light_color = "#37FFF7" + var/light_brightness = 3 + actions_types = list() + +/obj/item/toy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/toy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") + return TRUE + +/obj/item/toy/sword/cx/attack_self(mob/user) + active = !( active ) + + if (active) + to_chat(user, "You activate the holographic blade with a press of a button.") + playsound(user, 'sound/weapons/nebon.ogg', 50, 1) + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("slashed", "stabbed", "ravaged") + set_light(light_brightness) + update_icon() + + else + to_chat(user, "You deactivate the holographic blade with a press of a button.") + playsound(user, 'sound/weapons/neboff.ogg', 50, 1) + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("poked", "jabbed", "hit") + set_light(0) + update_icon() + + add_fingerprint(user) + +/obj/item/toy/sword/cx/update_icon() + var/mutable_appearance/blade_overlay = mutable_appearance(icon, "cxsword_blade") + var/mutable_appearance/gem_overlay = mutable_appearance(icon, "cxsword_gem") + + if(light_color) + blade_overlay.color = light_color + gem_overlay.color = light_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(gem_overlay) + + if(active) + add_overlay(blade_overlay) + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() + +/obj/item/toy/sword/cx/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + + if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null + if(energy_color_input) + light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + update_light() + +/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) + . = ..() + if(active) + if(isinhands) + var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") + blade_inhand.color = light_color + . += blade_inhand + +/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params) + if(istype(W, /obj/item/toy/sword/cx)) + if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP)) + to_chat(user, "\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!") + return + else + to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.") + new /obj/item/twohanded/dualsaber/hypereutactic/toy(user.loc) + qdel(W) + qdel(src) + else + return ..() + +/obj/item/toy/sword/cx/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + /* * Foam armblade */ @@ -337,6 +437,30 @@ /obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles return FALSE +/obj/item/twohanded/dualsaber/hypereutactic/toy + name = "\improper DX Hyper-Euplastic LightSword" + desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up." + force = 0 + throwforce = 0 + throw_speed = 3 + throw_range = 5 + force_unwielded = 0 + force_wielded = 0 + attack_verb = list("attacked", "struck", "hit") + total_mass_on = TOTAL_MASS_TOY_SWORD + slowdown_wielded = 0 + +/obj/item/twohanded/dualsaber/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + return FALSE + +/obj/item/twohanded/dualsaber/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles + return FALSE + +/obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow + name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander" + desc = "A custom-built toy with fancy rainbow lights built-in." + hacked = TRUE + /obj/item/toy/katana name = "replica katana" desc = "Woefully underpowered in D20." diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index b1c2c36585..14f924a27e 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -6,6 +6,7 @@ * Spears * CHAINSAWS * Bone Axe and Spear + * And more */ /*################################################################## @@ -346,7 +347,8 @@ icon_state = "dualsaber[item_color][wielded]" else icon_state = "dualsaber0" - SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + + clean_blood() /obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user) if(user.has_dna()) @@ -463,6 +465,116 @@ else return ..() +///////////////////////////////////////////////////// +// HYPEREUTACTIC Blades ///////////////////////// +///////////////////////////////////////////////////// + +/obj/item/twohanded/dualsaber/hypereutactic + icon = 'icons/obj/1x2.dmi' + icon_state = "hypereutactic" + lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' + righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' + item_state = "hypereutactic" + inhand_x_dimension = 64 + inhand_y_dimension = 64 + name = "hypereutactic blade" + desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter." + force = 7 + force_unwielded = 7 + force_wielded = 40 + wieldsound = 'sound/weapons/nebon.ogg' + unwieldsound = 'sound/weapons/neboff.ogg' + hitsound_on = 'sound/weapons/nebhit.ogg' + slowdown_wielded = 1 + armour_penetration = 60 + light_color = "#37FFF7" + rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00") + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded") + spinnable = FALSE + total_mass_on = 4 + +/obj/item/twohanded/dualsaber/hypereutactic/chaplain + name = "\improper divine lightblade" + desc = "A giant blade of bright and holy light, said to cut down the wicked with ease." + force = 5 + force_unwielded = 5 + force_wielded = 20 + block_chance = 50 + armour_penetration = 0 + var/chaplain_spawnable = TRUE + obj_flags = UNIQUE_RENAME + +/obj/item/twohanded/dualsaber/hypereutactic/chaplain/Initialize() + . = ..() + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) + +/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect() + return FALSE + +/obj/item/twohanded/dualsaber/hypereutactic/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/twohanded/dualsaber/hypereutactic/altafterattack(atom/target, mob/living/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") + return TRUE + +/obj/item/twohanded/dualsaber/hypereutactic/update_icon() + var/mutable_appearance/blade_overlay = mutable_appearance(icon, "hypereutactic_blade") + var/mutable_appearance/gem_overlay = mutable_appearance(icon, "hypereutactic_gem") + + if(light_color) + blade_overlay.color = light_color + gem_overlay.color = light_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(gem_overlay) + + if(wielded) + add_overlay(blade_overlay) + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() + + clean_blood() + +/obj/item/twohanded/dualsaber/hypereutactic/AltClick(mob/living/user) + if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked) + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null + if(!energy_color_input || !user.canUseTopic(src, BE_CLOSE, FALSE) || hacked) + return + light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + update_light() + +/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file) + . = ..() + if(isinhands) + var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem") + gem_inhand.color = light_color + . += gem_inhand + if(wielded) + var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade") + blade_inhand.color = light_color + . += blade_inhand + +/obj/item/twohanded/dualsaber/hypereutactic/examine(mob/user) + ..() + if(!hacked) + to_chat(user, "Alt-click to recolor it.") + +/obj/item/twohanded/dualsaber/hypereutactic/rainbow_process() + . = ..() + update_icon() + update_light() + //spears /obj/item/twohanded/spear icon_state = "spearglass0" @@ -624,7 +736,7 @@ force = on ? force_on : initial(force) throwforce = on ? force_on : initial(force) icon_state = "chainsaw_[on ? "on" : "off"]" - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = on if(on) @@ -847,18 +959,20 @@ righthand_file = 'icons/mob/inhands/items_righthand.dmi' slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL - var/datum/component/mobhook + var/mob/listeningTo var/zoom_out_amt = 6 var/zoom_amt = 10 +/obj/item/twohanded/binoculars/Destroy() + listeningTo = null + return ..() + /obj/item/twohanded/binoculars/wield(mob/user) . = ..() if(!wielded) return - if(QDELETED(mobhook)) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/unwield))) - else - user.TakeComponent(mobhook) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield) + listeningTo = user user.visible_message("[user] holds [src] up to [user.p_their()] eyes.","You hold [src] up to your eyes.") item_state = "binoculars_wielded" user.regenerate_icons() @@ -882,7 +996,8 @@ /obj/item/twohanded/binoculars/unwield(mob/user) . = ..() - mobhook.RemoveComponent() + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + listeningTo = null user.visible_message("[user] lowers [src].","You lower [src].") item_state = "binoculars" user.regenerate_icons() @@ -891,4 +1006,4 @@ var/client/C = user.client C.change_view(CONFIG_GET(string/default_view)) user.client.pixel_x = 0 - user.client.pixel_y = 0 + user.client.pixel_y = 0 \ No newline at end of file diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 4552e846ad..fec17cfa69 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -528,7 +528,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/melee/baseball_bat/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/melee/baseball_bat/homerun name = "home run bat" diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index 2093ae5660..053512a256 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -1,4 +1,4 @@ -/obj/structure/sign/barsign // All Signs are 64 by 32 pixels, they take two tiles +/obj/structure/sign/barsign // All Signs are 64 by 64 pixels, though most of them are made to fit 64 x 32 and only take the two lowermost tiles. name = "Bar Sign" desc = "A bar sign with no writing on it." icon = 'icons/obj/barsigns.dmi' diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index dde9bce1bc..cec97d5d8b 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -495,7 +495,25 @@ icon_state = "sofamiddle" icon = 'icons/obj/sofa.dmi' buildstackamount = 1 - item_chair = null + var/mutable_appearance/armrest + +/obj/structure/chair/sofa/Initialize() + armrest = mutable_appearance(icon, "[icon_state]_armrest") + return ..() + +/obj/structure/chair/sofa/post_buckle_mob(mob/living/M) + . = ..() + update_armrest() + +/obj/structure/chair/sofa/proc/update_armrest() + if(has_buckled_mobs()) + add_overlay(armrest) + else + cut_overlay(armrest) + +/obj/structure/chair/sofa/post_unbuckle_mob() + . = ..() + update_armrest() /obj/structure/chair/sofa/left icon_state = "sofaend_left" @@ -504,4 +522,7 @@ icon_state = "sofaend_right" /obj/structure/chair/sofa/corner - icon_state = "sofacorner" \ No newline at end of file + icon_state = "sofacorner" + +/obj/structure/chair/sofa/corner/handle_layer() //only the armrest/back of this chair should cover the mob. + return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 8b0d410a72..172120861b 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -614,3 +614,6 @@ user.resting = FALSE togglelock(user) T1.visible_message("[user] dives into [src]!") + +/obj/structure/closet/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool) + return ..() && opened diff --git a/code/game/objects/structures/crates_lockers/closets/genpop.dm b/code/game/objects/structures/crates_lockers/closets/genpop.dm new file mode 100644 index 0000000000..80b64aaedc --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/genpop.dm @@ -0,0 +1,117 @@ +/obj/structure/closet/secure_closet/genpop + desc = "It's a secure locker for inmates's personal belongings." + var/default_desc = "It's a secure locker for the storage inmates's personal belongings during their time in prison." + name = "prisoner closet" + var/default_name = "prisoner closet" + req_access = list(ACCESS_BRIG) + var/obj/item/card/id/prisoner/registered_id = null + icon_state = "prisoner" + locked = FALSE + anchored = TRUE + opened = TRUE + density = FALSE + +/obj/structure/closet/secure_closet/genpop/attackby(obj/item/W, mob/user, params) + if(!broken && locked && W == registered_id) //Prisoner opening + handle_prisoner_id(user) + return + + return ..() + +/obj/structure/closet/secure_closet/genpop/proc/handle_prisoner_id(mob/user) + var/obj/item/card/id/prisoner/prisoner_id = null + for(prisoner_id in user.held_items) + if(prisoner_id != registered_id) + prisoner_id = null + else + break + + if(!prisoner_id) + to_chat(user, "Access Denied.") + return FALSE + + qdel(registered_id) + registered_id = null + locked = FALSE + open(user) + desc = "It's a secure locker for prisoner effects." + to_chat(user, "You insert your prisoner id into \the [src] and it springs open!") + + return TRUE + +/obj/structure/closet/secure_closet/genpop/proc/handle_edit_sentence(mob/user) + var/prisoner_name = input(user, "Please input the name of the prisoner.", "Prisoner Name", registered_id.registered_name) as text|null + if(prisoner_name == null | !user.Adjacent(src)) + return FALSE + var/sentence_length = input(user, "Please input the length of their sentence in minutes (0 for perma).", "Sentence Length", registered_id.sentence) as num|null + if(sentence_length == null | !user.Adjacent(src)) + return FALSE + var/crimes = input(user, "Please input their crimes.", "Crimes", registered_id.crime) as text|null + if(crimes == null | !user.Adjacent(src)) + return FALSE + + registered_id.registered_name = prisoner_name + var/filteredsentlength = text2num(sentence_length) + registered_id.sentence = filteredsentlength ? (filteredsentlength MINUTES) + world.time : 0 + registered_id.crime = crimes + registered_id.update_label(prisoner_name, registered_id.assignment) + if(registered_id.sentence) + START_PROCESSING(SSobj, registered_id) + else + STOP_PROCESSING(SSobj, registered_id) + + name = "[default_name] ([prisoner_name])" + desc = "[default_desc] It contains the personal effects of [prisoner_name]." + + return TRUE + +/obj/structure/closet/secure_closet/genpop/togglelock(mob/living/user) + if(!allowed(user)) + return ..() + + if(!broken && locked && registered_id != null) + var/name = registered_id.registered_name + var/result = alert(user, "This locker currently contains [name]'s personal belongings ","Locker In Use","Reset","Amend ID", "Open") + if(!user.Adjacent(src)) + return + if(result == "Reset") + name = default_name + desc = default_desc + registered_id = null + if(result == "Open" | result == "Reset") + locked = FALSE + open(user) + if(result == "Amend ID") + handle_edit_sentence(user) + else + return ..() + +/obj/structure/closet/secure_closet/genpop/close(mob/living/user) + if(registered_id != null) + locked = TRUE + return ..() + +/obj/structure/closet/secure_closet/genpop/attack_hand(mob/user) + if(user.lying && get_dist(src, user) > 0) + return + + if(!broken && registered_id != null && registered_id in user.held_items) + handle_prisoner_id(user) + return + + if(!broken && opened && !locked && allowed(user) && !registered_id) //Genpop setup + + registered_id = new /obj/item/card/id/prisoner/(src.contents) + if(handle_edit_sentence(user)) + close(user) + locked = TRUE + update_icon() + registered_id.forceMove(src.loc) + new /obj/item/clothing/under/rank/prisoner(src.loc) + else + qdel(registered_id) + registered_id = null + + return + + ..() \ No newline at end of file diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index ffc2c344f9..176779abd7 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -65,6 +65,8 @@ var/mob/M = AM if(M.mind in immune_minds) return + if(M.anti_magic_check()) + flare() if(charges <= 0) return flare() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 46db567b10..76c8f7f11f 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -318,6 +318,7 @@ /obj/machinery/shower/proc/wash_obj(obj/O) . = SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + . = O.clean_blood() O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) if(isitem(O)) var/obj/item/I = O @@ -328,8 +329,9 @@ /obj/machinery/shower/proc/wash_turf() if(isturf(loc)) var/turf/tile = loc - SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) tile.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) + tile.clean_blood() + SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) for(var/obj/effect/E in tile) if(is_cleanable(E)) qdel(E) @@ -381,7 +383,8 @@ else if(H.w_uniform && wash_obj(H.w_uniform)) H.update_inv_w_uniform() if(washgloves) - SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + H.clean_blood() + SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) if(H.shoes && washshoes && wash_obj(H.shoes)) H.update_inv_shoes() if(H.wear_mask && washmask && wash_obj(H.wear_mask)) @@ -398,9 +401,11 @@ else if(M.wear_mask && wash_obj(M.wear_mask)) M.update_inv_wear_mask(0) - SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + M.clean_blood() + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) else - SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + L.clean_blood() + SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) /obj/machinery/shower/proc/contamination_cleanse(atom/movable/thing) var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive) @@ -498,7 +503,8 @@ H.regenerate_icons() user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep else - SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + user.clean_blood() /obj/structure/sink/attackby(obj/item/O, mob/living/user, params) if(busy) @@ -554,7 +560,8 @@ busy = FALSE return 1 busy = FALSE - SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + O.clean_blood() O.acid_level = 0 create_reagents(5) reagents.add_reagent(dispensedreagent, 5) @@ -675,4 +682,4 @@ else playsound(loc, 'sound/weapons/tap.ogg', 50, 1) if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, 1) + playsound(loc, 'sound/items/welder.ogg', 80, 1) \ No newline at end of file diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index e441ccd6cc..f1c5080c8f 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -41,7 +41,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/open/copyTurf(turf/T, copy_air = FALSE) . = ..() if (isopenturf(T)) - GET_COMPONENT(slip, /datum/component/wet_floor) + var/datum/component/wet_floor/slip = GetComponent(/datum/component/wet_floor) if(slip) var/datum/component/wet_floor/WF = T.AddComponent(/datum/component/wet_floor) WF.InheritComponent(slip) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index f6d234b346..bd24e0ff93 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -251,6 +251,7 @@ M.apply_water() SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + clean_blood() for(var/obj/effect/O in src) if(is_cleanable(O)) qdel(O) diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm index 677fba2990..0a7b507488 100644 --- a/code/game/turfs/simulated/chasm.dm +++ b/code/game/turfs/simulated/chasm.dm @@ -15,11 +15,11 @@ AddComponent(/datum/component/chasm, SSmapping.get_turf_below(src)) /turf/open/chasm/proc/set_target(turf/target) - GET_COMPONENT(chasm_component, /datum/component/chasm) + var/datum/component/chasm/chasm_component = GetComponent(/datum/component/chasm) chasm_component.target_turf = target /turf/open/chasm/proc/drop(atom/movable/AM) - GET_COMPONENT(chasm_component, /datum/component/chasm) + var/datum/component/chasm/chasm_component = GetComponent(/datum/component/chasm) chasm_component.drop(AM) /turf/open/chasm/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) diff --git a/code/modules/NTNet/services/_service.dm b/code/modules/NTNet/services/_service.dm index 8611c2d25d..3622dc3881 100644 --- a/code/modules/NTNet/services/_service.dm +++ b/code/modules/NTNet/services/_service.dm @@ -17,7 +17,7 @@ /datum/ntnet_service/proc/connect(datum/ntnet/net) if(!istype(net)) return FALSE - GET_COMPONENT(interface, /datum/component/ntnet_interface) + var/datum/component/ntnet_interface/interface = GetComponent(/datum/component/ntnet_interface) if(!interface.register_connection(net)) return FALSE if(!net.register_service(src)) @@ -29,7 +29,7 @@ /datum/ntnet_service/proc/disconnect(datum/ntnet/net, force = FALSE) if(!istype(net) || (!net.unregister_service(src) && !force)) return FALSE - GET_COMPONENT(interface, /datum/component/ntnet_interface) + var/datum/component/ntnet_interface/interface = GetComponent(/datum/component/ntnet_interface) interface.unregister_connection(net) networks_by_id -= net.network_id return TRUE diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 555c35980d..7fafca69f0 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -682,7 +682,7 @@ log_admin("[key_name(usr)] delayed the round start.") else to_chat(world, "The game will start in [DisplayTimeText(newtime)].") - SEND_SOUND(world, sound('sound/ai/attention.ogg')) + SEND_SOUND(world, sound(get_announcer_sound("attention"))) log_admin("[key_name(usr)] set the pre-game delay to [DisplayTimeText(newtime)].") SSblackbox.record_feedback("tally", "admin_verb", 1, "Delay Game Start") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index cff7faadd8..eae59fcb93 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -25,6 +25,9 @@ H.facial_hair_color = H.hair_color H.eye_color = random_eye_color() H.dna.blood_type = random_blood_type() + H.saved_underwear = H.underwear + H.saved_undershirt = H.undershirt + H.saved_socks = H.socks // Mutant randomizing, doesn't affect the mob appearance unless it's the specific mutant. H.dna.features["mcolor"] = random_short_color() diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 58fd627c74..70ae133a31 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -400,7 +400,7 @@ SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Chinese Cartoons")) message_admins("[key_name_admin(usr)] made everything kawaii.") for(var/mob/living/carbon/human/H in GLOB.carbon_list) - SEND_SOUND(H, sound('sound/ai/animes.ogg')) + SEND_SOUND(H, sound(get_announcer_sound("animes"))) if(H.dna.species.id == "human") if(H.dna.features["tail_human"] == "None" || H.dna.features["ears"] == "None") @@ -469,7 +469,7 @@ if(is_station_level(W.z) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") - priority_announce("CentCom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/ai/commandreport.ogg') + priority_announce("CentCom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, "commandreport") if("ak47s") if(!check_rights(R_FUN)) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 4e58a9cba5..ce4b8f7e39 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -318,6 +318,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) RemoveActive() state = AHELP_CLOSED GLOB.ahelp_tickets.ListInsert(src) + to_chat(initiator, "Ticket closed by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"].") AddInteraction("Closed by [key_name].") if(!silent) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "closed") @@ -336,7 +337,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50) AddInteraction("Resolved by [key_name].") - to_chat(initiator, "Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.") + to_chat(initiator, "Your ticket has been resolved by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]. The Adminhelp verb will be returned to you shortly.") if(!silent) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "resolved") var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name]" @@ -353,7 +354,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) SEND_SOUND(initiator, sound('sound/effects/adminhelp.ogg')) - to_chat(initiator, "- AdminHelp Rejected! -") + to_chat(initiator, "- AdminHelp Rejected by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]! -") to_chat(initiator, "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again.") to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.") @@ -369,7 +370,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(state != AHELP_ACTIVE) return - var/msg = "- AdminHelp marked as IC issue! -
" + var/msg = "- AdminHelp marked as IC issue by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]! -
" msg += "Losing is part of the game!
" msg += "It is also possible that your ahelp is unable to be answered properly, due to events occurring in the round." if(initiator) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 246ccb1d07..d7dd8db08d 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -560,7 +560,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/announce_command_report = TRUE switch(confirm) if("Yes") - priority_announce(input, null, 'sound/ai/commandreport.ogg') + priority_announce(input, null, "commandreport") announce_command_report = FALSE if("Cancel") return diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm index 80eb007605..e8d30e8dbe 100644 --- a/code/modules/antagonists/abductor/abductor.dm +++ b/code/modules/antagonists/abductor/abductor.dm @@ -26,7 +26,7 @@ sub_role = "Scientist" outfit = /datum/outfit/abductor/scientist landmark_type = /obj/effect/landmark/abductor/scientist - greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve." + greet_text = "Use your experimental console and surgical equipment to monitor your agent and experiment upon abducted humans." show_in_antagpanel = TRUE /datum/antagonist/abductor/create_team(datum/team/abductor_team/new_team) @@ -40,15 +40,14 @@ return team /datum/antagonist/abductor/on_gain() - owner.special_role = "[name] [sub_role]" - owner.assigned_role = "[name] [sub_role]" - owner.objectives += team.objectives + owner.special_role = "[name]" + owner.assigned_role = "[name]" + objectives += team.objectives finalize_abductor() ADD_TRAIT(owner, TRAIT_ABDUCTOR_TRAINING, ABDUCTOR_ANTAGONIST) return ..() /datum/antagonist/abductor/on_removal() - owner.objectives -= team.objectives if(owner.current) to_chat(owner.current,"You are no longer the [owner.special_role]!") owner.special_role = null @@ -66,6 +65,7 @@ //Equip var/mob/living/carbon/human/H = owner.current H.set_species(/datum/species/abductor) + H.real_name = "[team.name] [sub_role]" H.equipOutfit(outfit) @@ -99,8 +99,8 @@ else return new_owner.add_antag_datum(src) - log_admin("[key_name(usr)] made [key_name(new_owner.current)] [name] on [choice]!") - message_admins("[key_name_admin(usr)] made [key_name_admin(new_owner.current)] [name] on [choice] !") + log_admin("[key_name(usr)] made [key_name(new_owner)] [name] on [choice]!") + message_admins("[key_name_admin(usr)] made [key_name_admin(new_owner)] [name] on [choice] !") /datum/antagonist/abductor/get_admin_commands() . = ..() @@ -153,7 +153,7 @@ result += "The abductors of [name] were:" for(var/datum/mind/abductor_mind in members) result += printplayer(abductor_mind) - result += printobjectives(abductor_mind) + result += printobjectives(objectives) return "
[result.Join("
")]
" @@ -178,7 +178,6 @@ var/objtype = (prob(75) ? /datum/objective/abductee/random : pick(subtypesof(/datum/objective/abductee/) - /datum/objective/abductee/random)) var/datum/objective/abductee/O = new objtype() objectives += O - owner.objectives += objectives /datum/antagonist/abductee/apply_innate_effects(mob/living/mob_override) update_abductor_icons_added(mob_override ? mob_override.mind : owner,"abductee") diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 7620aa752b..c1088cbb3d 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -55,7 +55,7 @@ var/datum/action/A = X A.UpdateButtonIcon() -/obj/item/clothing/suit/armor/abductor/vest/item_action_slot_check(slot, mob/user) +/obj/item/clothing/suit/armor/abductor/vest/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_WEAR_SUIT) //we only give the mob the ability to activate the vest if he's actually wearing it. return 1 @@ -135,12 +135,14 @@ /obj/item/abductor/proc/AbductorCheck(mob/user) if(HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING)) return TRUE + if (istype(user) && user.mind && HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_TRAINING)) + return TRUE to_chat(user, "You can't figure how this works!") return FALSE /obj/item/abductor/proc/ScientistCheck(mob/user) - var/training = HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING) - var/sci_training = HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) + var/training = HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING) || (user.mind && HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_TRAINING)) + var/sci_training = HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || (user.mind && HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)) if(training && !sci_training) to_chat(user, "You're not trained to use this!") @@ -343,8 +345,8 @@ if(QDELETED(G)) return - if(istype(C.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(user, "Your target seems to have some sort of protective headgear on, blocking the message from being sent!") + if(C.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "Your target seems to have some sort of tinfoil protection on, blocking the message from being sent!") return G.mind_control(command, user) @@ -522,10 +524,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} /obj/item/abductor_baton/proc/SleepAttack(mob/living/L,mob/living/user) if(L.incapacitated(TRUE, TRUE)) - if(istype(L.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(user, "The specimen's protective headgear is interfering with the sleep inducement!") - L.visible_message("[user] tried to induced sleep in [L] with [src], but [L.p_their()] headgear protected [L.p_them()]!", \ - "You feel a strange wave of heavy drowsiness wash over you, but your headgear deflects most of it!") + if(L.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "The specimen's tinfoil protection is interfering with the sleep inducement!") + L.visible_message("[user] tried to induced sleep in [L] with [src], but [L.p_their()] tinfoil protected [L.p_them()]!", \ + "You feel a strange wave of heavy drowsiness wash over you, but your tinfoil protection deflects most of it!") L.drowsyness += 2 return L.visible_message("[user] has induced sleep in [L] with [src]!", \ @@ -534,10 +536,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} L.Sleeping(1200) log_combat(user, L, "put to sleep") else - if(istype(L.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(user, "The specimen's protective headgear is completely blocking our sleep inducement methods!") - L.visible_message("[user] tried to induce sleep in [L] with [src], but [L.p_their()] headgear completely protected [L.p_them()]!", \ - "Any sense of drowsiness is quickly diminished as your headgear deflects the effects!") + if(L.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "The specimen's tinfoil protection is completely blocking our sleep inducement methods!") + L.visible_message("[user] tried to induce sleep in [L] with [src], but [L.p_their()] tinfoil completely protected [L.p_them()]!", \ + "Any sense of drowsiness is quickly diminished as your tinfoil protection deflects the effects!") return L.drowsyness += 1 to_chat(user, "Sleep inducement works fully only on stunned specimens! ") diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index cc52b3e910..a35cbbf0e4 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -19,7 +19,7 @@ /obj/item/organ/heart/gland/examine(mob/user) . = ..() - if(HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user)) + if((user.mind && HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)) || isobserver(user)) to_chat(user, "It is \a [true_name].") /obj/item/organ/heart/gland/proc/ownerCheck() @@ -48,19 +48,19 @@ /obj/item/organ/heart/gland/proc/mind_control(command, mob/living/user) if(!ownerCheck() || !mind_control_uses || active_mind_control) - return + return FALSE mind_control_uses-- to_chat(owner, "You suddenly feel an irresistible compulsion to follow an order...") to_chat(owner, "[command]") active_mind_control = TRUE - log_admin("[key_name(user)] sent an abductor mind control message to [key_name(owner)]: [command]") + message_admins("[key_name(user)] sent an abductor mind control message to [key_name(owner)]: [command]") update_gland_hud() addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration) /obj/item/organ/heart/gland/proc/clear_mind_control() if(!ownerCheck() || !active_mind_control) - return + return FALSE to_chat(owner, "You feel the compulsion fade, and you completely forget about your previous orders.") active_mind_control = FALSE diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm index 30b82398ff..bcf02bda01 100644 --- a/code/modules/antagonists/abductor/machinery/console.dm +++ b/code/modules/antagonists/abductor/machinery/console.dm @@ -28,7 +28,7 @@ . = ..() if(.) return - if(!HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING)) + if(!HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING) && !HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_TRAINING)) to_chat(user, "You start mashing alien buttons at random!") if(do_after(user,100, target = src)) TeleporterSend() @@ -178,8 +178,8 @@ c.console = src /obj/machinery/abductor/console/proc/AddSnapshot(mob/living/carbon/human/target) - if(istype(target.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - say("Subject wearing specialized protective headgear, unable to get a proper scan!") + if(target.anti_magic_check(FALSE, FALSE, TRUE, 0)) + say("Subject wearing specialized protective tinfoil gear, unable to get a proper scan!") return var/datum/icon_snapshot/entry = new entry.name = target.name diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm index 81792ca4f6..58f79e1c73 100644 --- a/code/modules/antagonists/blob/blob/blobs/core.dm +++ b/code/modules/antagonists/blob/blob/blobs/core.dm @@ -27,7 +27,7 @@ . = ..() /obj/structure/blob/core/proc/generate_announcement() - priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak5") /obj/structure/blob/core/scannerreport() return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts." diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm index 081b1181dc..1f25e06324 100644 --- a/code/modules/antagonists/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -21,7 +21,7 @@ to_chat(user, "Our muscles tense and strengthen.") changeling.chem_recharge_slowdown += 0.5 else - REMOVE_TRAIT(user, TRAIT_GOTTAGOFAST, "changeling_muscles") + user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) to_chat(user, "Our muscles relax.") changeling.chem_recharge_slowdown -= 0.5 if(stacks >= 20) @@ -36,12 +36,12 @@ /obj/effect/proc_holder/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) while(active) - ADD_TRAIT(user, TRAIT_GOTTAGOFAST, "changeling_muscles") + user.add_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) if(user.stat != CONSCIOUS || user.staminaloss >= 90) active = !active to_chat(user, "Our muscles relax without the energy to strengthen them.") user.Knockdown(40) - REMOVE_TRAIT(user, TRAIT_GOTTAGOFAST, "changeling_muscles") + user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) changeling.chem_recharge_slowdown -= 0.5 break diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index 2018067b77..8000be87e6 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -366,6 +366,8 @@ break if(!GLOB.ratvar_awakens) + if(GLOB.clockwork_vitality <= 0) + break GLOB.clockwork_vitality -= vitality_used sleep(2) diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm index 3ad6684725..07b4366194 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm @@ -35,7 +35,7 @@ /obj/item/clockwork/weapon/ratvarian_spear/attack(mob/living/target, mob/living/carbon/human/user) . = ..() - if(!QDELETED(target) && target.stat != DEAD && !target.anti_magic_check() && !is_servant_of_ratvar(target)) //we do bonus damage on attacks unless they're a servant, have a null rod, or are dead + if(!QDELETED(target) && target.stat != DEAD && !target.anti_magic_check(chargecost = 0) && !is_servant_of_ratvar(target)) //we do bonus damage on attacks unless they're a servant, have a null rod, or are dead var/bonus_damage = bonus_burn //normally a total of 20 damage, 30 with ratvar if(issilicon(target)) target.visible_message("[target] shudders violently at [src]'s touch!", "ERROR: Temperature rising!") diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm index f44f67e9cb..644d9eedd5 100644 --- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm +++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm @@ -27,7 +27,7 @@ qdel(blaster) return ..() -/obj/item/clothing/glasses/judicial_visor/item_action_slot_check(slot, mob/user) +/obj/item/clothing/glasses/judicial_visor/item_action_slot_check(slot, mob/user, datum/action/A) if(slot != SLOT_GLASSES) return 0 return ..() @@ -190,8 +190,8 @@ for(var/mob/living/L in range(1, src)) if(is_servant_of_ratvar(L)) continue - if(L.anti_magic_check()) - var/atom/I = L.anti_magic_check() + var/atom/I = L.anti_magic_check() + if(I) if(isitem(I)) L.visible_message("Strange energy flows into [L]'s [I.name]!", \ "Your [I.name] shields you from [src]!") diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm index da499065d7..3d467350ff 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm @@ -119,3 +119,33 @@ var/datum/clockwork_scripture/create_object/construct/clockwork_marauder/CM = new() CM.recent_marauders-- qdel(CM) + +//Summon Neovgre: Summon a very powerful combat mech that explodes when destroyed for massive damage. +/datum/clockwork_scripture/create_object/summon_arbiter + descname = "Powerful Assault Mech" + name = "Summon Neovgre, the Anima Bulwark" + desc = "Calls forth the mighty Anima Bulwark, a weapon of unmatched power,\ + mech with superior defensive and offensive capabilities. It will \ + steadily regenerate HP and triple its regeneration speed while standing \ + on a clockwork tile. It will automatically draw power from nearby sigils of \ + transmission should the need arise. Its Arbiter laser cannon can decimate foes \ + from a range and is capable of smashing through any barrier presented to it. \ + Be warned, choosing to pilot Neovgre is a lifetime commitment, once you are \ + in you cannot leave and when it is destroyed it will explode catastrophically with you inside." + invocations = list("By the strength of the alloy...!!", "...call forth the Arbiter!!") + channel_time = 200 // This is a strong fucking weapon, 20 seconds channel time is getting off light I tell ya. + power_cost = 75000 //75 KW + usage_tip = "Neovgre is a powerful mech that will crush your enemies!" + invokers_required = 5 + multiple_invokers_used = TRUE + object_path = /obj/mecha/combat/neovgre + tier = SCRIPTURE_APPLICATION + primary_component = BELLIGERENT_EYE + sort_priority = 2 + creator_message = "Neovgre, the Anima Bulwark towers over you... your enemies reckoning has come." + +/datum/clockwork_scripture/create_object/summon_arbiter/check_special_requirements() + if(GLOB.neovgre_exists) + to_chat(invoker, "\"You've already got one...\"") + return FALSE + return ..() diff --git a/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm index df0083e845..7afd9e7dbc 100644 --- a/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm @@ -60,7 +60,7 @@ else if(isliving(target)) var/mob/living/L = target - if(!L.anti_magic_check()) + if(!L.anti_magic_check(chargecost = 0)) if(isrevenant(L)) var/mob/living/simple_animal/revenant/R = L if(R.revealed) diff --git a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm index 10c68b606f..1158b02a4c 100644 --- a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm +++ b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm @@ -53,7 +53,7 @@ /obj/structure/destructible/clockwork/taunting_trail/proc/affect_mob(mob/living/L) if(istype(L) && !is_servant_of_ratvar(L)) - if(!L.anti_magic_check()) + if(!L.anti_magic_check(chargecost = 0)) L.confused = min(L.confused + 15, 50) L.dizziness = min(L.dizziness + 15, 50) if(L.confused >= 25) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 10759afcd0..06ea2cbe0a 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -275,7 +275,7 @@ desc = "A torn, dust-caked hood. Strange letters line the inside." flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS flags_cover = HEADCOVERSEYES - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 65, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD @@ -288,7 +288,7 @@ item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/tome, /obj/item/melee/cultblade) - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 65, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index 69941f582d..b9e4da8677 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -107,7 +107,7 @@ This file contains the cult dagger and rune list code if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") return - priority_announce("Figments from an eldritch god are being summoned by [user] into [A.map_name] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg') + priority_announce("Figments from an eldritch god are being summoned by [user] into [A.map_name] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", "spanomalies") for(var/B in spiral_range_turfs(1, user, 1)) var/obj/structure/emergency_shield/sanguine/N = new(B) shields += N diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 2e233d26e4..f0fc59834c 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -237,7 +237,7 @@ structure_check() searches for nearby cultist structures required for the invoca to_chat(M, "You need at least two invokers to convert [convertee]!") log_game("Offer rune failed - tried conversion with one invoker") return 0 - if(convertee.anti_magic_check(TRUE, TRUE, FALSE, 0)) //Not chargecost because it can be spammed + if(convertee.anti_magic_check(TRUE, TRUE, chargecost = 0)) //Not major because it can be spammed for(var/M in invokers) to_chat(M, "Something is shielding [convertee]'s mind!") log_game("Offer rune failed - convertee had anti-magic") @@ -767,7 +767,7 @@ structure_check() searches for nearby cultist structures required for the invoca set_light(6, 1, color) for(var/mob/living/L in viewers(T)) if(!iscultist(L) && L.blood_volume) - var/atom/I = L.anti_magic_check() + var/atom/I = L.anti_magic_check(chargecost = 0) if(I) if(isitem(I)) to_chat(L, "[I] suddenly burns hotly before returning to normal!") @@ -797,7 +797,7 @@ structure_check() searches for nearby cultist structures required for the invoca set_light(6, 1, color) for(var/mob/living/L in viewers(T)) if(!iscultist(L) && L.blood_volume) - if(L.anti_magic_check()) + if(L.anti_magic_check(chargecost = 0)) continue L.take_overall_damage(tick_damage*multiplier, tick_damage*multiplier) if(is_servant_of_ratvar(L)) diff --git a/code/modules/antagonists/disease/disease_mob.dm b/code/modules/antagonists/disease/disease_mob.dm index 49c34131fc..faea113ac5 100644 --- a/code/modules/antagonists/disease/disease_mob.dm +++ b/code/modules/antagonists/disease/disease_mob.dm @@ -31,7 +31,6 @@ the new instance inside the host to be updated to the template's stats. var/browser_open = FALSE var/mob/living/following_host - var/datum/component/redirect/move_listener var/list/disease_instances var/list/hosts //this list is associative, affected_mob -> disease_instance var/datum/disease/advance/sentient_disease/disease_template @@ -261,16 +260,10 @@ the new instance inside the host to be updated to the template's stats. refresh_adaptation_menu() /mob/camera/disease/proc/set_following(mob/living/L) + if(following_host) + UnregisterSignal(following_host, COMSIG_MOVABLE_MOVED) + RegisterSignal(L, COMSIG_MOVABLE_MOVED, .proc/follow_mob) following_host = L - if(!move_listener) - move_listener = L.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/follow_mob))) - else - if(L) - L.TakeComponent(move_listener) - if(QDELING(move_listener)) - move_listener = null - else - QDEL_NULL(move_listener) follow_mob() /mob/camera/disease/proc/follow_next(reverse = FALSE) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index f380fa68e9..b43024fb31 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -69,7 +69,7 @@ /mob/living/simple_animal/revenant/Initialize(mapload) . = ..() AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) - AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null)) + AddSpell(new /obj/effect/proc_holder/spell/targeted/telepathy/revenant(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/blight(null)) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index 112a31f44d..17d200a685 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -27,6 +27,7 @@ if(prob(10)) to_chat(target, "You feel as if you are being watched.") return + face_atom(target) draining = TRUE essence_drained += rand(15, 20) to_chat(src, "You search for the soul of [target].") @@ -65,7 +66,7 @@ if(target.anti_magic_check(FALSE, TRUE)) to_chat(src, "Something's wrong! [target] seems to be resisting the siphoning, leaving you vulnerable!") target.visible_message("[target] slumps onto the ground.", \ - "Violets lights, dancing in your vision, receding--") + "Violet lights, dancing in your vision, receding--") draining = FALSE return var/datum/beam/B = Beam(target,icon_state="drain_life",time=INFINITY) @@ -104,36 +105,16 @@ action_background_icon_state = "bg_revenant" //Transmit: the revemant's only direct way to communicate. Sends a single message silently to a single mob -/obj/effect/proc_holder/spell/targeted/revenant_transmit - name = "Transmit" - desc = "Telepathically transmits a message to the target." +/obj/effect/proc_holder/spell/targeted/telepathy/revenant + name = "Revenant Transmit" panel = "Revenant Abilities" - charge_max = 0 - clothes_req = 0 - range = 7 - include_user = 0 action_icon = 'icons/mob/actions/actions_revenant.dmi' action_icon_state = "r_transmit" action_background_icon_state = "bg_revenant" - -/obj/effect/proc_holder/spell/targeted/revenant_transmit/cast(list/targets, mob/living/simple_animal/revenant/user = usr) - for(var/mob/living/M in targets) - var/msg = stripped_input(usr, "What do you wish to tell [M]?", null, "") - if(!msg) - charge_counter = charge_max - return - log_directed_talk(user, M, msg, LOG_SAY, "revenant whisper") - to_chat(user, "You transmit to [M]: [msg]") - if(!M.anti_magic_check(FALSE, TRUE)) //hear no evil - to_chat(M, "You hear something behind you talking... [msg]") - for(var/ded in GLOB.dead_mob_list) - if(!isobserver(ded)) - continue - var/follow_rev = FOLLOW_LINK(ded, user) - var/follow_whispee = FOLLOW_LINK(ded, M) - to_chat(ded, "[follow_rev] [user] Revenant Transmit: \"[msg]\" to [follow_whispee] [M]") - - + notice = "revennotice" + boldnotice = "revenboldnotice" + holy_check = TRUE + tinfoil_check = FALSE /obj/effect/proc_holder/spell/aoe_turf/revenant clothes_req = 0 diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 89d8de283a..235e50008c 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -12,8 +12,8 @@ disease_flags = CURABLE permeability_mod = 1 severity = DISEASE_SEVERITY_DANGEROUS - var/finalstage = 0 //Because we're spawning off the cure in the final stage, we need to check if we've done the final stage's effects. - var/datum/mood_event/revenant_blight/depression + var/finalstage = FALSE //Because we're spawning off the cure in the final stage, we need to check if we've done the final stage's effects. + var/depression = FALSE /datum/disease/revblight/cure() if(affected_mob) @@ -44,12 +44,13 @@ affected_mob.emote("pale") if(3) if(!depression) - depression = SEND_SIGNAL(affected_mob, COMSIG_ADD_MOOD_EVENT, "rev_blight", /datum/mood_event/revenant_blight) - SEND_SIGNAL(affected_mob, COMSIG_DECREASE_SANITY, 0.12, SANITY_CRAZY) + SEND_SIGNAL(affected_mob, COMSIG_ADD_MOOD_EVENT, "rev_blight", /datum/mood_event/revenant_blight) + depression = TRUE + SEND_SIGNAL(affected_mob, COMSIG_MODIFY_SANITY, -0.12, SANITY_CRAZY) if(prob(10)) affected_mob.emote(pick("pale","shiver")) if(4) - SEND_SIGNAL(affected_mob, COMSIG_DECREASE_SANITY, 0.18, SANITY_CRAZY) + SEND_SIGNAL(affected_mob, COMSIG_MODIFY_SANITY, -0.18, SANITY_CRAZY) if(prob(15)) affected_mob.emote(pick("pale","shiver","cries")) if(5) diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 03a176b054..f45555a6ee 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -34,7 +34,6 @@ melee_damage_upper = 30 see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - var/boost = 0 bloodcrawl = BLOODCRAWL_EAT var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \ You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \ @@ -54,24 +53,18 @@ if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) bloodspell.phased = TRUE -/mob/living/simple_animal/slaughter/Life() - ..() - if(boostOH GOD! NONE OF IT IS REAL! NONE OF IT IS REEEEEEEEEEEEEEEEEEEEEEEEAL!") @@ -324,14 +324,11 @@ cooldown = world.time + cooldown_time /obj/item/voodoo/proc/update_targets() - possible = list() + LAZYINITLIST(possible) if(!voodoo_link) return - var/list/prints = voodoo_link.return_fingerprints() - if(!length(prints)) - return FALSE for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(prints[md5(H.dna.uni_identity)]) + if(md5(H.dna.uni_identity) in voodoo_link.fingerprints) possible |= H /obj/item/voodoo/proc/GiveHint(mob/victim,force=0) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 1df8e43316..6f4c3fca10 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -238,6 +238,7 @@ T.stop_sound_channel(CHANNEL_HEARTBEAT) T.invisibility = INVISIBILITY_ABSTRACT T.dust_animation() + QDEL_IN(T, 5) var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src) S.status_flags |= GODMODE //So they won't die inside the stone somehow S.canmove = FALSE//Can't move out of the soul stone diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 186eb1b024..6b87278e00 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -201,8 +201,10 @@ /obj/item/assembly/flash/cyborg /obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) - ..() + . = ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) + if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && !M.resting && !M.get_eye_protection()) + M.Knockdown(80) /obj/item/assembly/flash/cyborg/attack_self(mob/user) ..() diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 07f31a6678..7405549b3d 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -10,7 +10,7 @@ var/maxlength = 8 var/list/obj/effect/beam/i_beam/beams var/olddir = 0 - var/datum/component/redirect/listener + var/turf/listeningTo var/hearing_range = 3 /obj/item/assembly/infra/Initialize() @@ -33,7 +33,7 @@ /obj/item/assembly/infra/Destroy() STOP_PROCESSING(SSobj, src) - QDEL_NULL(listener) + listeningTo = null QDEL_LIST(beams) . = ..() @@ -163,8 +163,12 @@ next_activate = world.time + 30 /obj/item/assembly/infra/proc/switchListener(turf/newloc) - QDEL_NULL(listener) - listener = newloc.AddComponent(/datum/component/redirect, list(COMSIG_ATOM_EXITED = CALLBACK(src, .proc/check_exit))) + if(listeningTo == newloc) + return + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_ATOM_EXITED) + RegisterSignal(newloc, COMSIG_ATOM_EXITED, .proc/check_exit) + listeningTo = newloc /obj/item/assembly/infra/proc/check_exit(datum/source, atom/movable/offender) if(QDELETED(src)) diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 8e320b2f3e..f9c831a65a 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -210,9 +210,9 @@ return cached_results["fire"] ? REACTING : NO_REACTION -//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again) +//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again). Again! //Fusion Rework Counter: Please increment this if you make a major overhaul to this system again. -//5 reworks +//6 reworks /datum/gas_reaction/fusion exclude = FALSE @@ -220,100 +220,79 @@ name = "Plasmic Fusion" id = "fusion" -//Since fusion isn't really intended to happen in successive chains, the requirements are very high /datum/gas_reaction/fusion/init_reqs() min_requirements = list( "TEMP" = FUSION_TEMPERATURE_THRESHOLD, - "ENER" = FUSION_ENERGY_THRESHOLD, + /datum/gas/tritium = FUSION_TRITIUM_MOLES_USED, /datum/gas/plasma = FUSION_MOLE_THRESHOLD, - /datum/gas/tritium = FUSION_MOLE_THRESHOLD - ) + /datum/gas/carbon_dioxide = FUSION_MOLE_THRESHOLD) /datum/gas_reaction/fusion/react(datum/gas_mixture/air, datum/holder) var/list/cached_gases = air.gases - var/temperature = air.temperature - if(!air.analyzer_results) - air.analyzer_results = new - var/list/cached_scan_results = air.analyzer_results var/turf/open/location if (istype(holder,/datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet. var/datum/pipeline/fusion_pipenet = holder location = get_turf(pick(fusion_pipenet.members)) else location = get_turf(holder) - + if(!air.analyzer_results) + air.analyzer_results = new + var/list/cached_scan_results = air.analyzer_results var/old_heat_capacity = air.heat_capacity() - var/reaction_energy = 0 - - var/mediation = FUSION_MEDIATION_FACTOR*(air.heat_capacity()-(cached_gases[/datum/gas/plasma]*GLOB.meta_gas_specific_heats[/datum/gas/plasma]))/(air.total_moles()-cached_gases[/datum/gas/plasma]) //This is the average specific heat of the mixture,not including plasma. - - var/gases_fused = air.total_moles() - cached_gases[/datum/gas/plasma] - var/plasma_differential = (cached_gases[/datum/gas/plasma] - gases_fused) / air.total_moles() - var/reaction_efficiency = FUSION_EFFICIENCY_BASE ** -((plasma_differential ** 2) / FUSION_EFFICIENCY_DIVISOR) //https://www.desmos.com/calculator/6jjx3vdrvx - + var/reaction_energy = 0 //Reaction energy can be negative or positive, for both exothermic and endothermic reactions. + var/initial_plasma = cached_gases[/datum/gas/plasma] + var/initial_carbon = cached_gases[/datum/gas/carbon_dioxide] + var/scale_factor = (air.volume)/(PI) //We scale it down by volume/Pi because for fusion conditions, moles roughly = 2*volume, but we want it to be based off something constant between reactions. + var/toroidal_size = (2*PI)+TORADIANS(arctan((air.volume-TOROID_VOLUME_BREAKEVEN)/TOROID_VOLUME_BREAKEVEN)) //The size of the phase space hypertorus var/gas_power = 0 + var/list/gas_fusion_powers = GLOB.meta_gas_fusions for (var/gas_id in cached_gases) - gas_power += reaction_efficiency * (GLOB.meta_gas_fusions[gas_id]*cached_gases[gas_id]) + gas_power += (gas_fusion_powers[gas_id]*cached_gases[gas_id]) + var/instability = MODULUS((gas_power*INSTABILITY_GAS_POWER_FACTOR)**2,toroidal_size) //Instability effects how chaotic the behavior of the reaction is + cached_scan_results[id] = instability//used for analyzer feedback - var/power_ratio = gas_power/mediation - cached_scan_results[id] = power_ratio //used for analyzer feedback + var/plasma = (initial_plasma-FUSION_MOLE_THRESHOLD)/(scale_factor) //We have to scale the amounts of carbon and plasma down a significant amount in order to show the chaotic dynamics we want + var/carbon = (initial_carbon-FUSION_MOLE_THRESHOLD)/(scale_factor) //We also subtract out the threshold amount to make it harder for fusion to burn itself out. - for (var/gas_id in cached_gases) //and now we fuse - cached_gases[gas_id] = 0 + //The reaction is a specific form of the Kicked Rotator system, which displays chaotic behavior and can be used to model particle interactions. + plasma = MODULUS(plasma - (instability*sin(TODEGREES(carbon))), toroidal_size) + carbon = MODULUS(carbon - plasma, toroidal_size) - var/radiation_power = (FUSION_RADIATION_FACTOR * power_ratio) / (power_ratio + FUSION_RADIATION_CONSTANT) //https://www.desmos.com/calculator/4i1f296phl - var/zap_power = ((FUSION_ZAP_POWER_ASYMPTOTE * power_ratio) / (power_ratio + FUSION_ZAP_POWER_CONSTANT)) + FUSION_ZAP_POWER_BASE //https://www.desmos.com/calculator/n0zkdpxnrr - var/do_explosion = FALSE - var/zap_range //these ones are set later - var/fusion_prepare_to_die_edition_rng - if (power_ratio > FUSION_SUPER_TIER_THRESHOLD) //power ratio 50+: SUPER TIER. The gases become so energized that they fuse into a ton of tritium, which is pretty nice! Until you consider the fact that everything just exploded, the canister is probably going to break and you're irradiated. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_SUPER * (power_ratio / FUSION_ENERGY_DIVISOR_SUPER) - cached_gases[/datum/gas/tritium] += gases_fused * FUSION_GAS_CREATION_FACTOR_TRITIUM //60% of the gas is converted to energy, 40% to trit - fusion_prepare_to_die_edition_rng = 100 //Wait a minute.. - do_explosion = TRUE - zap_range = FUSION_ZAP_RANGE_SUPER + cached_gases[/datum/gas/plasma] = plasma*scale_factor + FUSION_MOLE_THRESHOLD //Scales the gases back up + cached_gases[/datum/gas/carbon_dioxide] = carbon*scale_factor + FUSION_MOLE_THRESHOLD + var/delta_plasma = initial_plasma - cached_gases[/datum/gas/plasma] - else if (power_ratio > FUSION_HIGH_TIER_THRESHOLD) //power ratio 20-50; High tier. The reaction is so energized that it fuses into a small amount of stimulum, and some pluoxium. Very dangerous, but super cool and super useful. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_HIGH * (power_ratio / FUSION_ENERGY_DIVISOR_HIGH) - cached_gases[/datum/gas/stimulum] += gases_fused * FUSION_GAS_CREATION_FACTOR_STIM //40% of the gas is converted to energy, 60% to stim and pluox - cached_gases[/datum/gas/pluoxium] += gases_fused * FUSION_GAS_CREATION_FACTOR_PLUOX - fusion_prepare_to_die_edition_rng = power_ratio //Now we're getting into dangerous territory - do_explosion = TRUE - zap_range = FUSION_ZAP_RANGE_HIGH - - else if (power_ratio > FUSION_MID_TIER_THRESHOLD) //power_ratio 5 to 20; Mediation is overpowered, fusion reaction starts to break down. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_MID * (power_ratio / FUSION_ENERGY_DIVISOR_MID) - cached_gases[/datum/gas/nitryl] += gases_fused * FUSION_GAS_CREATION_FACTOR_NITRYL //20% of the gas is converted to energy, 80% to nitryl and N2O - cached_gases[/datum/gas/nitrous_oxide] += gases_fused * FUSION_GAS_CREATION_FACTOR_N2O - fusion_prepare_to_die_edition_rng = power_ratio * FUSION_MID_TIER_RAD_PROB_FACTOR //Still unlikely, but don't stand next to the reaction unprotected - zap_range = FUSION_ZAP_RANGE_MID - - else //power ratio 0 to 5; Gas power is overpowered. Fusion isn't nearly as powerful. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_LOW * (power_ratio / FUSION_ENERGY_DIVISOR_LOW) - cached_gases[/datum/gas/bz] += gases_fused * FUSION_GAS_CREATION_FACTOR_BZ //10% of the gas is converted to energy, 90% to BZ and CO2 - cached_gases[/datum/gas/carbon_dioxide] += gases_fused * FUSION_GAS_CREATION_FACTOR_CO2 - fusion_prepare_to_die_edition_rng = power_ratio * FUSION_LOW_TIER_RAD_PROB_FACTOR //Low, but still something to look out for - zap_range = FUSION_ZAP_RANGE_LOW - - //All the deadly consequences of fusion, consolidated for your viewing pleasure - if (location) - if(prob(fusion_prepare_to_die_edition_rng)) //Some.. permanent effects - if(do_explosion) - explosion(location, 0, 0, 5, power_ratio, TRUE, TRUE) //large shockwave, the actual radius is quite small - people will recognize that you're doing fusion - radiation_pulse(location, radiation_power) //You mean causing a super-tier fusion reaction in the halls is a bad idea? - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, 30000)//The science is cool though. - playsound(location, 'sound/effects/supermatter.ogg', 100, 0) - else - playsound(location, 'sound/effects/phasein.ogg', 75, 0) - //These will always happen, so be prepared - tesla_zap(location, zap_range, zap_power, TESLA_FUSION_FLAGS) //larpers beware - location.fire_nuclear_particles(power_ratio) //see code/modules/projectile/energy/nuclear_particle.dm + reaction_energy += delta_plasma*PLASMA_BINDING_ENERGY //Energy is gained or lost corresponding to the creation or destruction of mass. + if(instability < FUSION_INSTABILITY_ENDOTHERMALITY) + reaction_energy = max(reaction_energy,0) //Stable reactions don't end up endothermic. + else if (reaction_energy < 0) + reaction_energy *= (instability-FUSION_INSTABILITY_ENDOTHERMALITY)**0.5 + if(air.thermal_energy() + reaction_energy < 0) //No using energy that doesn't exist. + cached_gases[/datum/gas/plasma] = initial_plasma + cached_gases[/datum/gas/carbon_dioxide] = initial_carbon + return NO_REACTION + cached_gases[/datum/gas/tritium] -= FUSION_TRITIUM_MOLES_USED + //The decay of the tritium and the reaction's energy produces waste gases, different ones depending on whether the reaction is endo or exothermic if(reaction_energy > 0) + cached_gases[/datum/gas/oxygen] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/nitrous_oxide] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) + else + cached_gases[/datum/gas/bz] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/nitryl] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) + + if(reaction_energy) + if(location) + var/particle_chance = ((PARTICLE_CHANCE_CONSTANT)/(reaction_energy-PARTICLE_CHANCE_CONSTANT)) + 1//Asymptopically approaches 100% as the energy of the reaction goes up. + if(prob(PERCENT(particle_chance))) + location.fire_nuclear_particle() + var/rad_power = max((FUSION_RAD_COEFFICIENT/instability) + FUSION_RAD_MAX,0) + radiation_pulse(location,rad_power) + var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - air.temperature = max(((temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB) + air.temperature = CLAMP(((air.temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB,INFINITY) return REACTING /datum/gas_reaction/nitrylformation //The formation of nitryl. Endothermic. Requires N2O as a catalyst. diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 74f81ec9a0..2631491350 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -587,3 +587,57 @@ shoes = /obj/item/clothing/shoes/sneakers/black suit = /obj/item/clothing/suit/armor/vest glasses = /obj/item/clothing/glasses/sunglasses/reagent + +/obj/effect/mob_spawn/human/lavaknight + name = "odd cryogenics pod" + desc = "A humming cryo pod. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant." + mob_name = "a displaced knight from another dimension" + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper" + roundstart = FALSE + id_job = "Knight" + job_description = "Cydonian Knight" + death = FALSE + random = TRUE + outfit = /datum/outfit/lavaknight + mob_species = /datum/species/human + flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \ + You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \ + Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth." + assignedrole = "Cydonian Knight" + +/obj/effect/mob_spawn/human/lavaknight/special(mob/living/new_spawn) + if(ishuman(new_spawn)) + var/mob/living/carbon/human/H = new_spawn + H.dna.features["mam_ears"] = "Cat, Big" //cat people + H.dna.features["mcolor"] = H.hair_color + H.update_body() + +/obj/effect/mob_spawn/human/lavaknight/Destroy() + new/obj/structure/showcase/machinery/oldpod/used(drop_location()) + return ..() + +/datum/outfit/lavaknight + name = "Cydonian Knight" + uniform = /obj/item/clothing/under/assistantformal + mask = /obj/item/clothing/mask/breath + shoes = /obj/item/clothing/shoes/sneakers/black + r_pocket = /obj/item/melee/transforming/energy/sword/cx + suit = /obj/item/clothing/suit/space/hardsuit/lavaknight + suit_store = /obj/item/tank/internals/oxygen + id = /obj/item/card/id/knight/blue + +/obj/effect/mob_spawn/human/lavaknight/captain + name = "odd gilded cryogenics pod" + desc = "A humming cryo pod that appears to be gilded. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant." + flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \ + You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \ + Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth. \ + You feel a natural instict to lead, and as such, you should strive to lead your comrades to safety, and hopefully home. You also feel a burning determination to uphold your vow, as well as your fellow comrade's." + outfit = /datum/outfit/lavaknight/captain + id_job = "Knight Captain" + +/datum/outfit/lavaknight/captain + name ="Cydonian Knight Captain" + l_pocket = /obj/item/twohanded/dualsaber/hypereutactic + id = /obj/item/card/id/knight/captain diff --git a/code/modules/cargo/exports/manifest.dm b/code/modules/cargo/exports/manifest.dm index d03f5a46ce..60515781f9 100644 --- a/code/modules/cargo/exports/manifest.dm +++ b/code/modules/cargo/exports/manifest.dm @@ -80,7 +80,7 @@ // Paper work done correctly /datum/export/paperwork_correct - cost = 150 + cost = 120 // finicky number 20 x 120 = 2400 per crate k_elasticity = 0 unit_name = "correct paperwork" export_types = list(/obj/item/folder/paperwork_correct) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index c9e9c37f6c..89c463f3e3 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -35,4 +35,4 @@ A.flags_1 |= ADMIN_SPAWNED_1 else for(var/item in contains) - new item(C) \ No newline at end of file + new item(C) diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index 4713d94106..11aae8a054 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -87,7 +87,7 @@ /datum/supply_pack/security/armory/mindshield name = "Mindshield Implants Crate" desc = "Prevent against radical thoughts with three Mindshield implants. Requires Armory access to open." - cost = 4000 + cost = 3000 //Lowered untill cargo rework MK II is done contains = list(/obj/item/storage/lockbox/loyalty) crate_name = "mindshield implant crate" @@ -175,7 +175,7 @@ /datum/supply_pack/security/armory/swat name = "SWAT Crate" desc = "Contains two fullbody sets of tough, fireproof, pressurized suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open." - cost = 6750 + cost = 6000 contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, /obj/item/clothing/head/helmet/swat/nanotrasen, /obj/item/clothing/suit/space/swat, @@ -199,7 +199,7 @@ /datum/supply_pack/security/armory/woodstock name = "Classic WoodStock Shotguns Crate" desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open." - cost = 3500 + cost = 3000 contains = list(/obj/item/gun/ballistic/shotgun, /obj/item/gun/ballistic/shotgun, /obj/item/gun/ballistic/shotgun) @@ -208,7 +208,7 @@ /datum/supply_pack/security/armory/wt550 name = "WT-550 Semi-Auto Rifle Crate" desc = "Contains two high-powered, semiautomatic rifles chambered in 4.6x30mm. Requires Armory access to open." - cost = 3250 + cost = 2550 contains = list(/obj/item/gun/ballistic/automatic/wt550, /obj/item/gun/ballistic/automatic/wt550) crate_name = "auto rifle crate" @@ -216,7 +216,7 @@ /datum/supply_pack/security/armory/wt550ammo name = "WT-550 Semi-Auto SMG Ammo Crate" desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 2750 + cost = 1750 contains = list(/obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, @@ -226,7 +226,7 @@ /datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stun crit someone name = "WT-550 Semi-Auto SMG Non-Lethal Ammo Crate" desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 1200 + cost = 1000 contains = list(/obj/item/ammo_box/magazine/wt550m9/wtrubber, /obj/item/ammo_box/magazine/wt550m9/wtrubber, /obj/item/ammo_box/magazine/wt550m9/wtrubber, @@ -236,7 +236,7 @@ /datum/supply_pack/security/armory/wt550ammo_special name = "WT-550 Semi-Auto SMG Special Ammo Crate" desc = "Contains 2 20-round Armour Piercing and Incendiary magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 3500 + cost = 3000 contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wtic, diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index be99199f30..1987369d20 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -12,7 +12,7 @@ /datum/supply_pack/emergency/vehicle name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, and a complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!" - cost = 2800 + cost = 2500 contraband = TRUE contains = list(/obj/vehicle/ridden/atv, /obj/item/key, @@ -26,7 +26,7 @@ /datum/supply_pack/emergency/equipment name = "Emergency Bot/Internals Crate" desc = "Explosions got you down? These supplies are guaranteed to patch up holes, in stations and people alike! Comes with two floorbots, two medbots, five oxygen masks and five small oxygen tanks." - cost = 3750 + cost = 2750 contains = list(/mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/medbot, @@ -132,7 +132,7 @@ /datum/supply_pack/emergency/metalfoam name = "Metal Foam Grenade Crate" desc = "Seal up those pesky hull breaches with 14 Metal Foam Grenades." - cost = 2000 + cost = 1500 contains = list(/obj/item/storage/box/metalfoam, /obj/item/storage/box/metalfoam) crate_name = "metal foam grenade crate" diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm index 3d46b776c4..19cb53489e 100644 --- a/code/modules/cargo/packs/engineering.dm +++ b/code/modules/cargo/packs/engineering.dm @@ -55,7 +55,7 @@ /datum/supply_pack/engineering/engihardsuit name = "Engineering Hardsuit" desc = "Poly 'Who stole all the hardsuits!' Well now you can get more hardsuits if needed! NOTE ONE HARDSUIT IS IN THIS CRATE, as well as one air tank and mask!" - cost = 2750 + cost = 2250 contains = list(/obj/item/tank/internals/air, /obj/item/clothing/mask/gas, /obj/item/clothing/suit/space/hardsuit/engine) @@ -84,7 +84,7 @@ /datum/supply_pack/engineering/powergamermitts name = "Insulated Gloves Crate" desc = "The backbone of modern society. Barely ever ordered for actual engineering. Contains three insulated gloves." - cost = 2750 //Made of pure-grade bullshittinium + cost = 2300 //Made of pure-grade bullshittinium contains = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow) @@ -121,6 +121,18 @@ crate_name = "power cell crate" crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/siezedpower + name = "Siezed Power Cell Crate" + desc = "We took the means of power! Contains three high-voltage plus power cells." + cost = 1300 + contraband = TRUE + contains = list(/obj/item/stock_parts/cell/high/plus, + /obj/item/stock_parts/cell/high/plus, + /obj/item/stock_parts/cell/high/plus) + crate_name = "siezed crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + /datum/supply_pack/engineering/shuttle_engine name = "Shuttle Engine Crate" desc = "Through advanced bluespace-shenanigans, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open." @@ -129,7 +141,22 @@ contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo) crate_name = "shuttle engine crate" crate_type = /obj/structure/closet/crate/secure/engineering - special = TRUE + +/datum/supply_pack/engineering/siezedproduction + name = "The Means of Production" + desc = "We will win for we have took over the production! S five metal sheets, five wire, three matter bins, one manipulater and one sheet of glass." + cost = 1500 + contraband = TRUE + contains = list(/obj/item/stock_parts/cell/high/plus, + /obj/item/circuitboard/machine/autolathe, + /obj/item/stack/cable_coil/random/five, + /obj/item/stack/sheet/metal/five, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/manipulator, + /obj/item/stack/sheet/glass,) + crate_name = "siezed crate" /datum/supply_pack/engineering/tools name = "Toolbox Crate" @@ -183,7 +210,6 @@ ) crate_name= "dna samplers crate" - /datum/supply_pack/engineering/shield_sat name = "Shield Generator Satellite" desc = "Protect the very existence of this station with these Anti-Meteor defenses. Contains three Shield Generator Satellites." diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index e1d27c5022..656474cc1d 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -30,17 +30,31 @@ /datum/supply_pack/medical/bloodpacks name = "Blood Pack Variety Crate" - desc = "Contains eight different blood packs for reintroducing blood to patients." + desc = "Contains ten different blood packs for reintroducing blood to patients." cost = 3000 - contains = list(/obj/item/reagent_containers/blood, - /obj/item/reagent_containers/blood, + contains = list(/obj/item/reagent_containers/blood/random, + /obj/item/reagent_containers/blood/random, /obj/item/reagent_containers/blood/APlus, /obj/item/reagent_containers/blood/AMinus, /obj/item/reagent_containers/blood/BPlus, /obj/item/reagent_containers/blood/BMinus, /obj/item/reagent_containers/blood/OPlus, /obj/item/reagent_containers/blood/OMinus, - /obj/item/reagent_containers/blood/lizard) + /obj/item/reagent_containers/blood/lizard, + /obj/item/reagent_containers/blood/jellyblood, + /obj/item/reagent_containers/blood/insect) + crate_name = "blood freezer" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/medical/bloodpackssynth + name = "Synthetics Blood Pack Crate" + desc = "Contains five synthetics blood packs for reintroducing blood to patients." + cost = 3000 + contains = list(/obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics) crate_name = "blood freezer" crate_type = /obj/structure/closet/crate/freezer diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index 56ddd92a76..c380d5411e 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -117,8 +117,8 @@ /datum/supply_pack/misc/paper_work name = "Freelance Paper work" - desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. - cost = 700 // Net of 0 credits + desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (20) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. + cost = 700 // Net of 0 credits but makes (120 x 20 = 2400) contains = list(/obj/item/folder/paperwork, /obj/item/folder/paperwork, /obj/item/folder/paperwork, @@ -129,11 +129,18 @@ /obj/item/folder/paperwork, /obj/item/folder/paperwork, /obj/item/folder/paperwork, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain) + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/pen/fountain + ) crate_name = "Paperwork" /datum/supply_pack/misc/funeral @@ -149,7 +156,7 @@ /datum/supply_pack/misc/jukebox name = "Jukebox" - cost = 15000 + cost = 10000 contains = list(/obj/machinery/jukebox) crate_name = "Jukebox" diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index c7f98cac0b..14bde519e1 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -36,7 +36,7 @@ /datum/supply_pack/service/carpet_exotic name = "Exotic Carpet Crate" desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 10 different flooring patterns." - cost = 10000 + cost = 7000 contains = list(/obj/item/stack/tile/carpet/blue/fifty, /obj/item/stack/tile/carpet/blue/fifty, /obj/item/stack/tile/carpet/cyan/fifty, diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c6166ca970..edec4d74a6 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -86,6 +86,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/skin_tone = "caucasian1" //Skin color var/eye_color = "000" //Eye color var/horn_color = "85615a" //Horn color + var/wing_color = "fff" //Wing color var/datum/species/pref_species = new /datum/species/human() //Mutant race var/list/features = list("mcolor" = "FFF", "tail_lizard" = "Smooth", @@ -112,7 +113,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", - "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = "Human", @@ -591,6 +591,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Decorative wings

" dat += "[features["deco_wings"]]" + dat += "    Change
" + if("insect_wings" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -598,6 +600,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Insect wings

" dat += "[features["insect_wings"]]" + dat += "    Change
" mutant_category++ if(mutant_category >= MAX_MUTANT_ROWS) dat += "" @@ -822,7 +825,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat +="" dat += "

Citadel Preferences

" //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" - dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
" dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" @@ -1689,7 +1691,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("horns_color") var/new_horn_color = input(user, "Choose your character's horn colour:", "Character Preference","#"+horn_color) as color|null if(new_horn_color) - horn_color = sanitize_hexcolor(new_horn_color) + if (new_horn_color == "#000000") + horn_color = "#85615A" + else + horn_color = sanitize_hexcolor(new_horn_color) if("wings") var/new_wings @@ -1697,6 +1702,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_wings) features["wings"] = new_wings + if("wings_color") + var/new_wing_color = input(user, "Choose your character's wing colour:", "Character Preference","#"+wing_color) as color|null + if(new_wing_color) + if (new_wing_color == "#000000") + wing_color = "#FFFFFF" + else + wing_color = sanitize_hexcolor(new_wing_color) + if("frills") var/new_frills new_frills = input(user, "Choose your character's frills:", "Character Preference") as null|anything in GLOB.frills_list @@ -1730,13 +1743,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) new_insect_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.insect_wings_list if(new_insect_wings) features["insect_wings"] = new_insect_wings - + if("deco_wings") var/new_deco_wings new_deco_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.deco_wings_list if(new_deco_wings) features["deco_wings"] = new_deco_wings - + if("insect_fluffs") var/new_insect_fluff new_insect_fluff = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.insect_fluffs_list @@ -2042,8 +2055,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["has_womb"] = FALSE if("has_womb") features["has_womb"] = !features["has_womb"] - if("exhibitionist") - features["exhibitionist"] = !features["exhibitionist"] if("widescreenpref") widescreenpref = !widescreenpref user.client.change_view(CONFIG_GET(string/default_view)) @@ -2262,6 +2273,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.hair_color = hair_color character.facial_hair_color = facial_hair_color character.horn_color = horn_color + character.wing_color = wing_color character.skin_tone = skin_tone character.hair_style = hair_style diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 94c1158885..98ef2ed0e8 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 23 +#define SAVEFILE_VERSION_MAX 24 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -109,6 +109,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else if(current_version < 23) // we are fixing a gamebreaking bug. job_preferences = list() //It loaded null from nonexistant savefile field. + if(current_version < 24 && S["feature_exhibitionist"]) + var/datum/quirk/exhibitionism/E + var/quirk_name = initial(E.name) + neutral_quirks += quirk_name + all_quirks += quirk_name + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return @@ -317,6 +323,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(!S["features["mcolor"]"] || S["features["mcolor"]"] == "#000") WRITE_FILE(S["features["mcolor"]"] , "#FFF") + if(!S["features["horn_color"]"] || S["features["horn_color"]"] == "#000") + WRITE_FILE(S["features["horn_color"]"] , "#85615a") + + if(!S["features["wing_color"]"] || S["features["wing_color"]"] == "#000") + WRITE_FILE(S["features["wing_color"]"] , "#FFF") + //Character S["real_name"] >> real_name S["nameless"] >> nameless @@ -338,6 +350,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["socks"] >> socks S["socks_color"] >> socks_color S["horn_color"] >> horn_color + S["wing_color"] >> wing_color S["backbag"] >> backbag S["jumpsuit_style"] >> jumpsuit_style S["uplink_loc"] >> uplink_spawn_loc @@ -449,6 +462,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(!features["mcolor"] || features["mcolor"] == "#000") features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") + if(!features["horn_color"] || features["horn_color"] == "#000") + features["horn_color"] = "85615a" + + if(!features["wing_color"] || features["wing_color"] == "#000") + features["wing_color"] = "FFFFFF" + nameless = sanitize_integer(nameless, 0, 1, initial(nameless)) be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) be_random_body = sanitize_integer(be_random_body, 0, 1, initial(be_random_body)) @@ -471,6 +490,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car eye_color = sanitize_hexcolor(eye_color, 3, 0) skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones) horn_color = sanitize_hexcolor(horn_color, 3, FALSE) + wing_color = sanitize_hexcolor(wing_color, 3, FALSE, "#FFFFFF") backbag = sanitize_inlist(backbag, GLOB.backbaglist, initial(backbag)) jumpsuit_style = sanitize_inlist(jumpsuit_style, GLOB.jumpsuitlist, initial(jumpsuit_style)) uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list, initial(uplink_spawn_loc)) @@ -485,7 +505,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) - features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list) + features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list, "None") features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) @@ -540,6 +560,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["socks"] , socks) WRITE_FILE(S["socks_color"] , socks_color) WRITE_FILE(S["horn_color"] , horn_color) + WRITE_FILE(S["wing_color"] , wing_color) WRITE_FILE(S["backbag"] , backbag) WRITE_FILE(S["jumpsuit_style"] , jumpsuit_style) WRITE_FILE(S["uplink_loc"] , uplink_spawn_loc) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 33a83487fc..8b2a34a089 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -561,7 +561,7 @@ /obj/item/storage/belt/chameleon/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/belt/chameleon/emp_act(severity) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 20a8c518f4..1793bd8f4b 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -123,7 +123,7 @@ ..() if(damaged_clothes) to_chat(user, "It looks damaged!") - GET_COMPONENT(pockets, /datum/component/storage) + var/datum/component/storage/pockets = GetComponent(/datum/component/storage) if(pockets) var/list/how_cool_are_your_threads = list("") if(pockets.attack_hand_interact) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 4928de288f..f140fb3074 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -104,7 +104,7 @@ resistance_flags = ACID_PROOF armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) -/obj/item/clothing/glasses/science/item_action_slot_check(slot) +/obj/item/clothing/glasses/science/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_GLASSES) return 1 @@ -307,7 +307,7 @@ M.appearance_flags |= RESET_COLOR M.color = "#[H.eye_color]" . += M - + /obj/item/clothing/glasses/sunglasses/big desc = "Strangely ancient technology used to help provide rudimentary eye cover. Larger than average enhanced shielding blocks flashes." icon_state = "bigsunglasses" diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index f0c1eeb833..6b674c8595 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -14,11 +14,10 @@ /obj/item/clothing/gloves/ComponentInitialize() . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /obj/item/clothing/gloves/clean_blood) -/obj/item/clothing/gloves/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return +/obj/item/clothing/gloves/clean_blood(datum/source, strength) + . = ..() transfer_blood = 0 /obj/item/clothing/gloves/suicide_act(mob/living/carbon/user) @@ -30,8 +29,8 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") - IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = blood_DNA_to_color()) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) ..() @@ -41,4 +40,4 @@ // Called just before an attack_hand(), in mob/UnarmedAttack() /obj/item/clothing/gloves/proc/Touch(atom/A, proximity) - return 0 // return 1 to cancel attack_hand() \ No newline at end of file + return FALSE // return TRUE to cancel attack_hand() \ No newline at end of file diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 8bd7065c1f..358942627d 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -41,13 +41,56 @@ H.update_inv_head() +///Special throw_impact for hats to frisbee hats at people to place them on their heads/attempt to de-hat them. +/obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) + . = ..() + ///if the thrown object's target zone isn't the head + if(thrownthing.target_zone != BODY_ZONE_HEAD) + return + ///ignore any hats with the tinfoil counter-measure enabled + if(clothing_flags & ANTI_TINFOIL_MANEUVER) + return + ///if the hat happens to be capable of holding contents and has something in it. mostly to prevent super cheesy stuff like stuffing a mini-bomb in a hat and throwing it + if(LAZYLEN(contents)) + return + if(iscarbon(hit_atom)) + var/mob/living/carbon/H = hit_atom + if(istype(H.head, /obj/item)) + var/obj/item/WH = H.head + ///check if the item has NODROP + if(HAS_TRAIT(WH, TRAIT_NODROP)) + H.visible_message("[src] bounces off [H]'s [WH.name]!", "[src] bounces off your [WH.name], falling to the floor.") + return + ///check if the item is an actual clothing head item, since some non-clothing items can be worn + if(istype(WH, /obj/item/clothing/head)) + var/obj/item/clothing/head/WHH = WH + ///SNUG_FIT hats are immune to being knocked off + if(WHH.clothing_flags & SNUG_FIT) + H.visible_message("[src] bounces off [H]'s [WHH.name]!", "[src] bounces off your [WHH.name], falling to the floor.") + return + ///if the hat manages to knock something off + if(H.dropItemToGround(WH)) + H.visible_message("[src] knocks [WH] off [H]'s head!", "[WH] is suddenly knocked off your head by [src]!") + if(H.equip_to_slot_if_possible(src, SLOT_HEAD, FALSE, TRUE)) + H.visible_message("[src] lands neatly on [H]'s head!", "[src] lands perfectly onto your head!") + return + if(iscyborg(hit_atom)) + var/mob/living/silicon/robot/R = hit_atom + ///hats in the borg's blacklist bounce off + if(!is_type_in_typecache(src, R.equippable_hats) || R.hat_offset == INFINITY) + R.visible_message("[src] bounces off [R]!", "[src] bounces off you, falling to the floor.") + return + else + R.visible_message("[src] lands neatly on top of [R].", "[src] lands perfectly on top of you.") + R.place_on_head(src) //hats aren't designed to snugly fit borg heads or w/e so they'll always manage to knock eachother off + /obj/item/clothing/head/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") - IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "helmetblood") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = blood_DNA_to_color()) /obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 90c0690534..5457d32e8a 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -13,12 +13,14 @@ /obj/item/clothing/head/collectable/slime name = "collectable slime cap!" desc = "It just latches right in place!" + clothing_flags = SNUG_FIT icon_state = "slime" dynamic_hair_suffix = "" /obj/item/clothing/head/collectable/xenom name = "collectable xenomorph helmet!" desc = "Hiss hiss hiss!" + clothing_flags = SNUG_FIT icon_state = "xenom" /obj/item/clothing/head/collectable/chef @@ -71,13 +73,14 @@ desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!" icon_state = "welding" item_state = "welding" - resistance_flags = NONE + clothing_flags = SNUG_FIT /obj/item/clothing/head/collectable/slime name = "collectable slime hat" desc = "Just like a real brain slug!" icon_state = "headslime" item_state = "headslime" + clothing_flags = SNUG_FIT /obj/item/clothing/head/collectable/flatcap name = "collectable flat cap" @@ -121,6 +124,7 @@ /obj/item/clothing/head/collectable/hardhat name = "collectable hard hat" desc = "WARNING! Offers no real protection, or luminosity, but damn, is it fancy!" + clothing_flags = SNUG_FIT icon_state = "hardhat0_yellow" item_state = "hardhat0_yellow" @@ -143,7 +147,7 @@ desc = "Go Red! I mean Green! I mean Red! No Green!" icon_state = "thunderdome" item_state = "thunderdome" - resistance_flags = NONE + clothing_flags = SNUG_FIT flags_inv = HIDEHAIR /obj/item/clothing/head/collectable/swat @@ -151,5 +155,5 @@ desc = "That's not real blood. That's red paint." //Reference to the actual description icon_state = "swat" item_state = "swat" - resistance_flags = NONE + clothing_flags = SNUG_FIT flags_inv = HIDEHAIR diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 9d38b73cd3..54f0ebea45 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -11,6 +11,7 @@ armor = list("melee" = 15, "bullet" = 5, "laser" = 20,"energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50) flags_inv = 0 actions_types = list(/datum/action/item_action/toggle_helmet_light) + clothing_flags = SNUG_FIT resistance_flags = FIRE_PROOF dynamic_hair_suffix = "+generic" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index be6e270e45..8a1cc01bd5 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -10,7 +10,7 @@ heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 - resistance_flags = NONE + clothing_flags = SNUG_FIT flags_cover = HEADCOVERSEYES flags_inv = HIDEHAIR diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 041f0ba012..cac98e74fc 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -67,12 +67,14 @@ desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT mutantrace_variation = MUTANTRACE_VARIATION + clothing_flags = SNUG_FIT /obj/item/clothing/head/cueball name = "cueball helmet" desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?" icon_state = "cueball" item_state="cueball" + clothing_flags = SNUG_FIT flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT @@ -81,6 +83,7 @@ desc = "A ball of white styrofoam. So festive." icon_state = "snowman_h" item_state = "snowman_h" + clothing_flags = SNUG_FIT flags_cover = HEADCOVERSEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT @@ -90,6 +93,7 @@ icon_state = "justicered" item_state = "justicered" flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT + clothing_flags = SNUG_FIT flags_cover = HEADCOVERSEYES /obj/item/clothing/head/justice/blue @@ -161,6 +165,7 @@ icon_state = "chickenhead" item_state = "chickensuit" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + clothing_flags = SNUG_FIT /obj/item/clothing/head/griffin name = "griffon head" @@ -168,6 +173,7 @@ icon_state = "griffinhat" item_state = "griffinhat" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + clothing_flags = SNUG_FIT /obj/item/clothing/head/bearpelt name = "bear pelt hat" @@ -181,6 +187,7 @@ item_state = "xenos_helm" desc = "A helmet made out of chitinous alien hide." flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + clothing_flags = SNUG_FIT /obj/item/clothing/head/fedora name = "fedora" @@ -302,6 +309,7 @@ desc = "When everything's going to crab, protecting your head is the best choice." icon_state = "lobster_hat" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + clothing_flags = SNUG_FIT /obj/item/clothing/head/drfreezehat name = "doctor freeze's wig" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 3f96796a00..0dea8bfe79 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -29,6 +29,7 @@ visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = FIRE_PROOF mutantrace_variation = MUTANTRACE_VARIATION + clothing_flags = SNUG_FIT /obj/item/clothing/head/welding/attack_self(mob/user) weldingvisortoggle(user) @@ -115,6 +116,7 @@ item_state = "hardhat0_pumpkin" item_color = "pumpkin" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + clothing_flags = SNUG_FIT armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) brightness_on = 2 //luminosity when on flags_cover = HEADCOVERSEYES @@ -163,6 +165,7 @@ desc = "A helmet made out of a box." icon_state = "cardborg_h" item_state = "cardborg_h" + clothing_flags = SNUG_FIT flags_cover = HEADCOVERSEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT @@ -227,6 +230,7 @@ desc = "A crude helmet made out of bronze plates. It offers very little in the way of protection." icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_helmet_old" + clothing_flags = SNUG_FIT flags_inv = HIDEEARS|HIDEHAIR armor = list("melee" = 5, "bullet" = 0, "laser" = -5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20) @@ -238,25 +242,62 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = -5,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = -5, "fire" = 0, "acid" = 0) equip_delay_other = 140 var/datum/brain_trauma/mild/phobia/paranoia + var/warped = FALSE + clothing_flags = ANTI_TINFOIL_MANEUVER + +/obj/item/clothing/head/foilhat/Initialize(mapload) + . = ..() + if(!warped) + AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, .proc/warp_up)) + else + warp_up() /obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot) - ..() - if(slot == SLOT_HEAD) - if(paranoia) - QDEL_NULL(paranoia) - paranoia = new() - user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC, "conspiracies") - to_chat(user, "As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. ") + . = ..() + if(slot != SLOT_HEAD || warped) + return + if(paranoia) + QDEL_NULL(paranoia) + paranoia = new() + user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC, "conspiracies") + to_chat(user, "As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. ") + +/obj/item/clothing/head/foilhat/MouseDrop(atom/over_object) + //God Im sorry + if(!warped && iscarbon(usr)) + var/mob/living/carbon/C = usr + if(src == C.head) + to_chat(C, "Why would you want to take this off? Do you want them to get into your mind?!") + return + return ..() /obj/item/clothing/head/foilhat/dropped(mob/user) - ..() + . = ..() if(paranoia) QDEL_NULL(paranoia) +/obj/item/clothing/head/foilhat/proc/warp_up() + name = "scorched tinfoil hat" + desc = "A badly warped up hat. Quite unprobable this will still work against any of fictional and contemporary dangers it used to." + warped = TRUE + if(!isliving(loc) || !paranoia) + return + var/mob/living/target = loc + if(target.get_item_by_slot(SLOT_HEAD) != src) + return + QDEL_NULL(paranoia) + if(!target.IsUnconscious()) + to_chat(target, "Your zealous conspirationism rapidly dissipates as the donned hat warps up into a ruined mess. All those theories starting to sound like nothing but a ridicolous fanfare.") + /obj/item/clothing/head/foilhat/attack_hand(mob/user) - if(iscarbon(user)) + if(!warped && iscarbon(user)) var/mob/living/carbon/C = user if(src == C.head) to_chat(user, "Why would you want to take this off? Do you want them to get into your mind?!") return - ..() + return ..() + +/obj/item/clothing/head/foilhat/microwave_act(obj/machinery/microwave/M) + . = ..() + if(!warped) + warp_up() diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 9ee2ebcd54..c00e6f72e0 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -59,8 +59,8 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 330f69ddaf..2356bb16eb 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -12,8 +12,8 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/neck/tie name = "tie" diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 00cb2678cd..37ab2b2bf4 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -11,17 +11,19 @@ permeability_coefficient = 0.5 slowdown = SHOES_SLOWDOWN var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/list/bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) var/offset = 0 var/equipped_before_drop = FALSE //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION + var/last_bloodtype = "" //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = "" //same as last one /obj/item/clothing/shoes/ComponentInitialize() . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /obj/item/clothing/shoes/clean_blood) /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) @@ -42,22 +44,29 @@ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) return(BRUTELOSS) + +/obj/item/clothing/shoes/transfer_blood_dna(list/blood_dna, diseases) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] + /obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) var/bloody = FALSE - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) bloody = TRUE else - bloody = bloody_shoes[BLOOD_STATE_HUMAN] + bloody = bloody_shoes[BLOOD_STATE_BLOOD] if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood") + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood") + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color()) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() @@ -93,14 +102,13 @@ var/mob/M = loc M.update_inv_shoes() -/obj/item/clothing/shoes/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return - bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) +/obj/item/clothing/shoes/clean_blood(datum/source, strength) + . = ..() + bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY if(ismob(loc)) var/mob/M = loc M.update_inv_shoes() /obj/item/proc/negates_gravity() - return FALSE \ No newline at end of file + return FALSE diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index b634894805..d13e655d43 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -17,7 +17,7 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() . = ..() - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) if(on) if(bananium.amount(MAT_BANANIUM) < 100) on = !on @@ -30,7 +30,7 @@ bananium.use_amount_type(100, MAT_BANANIUM) /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) var/sheet_amount = bananium.retrieve_all() if(sheet_amount) to_chat(user, "You retrieve [sheet_amount] sheets of bananium from the prototype shoes.") @@ -42,7 +42,7 @@ to_chat(user, "The shoes are [on ? "enabled" : "disabled"].") /obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user) - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) if(bananium.amount(MAT_BANANIUM)) on = !on update_icon() diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 57866b5131..117fbc49e0 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -4,7 +4,7 @@ name = "space helmet" icon_state = "spaceold" desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." - clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SNUG_FIT item_state = "spaceold" permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70) diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index b105b72234..7ead462b1e 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -547,7 +547,7 @@ changeWearer() ..() -/obj/item/flightpack/item_action_slot_check(slot) +/obj/item/flightpack/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == ITEM_SLOT_BACK) return TRUE @@ -574,7 +574,7 @@ momentum_speed_y = 0 momentum_speed = max(momentum_speed_x, momentum_speed_y) -/obj/item/flightpack/item_action_slot_check(slot) +/obj/item/flightpack/item_action_slot_check(slot, mob/user, datum/action/A) return slot == SLOT_BACK /obj/item/flightpack/proc/enable_stabilizers() @@ -730,7 +730,7 @@ if(!active) clothing_flags &= ~NOSLIP -/obj/item/clothing/shoes/flightshoes/item_action_slot_check(slot) +/obj/item/clothing/shoes/flightshoes/item_action_slot_check(slot, mob/user, datum/action/A) return slot == SLOT_SHOES /obj/item/clothing/shoes/flightshoes/proc/delink_suit() diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 2694497579..fa6b01415e 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -47,7 +47,7 @@ suit.RemoveHelmet() soundloop.stop(user) -/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot) +/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_HEAD) return 1 @@ -135,7 +135,7 @@ to_chat(user, "You cannot remove the jetpack from [src] while wearing it.") return - jetpack.turn_off() + jetpack.turn_off(user) jetpack.forceMove(drop_location()) jetpack = null to_chat(user, "You successfully remove the jetpack from [src].") @@ -158,7 +158,7 @@ var/datum/action/A = X A.Remove(user) -/obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot) +/obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_WEAR_SUIT) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit. return 1 @@ -433,7 +433,7 @@ /obj/item/clothing/suit/space/hardsuit/wizard/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, FALSE) + AddComponent(/datum/component/anti_magic, TRUE, FALSE, FALSE, ITEM_SLOT_OCLOTHING, INFINITY, FALSE) //Medical hardsuit /obj/item/clothing/head/helmet/space/hardsuit/medical @@ -605,7 +605,6 @@ armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75) item_color = "ancient" resistance_flags = FIRE_PROOF - var/datum/component/mobhook /obj/item/clothing/suit/space/hardsuit/ancient name = "prototype RIG hardsuit" @@ -617,7 +616,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient resistance_flags = FIRE_PROOF var/footstep = 1 - var/datum/component/mobhook + var/mob/listeningTo /obj/item/clothing/suit/space/hardsuit/ancient/mason name = "M.A.S.O.N RIG" @@ -674,20 +673,24 @@ /obj/item/clothing/suit/space/hardsuit/ancient/equipped(mob/user, slot) . = ..() - if (slot == SLOT_WEAR_SUIT) - if (mobhook && mobhook.parent != user) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_mob_move))) - else - QDEL_NULL(mobhook) + if(slot != SLOT_WEAR_SUIT) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + return + if(listeningTo == user) + return + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) + listeningTo = user /obj/item/clothing/suit/space/hardsuit/ancient/dropped() . = ..() - QDEL_NULL(mobhook) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) /obj/item/clothing/suit/space/hardsuit/ancient/Destroy() - QDEL_NULL(mobhook) // mobhook is not our component + listeningTo = null return ..() /////////////SHIELDED////////////////////////////////// @@ -864,3 +867,133 @@ strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT actions_types = list() + +/* + CYDONIAN ARMOR THAT IS RGB AND STUFF WOOOOOOOOOO +*/ + +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight + name = "cydonian helmet" + desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips." + icon_state = "knight_cydonia" + item_state = "knight_yellow" + item_color = null + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + resistance_flags = FIRE_PROOF | LAVA_PROOF + heat_protection = HEAD + armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100) + brightness_on = 7 + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) + var/energy_color = "#35FFF0" + var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null + mutantrace_variation = NO_MUTANTRACE_VARIATION + +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/Initialize() + . = ..() + if(istype(loc, /obj/item/clothing/suit/space/hardsuit/lavaknight)) + var/obj/item/clothing/suit/space/hardsuit/lavaknight/S = loc + energy_color = S.energy_color + update_icon() + +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/attack_self(mob/user) + on = !on + + if(on) + set_light(brightness_on) + else + set_light(0) + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/update_icon() + var/mutable_appearance/helm_overlay = mutable_appearance(icon, "knight_cydonia_overlay") + + if(energy_color) + helm_overlay.color = energy_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(helm_overlay) + +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) + . = ..() + if(!isinhands) + var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) + energy_overlay.plane = ABOVE_LIGHTING_LAYER + energy_overlay.color = energy_color + . += energy_overlay + +/obj/item/clothing/suit/space/hardsuit/lavaknight + icon_state = "knight_cydonia" + name = "cydonian armor" + desc = "A suit designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips." + item_state = "swat_suit" + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + resistance_flags = FIRE_PROOF | LAVA_PROOF + armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + tauric = TRUE //Citadel Add for tauric hardsuits + + var/energy_color = "#35FFF0" + +/obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize() + ..() + light_color = energy_color + set_light(1) + update_icon() + +/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon() + var/mutable_appearance/suit_overlay = mutable_appearance(icon, "knight_cydonia_overlay") + + if(energy_color) + suit_overlay.color = energy_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(suit_overlay) + +/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) + . = ..() + if(!isinhands) + var/mutable_appearance/energy_overlay + if(taurmode == SNEK_TAURIC) + energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) + else if(taurmode == PAW_TAURIC) + energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) + else + energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) + + energy_overlay.plane = ABOVE_LIGHTING_LAYER + energy_overlay.color = energy_color + . += energy_overlay + +/obj/item/clothing/suit/space/hardsuit/lavaknight/AltClick(mob/living/user) + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + if(!in_range(src, user)) + return + if(user.incapacitated() || !istype(user) || !in_range(src, user)) + return + + if(alert("Are you sure you want to recolor your armor stripes?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",energy_color) as color|null + if(energy_color_input) + energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + user.update_inv_wear_suit() + if(helmet) + var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/H = helmet + H.energy_color = energy_color + user.update_inv_head() + H.update_icon() + update_icon() + user.update_inv_wear_suit() + light_color = energy_color + update_light() + +/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 5d718a8173..88e17d158c 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -368,6 +368,10 @@ Contains: resistance_flags = FIRE_PROOF mutantrace_variation = NO_MUTANTRACE_VARIATION +/obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() + . = ..() + AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD) + /obj/item/clothing/suit/space/hardsuit/ert/paranormal name = "paranormal response team suit" desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats." @@ -380,7 +384,7 @@ Contains: /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_OCLOTHING) /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor name = "inquisitor's hardsuit" diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 3008043156..faec9e2f4c 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -31,12 +31,12 @@ adjusted = NORMAL_STYLE if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) - if(H.dna.features["taur"] in list("Naga", "Tentacle")) + if(H.dna.features["taur"] in GLOB.noodle_taurs) taurmode = SNEK_TAURIC if(tauric == TRUE) center = TRUE dimension_x = 64 - else if(H.dna.features["taur"] in list("Fox","Wolf","Otie","Drake","Lab","Shepherd","Husky","Eevee","Panther","Horse","Cow","Tiger","Deer")) + else if(H.dna.features["taur"] in GLOB.paw_taurs) taurmode = PAW_TAURIC if(tauric == TRUE) center = TRUE @@ -54,11 +54,11 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") - IF_HAS_BLOOD_DNA(src) - if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood") + if(blood_DNA) + if(tauric && taurmode >= SNEK_TAURIC) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 5d0a9b9914..369ddba7b9 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -4,7 +4,7 @@ icon_state = "bio" desc = "A hood that protects the head and face from biological contaminants." permeability_coefficient = 0.01 - clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT + clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SNUG_FIT armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 60, "fire" = 30, "acid" = 100) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT resistance_flags = ACID_PROOF diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index b8287c7f4c..be81374868 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -69,6 +69,7 @@ icon_state = "golhood" desc = "A protective & concealing hood." armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) + clothing_flags = SNUG_FIT flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR /obj/item/clothing/suit/hooded/cloak/drake @@ -88,6 +89,7 @@ icon_state = "dragon" desc = "The skull of a dragon." armor = list("melee" = 70, "bullet" = 30, "laser" = 50, "energy" = 40, "bomb" = 70, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100) + clothing_flags = SNUG_FIT heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 5d534e00a7..cc983dbb0f 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -23,7 +23,7 @@ /obj/item/clothing/suit/hooded/ui_action_click() ToggleHood() -/obj/item/clothing/suit/hooded/item_action_slot_check(slot, mob/user) +/obj/item/clothing/suit/hooded/item_action_slot_check(slot, mob/user, datum/action/A) if(slot == SLOT_WEAR_SUIT || slot == SLOT_NECK) return 1 diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index fbdca6ddbc..b98d8207d9 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -58,7 +58,7 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - clothing_flags = THICKMATERIAL + clothing_flags = THICKMATERIAL | SNUG_FIT armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT dynamic_hair_suffix = "" @@ -123,7 +123,7 @@ name = "radiation hood" icon_state = "rad" desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'" - clothing_flags = THICKMATERIAL + clothing_flags = THICKMATERIAL|SNUG_FIT flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30) strip_delay = 60 diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 9d1a47f231..93eb8181c7 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -7,6 +7,7 @@ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 50 equip_delay_other = 50 + clothing_flags = SNUG_FIT resistance_flags = FIRE_PROOF | ACID_PROOF dog_fashion = /datum/dog_fashion/head/blue_wizard diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index c2c3f19b9d..eda0e31e93 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -22,8 +22,8 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") - IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 6dd6164d79..706f7edb0a 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -12,7 +12,7 @@ var/datum/component/storage/detached_pockets /obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) - GET_COMPONENT(storage, /datum/component/storage) + var/datum/component/storage/storage = GetComponent(/datum/component/storage) if(storage) if(SEND_SIGNAL(U, COMSIG_CONTAINS_STORAGE)) return FALSE diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ec39f20b0b..6f188d513f 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -715,8 +715,9 @@ name = "gear harness" desc = "A simple, inconspicuous harness replacement for a jumpsuit." icon_state = "gear_harness" - item_state = "gear_harness" //We dont use golem do to being a item, item without faces making it default to error suit sprites. + item_state = "gear_harness" body_parts_covered = CHEST|GROIN + can_adjust = FALSE /obj/item/clothing/under/durathread name = "durathread jumpsuit" diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 5f8f1f145d..2987b52338 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -1,4 +1,3 @@ - /datum/crafting_recipe var/name = "" //in-game display name var/reqs[] = list() //type paths of items consumed associated with how many are needed @@ -9,956 +8,4 @@ var/chem_catalysts[] = list() //like tools but for reagents var/category = CAT_NONE //where it shows up in the crafting UI var/subcategory = CAT_NONE - var/always_availible = TRUE //Set to FALSE if it needs to be learned first. - -/datum/crafting_recipe/pin_removal - name = "Pin Removal" - result = /obj/item/gun - reqs = list(/obj/item/gun = 1) - parts = list(/obj/item/gun = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/IED - name = "IED" - result = /obj/item/grenade/iedcasing - reqs = list(/datum/reagent/fuel = 50, - /obj/item/stack/cable_coil = 1, - /obj/item/assembly/igniter = 1, - /obj/item/reagent_containers/food/drinks/soda_cans = 1) - parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) - time = 15 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/lance - name = "Explosive Lance (Grenade)" - result = /obj/item/twohanded/spear - reqs = list(/obj/item/twohanded/spear = 1, - /obj/item/grenade = 1) - parts = list(/obj/item/twohanded/spear = 1, - /obj/item/grenade = 1) - time = 15 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/strobeshield - name = "Strobe Shield" - result = /obj/item/assembly/flash/shield - reqs = list(/obj/item/wallframe/flasher = 1, - /obj/item/assembly/flash/handheld = 1, - /obj/item/shield/riot = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/makeshiftshield - name = "Makeshift Metal Shield" - result = /obj/item/shield/makeshift - reqs = list(/obj/item/stack/cable_coil = 30, - /obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/cloth = 2, - /obj/item/stack/sheet/leather = 3) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/molotov - name = "Molotov" - result = /obj/item/reagent_containers/food/drinks/bottle/molotov - reqs = list(/obj/item/reagent_containers/rag = 1, - /obj/item/reagent_containers/food/drinks/bottle = 1) - parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/stunprod - name = "Stunprod" - result = /obj/item/melee/baton/cattleprod - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/assembly/igniter = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/teleprod - name = "Teleprod" - result = /obj/item/melee/baton/cattleprod/teleprod - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/assembly/igniter = 1, - /obj/item/stack/ore/bluespace_crystal = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/bola - name = "Bola" - result = /obj/item/restraints/legcuffs/bola - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/sheet/metal = 6) - time = 20//15 faster than crafting them by hand! - category= CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/tailclub - name = "Tail Club" - result = /obj/item/tailclub - reqs = list(/obj/item/organ/tail/lizard = 1, - /obj/item/stack/sheet/metal = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/tailwhip - name = "Liz O' Nine Tails" - result = /obj/item/melee/chainofcommand/tailwhip - reqs = list(/obj/item/organ/tail/lizard = 1, - /obj/item/stack/cable_coil = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/catwhip - name = "Cat O' Nine Tails" - result = /obj/item/melee/chainofcommand/tailwhip/kitty - reqs = list(/obj/item/organ/tail/cat = 1, - /obj/item/stack/cable_coil = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/minigun - name = "Laser Minigun" - result = /obj/item/minigunpack2 - reqs = list(/obj/item/gun/energy/laser/carbine = 3, - /obj/item/stack/sheet/plasteel = 5, - /obj/item/stack/cable_coil = 30, - /obj/item/stock_parts/cell/bluespace = 2) - tools = list(TOOL_WIRECUTTER, TOOL_SCREWDRIVER, TOOL_WELDER) - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ed209 - name = "ED209" - result = /mob/living/simple_animal/bot/ed209 - reqs = list(/obj/item/robot_suit = 1, - /obj/item/clothing/head/helmet = 1, - /obj/item/clothing/suit/armor/vest = 1, - /obj/item/bodypart/l_leg/robot = 1, - /obj/item/bodypart/r_leg/robot = 1, - /obj/item/stack/sheet/metal = 1, - /obj/item/stack/cable_coil = 1, - /obj/item/gun/energy/e_gun/advtaser = 1, - /obj/item/stock_parts/cell = 1, - /obj/item/assembly/prox_sensor = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) - time = 60 - category = CAT_ROBOT - -/datum/crafting_recipe/secbot - name = "Secbot" - result = /mob/living/simple_animal/bot/secbot - reqs = list(/obj/item/assembly/signaler = 1, - /obj/item/clothing/head/helmet/sec = 1, - /obj/item/melee/baton = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - tools = list(TOOL_WELDER) - time = 60 - category = CAT_ROBOT - -/datum/crafting_recipe/cleanbot - name = "Cleanbot" - result = /mob/living/simple_animal/bot/cleanbot - reqs = list(/obj/item/reagent_containers/glass/bucket = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/floorbot - name = "Floorbot" - result = /mob/living/simple_animal/bot/floorbot - reqs = list(/obj/item/storage/toolbox/mechanical = 1, - /obj/item/stack/tile/plasteel = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/medbot - name = "Medbot" - result = /mob/living/simple_animal/bot/medbot - reqs = list(/obj/item/healthanalyzer = 1, - /obj/item/storage/firstaid = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/honkbot - name = "Honkbot" - result = /mob/living/simple_animal/bot/honkbot - reqs = list(/obj/item/storage/box/clown = 1, - /obj/item/bodypart/r_arm/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bikehorn/ = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/Firebot - name = "Firebot" - result = /mob/living/simple_animal/bot/firebot - reqs = list(/obj/item/extinguisher = 1, - /obj/item/bodypart/r_arm/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/clothing/head/hardhat/red = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/potatos - name = "Potat-OS" - reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) - result = /obj/item/aicard/potato - category = CAT_ROBOT - -/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but - name = "Pneumatic Cannon" - result = /obj/item/pneumatic_cannon/ghetto - tools = list(TOOL_WELDER, TOOL_WRENCH) - reqs = list(/obj/item/stack/sheet/metal = 4, - /obj/item/stack/packageWrap = 8, - /obj/item/pipe = 2) - time = 300 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/flamethrower - name = "Flamethrower" - result = /obj/item/flamethrower - reqs = list(/obj/item/weldingtool = 1, - /obj/item/assembly/igniter = 1, - /obj/item/stack/rods = 1) - parts = list(/obj/item/assembly/igniter = 1, - /obj/item/weldingtool = 1) - tools = list(TOOL_SCREWDRIVER) - time = 10 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/meteorslug - name = "Meteorslug Shell" - result = /obj/item/ammo_casing/shotgun/meteorslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/rcd_ammo = 1, - /obj/item/stock_parts/manipulator = 2) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/pulseslug - name = "Pulse Slug Shell" - result = /obj/item/ammo_casing/shotgun/pulseslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/capacitor/adv = 2, - /obj/item/stock_parts/micro_laser/ultra = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/dragonsbreath - name = "Dragonsbreath Shell" - result = /obj/item/ammo_casing/shotgun/dragonsbreath - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/frag12 - name = "FRAG-12 Shell" - result = /obj/item/ammo_casing/shotgun/frag12 - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /datum/reagent/glycerol = 5, - /datum/reagent/toxin/acid = 5, - /datum/reagent/toxin/acid/fluacid = 5) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ionslug - name = "Ion Scatter Shell" - result = /obj/item/ammo_casing/shotgun/ion - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/micro_laser/ultra = 1, - /obj/item/stock_parts/subspace/crystal = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/improvisedslug - name = "Improvised Shotgun Shell" - result = /obj/item/ammo_casing/shotgun/improvised - reqs = list(/obj/item/grenade/chem_grenade = 1, - /obj/item/stack/sheet/metal = 1, - /obj/item/stack/cable_coil = 1, - /datum/reagent/fuel = 10) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/laserslug - name = "Scatter Laser Shell" - result = /obj/item/ammo_casing/shotgun/laserslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/capacitor/adv = 1, - /obj/item/stock_parts/micro_laser/high = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ishotgun - name = "Improvised Shotgun" - result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised - reqs = list(/obj/item/weaponcrafting/receiver = 1, - /obj/item/pipe = 1, - /obj/item/weaponcrafting/stock = 1, - /obj/item/stack/packageWrap = 5) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/irifle - name = "Improvised Rifle(7.62mm)" - result = /obj/item/gun/ballistic/shotgun/boltaction/improvised - reqs = list(/obj/item/weaponcrafting/receiver = 1, - /obj/item/pipe = 2, - /obj/item/weaponcrafting/stock = 1, - /obj/item/stack/packageWrap = 5) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/chainsaw - name = "Chainsaw" - result = /obj/item/twohanded/required/chainsaw - reqs = list(/obj/item/circular_saw = 1, - /obj/item/stack/cable_coil = 3, - /obj/item/stack/sheet/plasteel = 5) - tools = list(TOOL_WELDER) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/spear - name = "Spear" - result = /obj/item/twohanded/spear - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/shard = 1, - /obj/item/stack/rods = 1) - parts = list(/obj/item/shard = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/spooky_camera - name = "Camera Obscura" - result = /obj/item/camera/spooky - time = 15 - reqs = list(/obj/item/camera = 1, - /datum/reagent/water/holywater = 10) - parts = list(/obj/item/camera = 1) - category = CAT_MISC - -/datum/crafting_recipe/skateboard - name = "Skateboard" - result = /obj/vehicle/ridden/scooter/skateboard - time = 60 - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/rods = 10) - category = CAT_MISC - -/datum/crafting_recipe/scooter - name = "Scooter" - result = /obj/vehicle/ridden/scooter - time = 65 - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/rods = 12) - category = CAT_MISC - -/datum/crafting_recipe/mousetrap - name = "Mouse Trap" - result = /obj/item/assembly/mousetrap - time = 10 - reqs = list(/obj/item/stack/sheet/cardboard = 1, - /obj/item/stack/rods = 1) - category = CAT_MISC - -/datum/crafting_recipe/papersack - name = "Paper Sack" - result = /obj/item/storage/box/papersack - time = 10 - reqs = list(/obj/item/paper = 5) - category = CAT_MISC - -/datum/crafting_recipe/flashlight_eyes - name = "Flashlight Eyes" - result = /obj/item/organ/eyes/robotic/flashlight - time = 10 - reqs = list( - /obj/item/flashlight = 2, - /obj/item/restraints/handcuffs/cable = 1 - ) - category = CAT_MISC - -/datum/crafting_recipe/paperframes - name = "Paper Frames" - result = /obj/item/stack/sheet/paperframes/five - time = 10 - reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20) - category = CAT_MISC - -/datum/crafting_recipe/naturalpaper - name = "Hand-Pressed Paper" - time = 30 - reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1) - tools = list(/obj/item/hatchet) - result = /obj/item/paper_bin/bundlenatural - category = CAT_MISC - -/datum/crafting_recipe/toysword - name = "Toy Sword" - reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) - result = /obj/item/toy/sword - category = CAT_MISC - -/datum/crafting_recipe/blackcarpet - name = "Black Carpet" - reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) - result = /obj/item/stack/tile/carpet/black/fifty - category = CAT_MISC - -/datum/crafting_recipe/showercurtain - name = "Shower Curtains" - reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1) - result = /obj/structure/curtain - category = CAT_MISC - -/datum/crafting_recipe/extendohand - name = "Extendo-Hand" - reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1) - result = /obj/item/extendohand - category = CAT_MISC - -/datum/crafting_recipe/bluespacehonker - name = "Bluespace Bike horn" - result = /obj/item/bikehorn/bluespacehonker - time = 10 - reqs = list(/obj/item/stack/ore/bluespace_crystal = 1, - /obj/item/toy/crayon/blue = 1, - /obj/item/bikehorn = 1) - category = CAT_MISC - -/datum/crafting_recipe/toyneb - name = "Non-Euplastic Blade" - reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) - result = /obj/item/toy/sword/cx - category = CAT_MISC - -/datum/crafting_recipe/chemical_payload - name = "Chemical Payload (C4)" - result = /obj/item/bombcore/chemical - reqs = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/grenade/plastic/c4 = 1, - /obj/item/grenade/chem_grenade = 2 - ) - parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) - time = 30 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/chemical_payload2 - name = "Chemical Payload (Gibtonite)" - result = /obj/item/bombcore/chemical - reqs = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/twohanded/required/gibtonite = 1, - /obj/item/grenade/chem_grenade = 2 - ) - parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/bonearmor - name = "Bone Armor" - result = /obj/item/clothing/suit/armor/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonetalisman - name = "Bone Talisman" - result = /obj/item/clothing/accessory/talisman - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonecodpiece - name = "Skull Codpiece" - result = /obj/item/clothing/accessory/skullcodpiece - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bracers - name = "Bone Bracers" - result = /obj/item/clothing/gloves/bracer - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/skullhelm - name = "Skull Helmet" - result = /obj/item/clothing/head/helmet/skull - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/goliathcloak - name = "Goliath Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned - category = CAT_PRIMAL - -/datum/crafting_recipe/drakecloak - name = "Ash Drake Armour" - result = /obj/item/clothing/suit/hooded/cloak/drake - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 10, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/ashdrake = 5) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonebag - name = "Bone Satchel" - result = /obj/item/storage/backpack/satchel/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 3, - /obj/item/stack/sheet/sinew = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/gold_horn - name = "Golden Bike Horn" - result = /obj/item/bikehorn/golden - time = 20 - reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, - /obj/item/bikehorn = 1) - category = CAT_MISC - -/datum/crafting_recipe/bonedagger - name = "Bone Dagger" - result = /obj/item/kitchen/knife/combat/bone - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonespear - name = "Bone Spear" - result = /obj/item/twohanded/bonespear - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/boneaxe - name = "Bone Axe" - result = /obj/item/twohanded/fireaxe/boneaxe - time = 50 - reqs = list(/obj/item/stack/sheet/bone = 6, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonfire - name = "Bonfire" - time = 60 - reqs = list(/obj/item/grown/log = 5) - result = /obj/structure/bonfire - category = CAT_PRIMAL - -/datum/crafting_recipe/headpike - name = "Spike Head (Glass Spear)" - time = 65 - reqs = list(/obj/item/twohanded/spear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/twohanded/spear = 1) - result = /obj/structure/headpike - category = CAT_PRIMAL - -/datum/crafting_recipe/headpikebone - name = "Spike Head (Bone Spear)" - time = 65 - reqs = list(/obj/item/twohanded/bonespear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/twohanded/bonespear = 1) - result = /obj/structure/headpike/bone - category = CAT_PRIMAL - -/datum/crafting_recipe/smallcarton - name = "Small Carton" - result = /obj/item/reagent_containers/food/drinks/sillycup/smallcarton - time = 10 - reqs = list(/obj/item/stack/sheet/cardboard = 1) - category = CAT_MISC - -/datum/crafting_recipe/pressureplate - name = "Pressure Plate" - result = /obj/item/pressure_plate - time = 5 - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/tile/plasteel = 1, - /obj/item/stack/cable_coil = 2, - /obj/item/assembly/igniter = 1) - category = CAT_MISC - - -/datum/crafting_recipe/wheelchair - name = "Wheelchair" - result = /obj/vehicle/ridden/wheelchair - reqs = list(/obj/item/stack/sheet/plasteel = 2, - /obj/item/stack/rods = 8) - time = 100 - category = CAT_MISC - -/datum/crafting_recipe/rcl - name = "Makeshift Rapid Cable Layer" - result = /obj/item/twohanded/rcl/ghetto - time = 40 - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) - reqs = list(/obj/item/stack/sheet/metal = 15) - category = CAT_MISC - -/datum/crafting_recipe/mummy - name = "Mummification Bandages (Mask)" - result = /obj/item/clothing/mask/mummy - time = 10 - tools = list(/obj/item/nullrod/egyptian) - reqs = list(/obj/item/stack/sheet/cloth = 2) - category = CAT_CLOTHING - -/datum/crafting_recipe/mummy/body - name = "Mummification Bandages (Body)" - result = /obj/item/clothing/under/mummy - reqs = list(/obj/item/stack/sheet/cloth = 5) - -/datum/crafting_recipe/guillotine - name = "Guillotine" - result = /obj/structure/guillotine - time = 150 // Building a functioning guillotine takes time - reqs = list(/obj/item/stack/sheet/plasteel = 3, - /obj/item/stack/sheet/mineral/wood = 20, - /obj/item/stack/cable_coil = 10) - tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) - category = CAT_MISC - -/datum/crafting_recipe/femur_breaker - name = "Femur Breaker" - result = /obj/structure/femur_breaker - time = 150 - reqs = list(/obj/item/stack/sheet/metal = 20, - /obj/item/stack/cable_coil = 30) - tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) - category = CAT_MISC - -/datum/crafting_recipe/lizardhat - name = "Lizard Cloche Hat" - result = /obj/item/clothing/head/lizard - time = 10 - reqs = list(/obj/item/organ/tail/lizard = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/lizardhat_alternate - name = "Lizard Cloche Hat" - result = /obj/item/clothing/head/lizard - time = 10 - reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/kittyears - name = "Kitty Ears" - result = /obj/item/clothing/head/kitty/genuine - time = 10 - reqs = list(/obj/item/organ/tail/cat = 1, - /obj/item/organ/ears/cat = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunsec - name = "Security HUDsunglasses" - result = /obj/item/clothing/glasses/hud/security/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/security = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunsecremoval - name = "Security HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunmed - name = "Medical HUDsunglasses" - result = /obj/item/clothing/glasses/hud/health/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/health = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunmedremoval - name = "Medical HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/beergoggles - name = "Beer Goggles" - result = /obj/item/clothing/glasses/sunglasses/reagent - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/science = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/beergogglesremoval - name = "Beer Goggles removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/ghostsheet - name = "Ghost Sheet" - result = /obj/item/clothing/suit/ghost_sheet - time = 5 - tools = list(TOOL_WIRECUTTER) - reqs = list(/obj/item/bedsheet = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/briefcase - name = "Hand made Briefcase" - result = /obj/item/storage/briefcase/crafted - time = 35 - tools = list(TOOL_WIRECUTTER) - reqs = list(/obj/item/stack/sheet/cardboard = 1, - /obj/item/stack/sheet/cloth = 2, - /obj/item/stack/sheet/leather = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/aitater - name = "intelliTater" - result = /obj/item/aicard/aitater - time = 30 - reqs = list(/obj/item/aicard = 1, - /obj/item/reagent_containers/food/snacks/grown/potato = 1) - category = CAT_MISC - -/datum/crafting_recipe/paperwork - name = "Filed Paper Work" - result = /obj/item/folder/paperwork_correct - time = 60 //Takes time for people to file and complete paper work! - reqs = list(/obj/item/pen = 1, - /obj/item/folder/paperwork = 2) - category = CAT_MISC - -/datum/crafting_recipe/ghettojetpack - name = "Improvised Jetpack" - result = /obj/item/tank/jetpack/improvised - time = 30 - reqs = list(/obj/item/tank/internals/oxygen = 2, - /obj/item/extinguisher = 1, - /obj/item/pipe = 3, - /obj/item/stack/cable_coil = 30) - category = CAT_MISC - tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER) - -/datum/crafting_recipe/goldenbox - name = "Gold Plated Toolbox" - result = /obj/item/storage/toolbox/gold_fake - reqs = list(/obj/item/stack/sheet/cardboard = 1, //so we dont null items in crafting - /obj/item/stack/cable_coil = 10, - /obj/item/stack/sheet/mineral/gold = 1, - /obj/item/stock_parts/cell = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_driver - name = "Bronze Plated Screwdriver" - result = /obj/item/screwdriver/bronze - reqs = list(/obj/item/screwdriver = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_welder - name = "Bronze Plated Welding Tool" - result = /obj/item/weldingtool/bronze - reqs = list(/obj/item/weldingtool = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_wirecutters - name = "Bronze Plated Wirecutters" - result = /obj/item/wirecutters/bronze - reqs = list(/obj/item/wirecutters = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_crowbar - name = "Bronze Plated Crowbar" - result = /obj/item/crowbar/bronze - reqs = list(/obj/item/crowbar = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_wrench - name = "Bronze Plated Wrench" - result = /obj/item/wrench/bronze - reqs = list(/obj/item/wrench = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/smartdart - name = "Medical smartdart" - result = /obj/item/reagent_containers/syringe/dart - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/sheet/glass = 1, - /obj/item/stack/sheet/plastic = 1) - time = 10 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/medolier - name = "Medolier" - result = /obj/item/storage/belt/medolier - reqs = list(/obj/item/stack/sheet/metal = 2, - /obj/item/stack/sheet/cloth = 3, - /obj/item/stack/sheet/plastic = 4) - time = 30 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/smartdartgun - name = "Smart dartgun" - result = /obj/item/gun/syringe/dart - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/glass = 5, - /obj/item/tank/internals = 1, - /obj/item/reagent_containers/glass/beaker = 1, - /obj/item/stack/sheet/plastic = 5, - /obj/item/stack/cable_coil = 1) - time = 150 //It's a gun - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/rapiddartgun - name = "Rapid Smart dartgun" - result = /obj/item/gun/syringe/dart/rapiddart - reqs = list( - /obj/item/gun/syringe/dart = 1, - /obj/item/stack/sheet/plastic = 5, - /obj/item/stack/cable_coil = 1, - /obj/item/reagent_containers/glass/beaker = 1 - ) - parts = list(/obj/item/reagent_containers/glass/beaker = 1) - time = 120 //Modifying your gun - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/durathread_duffelbag - name = "Durathread Dufflebag" - result = /obj/item/storage/backpack/duffelbag/durathread - reqs = list(/obj/item/stack/sheet/durathread = 7, - /obj/item/stack/sheet/leather = 3) - time = 70 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_toolbelt - name = "Durathread Toolbelt" - result = /obj/item/storage/belt/durathread - reqs = list(/obj/item/stack/sheet/durathread = 5, - /obj/item/stack/sheet/leather = 1) - time = 30 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_bandolier - name = "Durathread Bandolier" - result = /obj/item/storage/belt/bandolier/durathread - reqs = list(/obj/item/stack/sheet/durathread = 6, - /obj/item/stack/sheet/leather = 2) - time = 50 - category = CAT_CLOTHING - - /datum/crafting_recipe/durathread_helmet - name = "Makeshift Durathread Helmet" - result = /obj/item/clothing/head/helmet/durathread - reqs = list(/obj/item/stack/sheet/durathread = 4, - /obj/item/stack/sheet/leather = 2) - time = 30 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_vest - name = "Makeshift Durathread Armour" - result = /obj/item/clothing/suit/armor/vest/durathread - reqs = list(/obj/item/stack/sheet/durathread = 6, - /obj/item/stack/sheet/leather = 3) - time = 50 - category = CAT_CLOTHING + var/always_availible = TRUE //Set to FALSE if it needs to be learned first. \ No newline at end of file diff --git a/code/modules/crafting/recipes/recipes_clothing.dm b/code/modules/crafting/recipes/recipes_clothing.dm new file mode 100644 index 0000000000..f48ee87316 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_clothing.dm @@ -0,0 +1,160 @@ +/datum/crafting_recipe/mummy + name = "Mummification Bandages (Mask)" + result = /obj/item/clothing/mask/mummy + time = 10 + tools = list(/obj/item/nullrod/egyptian) + reqs = list(/obj/item/stack/sheet/cloth = 2) + category = CAT_CLOTHING + +/datum/crafting_recipe/mummy/body + name = "Mummification Bandages (Body)" + result = /obj/item/clothing/under/mummy + reqs = list(/obj/item/stack/sheet/cloth = 5) + +/datum/crafting_recipe/lizardhat + name = "Lizard Cloche Hat" + result = /obj/item/clothing/head/lizard + time = 10 + reqs = list(/obj/item/organ/tail/lizard = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/lizardhat_alternate + name = "Lizard Cloche Hat" + result = /obj/item/clothing/head/lizard + time = 10 + reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/kittyears + name = "Kitty Ears" + result = /obj/item/clothing/head/kitty/genuine + time = 10 + reqs = list(/obj/item/organ/tail/cat = 1, + /obj/item/organ/ears/cat = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunsec + name = "Security HUDsunglasses" + result = /obj/item/clothing/glasses/hud/security/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/security = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunsecremoval + name = "Security HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunmed + name = "Medical HUDsunglasses" + result = /obj/item/clothing/glasses/hud/health/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/health = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunmedremoval + name = "Medical HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/beergoggles + name = "Beer Goggles" + result = /obj/item/clothing/glasses/sunglasses/reagent + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/science = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/beergogglesremoval + name = "Beer Goggles removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/ghostsheet + name = "Ghost Sheet" + result = /obj/item/clothing/suit/ghost_sheet + time = 5 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/bedsheet = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/briefcase + name = "Hand made Briefcase" + result = /obj/item/storage/briefcase/crafted + time = 35 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/stack/sheet/cardboard = 1, + /obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/leather = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/medolier + name = "Medolier" + result = /obj/item/storage/belt/medolier + reqs = list(/obj/item/stack/sheet/metal = 2, + /obj/item/stack/sheet/cloth = 3, + /obj/item/stack/sheet/plastic = 4) + time = 30 + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_duffelbag + name = "Durathread Dufflebag" + result = /obj/item/storage/backpack/duffelbag/durathread + reqs = list(/obj/item/stack/sheet/durathread = 7, + /obj/item/stack/sheet/leather = 3) + time = 70 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_toolbelt + name = "Durathread Toolbelt" + result = /obj/item/storage/belt/durathread + reqs = list(/obj/item/stack/sheet/durathread = 5, + /obj/item/stack/sheet/leather = 2) + time = 30 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_bandolier + name = "Durathread Bandolier" + result = /obj/item/storage/belt/bandolier/durathread + reqs = list(/obj/item/stack/sheet/durathread = 6, + /obj/item/stack/sheet/leather = 2) + time = 50 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_helmet + name = "Makeshift Durathread Helmet" + result = /obj/item/clothing/head/helmet/durathread + reqs = list(/obj/item/stack/sheet/durathread = 4, + /obj/item/stack/sheet/leather = 2) + time = 30 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_vest + name = "Makeshift Durathread Armour" + result = /obj/item/clothing/suit/armor/vest/durathread + reqs = list(/obj/item/stack/sheet/durathread = 6, + /obj/item/stack/sheet/leather = 3) + time = 50 + always_availible = TRUE + category = CAT_CLOTHING diff --git a/code/modules/crafting/recipes/recipes_misc.dm b/code/modules/crafting/recipes/recipes_misc.dm new file mode 100644 index 0000000000..f05c7bd94b --- /dev/null +++ b/code/modules/crafting/recipes/recipes_misc.dm @@ -0,0 +1,325 @@ +///////////////// +//Large Objects// +///////////////// + +/datum/crafting_recipe/showercurtain + name = "Shower Curtains" + reqs = list(/obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/plastic = 2, + /obj/item/stack/rods = 1) + result = /obj/structure/curtain + category = CAT_MISC + +/datum/crafting_recipe/guillotine + name = "Guillotine" + result = /obj/structure/guillotine + time = 150 // Building a functioning guillotine takes time + reqs = list(/obj/item/stack/sheet/plasteel = 3, + /obj/item/stack/sheet/mineral/wood = 20, + /obj/item/stack/cable_coil = 10) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + category = CAT_MISC + +/datum/crafting_recipe/femur_breaker + name = "Femur Breaker" + result = /obj/structure/femur_breaker + time = 150 + reqs = list(/obj/item/stack/sheet/metal = 20, + /obj/item/stack/cable_coil = 30) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + category = CAT_MISC + +/////////////////// +//Tools & Storage// +/////////////////// + +/datum/crafting_recipe/ghettojetpack + name = "Improvised Jetpack" + result = /obj/item/tank/jetpack/improvised + time = 30 + reqs = list(/obj/item/tank/internals/oxygen = 2, + /obj/item/extinguisher = 1, + /obj/item/pipe = 3, + /obj/item/stack/cable_coil = 30) + category = CAT_MISC + tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER) + +/datum/crafting_recipe/goldenbox + name = "Gold Plated Toolbox" + result = /obj/item/storage/toolbox/gold_fake + reqs = list(/obj/item/stack/sheet/cardboard = 1, //so we dont null items in crafting + /obj/item/stack/cable_coil = 10, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stock_parts/cell = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_driver + name = "Bronze Plated Screwdriver" + result = /obj/item/screwdriver/bronze + reqs = list(/obj/item/screwdriver = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_welder + name = "Bronze Plated Welding Tool" + result = /obj/item/weldingtool/bronze + reqs = list(/obj/item/weldingtool = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_wirecutters + name = "Bronze Plated Wirecutters" + result = /obj/item/wirecutters/bronze + reqs = list(/obj/item/wirecutters = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_crowbar + name = "Bronze Plated Crowbar" + result = /obj/item/crowbar/bronze + reqs = list(/obj/item/crowbar = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_wrench + name = "Bronze Plated Wrench" + result = /obj/item/wrench/bronze + reqs = list(/obj/item/wrench = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/rcl + name = "Makeshift Rapid Cable Layer" + result = /obj/item/twohanded/rcl/ghetto + time = 40 + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) + reqs = list(/obj/item/stack/sheet/metal = 15) + category = CAT_MISC + +//////////// +//Vehicles// +//////////// + +/datum/crafting_recipe/wheelchair + name = "Wheelchair" + result = /obj/vehicle/ridden/wheelchair + reqs = list(/obj/item/stack/sheet/plasteel = 2, + /obj/item/stack/rods = 8) + time = 100 + category = CAT_MISC + +/datum/crafting_recipe/skateboard + name = "Skateboard" + result = /obj/vehicle/ridden/scooter/skateboard + time = 60 + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/rods = 10) + category = CAT_MISC + +/datum/crafting_recipe/scooter + name = "Scooter" + result = /obj/vehicle/ridden/scooter + time = 65 + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/rods = 12) + category = CAT_MISC + +///////// +//Toys/// +///////// + +/datum/crafting_recipe/toysword + name = "Toy Sword" + reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword + category = CAT_MISC + +/datum/crafting_recipe/extendohand + name = "Extendo-Hand" + reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1) + result = /obj/item/extendohand + category = CAT_MISC + +/datum/crafting_recipe/toyneb + name = "Non-Euplastic Blade" + reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword/cx + category = CAT_MISC + +//////////// +//Unsorted// +//////////// + +/datum/crafting_recipe/blackcarpet + name = "Black Carpet" + reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) + result = /obj/item/stack/tile/carpet/black/fifty + category = CAT_MISC + +/datum/crafting_recipe/paperframes + name = "Paper Frames" + result = /obj/item/stack/sheet/paperframes/five + time = 10 + reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20) + category = CAT_MISC + +/datum/crafting_recipe/naturalpaper + name = "Hand-Pressed Paper" + time = 30 + reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1) + tools = list(/obj/item/hatchet) + result = /obj/item/paper_bin/bundlenatural + category = CAT_MISC + +/datum/crafting_recipe/bluespacehonker + name = "Bluespace Bike horn" + result = /obj/item/bikehorn/bluespacehonker + time = 10 + reqs = list(/obj/item/stack/ore/bluespace_crystal = 1, + /obj/item/toy/crayon/blue = 1, + /obj/item/bikehorn = 1) + category = CAT_MISC + +/datum/crafting_recipe/aitater + name = "intelliTater" + result = /obj/item/aicard/aitater + time = 30 + reqs = list(/obj/item/aicard = 1, + /obj/item/reagent_containers/food/snacks/grown/potato = 1) + category = CAT_MISC + +/datum/crafting_recipe/mousetrap + name = "Mouse Trap" + result = /obj/item/assembly/mousetrap + time = 10 + reqs = list(/obj/item/stack/sheet/cardboard = 1, + /obj/item/stack/rods = 1) + category = CAT_MISC + +/datum/crafting_recipe/papersack + name = "Paper Sack" + result = /obj/item/storage/box/papersack + time = 10 + reqs = list(/obj/item/paper = 5) + category = CAT_MISC + +/datum/crafting_recipe/flashlight_eyes + name = "Flashlight Eyes" + result = /obj/item/organ/eyes/robotic/flashlight + time = 10 + reqs = list( + /obj/item/flashlight = 2, + /obj/item/restraints/handcuffs/cable = 1 + ) + category = CAT_MISC + +/datum/crafting_recipe/smallcarton + name = "Small Carton" + result = /obj/item/reagent_containers/food/drinks/sillycup/smallcarton + time = 10 + reqs = list(/obj/item/stack/sheet/cardboard = 1) + category = CAT_MISC + +/datum/crafting_recipe/pressureplate + name = "Pressure Plate" + result = /obj/item/pressure_plate + time = 5 + reqs = list(/obj/item/stack/sheet/metal = 1, + /obj/item/stack/tile/plasteel = 1, + /obj/item/stack/cable_coil = 2, + /obj/item/assembly/igniter = 1) + category = CAT_MISC + +/datum/crafting_recipe/gold_horn + name = "Golden Bike Horn" + result = /obj/item/bikehorn/golden + time = 20 + reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, + /obj/item/bikehorn = 1) + category = CAT_MISC + +/datum/crafting_recipe/spooky_camera + name = "Camera Obscura" + result = /obj/item/camera/spooky + time = 15 + reqs = list(/obj/item/camera = 1, + /datum/reagent/water/holywater = 10) + parts = list(/obj/item/camera = 1) + category = CAT_MISC + +/datum/crafting_recipe/paperwork + name = "Filed Paper Work" + result = /obj/item/folder/paperwork_correct + time = 10 //Takes time for people to file and complete paper work! + tools = list(/obj/item/pen) + reqs = list(/obj/item/folder/paperwork = 1) + category = CAT_MISC + +////////////// +//Banners///// +////////////// + +/datum/crafting_recipe/command_banner + name = "Command Banner" + result = /obj/item/banner/command/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/captainparade = 1) + category = CAT_MISC + +/datum/crafting_recipe/engineering_banner + name = "Engitopia Banner" + result = /obj/item/banner/engineering/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/engineer = 1) + category = CAT_MISC + +/datum/crafting_recipe/cargo_banner + name = "Cargonia Banner" + result = /obj/item/banner/cargo/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/cargotech = 1) + category = CAT_MISC + +/datum/crafting_recipe/science_banner + name = "Sciencia Banner" + result = /obj/item/banner/science/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/scientist = 1) + category = CAT_MISC + +/datum/crafting_recipe/medical_banner + name = "Meditopia Banner" + result = /obj/item/banner/medical/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/medical = 1) + category = CAT_MISC + +/datum/crafting_recipe/security_banner + name = "Securistan Banner" + result = /obj/item/banner/security/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/security = 1) + category = CAT_MISC diff --git a/code/modules/crafting/recipes/recipes_primal.dm b/code/modules/crafting/recipes/recipes_primal.dm new file mode 100644 index 0000000000..1be479e4e1 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_primal.dm @@ -0,0 +1,113 @@ +/datum/crafting_recipe/bonearmor + name = "Bone Armor" + result = /obj/item/clothing/suit/armor/bone + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 6) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonetalisman + name = "Bone Talisman" + result = /obj/item/clothing/accessory/talisman + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonecodpiece + name = "Skull Codpiece" + result = /obj/item/clothing/accessory/skullcodpiece + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bracers + name = "Bone Bracers" + result = /obj/item/clothing/gloves/bracer + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/skullhelm + name = "Skull Helmet" + result = /obj/item/clothing/head/helmet/skull + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/goliathcloak + name = "Goliath Cloak" + result = /obj/item/clothing/suit/hooded/cloak/goliath + time = 50 + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned + category = CAT_PRIMAL + +/datum/crafting_recipe/drakecloak + name = "Ash Drake Armour" + result = /obj/item/clothing/suit/hooded/cloak/drake + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 10, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/ashdrake = 5) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonebag + name = "Bone Satchel" + result = /obj/item/storage/backpack/satchel/bone + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 3, + /obj/item/stack/sheet/sinew = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonedagger + name = "Bone Dagger" + result = /obj/item/kitchen/knife/combat/bone + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonespear + name = "Bone Spear" + result = /obj/item/twohanded/bonespear + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/boneaxe + name = "Bone Axe" + result = /obj/item/twohanded/fireaxe/boneaxe + time = 50 + reqs = list(/obj/item/stack/sheet/bone = 6, + /obj/item/stack/sheet/sinew = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonfire + name = "Bonfire" + time = 60 + reqs = list(/obj/item/grown/log = 5) + result = /obj/structure/bonfire + category = CAT_PRIMAL + +/datum/crafting_recipe/headpike + name = "Spike Head (Glass Spear)" + time = 65 + reqs = list(/obj/item/twohanded/spear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/spear = 1) + result = /obj/structure/headpike + category = CAT_PRIMAL + +/datum/crafting_recipe/headpikebone + name = "Spike Head (Bone Spear)" + time = 65 + reqs = list(/obj/item/twohanded/bonespear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/bonespear = 1) + result = /obj/structure/headpike/bone + category = CAT_PRIMAL \ No newline at end of file diff --git a/code/modules/crafting/recipes/recipes_robot.dm b/code/modules/crafting/recipes/recipes_robot.dm new file mode 100644 index 0000000000..ae5bca7779 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_robot.dm @@ -0,0 +1,84 @@ + +/datum/crafting_recipe/ed209 + name = "ED209" + result = /mob/living/simple_animal/bot/ed209 + reqs = list(/obj/item/robot_suit = 1, + /obj/item/clothing/head/helmet = 1, + /obj/item/clothing/suit/armor/vest = 1, + /obj/item/bodypart/l_leg/robot = 1, + /obj/item/bodypart/r_leg/robot = 1, + /obj/item/stack/sheet/metal = 1, + /obj/item/stack/cable_coil = 1, + /obj/item/gun/energy/e_gun/advtaser = 1, + /obj/item/stock_parts/cell = 1, + /obj/item/assembly/prox_sensor = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) + time = 60 + category = CAT_ROBOT + +/datum/crafting_recipe/secbot + name = "Secbot" + result = /mob/living/simple_animal/bot/secbot + reqs = list(/obj/item/assembly/signaler = 1, + /obj/item/clothing/head/helmet/sec = 1, + /obj/item/melee/baton = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + tools = list(TOOL_WELDER) + time = 60 + category = CAT_ROBOT + +/datum/crafting_recipe/cleanbot + name = "Cleanbot" + result = /mob/living/simple_animal/bot/cleanbot + reqs = list(/obj/item/reagent_containers/glass/bucket = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/floorbot + name = "Floorbot" + result = /mob/living/simple_animal/bot/floorbot + reqs = list(/obj/item/storage/toolbox/mechanical = 1, + /obj/item/stack/tile/plasteel = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/medbot + name = "Medbot" + result = /mob/living/simple_animal/bot/medbot + reqs = list(/obj/item/healthanalyzer = 1, + /obj/item/storage/firstaid = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/honkbot + name = "Honkbot" + result = /mob/living/simple_animal/bot/honkbot + reqs = list(/obj/item/storage/box/clown = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bikehorn/ = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/Firebot + name = "Firebot" + result = /mob/living/simple_animal/bot/firebot + reqs = list(/obj/item/extinguisher = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/clothing/head/hardhat/red = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/potatos + name = "Potat-OS" + reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) + result = /obj/item/aicard/potato + category = CAT_ROBOT \ No newline at end of file diff --git a/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm b/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm new file mode 100644 index 0000000000..6eb1c31b12 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm @@ -0,0 +1,345 @@ +/datum/crafting_recipe/pin_removal + name = "Pin Removal" + result = /obj/item/gun + reqs = list(/obj/item/gun = 1) + parts = list(/obj/item/gun = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/strobeshield + name = "Strobe Shield" + result = /obj/item/assembly/flash/shield + reqs = list(/obj/item/wallframe/flasher = 1, + /obj/item/assembly/flash/handheld = 1, + /obj/item/shield/riot = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/makeshiftshield + name = "Makeshift Metal Shield" + result = /obj/item/shield/makeshift + reqs = list(/obj/item/stack/cable_coil = 30, + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/leather = 3) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/spear + name = "Spear" + result = /obj/item/twohanded/spear + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/shard = 1, + /obj/item/stack/rods = 1) + parts = list(/obj/item/shard = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/stunprod + name = "Stunprod" + result = /obj/item/melee/baton/cattleprod + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/assembly/igniter = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/teleprod + name = "Teleprod" + result = /obj/item/melee/baton/cattleprod/teleprod + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/assembly/igniter = 1, + /obj/item/stack/ore/bluespace_crystal = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/bola + name = "Bola" + result = /obj/item/restraints/legcuffs/bola + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/sheet/metal = 6) + time = 20//15 faster than crafting them by hand! + category= CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/tailclub + name = "Tail Club" + result = /obj/item/tailclub + reqs = list(/obj/item/organ/tail/lizard = 1, + /obj/item/stack/sheet/metal = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/tailwhip + name = "Liz O' Nine Tails" + result = /obj/item/melee/chainofcommand/tailwhip + reqs = list(/obj/item/organ/tail/lizard = 1, + /obj/item/stack/cable_coil = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/catwhip + name = "Cat O' Nine Tails" + result = /obj/item/melee/chainofcommand/tailwhip/kitty + reqs = list(/obj/item/organ/tail/cat = 1, + /obj/item/stack/cable_coil = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chainsaw + name = "Chainsaw" + result = /obj/item/twohanded/required/chainsaw + reqs = list(/obj/item/circular_saw = 1, + /obj/item/stack/cable_coil = 3, + /obj/item/stack/sheet/plasteel = 5) + tools = list(TOOL_WELDER) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +////////////////// +///BOMB CRAFTING// +////////////////// + +/datum/crafting_recipe/chemical_payload + name = "Chemical Payload (C4)" + result = /obj/item/bombcore/chemical + reqs = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/grenade/plastic/c4 = 1, + /obj/item/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) + time = 30 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chemical_payload2 + name = "Chemical Payload (Gibtonite)" + result = /obj/item/bombcore/chemical + reqs = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/twohanded/required/gibtonite = 1, + /obj/item/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/molotov + name = "Molotov" + result = /obj/item/reagent_containers/food/drinks/bottle/molotov + reqs = list(/obj/item/reagent_containers/rag = 1, + /obj/item/reagent_containers/food/drinks/bottle = 1) + parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/IED + name = "IED" + result = /obj/item/grenade/iedcasing + reqs = list(/datum/reagent/fuel = 50, + /obj/item/stack/cable_coil = 1, + /obj/item/assembly/igniter = 1, + /obj/item/reagent_containers/food/drinks/soda_cans = 1) + parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) + time = 15 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/lance + name = "Explosive Lance (Grenade)" + result = /obj/item/twohanded/spear + reqs = list(/obj/item/twohanded/spear = 1, + /obj/item/grenade = 1) + parts = list(/obj/item/twohanded/spear = 1, + /obj/item/grenade = 1) + time = 15 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +////////////////// +///GUNS CRAFTING// +////////////////// + + +/datum/crafting_recipe/smartdartgun + name = "Smart dartgun" + result = /obj/item/gun/syringe/dart + reqs = list(/obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/glass = 5, + /obj/item/tank/internals = 1, + /obj/item/reagent_containers/glass/beaker = 1, + /obj/item/stack/sheet/plastic = 5, + /obj/item/stack/cable_coil = 1) + time = 150 //It's a gun + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/rapiddartgun + name = "Rapid Smart dartgun" + result = /obj/item/gun/syringe/dart/rapiddart + reqs = list( + /obj/item/gun/syringe/dart = 1, + /obj/item/stack/sheet/plastic = 5, + /obj/item/stack/cable_coil = 1, + /obj/item/reagent_containers/glass/beaker = 1 + ) + parts = list(/obj/item/reagent_containers/glass/beaker = 1) + time = 120 //Modifying your gun + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/improvised_pneumatic_cannon + name = "Pneumatic Cannon" + result = /obj/item/pneumatic_cannon/ghetto + tools = list(TOOL_WELDER, TOOL_WRENCH) + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/packageWrap = 8, + /obj/item/pipe = 2) + time = 300 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/flamethrower //Gun* + name = "Flamethrower" + result = /obj/item/flamethrower + reqs = list(/obj/item/weldingtool = 1, + /obj/item/assembly/igniter = 1, + /obj/item/stack/rods = 1) + parts = list(/obj/item/assembly/igniter = 1, + /obj/item/weldingtool = 1) + tools = list(TOOL_SCREWDRIVER) + time = 10 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/ishotgun + name = "Improvised Shotgun" + result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised + reqs = list(/obj/item/weaponcrafting/receiver = 1, + /obj/item/pipe = 1, + /obj/item/weaponcrafting/stock = 1, + /obj/item/stack/packageWrap = 5) + tools = list(TOOL_SCREWDRIVER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/irifle + name = "Improvised Rifle(7.62mm)" + result = /obj/item/gun/ballistic/shotgun/boltaction/improvised + reqs = list(/obj/item/weaponcrafting/receiver = 1, + /obj/item/pipe = 2, + /obj/item/weaponcrafting/stock = 1, + /obj/item/stack/packageWrap = 5) + tools = list(TOOL_SCREWDRIVER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +////////////////// +///AMMO CRAFTING// +////////////////// + +/datum/crafting_recipe/smartdart + name = "Medical smartdart" + result = /obj/item/reagent_containers/syringe/dart + reqs = list(/obj/item/stack/sheet/metal = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stack/sheet/plastic = 1) + time = 10 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/meteorslug + name = "Meteorslug Shell" + result = /obj/item/ammo_casing/shotgun/meteorslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/rcd_ammo = 1, + /obj/item/stock_parts/manipulator = 2) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/pulseslug + name = "Pulse Slug Shell" + result = /obj/item/ammo_casing/shotgun/pulseslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/capacitor/adv = 2, + /obj/item/stock_parts/micro_laser/ultra = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/dragonsbreath + name = "Dragonsbreath Shell" + result = /obj/item/ammo_casing/shotgun/dragonsbreath + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /datum/reagent/phosphorus = 5) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/frag12 + name = "FRAG-12 Shell" + result = /obj/item/ammo_casing/shotgun/frag12 + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /datum/reagent/glycerol = 5, + /datum/reagent/toxin/acid = 5, + /datum/reagent/toxin/acid/fluacid = 5) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/ionslug + name = "Ion Scatter Shell" + result = /obj/item/ammo_casing/shotgun/ion + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/micro_laser/ultra = 1, + /obj/item/stock_parts/subspace/crystal = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/improvisedslug + name = "Improvised Shotgun Shell" + result = /obj/item/ammo_casing/shotgun/improvised + reqs = list(/obj/item/grenade/chem_grenade = 1, + /obj/item/stack/sheet/metal = 1, + /obj/item/stack/cable_coil = 1, + /datum/reagent/fuel = 10) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/laserslug + name = "Scatter Laser Shell" + result = /obj/item/ammo_casing/shotgun/laserslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/capacitor/adv = 1, + /obj/item/stock_parts/micro_laser/high = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index c892bfeffc..1a2405b9c4 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -1,111 +1,107 @@ //CONTAINS: Suit fibers and Detective's Scanning Computer -/atom/proc/return_fingerprints() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.fingerprints +/atom/proc/add_fibers(mob/living/carbon/human/M) + if(M.gloves && istype(M.gloves, /obj/item/clothing/)) + var/obj/item/clothing/gloves/G = M.gloves + if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects + if(add_blood_DNA(G.blood_DNA)) //only reduces the bloodiness of our gloves if the item wasn't already bloody + G.transfer_blood-- + else if(M.bloody_hands > 1) + if(add_blood_DNA(M.blood_DNA, M.diseases)) + M.bloody_hands-- + if(!suit_fibers) + suit_fibers = list() + var/fibertext + var/item_multiplier = isitem(src)?1.2:1 + if(M.wear_suit) + fibertext = "Material from \a [M.wear_suit]." + if(prob(10*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += fibertext + if(!(M.wear_suit.body_parts_covered & CHEST)) + if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed. + suit_fibers += fibertext + if(!(M.wear_suit.body_parts_covered & HANDS)) + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += fibertext + else if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(15*item_multiplier) && !(fibertext in suit_fibers)) + // "Added fibertext: [fibertext]" + suit_fibers += fibertext + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += "Material from a pair of [M.gloves.name]." + else if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += "Material from a pair of [M.gloves.name]." -/atom/proc/return_hiddenprints() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.hiddenprints -/atom/proc/return_blood_DNA() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.blood_DNA +/atom/proc/add_hiddenprint(mob/living/M) + if(!M || !M.key) + return -/atom/proc/blood_DNA_length() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = length(D.blood_DNA) + if(!fingerprintshidden) //Add the list if it does not exist + fingerprintshidden = list() -/atom/proc/return_fibers() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.fibers + var/hasgloves = "" + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.gloves) + hasgloves = "(gloves)" + + var/current_time = TIME_STAMP("hh:mm:ss", FALSE) + if(!fingerprintshidden[M.key]) + fingerprintshidden[M.key] = "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" + else + var/laststamppos = findtext(fingerprintshidden[M.key], " Last: ") + if(laststamppos) + fingerprintshidden[M.key] = copytext(fingerprintshidden[M.key], 1, laststamppos) + fingerprintshidden[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" + + fingerprintslast = M.ckey -/atom/proc/add_fingerprint_list(list/fingerprints) //ASSOC LIST FINGERPRINT = FINGERPRINT - if(length(fingerprints)) - . = AddComponent(/datum/component/forensics, fingerprints) //Set ignoregloves to add prints irrespective of the mob having gloves on. /atom/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_fingerprint(M, ignoregloves) + if(!M || !M.key) + return -/atom/proc/add_fiber_list(list/fibertext) //ASSOC LIST FIBERTEXT = FIBERTEXT - if(length(fibertext)) - . = AddComponent(/datum/component/forensics, null, null, null, fibertext) + add_hiddenprint(M) -/atom/proc/add_fibers(mob/living/carbon/human/M) - var/old = 0 - if(M.gloves && istype(M.gloves, /obj/item/clothing)) - var/obj/item/clothing/gloves/G = M.gloves - old = length(G.return_blood_DNA()) - if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects - if(add_blood_DNA(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody - G.transfer_blood-- - else if(M.bloody_hands > 1) - old = length(M.return_blood_DNA()) - if(add_blood_DNA(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old) - M.bloody_hands-- - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_fibers(M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M -/atom/proc/add_hiddenprint_list(list/hiddenprints) //NOTE: THIS IS FOR ADMINISTRATION FINGERPRINTS, YOU MUST CUSTOM SET THIS TO INCLUDE CKEY/REAL NAMES! CHECK FORENSICS.DM - if(length(hiddenprints)) - . = AddComponent(/datum/component/forensics, null, hiddenprints) + add_fibers(H) -/atom/proc/add_hiddenprint(mob/living/M) - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_hiddenprint(M) + if(H.gloves) //Check if the gloves (if any) hide fingerprints + var/obj/item/clothing/gloves/G = H.gloves + if(G.transfer_prints) + ignoregloves = TRUE -/atom/proc/add_blood_DNA(list/dna) //ASSOC LIST DNA = BLOODTYPE - return FALSE + if(!ignoregloves) + H.gloves.add_fingerprint(H, TRUE) //ignoregloves = TRUE to avoid infinite loop. + return -/obj/add_blood_DNA(list/dna) - . = ..() - if(length(dna)) - . = AddComponent(/datum/component/forensics, null, null, dna) - -/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - . = ..() - transfer_blood = rand(2, 4) - -/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src - if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) - B.add_blood_DNA(blood_dna) //give blood info to the blood decal. - return TRUE //we bloodied the floor - -/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - if(wear_suit) - wear_suit.add_blood_DNA(blood_dna) - update_inv_wear_suit() - else if(w_uniform) - w_uniform.add_blood_DNA(blood_dna) - update_inv_w_uniform() - if(gloves) - var/obj/item/clothing/gloves/G = gloves - G.add_blood_DNA(blood_dna) - else if(length(blood_dna)) - AddComponent(/datum/component/forensics, null, null, blood_dna) - bloody_hands = rand(2, 4) - if(head) - head.add_blood_DNA(blood_dna) - update_inv_head() - else if(wear_mask) - wear_mask.add_blood_DNA(blood_dna) - update_inv_wear_mask() - if(wear_neck) - wear_neck.add_blood_DNA(blood_dna) - update_inv_neck() - update_inv_gloves() //handles bloody hands overlays and updating - return TRUE + LAZYINITLIST(fingerprints) //Add the list if it does not exist + var/full_print = md5(H.dna.uni_identity) + fingerprints[full_print] = full_print /atom/proc/transfer_fingerprints_to(atom/A) - A.add_fingerprint_list(return_fingerprints()) - A.add_hiddenprint_list(return_hiddenprints()) - A.fingerprintslast = fingerprintslast + // Make sure everything are lists. + LAZYINITLIST(A.fingerprints) + LAZYINITLIST(A.fingerprintshidden) + LAZYINITLIST(fingerprints) + LAZYINITLIST(fingerprintshidden) + + // Transfer + if(fingerprints) + A.fingerprints |= fingerprints.Copy() //detective + if(fingerprintshidden) + A.fingerprintshidden |= fingerprintshidden.Copy() //admin + A.fingerprintslast = fingerprintslast \ No newline at end of file diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index a3b17a4c1f..5b4a75a36c 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -16,7 +16,7 @@ /obj/item/evidencebag/attackby(obj/item/I, mob/user, params) if(evidencebagEquip(I, user)) - return 1 + return TRUE /obj/item/evidencebag/handle_atom_del(atom/A) cut_overlays() @@ -25,12 +25,12 @@ desc = initial(desc) /obj/item/evidencebag/proc/evidencebagEquip(obj/item/I, mob/user) - if(!istype(I) || I.anchored == 1) + if(!istype(I) || I.anchored == TRUE) return if(istype(I, /obj/item/evidencebag)) to_chat(user, "You find putting an evidence bag in another evidence bag to be slightly absurd.") - return 1 //now this is podracing + return TRUE //now this is podracing if(I.w_class > WEIGHT_CLASS_NORMAL) to_chat(user, "[I] won't fit in [src].") @@ -62,7 +62,7 @@ desc = "An evidence bag containing [I]. [I.desc]" I.forceMove(src) w_class = I.w_class - return 1 + return TRUE /obj/item/evidencebag/attack_self(mob/user) if(contents.len) diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index fd7591db81..c578d5b4d4 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -14,7 +14,7 @@ flags_1 = CONDUCT_1 item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT - var/scanning = 0 + var/scanning = FALSE var/list/log = list() var/range = 8 var/view_check = TRUE @@ -30,7 +30,7 @@ /obj/item/detective_scanner/attack_self(mob/user) if(log.len && !scanning) - scanning = 1 + scanning = TRUE to_chat(user, "Printing report, please wait...") addtimer(CALLBACK(src, .proc/PrintReport), 100) else @@ -56,7 +56,7 @@ // Clear the logs log = list() - scanning = 0 + scanning = FALSE /obj/item/detective_scanner/afterattack(atom/A, mob/user, params) . = ..() @@ -70,7 +70,7 @@ if((get_dist(A, user) > range) || (!(A in view(range, user)) && view_check) || (loc != user)) return - scanning = 1 + scanning = TRUE user.visible_message("\The [user] points the [src.name] at \the [A] and performs a forensic scan.") to_chat(user, "You scan \the [A]. The scanner is now analysing the results...") @@ -80,14 +80,20 @@ //Make our lists var/list/fingerprints = list() - var/list/blood = A.return_blood_DNA() - var/list/fibers = A.return_fibers() + var/list/blood = list() + var/list/fibers = list() var/list/reagents = list() var/target_name = A.name // Start gathering + if(A.blood_DNA && A.blood_DNA.len) + blood = A.blood_DNA.Copy() + + if(A.suit_fibers && A.suit_fibers.len) + fibers = A.suit_fibers.Copy() + if(ishuman(A)) var/mob/living/carbon/human/H = A @@ -96,7 +102,8 @@ else if(!ismob(A)) - fingerprints = A.return_fingerprints() + if(A.fingerprints && A.fingerprints.len) + fingerprints = A.fingerprints.Copy() // Only get reagents from non-mobs. if(A.reagents && A.reagents.reagent_list.len) @@ -115,40 +122,40 @@ // We gathered everything. Create a fork and slowly display the results to the holder of the scanner. - var/found_something = 0 + var/found_something = FALSE add_log("[STATION_TIME_TIMESTAMP("hh:mm:ss")][get_timestamp()] - [target_name]", 0) // Fingerprints if(length(fingerprints)) - sleep(30) + sleep(3 SECONDS) add_log("Prints:") for(var/finger in fingerprints) add_log("[finger]") - found_something = 1 + found_something = TRUE // Blood if (length(blood)) - sleep(30) + sleep(3 SECONDS) add_log("Blood:") - found_something = 1 + found_something = TRUE for(var/B in blood) add_log("Type: [blood[B]] DNA: [B]") //Fibers if(length(fibers)) - sleep(30) + sleep(3 SECONDS) add_log("Fibers:") for(var/fiber in fibers) add_log("[fiber]") - found_something = 1 + found_something = TRUE //Reagents if(length(reagents)) - sleep(30) + sleep(3 SECONDS) add_log("Reagents:") for(var/R in reagents) add_log("Reagent: [R] Volume: [reagents[R]]") - found_something = 1 + found_something = TRUE // Get a new user var/mob/holder = null @@ -164,10 +171,10 @@ to_chat(holder, "You finish scanning \the [target_name].") add_log("---------------------------------------------------------", 0) - scanning = 0 + scanning = FALSE return -/obj/item/detective_scanner/proc/add_log(msg, broadcast = 1) +/obj/item/detective_scanner/proc/add_log(msg, broadcast = TRUE) if(scanning) if(broadcast && ismob(loc)) var/mob/M = loc @@ -207,4 +214,4 @@ return to_chat(user, "Scanner Report") for(var/iterLog in log) - to_chat(user, iterLog) + to_chat(user, iterLog) \ No newline at end of file diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index ddc75830d6..762371886c 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -32,7 +32,7 @@ /datum/round_event/ghost_role/alien_infestation/announce(fake) if(successSpawn || fake) - priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg') + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", "aliens") /datum/round_event/ghost_role/alien_infestation/spawn_role() diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 44a66e0d27..8fc1a7ab3d 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -13,7 +13,7 @@ if(prob(90)) priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index cc22abe5ab..73562e49e5 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -14,7 +14,7 @@ if(prob(90)) priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index c240be50d4..6e9014f13c 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -12,7 +12,7 @@ if(prob(90)) priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 5a973db95a..988ccadb76 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -12,7 +12,7 @@ if(prob(90)) priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index b57fe9e67e..2550dc191e 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -14,7 +14,7 @@ if(prob(90)) priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index c17918d733..d2a5c27883 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -4,6 +4,7 @@ weight = 10 max_occurrences = 1 + earliest_start = 60 MINUTES min_players = 40 gamemode_blacklist = list("blob") //Just in case a blob survives that long @@ -15,9 +16,9 @@ /datum/round_event/ghost_role/blob/announce(fake) if(prob(75)) - priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak5") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index a838b62e0d..d422a0aa4f 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -38,7 +38,7 @@ if(prob(50)) priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 71f19e5fd7..5a592d7f34 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -17,7 +17,7 @@ if(prob(50)) priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index f63ca39874..07a399a1b6 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -14,7 +14,7 @@ /datum/round_event/disease_outbreak/announce(fake) - priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg') + priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak7") /datum/round_event/disease_outbreak/setup() announceWhen = rand(15, 30) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 268a863ebc..10936409f9 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -15,7 +15,7 @@ if(prob(50)) priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/grid_check.dm b/code/modules/events/grid_check.dm index 8006d63b97..b289c8ae1b 100644 --- a/code/modules/events/grid_check.dm +++ b/code/modules/events/grid_check.dm @@ -9,7 +9,7 @@ startWhen = 1 /datum/round_event/grid_check/announce(fake) - priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg') + priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", "poweroff") /datum/round_event/grid_check/start() diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 3ae71f99d8..cd7c0e3b1f 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -26,7 +26,7 @@ /datum/round_event/ion_storm/announce(fake) if(announceEvent == ION_ANNOUNCE || (announceEvent == ION_RANDOM && prob(ionAnnounceChance)) || fake) - priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/ionstorm.ogg') + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", "ionstorm") /datum/round_event/ion_storm/start() diff --git a/code/modules/events/major_dust.dm b/code/modules/events/major_dust.dm index d1570ea09d..c08de985fb 100644 --- a/code/modules/events/major_dust.dm +++ b/code/modules/events/major_dust.dm @@ -19,7 +19,7 @@ if(prob(50)) priority_announce(pick(reason), "Collision Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm index 11af56526c..f668e2332c 100644 --- a/code/modules/events/meateor_wave.dm +++ b/code/modules/events/meateor_wave.dm @@ -1,11 +1,11 @@ -/datum/round_event_control/meteor_wave/meaty - name = "Meteor Wave: Meaty" - typepath = /datum/round_event/meteor_wave/meaty - weight = 2 - max_occurrences = 1 - -/datum/round_event/meteor_wave/meaty - wave_name = "meaty" - -/datum/round_event/meteor_wave/meaty/announce(fake) - priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.",'sound/ai/meteors.ogg') +/datum/round_event_control/meteor_wave/meaty + name = "Meteor Wave: Meaty" + typepath = /datum/round_event/meteor_wave/meaty + weight = 2 + max_occurrences = 1 + +/datum/round_event/meteor_wave/meaty + wave_name = "meaty" + +/datum/round_event/meteor_wave/meaty/announce(fake) + priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.", "meteors") diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index c575c97901..4aa9fb305d 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -32,8 +32,6 @@ determine_wave_type() /datum/round_event/meteor_wave/proc/determine_wave_type() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - wave_name = "halloween" if(!wave_name) wave_name = pickweight(list( "normal" = 50, @@ -45,7 +43,10 @@ if("threatening") wave_type = GLOB.meteors_threatening if("catastrophic") - wave_type = GLOB.meteors_catastrophic + if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) + wave_type = GLOB.meteorsSPOOKY + else + wave_type = GLOB.meteors_catastrophic if("meaty") wave_type = GLOB.meteorsB if("space dust") @@ -57,7 +58,7 @@ kill() /datum/round_event/meteor_wave/announce(fake) - priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely." : ""]", "Meteor Alert", 'sound/ai/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely." : ""]", "Meteor Alert", "meteors") /datum/round_event/meteor_wave/tick() if(ISMULTIPLE(activeFor, 3)) diff --git a/code/modules/events/mice_migration.dm b/code/modules/events/mice_migration.dm index 48a9f00423..911ce1dfbc 100644 --- a/code/modules/events/mice_migration.dm +++ b/code/modules/events/mice_migration.dm @@ -23,7 +23,7 @@ into the [location].", "Migration Alert", 'sound/effects/mousesqueek.ogg') else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 7256ddb6ea..477655db8b 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -25,7 +25,7 @@ ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names")) /datum/round_event/pirates/announce(fake) - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak if(fake) return threat = new @@ -77,7 +77,7 @@ else notify_ghosts("Space pirates are waking up!", source = spawner, action=NOTIFY_ATTACK, flashwindow = FALSE) - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') //CITADEL EDIT also metabreak here too + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") //CITADEL EDIT also metabreak here too //Shuttle equipment diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 4d3beacbeb..24be0e5644 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -33,7 +33,7 @@ if(prob(50)) priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index ba48779015..60e4e0e4b8 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -12,7 +12,7 @@ announceWhen = 1 /datum/round_event/radiation_storm/announce(fake) - priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg') + priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", "radiation") //sound not longer matches the text, but an audible warning is probably good /datum/round_event/radiation_storm/start() diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 769e32275b..3fe52c338b 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -32,7 +32,7 @@ if(prob(50)) priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -43,7 +43,7 @@ if(prob(50)) priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -54,7 +54,7 @@ if(prob(50)) priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -65,7 +65,7 @@ if(prob(50)) priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -76,7 +76,7 @@ if(prob(50)) priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -87,7 +87,7 @@ if(prob(50)) priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead.", "CentCom Spacepizza Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -98,7 +98,7 @@ if(prob(50)) priority_announce("Cargo: One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?", "CentCom Janitorial Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -110,7 +110,7 @@ if(prob(50)) priority_announce("Cargo: 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.", "CentCom Security Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -122,7 +122,7 @@ if(prob(50)) priority_announce("Cargo: We have discovered a warehouse of DELTA locked crates, we cant store any more of them at CC can you take them for us?.", "CentCom Security Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index 58c52cbec3..a6c333145e 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -16,7 +16,7 @@ spawncount = rand(5, 8) /datum/round_event/spider_infestation/announce(fake) - priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg') + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", "aliens") /datum/round_event/spider_infestation/start() diff --git a/code/modules/events/wizard/magicarp.dm b/code/modules/events/wizard/magicarp.dm index ab23c30e00..57e2a2a051 100644 --- a/code/modules/events/wizard/magicarp.dm +++ b/code/modules/events/wizard/magicarp.dm @@ -36,10 +36,11 @@ projectilesound = 'sound/weapons/emitter.ogg' maxHealth = 50 health = 50 + gold_core_spawnable = NO_SPAWN var/allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection, /obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball, /obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage) - + /mob/living/simple_animal/hostile/carp/ranged/Initialize() projectiletype = pick(allowed_projectile_types) . = ..() diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 420582ddab..3d560aefb8 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -13,7 +13,7 @@ if(istype(I, /obj/item/storage)) var/obj/item/storage/S = I - GET_COMPONENT_FROM(STR, /datum/component/storage, S) + var/datum/component/storage/STR = S.GetComponent(/datum/component/storage) if(prob(upgrade_scroll_chance) && S.contents.len < STR.max_items && !S.invisibility) var/obj/item/upgradescroll/scroll = new SEND_SIGNAL(S, COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE) diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index bb601b7c82..9dbe1443d1 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -29,7 +29,7 @@ wormholes += new /obj/effect/portal/wormhole(T, null, 0, null, FALSE) /datum/round_event/wormholes/announce(fake) - priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/ai/spanomalies.ogg') + priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", "spanomalies") /datum/round_event/wormholes/tick() if(activeFor % shift_frequency == 0) diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm index 5e34c934d9..5b0b4bc1f8 100644 --- a/code/modules/fields/fields.dm +++ b/code/modules/fields/fields.dm @@ -283,7 +283,7 @@ var/field_type = /datum/proximity_monitor/advanced/debug var/operating = FALSE var/datum/proximity_monitor/advanced/current = null - var/datum/component/mobhook + var/mob/listeningTo /obj/item/multitool/field_debug/Initialize() . = ..() @@ -292,7 +292,7 @@ /obj/item/multitool/field_debug/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(current) - QDEL_NULL(mobhook) + listeningTo = null return ..() /obj/item/multitool/field_debug/proc/setup_debug_field() @@ -303,16 +303,20 @@ /obj/item/multitool/field_debug/attack_self(mob/user) operating = !operating to_chat(user, "You turn [src] [operating? "on":"off"].") - QDEL_NULL(mobhook) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + listeningTo = null if(!istype(current) && operating) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_mob_move))) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) + listeningTo = user setup_debug_field() else if(!operating) QDEL_NULL(current) /obj/item/multitool/field_debug/dropped() . = ..() - QDEL_NULL(mobhook) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + listeningTo = null /obj/item/multitool/field_debug/proc/on_mob_move() check_turf(get_turf(src)) diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm index 11a5d416e7..a063296edf 100644 --- a/code/modules/fields/timestop.dm +++ b/code/modules/fields/timestop.dm @@ -133,6 +133,7 @@ /datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/L) if(L.anti_magic_check(check_anti_magic, check_holy)) + immune += L return L.Stun(20, 1, 1) frozen_mobs[L] = L.anchored diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 88f72d27c3..7232b717df 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -771,7 +771,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( ..() var/turf/source = random_far_turf() if(!sound_type) - sound_type = pick("airlock","airlock pry","console","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack") + sound_type = pick("airlock","airlock pry","console","flash","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack") feedback_details += "Type: [sound_type]" //Strange audio switch(sound_type) @@ -788,6 +788,8 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.playsound_local(source,'sound/effects/explosion1.ogg', 50, 1) else target.playsound_local(source, 'sound/effects/explosion2.ogg', 50, 1) + if("flash") + target.playsound_local(source, 'sound/weapons/flash.ogg', 50, 1) if("far explosion") target.playsound_local(source, 'sound/effects/explosionfar.ogg', 50, 1) if("glass") @@ -876,7 +878,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if("blob alert") to_chat(target, "

Biohazard Alert

") to_chat(target, "

Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.

") - SEND_SOUND(target, 'sound/ai/outbreak5.ogg') + SEND_SOUND(target, get_announcer_sound("outbreak5")) if("ratvar") target.playsound_local(target, 'sound/machines/clockcult/ark_deathrattle.ogg', 50, FALSE, pressure_affected = FALSE) target.playsound_local(target, 'sound/effects/clockcult_gateway_disrupted.ogg', 50, FALSE, pressure_affected = FALSE) @@ -885,15 +887,15 @@ GLOBAL_LIST_INIT(hallucination_list, list( if("shuttle dock") to_chat(target, "

Priority Announcement

") to_chat(target, "

The Emergency Shuttle has docked with the station. You have 3 minutes to board the Emergency Shuttle.

") - SEND_SOUND(target, 'sound/ai/shuttledock.ogg') + SEND_SOUND(target, get_announcer_sound("shuttledock")) if("malf ai") //AI is doomsdaying! to_chat(target, "

Anomaly Alert

") to_chat(target, "

Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.

") - SEND_SOUND(target, 'sound/ai/aimalf.ogg') + SEND_SOUND(target, get_announcer_sound("aimalf")) if("meteors") //Meteors inbound! to_chat(target, "

Meteor Alert

") to_chat(target, "

Meteors have been detected on collision course with the station.

") - SEND_SOUND(target, 'sound/ai/meteors.ogg') + SEND_SOUND(target, get_announcer_sound("meteors")) if("supermatter") SEND_SOUND(target, 'sound/magic/charge.ogg') to_chat(target, "You feel reality distort for a moment...") @@ -1291,4 +1293,4 @@ GLOBAL_LIST_INIT(hallucination_list, list( H.hal_target = target H.preparePixelProjectile(target, start) H.fire() - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 98f80331a7..7dadd2b12e 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -272,7 +272,7 @@ /obj/item/reagent_containers/food/snacks/cakeslice/bscc name = "blackberry and strawberry chocolate cake slice" desc = "Just a slice of cake filled with assortment of blackberries and strawberries!" - icon_state = "blackbarry_strawberries_cake_coco_cake_slice" + icon_state = "blackbarry_strawberries_cake_coco_slice" filling_color = "#FFD700" tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 9b87002738..b468b6b1d1 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -38,9 +38,7 @@ if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM) && !HAS_TRAIT(H, TRAIT_AGEUSIA)) to_chat(H,"I love this taste!") H.adjust_disgust(-5 + -2.5 * fraction) - GET_COMPONENT_FROM(mood, /datum/component/mood, H) - if(mood) - mood.add_event(null, "fav_food", /datum/mood_event/favorite_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food) last_check_time = world.time return ..() diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 796d630693..d6918d58aa 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -12,7 +12,7 @@ html, body { body { background: #E0E0E0; /*CIT CHANGE - darkens chatbox a lil*/ font-family: Verdana, sans-serif; - font-size: 9pt; + font-size: 13px; line-height: 1.2; overflow-x: hidden; overflow-y: scroll; @@ -302,7 +302,7 @@ h1.alert, h2.alert {color: #000000;} .disarm {color: #990000;} .passive {color: #660000;} -.userdanger {color: #ff0000; font-weight: bold; font-size: 24px;} +.userdanger {color: #ff0000; font-weight: bold; font-size: 185%;} .danger {color: #ff0000;} .warning {color: #ff0000; font-style: italic;} .alertwarning {color: #FF0000; font-weight: bold} @@ -330,12 +330,12 @@ h1.alert, h2.alert {color: #000000;} .cultitalic {color: #960000; font-style: italic;} .cultbold {color: #960000; font-style: italic; font-weight: bold;} -.cultboldtalic {color: #960000; font-weight: bold; font-size: 24px;} +.cultboldtalic {color: #960000; font-weight: bold; font-size: 185%;} -.cultlarge {color: #960000; font-weight: bold; font-size: 24px;} -.narsie {color: #960000; font-weight: bold; font-size: 120px;} -.narsiesmall {color: #960000; font-weight: bold; font-size: 48px;} -.colossus {color: #7F282A; font-size: 40px;} +.cultlarge {color: #960000; font-weight: bold; font-size: 185%;} +.narsie {color: #960000; font-weight: bold; font-size: 925%;} +.narsiesmall {color: #960000; font-weight: bold; font-size: 370%;} +.colossus {color: #7F282A; font-size: 310%;} .hierophant {color: #660099; font-weight: bold; font-style: italic;} .hierophant_warning {color: #660099; font-style: italic;} .purple {color: #5e2d79;} @@ -343,36 +343,36 @@ h1.alert, h2.alert {color: #000000;} .revennotice {color: #1d2953;} .revenboldnotice {color: #1d2953; font-weight: bold;} -.revenbignotice {color: #1d2953; font-weight: bold; font-size: 24px;} +.revenbignotice {color: #1d2953; font-weight: bold; font-size: 185%;} .revenminor {color: #823abb} .revenwarning {color: #760fbb; font-style: italic;} -.revendanger {color: #760fbb; font-weight: bold; font-size: 24px;} +.revendanger {color: #760fbb; font-weight: bold; font-size: 185%;} .umbra {color: #5000A0;} .umbra_emphasis {color: #5000A0; font-weight: bold; font-style: italic;} -.umbra_large {color: #5000A0; font-size: 24px; font-weight: bold; font-style: italic;} +.umbra_large {color: #5000A0; font-size: 185%; font-weight: bold; font-style: italic;} -.deconversion_message {color: #5000A0; font-size: 24px; font-style: italic;} +.deconversion_message {color: #5000A0; font-size: 185%; font-style: italic;} .brass {color: #BE8700;} .heavy_brass {color: #BE8700; font-weight: bold; font-style: italic;} -.large_brass {color: #BE8700; font-size: 24px;} -.big_brass {color: #BE8700; font-size: 24px; font-weight: bold; font-style: italic;} -.ratvar {color: #BE8700; font-size: 48px; font-weight: bold; font-style: italic;} +.large_brass {color: #BE8700; font-size: 185%;} +.big_brass {color: #BE8700; font-size: 185%; font-weight: bold; font-style: italic;} +.ratvar {color: #BE8700; font-size: 370%; font-weight: bold; font-style: italic;} .alloy {color: #42474D;} .heavy_alloy {color: #42474D; font-weight: bold; font-style: italic;} -.nezbere_large {color: #42474D; font-size: 24px; font-weight: bold; font-style: italic;} +.nezbere_large {color: #42474D; font-size: 185%; font-weight: bold; font-style: italic;} .nezbere {color: #42474D; font-weight: bold; font-style: italic;} .nezbere_small {color: #42474D;} -.sevtug_large {color: #AF0AAF; font-size: 24px; font-weight: bold; font-style: italic;} +.sevtug_large {color: #AF0AAF; font-size: 185%; font-weight: bold; font-style: italic;} .sevtug {color: #AF0AAF; font-weight: bold; font-style: italic;} .sevtug_small {color: #AF0AAF;} -.inathneq_large {color: #1E8CE1; font-size: 24px; font-weight: bold; font-style: italic;} +.inathneq_large {color: #1E8CE1; font-size: 185%; font-weight: bold; font-style: italic;} .inathneq {color: #1E8CE1; font-weight: bold; font-style: italic;} .inathneq_small {color: #1E8CE1;} -.nzcrentr_large {color: #DAAA18; font-size: 24px; font-weight: bold; font-style: italic;} +.nzcrentr_large {color: #DAAA18; font-size: 185%; font-weight: bold; font-style: italic;} .nzcrentr {color: #DAAA18; font-weight: bold; font-style: italic;} .nzcrentr_small {color: #DAAA18;} -.neovgre_large {color: #6E001A; font-size: 24px; font-weight: bold; font-style: italic;} +.neovgre_large {color: #6E001A; font-size: 185%; font-weight: bold; font-style: italic;} .neovgre {color: #6E001A; font-weight: bold; font-style: italic;} .neovgre_small {color: #6E001A;} @@ -384,7 +384,7 @@ h1.alert, h2.alert {color: #000000;} .alertalien {color: #00c000; font-weight: bold;} .changeling {color: #800080; font-style: italic;} -.spider {color: #4d004d;} +.spider {color: #4d004d; font-weight: bold; font-size: 185%;} .interface {color: #330033;} @@ -392,14 +392,14 @@ h1.alert, h2.alert {color: #000000;} .papyrus {font-family: "Papyrus", cursive, sans-serif;} .robot {font-family: "Courier New", cursive, sans-serif;} -.command_headset {font-weight: bold; font-size: 24px;} -.small {font-size: 8px;} -.big {font-size: 24px;} -.reallybig {font-size: 32px;} -.extremelybig {font-size: 40px;} -.greentext {color: #00FF00; font-size: 24px;} -.redtext {color: #FF0000; font-size: 24px;} -.clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} +.command_headset {font-weight: bold; font-size: 160%;} +.small {font-size: 60%;} +.big {font-size: 185%;} +.reallybig {font-size: 245%;} +.extremelybig {font-size: 310%;} +.greentext {color: #00FF00; font-size: 185%;} +.redtext {color: #FF0000; font-size: 185%;} +.clown {color: #FF69Bf; font-size: 160%; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} .his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} .spooky {color: #FF6100;} .velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} @@ -431,9 +431,9 @@ h1.alert, h2.alert {color: #000000;} .icon {height: 1em; width: auto;} .memo {color: #638500; text-align: center;} -.memoedit {text-align: center; font-size: 16px;} +.memoedit {text-align: center; font-size: 125%;} .abductor {color: #800080; font-style: italic;} -.mind_control {color: #A00D6F; font-size: 3; font-weight: bold; font-style: italic;} +.mind_control {color: #A00D6F; font-size: 100%; font-weight: bold; font-style: italic;} .slime {color: #00CED1;} .drone {color: #848482;} .monkey {color: #975032;} @@ -441,7 +441,7 @@ h1.alert, h2.alert {color: #000000;} .resonate {color: #298F85;} .monkeyhive {color: #774704;} -.monkeylead {color: #774704; font-size: 2;} +.monkeylead {color: #774704; font-size: 125%;} .connectionClosed, .fatalError {background: red; color: white; padding: 5px;} .connectionClosed.restored {background: green;} diff --git a/code/modules/goonchat/browserassets/css/browserOutput_dark.css b/code/modules/goonchat/browserassets/css/browserOutput_dark.css index 2e1fe8cdec..3377bcf72c 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput_dark.css +++ b/code/modules/goonchat/browserassets/css/browserOutput_dark.css @@ -28,20 +28,20 @@ a:visited {color: #7c00e6;} #userBar .toggle {background: #272727;} /* MOTD */ -.motd {color: #E0E0E0; font-family: Verdana, sans-serif;} -.motd h1, .motd h2, .motd h3, .motd h4, .motd h5, .motd h6 {color: #E0E0E0; text-decoration: underline;} +.motd {color: #E0E0E0;} +.motd h1, .motd h2, .motd h3, .motd h4, .motd h5, .motd h6 {color: #E0E0E0;} .motd a, .motd a:link, .motd a:visited, .motd a:active, .motd a:hover {color: #E0E0E0;} -h1, h2, h3, h4, h5, h6 {color: #E0E0E0;font-family: Georgia, Verdana, sans-serif;} +h1, h2, h3, h4, h5, h6 {color: #E0E0E0;} h1.alert, h2.alert {color: #E0E0E0;} -.ooc {color: #cca300; font-weight: bold;} -.looc {color: #d8b555; font-weight: bold;} -.antagooc {color: #ce254f; font-weight: bold;} -.adminobserverooc {color: #0099cc; font-weight: bold;} -.adminooc {color: #3d5bc3; font-weight: bold;} +.ooc {color: #cca300;} +.looc {color: #d8b555;} +.antagooc {color: #ce254f;} +.adminobserverooc {color: #0099cc;} +.adminooc {color: #3d5bc3;} -.admin {color: #5975da; font-weight: bold;} +.admin {color: #5975da;} .deadsay {color: #e2c1ff;} .radio {color: #1ecc43;} @@ -65,82 +65,82 @@ h1.alert, h2.alert {color: #99aab5;} .disarm {color: #b42525;} .passive {color: #a00f0f;} -.userdanger {color: #c51e1e; font-weight: bold; font-size: 24px;} +.userdanger {color: #c51e1e;} .danger {color: #c51e1e;} -.warning {color: #c51e1e; font-style: italic;} -.alertwarning {color: #c51e1e; font-weight: bold} -.boldwarning {color: #c51e1e; font-style: italic; font-weight: bold} -.announce {color: #c51e1e; font-weight: bold;} -.boldannounce {color: #c51e1e; font-weight: bold;} -.greenannounce {color: #059223; font-weight: bold;} +.warning {color: #c51e1e;} +.alertwarning {color: #c51e1e;} +.boldwarning {color: #c51e1e;} +.announce {color: #c51e1e;} +.boldannounce {color: #c51e1e;} +.greenannounce {color: #059223;} .info {color: #6685f5;} .notice {color: #6685f5;} -.boldnotice {color: #6685f5; font-weight: bold;} +.boldnotice {color: #6685f5;} .adminnotice {color: #6685f5;} -.adminhelp {color: #ff0000; font-weight: bold;} -.unconscious {color: #E0E0E0; font-weight: bold;} -.red {color: #FF0000} +.adminhelp {color: #ff0000;} +.unconscious {color: #E0E0E0;} +.red {color: #FF0000;} .pink {color: #ff70c1;} -.blue {color: #215cff} +.blue {color: #215cff;} .green {color: #059223;} .nicegreen {color: #059223;} -.userlove {color: #ff42a6; font-style: italic; font-weight: bold; text-shadow: 0 0 6px #82365e;} -.love {color: #ff4591; font-style: italic; text-shadow: 0 0 6px #994449;} +.userlove {color: #ff42a6; text-shadow: 0 0 6px #82365e;} +.love {color: #ff4591; text-shadow: 0 0 6px #994449;} .shadowling {color: #8e8a99;} .cult {color: #aa1c1c;} -.cultitalic {color: #aa1c1c; font-style: italic;} -.cultbold {color: #aa1c1c; font-style: italic; font-weight: bold;} -.cultboldtalic {color: #aa1c1c; font-weight: bold; font-size: 24px;} +.cultitalic {color: #aa1c1c;} +.cultbold {color: #aa1c1c;} +.cultboldtalic {color: #aa1c1c;} -.cultlarge {color: #aa1c1c; font-weight: bold; font-size: 24px;} -.narsie {color: #aa1c1c; font-weight: bold; font-size: 120px;} -.narsiesmall {color: #aa1c1c; font-weight: bold; font-size: 48px;} -.hierophant {color: #b441ee; font-weight: bold; font-style: italic;} -.hierophant_warning {color: #c56bf1; font-style: italic;} +.cultlarge {color: #aa1c1c;} +.narsie {color: #aa1c1c;} +.narsiesmall {color: #aa1c1c;} +.hierophant {color: #b441ee;} +.hierophant_warning {color: #c56bf1;} .purple {color: #9956d3;} .holoparasite {color: #88809c;} .revennotice {color: #3645aa;} -.revenboldnotice {color: #3645aa; font-weight: bold;} -.revenbignotice {color: #3645aa; font-weight: bold; font-size: 24px;} -.revenminor {color: #823ddd} -.revenwarning {color: #8911d9; font-style: italic;} -.revendanger {color: #8911d9; font-weight: bold; font-size: 24px;} +.revenboldnotice {color: #3645aa;} +.revenbignotice {color: #3645aa;} +.revenminor {color: #823ddd;} +.revenwarning {color: #8911d9;} +.revendanger {color: #8911d9;} .umbra {color: #7c00e6;} -.umbra_emphasis {color: #7c00e6; font-weight: bold; font-style: italic;} -.umbra_large {color: #7c00e6; font-size: 24px; font-weight: bold; font-style: italic;} +.umbra_emphasis {color: #7c00e6;} +.umbra_large {color: #7c00e6;} -.deconversion_message {color: #a947ff; font-size: 24px; font-style: italic;} +.deconversion_message {color: #a947ff;} .alloy {color: #545b64;} -.heavy_alloy {color: #545b64; font-weight: bold; font-style: italic;} -.nezbere_large {color: #545b64; font-size: 24px; font-weight: bold; font-style: italic;} -.nezbere {color: #545b64; font-weight: bold; font-style: italic;} +.heavy_alloy {color: #545b64;} +.nezbere_large {color: #545b64;} +.nezbere {color: #545b64;} .nezbere_small {color: #545b64;} -.inathneq_large {color: #1d7dc7; font-size: 24px; font-weight: bold; font-style: italic;} -.inathneq {color: #1d7dc7; font-weight: bold; font-style: italic;} +.inathneq_large {color: #1d7dc7;} +.inathneq {color: #1d7dc7;} .inathneq_small {color: #1d7dc7;} -.neovgre_large {color: #7c0622; font-size: 24px; font-weight: bold; font-style: italic;} -.neovgre {color: #7c0622; font-weight: bold; font-style: italic;} +.neovgre_large {color: #7c0622;} +.neovgre {color: #7c0622;} .neovgre_small {color: #7c0622;} .newscaster {color: #c05d5d;} -.ghostalert {color: #6600ff; font-style: italic; font-weight: bold;} +.ghostalert {color: #6600ff;} .alien {color: #855d85;} .noticealien {color: #059223;} -.alertalien {color: #059223; font-weight: bold;} -.changeling {color: #059223; font-style: italic;} +.alertalien {color: #059223;} +.changeling {color: #059223;} .spider {color: #8800ff;} .interface {color: #750e75;} -.greentext {color: #059223; font-size: 24px;} -.redtext {color: #c51e1e; font-size: 24px;} -.clown {color: #ff70c1; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} -.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} +.greentext {color: #059223;} +.redtext {color: #c51e1e;} +.clown {color: #ff70c1;} +.velvet {color: #660015;} @keyframes velvet { 0% { color: #890020; } 40% { color: #c51e1e; } @@ -149,11 +149,11 @@ h1.alert, h2.alert {color: #99aab5;} 100% { color: #890020; } } -.abductor {color: #c204c2; font-style: italic;} -.mind_control {color: #df3da9; font-size: 3; font-weight: bold; font-style: italic;} +.abductor {color: #c204c2;} +.mind_control {color: #df3da9;} .drone {color: #979795;} .monkeyhive {color: #a56408;} -.monkeylead {color: #af6805; font-size: 2;} +.monkeylead {color: #af6805;} -.internal.boldnshit {color: #3d5bc3; font-weight: bold;} +.internal.boldnshit {color: #3d5bc3;} diff --git a/code/modules/goonchat/browserassets/css/browserOutput_light.css b/code/modules/goonchat/browserassets/css/browserOutput_light.css index 098bd25367..b7036c74d8 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput_light.css +++ b/code/modules/goonchat/browserassets/css/browserOutput_light.css @@ -12,222 +12,3 @@ body {background: #F1F1F1;} /* ADMIN CONTEXT MENU */ .contextMenu {background-color: #ddd;} - - -.icon-stack {height: 1em; line-height: 1em; width: 1em; vertical-align: middle; margin-top: -2px;} - - -/***************************************** -* -* OUTPUT ACTUALLY RELATED TO MESSAGES -* -******************************************/ - -/* MOTD */ -.motd {color: #638500; font-family: Verdana, sans-serif;} -.motd h1, .motd h2, .motd h3, .motd h4, .motd h5, .motd h6 {color: #638500; text-decoration: underline;} -.motd a, .motd a:link, .motd a:visited, .motd a:active, .motd a:hover {color: #638500;} - -/* ADD HERE FOR BOLD */ -.bold, .name, .prefix, .ooc, .looc, .adminooc, .admin, .medal, .yell {font-weight: bold;} - -/* ADD HERE FOR ITALIC */ -.italic, .italics, .emote {font-style: italic;} - -/* OUTPUT COLORS */ -.highlight {background: yellow;} - -h1, h2, h3, h4, h5, h6 {color: #0000ff;font-family: Georgia, Verdana, sans-serif;} -h1.alert, h2.alert {color: #000000;} - -em {font-style: normal; font-weight: bold;} - -.ooc {color: #002eb8; font-weight: bold;} -.looc {color: #6699CC; font-weight: bold;} -.antagooc {color: #b8002e; font-weight: bold;} -.adminobserverooc {color: #0099cc; font-weight: bold;} -.adminooc {color: #700038; font-weight: bold;} - -.adminsay {color: #FF4500} -.admin {color: #386aff; font-weight: bold;} - -.name { font-weight: bold;} - -.say {} -.deadsay {color: #5c00e6;} -.binarysay {color: #20c20e; background-color: #000000; display: block;} -.binarysay a {color: #00ff00;} -.binarysay a:active, .binarysay a:visited {color: #88ff88;} -.radio {color: #008000;} -.sciradio {color: #993399;} -.comradio {color: #948f02;} -.secradio {color: #a30000;} -.medradio {color: #337296;} -.engradio {color: #fb5613;} -.suppradio {color: #a8732b;} -.servradio {color: #6eaa2c;} -.syndradio {color: #6d3f40;} -.centcomradio {color: #686868;} -.aiprivradio {color: #ff00ff;} -.redteamradio {color: #ff0000;} -.blueteamradio {color: #0000ff;} - -.yell { font-weight: bold;} - -.alert {color: #ff0000;} -h1.alert, h2.alert {color: #000000;} - -.emote { font-style: italic;} -.selecteddna {color: #ffffff; background-color: #001B1B} - -.attack {color: #ff0000;} -.disarm {color: #990000;} -.passive {color: #660000;} - -.userdanger {color: #ff0000; font-weight: bold; font-size: 24px;} -.danger {color: #ff0000;} -.warning {color: #ff0000; font-style: italic;} -.alertwarning {color: #FF0000; font-weight: bold} -.boldwarning {color: #ff0000; font-style: italic; font-weight: bold} -.announce {color: #228b22; font-weight: bold;} -.boldannounce {color: #ff0000; font-weight: bold;} -.greenannounce {color: #00ff00; font-weight: bold;} -.rose {color: #ff5050;} -.info {color: #0000CC;} -.notice {color: #000099;} -.boldnotice {color: #000099; font-weight: bold;} -.adminnotice {color: #0000ff;} -.adminhelp {color: #ff0000; font-weight: bold;} -.unconscious {color: #0000ff; font-weight: bold;} -.suicide {color: #ff5050; font-style: italic;} -.green {color: #03ff39;} -.red {color: #FF0000;} -.pink {color: #FF69Bf;} -.blue {color: #0000FF;} -.nicegreen {color: #14a833;} -.userlove {color: #FF1493; font-style: italic; font-weight: bold; text-shadow: 0 0 6px #ff6dbc;} -.love {color: #ff006a; font-style: italic; text-shadow: 0 0 6px #ff6d6d;} -.shadowling {color: #3b2769;} -.cult {color: #960000;} - -.cultitalic {color: #960000; font-style: italic;} -.cultbold {color: #960000; font-style: italic; font-weight: bold;} -.cultboldtalic {color: #960000; font-weight: bold; font-size: 24px;} - -.cultlarge {color: #960000; font-weight: bold; font-size: 24px;} -.narsie {color: #960000; font-weight: bold; font-size: 120px;} -.narsiesmall {color: #960000; font-weight: bold; font-size: 48px;} -.colossus {color: #7F282A; font-size: 40px;} -.hierophant {color: #660099; font-weight: bold; font-style: italic;} -.hierophant_warning {color: #660099; font-style: italic;} -.purple {color: #5e2d79;} -.holoparasite {color: #35333a;} - -.revennotice {color: #1d2953;} -.revenboldnotice {color: #1d2953; font-weight: bold;} -.revenbignotice {color: #1d2953; font-weight: bold; font-size: 24px;} -.revenminor {color: #823abb} -.revenwarning {color: #760fbb; font-style: italic;} -.revendanger {color: #760fbb; font-weight: bold; font-size: 24px;} -.umbra {color: #5000A0;} -.umbra_emphasis {color: #5000A0; font-weight: bold; font-style: italic;} -.umbra_large {color: #5000A0; font-size: 24px; font-weight: bold; font-style: italic;} - -.deconversion_message {color: #5000A0; font-size: 24px; font-style: italic;} - -.brass {color: #BE8700;} -.heavy_brass {color: #BE8700; font-weight: bold; font-style: italic;} -.large_brass {color: #BE8700; font-size: 24px;} -.big_brass {color: #BE8700; font-size: 24px; font-weight: bold; font-style: italic;} -.ratvar {color: #BE8700; font-size: 48px; font-weight: bold; font-style: italic;} -.alloy {color: #42474D;} -.heavy_alloy {color: #42474D; font-weight: bold; font-style: italic;} -.nezbere_large {color: #42474D; font-size: 24px; font-weight: bold; font-style: italic;} -.nezbere {color: #42474D; font-weight: bold; font-style: italic;} -.nezbere_small {color: #42474D;} -.sevtug_large {color: #AF0AAF; font-size: 24px; font-weight: bold; font-style: italic;} -.sevtug {color: #AF0AAF; font-weight: bold; font-style: italic;} -.sevtug_small {color: #AF0AAF;} -.inathneq_large {color: #1E8CE1; font-size: 24px; font-weight: bold; font-style: italic;} -.inathneq {color: #1E8CE1; font-weight: bold; font-style: italic;} -.inathneq_small {color: #1E8CE1;} -.nzcrentr_large {color: #DAAA18; font-size: 24px; font-weight: bold; font-style: italic;} -.nzcrentr {color: #DAAA18; font-weight: bold; font-style: italic;} -.nzcrentr_small {color: #DAAA18;} -.neovgre_large {color: #6E001A; font-size: 24px; font-weight: bold; font-style: italic;} -.neovgre {color: #6E001A; font-weight: bold; font-style: italic;} -.neovgre_small {color: #6E001A;} - -.newscaster {color: #800000;} -.ghostalert {color: #5c00e6; font-style: italic; font-weight: bold;} - -.alien {color: #543354;} -.noticealien {color: #00c000;} -.alertalien {color: #00c000; font-weight: bold;} -.changeling {color: #800080; font-style: italic;} - -.spider {color: #4d004d;} - -.interface {color: #330033;} - -.sans {font-family: "Comic Sans MS", cursive, sans-serif;} -.papyrus {font-family: "Papyrus", cursive, sans-serif;} -.robot {font-family: "Courier New", cursive, sans-serif;} - -.command_headset {font-weight: bold; font-size: 24px;} -.small {font-size: 8px;} -.big {font-size: 24px;} -.reallybig {font-size: 32px;} -.extremelybig {font-size: 40px;} -.greentext {color: #00FF00; font-size: 24px;} -.redtext {color: #FF0000; font-size: 24px;} -.clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} -.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} -.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} -@keyframes velvet { - 0% { color: #400020; } - 40% { color: #FF0000; } - 50% { color: #FF8888; } - 60% { color: #FF0000; } - 100% { color: #400020; } -} - -.hypnophrase {color: #202020; font-weight: bold; animation: hypnocolor 1500ms infinite;} -@keyframes hypnocolor { - 0% { color: #202020; } - 25% { color: #4b02ac; } - 50% { color: #9f41f1; } - 75% { color: #541c9c; } - 100% { color: #7adbf3; } -} - -.phobia {color: #dd0000; font-weight: bold; animation: phobia 750ms infinite;} -@keyframes phobia { - 0% { color: #f75a5a; } - 50% { color: #dd0000; } - 100% { color: #f75a5a; } -} - - -.icon {height: 1em; width: auto;} - -.memo {color: #638500; text-align: center;} -.memoedit {text-align: center; font-size: 16px;} -.abductor {color: #800080; font-style: italic;} -.mind_control {color: #A00D6F; font-size: 3; font-weight: bold; font-style: italic;} -.slime {color: #00CED1;} -.drone {color: #848482;} -.monkey {color: #975032;} -.swarmer {color: #2C75FF;} -.resonate {color: #298F85;} - -.monkeyhive {color: #774704;} -.monkeylead {color: #774704; font-size: 2;} - -.connectionClosed, .fatalError {background: red; color: white; padding: 5px;} -.connectionClosed.restored {background: green;} -.internal.boldnshit {color: #000099; font-weight: bold;} - -/* HELPER CLASSES */ -.text-normal {font-weight: normal; font-style: normal;} -.hidden {display: none; visibility: hidden;} diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 829cb55312..3cb05a8f7e 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -18,7 +18,7 @@ max_occurrences = 10 /datum/round_event/rabbitrelease/announce(fake) - priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", 'sound/ai/aliens.ogg') + priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", "aliens") /datum/round_event/rabbitrelease/start() @@ -68,7 +68,7 @@ /obj/item/storage/bag/easterbasket/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/chocolateegg, /obj/item/reagent_containers/food/snacks/boiledegg)) /obj/item/storage/bag/easterbasket/proc/countEggs() diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm index 129f4e29b6..aa119dca84 100644 --- a/code/modules/holiday/halloween/bartholomew.dm +++ b/code/modules/holiday/halloween/bartholomew.dm @@ -20,6 +20,7 @@ if(!active) say("Meow!") return + for(var/I2 in items_list) if(istype(I, I2)) qdel(I) @@ -36,6 +37,7 @@ return say("Hello there, I'm Bartholomew, Jacqueline's Familiar.") sleep(20) + say("I'm currently seeking items to put into my pot, if we get the right items, it should crystalise into a magic candy!") if(!iscarbon(user)) say("Though... I'm not sure you can help me.") @@ -52,6 +54,15 @@ message += "currently seem to have the most magic potential." sleep(15) say("[message]") + sleep(15) + //To help people find her + for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1]) + var/turf/L1 = J.loc + if(!L1) //Incase someone uh.. puts her in a locker + return + var/area/L2 = L1.loc + if(L2) + say("Also, it seems that Jacqueline is currently at the [L2], if you're looking for her too.") /obj/item/barthpot/proc/generate_items() var/length = LAZYLEN(items_list) @@ -64,79 +75,65 @@ /obj/item/clothing/head/that = 1, /obj/item/clothing/head/ushanka = 1, /obj/item/clothing/head/welding = 1, - /obj/item/clothing/mask/gas = 15, + /obj/item/clothing/mask/gas = 10, /obj/item/clothing/suit/hazardvest = 1, - /obj/item/clothing/under/rank/vice = 1, - /obj/item/clothing/suit/hooded/flashsuit = 2, - /obj/item/clothing/accessory/medal/greytide = 1, + /obj/item/clothing/suit/hooded/flashsuit = 1, /obj/item/assembly/prox_sensor = 4, /obj/item/assembly/timer = 3, - /obj/item/flashlight = 4, + /obj/item/flashlight = 6, /obj/item/flashlight/pen = 1, - /obj/effect/spawner/lootdrop/glowstick = 4, - /obj/effect/spawner/lootdrop/mre = 3, + /obj/item/flashlight/glowstick = 4, /obj/item/multitool = 2, - /obj/item/radio/off = 2, + /obj/item/radio = 2, /obj/item/t_scanner = 5, /obj/item/airlock_painter = 1, - /obj/item/stack/cable_coil/ = 4, + /obj/item/stack/cable_coil = 6, /obj/item/stack/medical/bruise_pack = 1, /obj/item/stack/rods = 3, /obj/item/stack/sheet/cardboard = 2, /obj/item/stack/sheet/metal = 1, /obj/item/stack/sheet/mineral/plasma = 1, /obj/item/stack/sheet/rglass = 1, - /obj/item/book/manual/wiki/engineering_construction = 1, - /obj/item/book/manual/wiki/engineering_hacking = 1, - /obj/item/clothing/head/cone = 1, - /obj/item/coin/silver = 1, - /obj/item/coin/twoheaded = 1, - /obj/item/poster/random_contraband = 1, - /obj/item/poster/random_official = 1, - /obj/item/crowbar = 1, - /obj/item/crowbar/red = 1, - /obj/item/extinguisher = 11, + /obj/item/coin = 1, + /obj/item/crowbar = 4, + /obj/item/extinguisher = 3, /obj/item/hand_labeler = 1, - /obj/item/paper/crumpled = 1, - /obj/item/pen = 1, + /obj/item/paper = 6, + /obj/item/pen = 5, /obj/item/reagent_containers/spray/pestspray = 1, /obj/item/reagent_containers/rag = 3, /obj/item/stock_parts/cell = 3, /obj/item/storage/belt/utility = 2, - /obj/item/storage/box = 2, - /obj/item/storage/box/cups = 1, + /obj/item/storage/box = 4, + /obj/item/reagent_containers/food/drinks/sillycup = 1, /obj/item/storage/box/donkpockets = 1, - /obj/item/storage/box/lights/mixed = 3, + /obj/item/storage/box/lights/mixed = 1, /obj/item/storage/box/hug/medical = 1, - /obj/item/storage/fancy/cigarettes/dromedaryco = 1, - /obj/item/storage/toolbox/mechanical = 1, + /obj/item/storage/fancy/cigarettes = 1, + /obj/item/storage/toolbox = 1, /obj/item/screwdriver = 3, /obj/item/tank/internals/emergency_oxygen = 2, /obj/item/vending_refill/cola = 1, /obj/item/weldingtool = 3, - /obj/item/wirecutters = 1, + /obj/item/wirecutters = 2, /obj/item/wrench = 4, - /obj/item/relic = 3, - /obj/item/weaponcrafting/receiver = 2, - /obj/item/clothing/head/cone = 2, - /obj/item/grenade/smokebomb = 2, + /obj/item/weaponcrafting/receiver = 1, /obj/item/geiger_counter = 3, - /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 1, - /obj/item/radio/headset = 1, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 5, /obj/item/assembly/infra = 1, /obj/item/assembly/igniter = 2, /obj/item/assembly/signaler = 2, - /obj/item/assembly/mousetrap = 2, - /obj/item/reagent_containers/syringe = 2, + /obj/item/assembly/mousetrap = 5, + /obj/item/reagent_containers/syringe = 5, /obj/item/clothing/gloves = 8, - /obj/item/clothing/shoes/laceup = 1, - /obj/item/storage/secure/briefcase = 3, - /obj/item/storage/toolbox/artistic = 2, - /obj/item/toy/eightball = 1, - /obj/item/reagent_containers/pill/floorpill = 1, - /obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 2, - /obj/item/clothing/shoes = 2) - if(length == 5) + /obj/item/storage/toolbox = 2, + /obj/item/reagent_containers/pill = 2, + /obj/item/clothing/shoes = 8, + /obj/item/clothing/head = 3, + /obj/item/reagent_containers/food/snacks = 3, + /obj/item/reagent_containers/syringe/dart = 2, + /obj/item/reagent_containers/food/drinks/soda_cans = 5) + if(length >= 5) return TRUE //var/metalist = pickweight(GLOB.maintenance_loot) for(var/i = length, i <= 5, i+=1) @@ -144,5 +141,18 @@ if(!item) i-=1 continue + for(var/obj/item_dupe in items_list) //No duplicates + if(item_dupe == item) + i-=1 + continue items_list += item return TRUE + +/obj/item/pinpointer/jacq + name = "The Jacq-Tracq" + desc = "A handheld tracking device that locks onto witchy signals." + +/obj/item/pinpointer/jacq/attack_self(mob/living/user) + for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1]) + target = J + ..() diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index b2f69df2e4..ed9254c295 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -40,18 +40,22 @@ speech_span = "spooky" friendly = "pets" response_help = "chats with" + light_range = 3 + light_color = "#ff9842" var/last_poof var/progression = list() //Keep track of where people are in the story. var/active = TRUE //Turn this to false to keep normal mob behavour + var/cached_z /mob/living/simple_animal/jacq/Initialize() ..() + cached_z = z poof() /mob/living/simple_animal/jacq/Life() ..() if(!ckey) - if((last_poof+4 MINUTES) < world.realtime) + if((last_poof+3 MINUTES) < world.realtime) poof() /mob/living/simple_animal/jacq/Destroy() //I.e invincible @@ -64,7 +68,7 @@ /mob/living/simple_animal/jacq/death() //What is alive may never die visible_message("[src] cackles, \"You'll nae get rid a me that easily!\"") playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 0.25) - health = 20 + health = 25 poof() /mob/living/simple_animal/jacq/attack_hand(mob/living/carbon/human/M) @@ -96,14 +100,39 @@ s.start() visible_message("[src] disappears in a puff of smoke!") canmove = TRUE + health = 25 var/hp_list = list() for(var/obj/machinery/holopad/hp in world) hp_list += hp - var/obj/machinery/holopad/hp = pick(hp_list) - if(forceMove(pick(hp.loc))) - return TRUE + var/nono_areas = list("AI ") + + for(var/i = 0, i <= 6, i+=1) //Attempts a jump 6 times. + var/obj/machinery/holopad/hp = pick(hp_list) + if(forceMove(pick(hp.loc))) + + var/jacq_please_no = FALSE + for(var/no_area in nono_areas) + var/turf/L1 = hp.loc + if(!L1) //Incase the area isn't a turf (i.e. in a locker) + continue + var/area/L2 = L1.loc + if(L2) + if(findtext(L2.name, no_area)) + jacq_please_no = TRUE + + if(jacq_please_no) + i-=1 + continue + + //Try to go to populated areas + var/list/seen = viewers(8, get_turf(src)) + for(var/victim in seen) + if(ishuman(victim)) + if(z == cached_z) + return TRUE + return FALSE @@ -129,7 +158,7 @@ if(!progression["[C.real_name]"] || !(progression["[C.real_name]"] & JACQ_HELLO)) visible_message("[src] smiles ominously at [C], \"Well halo there [gender]! Ah'm Jacqueline, tae great Pumpqueen, great tae meet ye.\"") sleep(20) - visible_message("[src] continues, says, \"Ah'm sure yae well stunned, but ah've got nae taem fer that. Ah'm after the candies around this station. If yae get mae enoof o the wee buggers, Ah'll give ye a treat, or if yae feeling bold, Ah ken trick ye instead.\" giving [C] a wide grin.") + visible_message("[src] continues, \"Ah'm sure yae well stunned, but ah've got nae taem fer that. Ah'm after the candies around this station. If yae get mae enoof o the wee buggers, Ah'll give ye a treat, or if yae feeling bold, Ah ken trick ye instead.\" giving [C] a wide grin.") if(!progression["[C.real_name]"]) progression["[C.real_name]"] = NONE //TO MAKE SURE THAT THE LIST ENTRY EXISTS. @@ -153,11 +182,21 @@ /mob/living/simple_animal/jacq/proc/treat(mob/living/carbon/C, gender) visible_message("[src] gives off a glowing smile, \"What ken Ah offer ye? I can magic up an object, a potion or a plushie fer ye.\"") - var/choices_reward = list("Object - 3 candies", "Potion - 2 candies", "Plushie - 1 candy", "Can I ask you a question instead?") + var/choices_reward = list("Object - 3 candies", "Potion - 2 candies", "Jacqueline Tracker - 2 candies", "Plushie - 1 candy", "Can I get to know you instead?", "Become a pumpkinhead dullahan (perma) - 4 candies") var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward //rewards switch(choice_reward) + if("Become a pumpkinhead dullahan (perma) - 4 candies") + if(!take_candies(C, 4)) + visible_message("[src] raises an eyebrown, \"It's 4 candies for that [gender]! Thems the rules!\"") + return + visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"") + C.reagents.add_reagent("pumpkinmutationtoxin", 5) + sleep(20) + poof() + return + if("Object - 3 candies") if(!take_candies(C, 3)) visible_message("[src] raises an eyebrown, \"It's 3 candies per trinket [gender]! Thems the rules!\"") @@ -169,7 +208,7 @@ // panic() var/reward = new new_obj(C.loc) C.put_in_hands(reward) - visible_message("[src] waves her hands, magicing up a [reward] from thin air, \"There ye are [gender], enjoy! \"") + visible_message("[src] waves her hands, magicking up a [reward] from thin air, \"There ye are [gender], enjoy! \"") sleep(20) poof() return @@ -180,7 +219,7 @@ var/reward = new /obj/item/reagent_containers/potion_container(C.loc) C.put_in_hands(reward) - visible_message("[src] waves her hands, magicing up a [reward] from thin air, \"There ye are [gender], enjoy! \"") + visible_message("[src] waves her hands, magicking up a [reward] from thin air, \"There ye are [gender], enjoy! \"") sleep(20) poof() return @@ -190,13 +229,22 @@ return new /obj/item/toy/plush/random(C.loc) - visible_message("[src] waves her hands, magicing up a plushie from thin air, \"There ye are [gender], enjoy! \"") + visible_message("[src] waves her hands, magicking up a plushie from thin air, \"There ye are [gender], enjoy! \"") + sleep(20) + poof() + return + if("Jacqueline Tracker - 2 candies") + if(!take_candies(C, 2)) + visible_message("[src] raises an eyebrow, \"It's 1 candy per plushie [gender]! Thems the rules!\"") + return + new /obj/item/pinpointer/jacq(C.loc) + visible_message("[src] waves her hands, magicking up a tracker from thin air, \"Feels weird to magic up a tracker fer meself but, here ye are [gender], enjoy! \"") sleep(20) poof() return //chitchats! - if("Can I ask you a question instead?") + if("Can I get to know you instead?") var/choices = list() //Figure out where the C is in the story if(!progression["[C.real_name]"]) //I really don't want to get here withoot a hello, but just to be safe @@ -243,25 +291,21 @@ visible_message("[src] says, \"Ave ye tried them? They're full of all sorts of reagents. Ah'm after them so ah ken magic em up an hopefully find rare stuff fer me brews. Honestly it's a lot easier magicking up tatt fer ye lot than runnin aroond on me own like. I'd ask me familiars but most a my familiars are funny fellows 'n constantly bugger off on adventures when given simple objectives like; Go grab me a tea cake or watch over me cauldron. Ah mean, ye might run into Bartholomew my cat. Ee's supposed tae be tending my cauldron, but I've nae idea where ee's got tae.\"") progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_CANDIES sleep(30) - poof() if("You really came all this way for candy?") - visible_message("[src] looks tae the side sheepishly, \"Aye, well, tae be honest, Ah'm here tae see me sis, but dunnae let her knew that. She's an alchemist too like, but she dunnae use a caldron like mae, she buggered off like tae her posh ivory tower tae learn bloody chemistry instead!\" [src] scowls, \"She's tae black sheep o' the family too, so we dunnae see eye tae eye sometimes on alchemy. Ah mean, she puts moles in her brews! Ye dunnae put moles in yer brews! Yae threw your brews at tae wee bastards an blew em up!\" [src] sighs, \"But she's a heart o gold so.. Ah wanted tae see her an check up oon her, make sure she's okay.\"") + visible_message("[src] l ooks tae the side sheepishly, \"Aye, well, tae be honest, Ah'm here tae see me sis, but dunnae let her knew that. She's an alchemist too like, but she dunnae use a caldron like mae, she buggered off like tae her posh ivory tower tae learn bloody chemistry instead!\" [src] scowls, \"She's tae black sheep o' the family too, so we dunnae see eye tae eye sometimes on alchemy. Ah mean, she puts moles in her brews! Ye dunnae put moles in yer brews! Yae threw your brews at tae wee bastards an blew em up!\" [src] sighs, \"But she's a heart o gold so.. Ah wanted tae see her an check up oon her, make sure she's okay.\"") progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_FAR sleep(30) - poof() if("What is that on your head?") visible_message("[src] pats the pumpkin atop her head, \"This thing? This ain't nae ordinary pumpkin! Me Ma grew this monster ooer a year o love, dedication an hard work. Honestly it felt like she loved this thing more than any of us, which Ah knew ain't true an it's not like she was hartless or anything but.. well, we had a falling oot when Ah got back home with all me stuff in tow. An all she had done is sent me owl after owl over t' last year aboot this bloody pumpkin and ah had enough. So ah took it, an put it on me head. You know, as ye do. Ah am the great Pumpqueen after all, Ah deserve this.\"") progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_HEAD sleep(30) - poof() if("Are you a witch?") visible_message("[src] grumbles, \"If ye must know, Ah got kicked oot of the witch academy fer being too much of a \"loose cannon\". A bloody loose cannon? Nae they were just pissed off Ah had the brass tae proclaim myself as the Pumpqueen! And also maybe the time Ah went and blew up one of the towers by trying tae make a huge batch of astrogen might've had something tae do with it. Ah mean it would've worked fine if the cauldrons weren't so shite and were actually upgraded by the faculty. So technically no, I'm not a witch.\"") progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_WITCH sleep(30) - poof() if("So you got ex-spell-ed?") visible_message("[src] Gives you a blank look at the pun, before continuing, \"Not quite, Ah know Ah ken get back into the academy, it's only an explosion, they happen all the time, but, tae be fair it's my fault that things came tae their explosive climax. You don't know what it's like when you're after a witch doctorate, everyone else is doing well, everyone's making new spells and the like, and I'm just good at making explosions really, or fireworks. So, Ah did something Ah knew was dangerous, because Ah had tae do something tae stand oot, but Ah know this life ain't fer me, Ah don't want tae be locked up in dusty towers, grinding reagent after reagent together, trying tae find new reactions, some of the wizards in there haven't left fer years. Ah want tae live, Ah want tae fly around on a broom, turn people into cats fer a day and disappear cackling! That's what got me into witchcraft!\" she throws her arms up in the arm, spinning the pumpkin upon her head slightly. She carefully spins it back to face you, giving oot a soft sigh, \"Ah know my mother's obsession with this dumb thing on my head is just her trying tae fill the void of me and my sis moving oot, and it really shouldn't be on my head. And Ah know that I'm really here tae get help from my sis.. She's the sensible one, and she gives good hugs.\"") @@ -269,11 +313,10 @@ visible_message("[src] says, \"Thanks [C], Ah guess Ah didn't realise Ah needed someone tae talk tae but, I'm glad ye spent all your candies talking tae me. Funny how things seem much worse in yer head.\"") progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_EXPELL sleep(30) - poof() if("Can I take you out on a date?") visible_message("[src] blushes, \"...You want tae ask me oot on a date? Me? After all that nonsense Ah just said? It seems a waste of a candy honestly.\"") - progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_DATE + //progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_DATE visible_message("[src] looks to the side, deep in thought.
") dating_start(C, gender) @@ -285,37 +328,34 @@ /mob/living/simple_animal/jacq/proc/trick(mob/living/carbon/C, gender) var/option if(ishuman(C)) - option = rand(1,7) - else option = rand(1,6) + else + option = rand(1,5) switch(option) if(1) visible_message("[src] waves their arms around, \"Hocus pocus, making friends is now your focus!\"") - var/datum/objective/brainwashing/objective = pick("Make a tasty sandwich for", "Compose a poem for", "Aquire a nice outfit to give to", "Strike up a conversation about pumpkins with", "Write a letter and deliver it to", "Give a nice hat to") + var/message = pick("make a tasty sandwich for", "compose a poem for", "aquire a nice outfit to give to", "strike up a conversation about pumpkins with", "write a letter and deliver it to", "give a nice hat to") var/mob/living/L2 = pick(GLOB.player_list) - objective += " [L2.name]." - brainwash(C, objective) + message += " [L2.name]." + to_chat(C, " You feel an overwhelming desire to [message]") if(2) - visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"") - C.reagents.add_reagent("pumpkinmutationtoxin", 5) - if(3) visible_message("[src] waves their arms around, \"If only you had a better upbringing, your ears are now full of my singing!\"") var/client/C2 = C.client - C2.chatOutput.sendMusic("https://a.uguu.se/rQ8FxxUQ1Xzc_SpOwOkyOwOkyPumpkinSong-PFrPrIxluWk.mp4", 1)//I hope this works! - if(4) + C2.chatOutput.sendMusic("https://puu.sh/ExBbv.mp4", 1)//I hope this works! + if(3) visible_message("[src] waves their arms around, \"You're cute little bumpkin, On your head is a pumpkin!\"") if(C.head) var/obj/item/W = C.head C.dropItemToGround(W, TRUE) var/jaqc_latern = new /obj/item/clothing/head/hardhat/pumpkinhead/jaqc C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1) - if(5) + if(4) visible_message("[src] waves their arms around, \"In your body there's something amiss, you'll find it's a chem made by my sis!\"") C.reagents.add_reagent("eigenstate", 30) - if(6) + if(5) visible_message("[src] waves their arms around, \"A new familiar for me, and you'll see it's thee!\"") C.reagents.add_reagent("secretcatchem", 30) - if(7) + if(6) visible_message("[src] waves their arms around, \"While you may not be a ghost, for this sheet you'll always be it's host.\"") var/mob/living/carbon/human/H = C if(H.wear_suit) diff --git a/code/modules/hydroponics/beekeeping/beekeeper_suit.dm b/code/modules/hydroponics/beekeeping/beekeeper_suit.dm index 7fa1a0dd2c..fd9f879f5e 100644 --- a/code/modules/hydroponics/beekeeping/beekeeper_suit.dm +++ b/code/modules/hydroponics/beekeeping/beekeeper_suit.dm @@ -4,7 +4,7 @@ desc = "Keeps the lil buzzing buggers out of your eyes." icon_state = "beekeeper" item_state = "beekeeper" - clothing_flags = THICKMATERIAL + clothing_flags = THICKMATERIAL | SNUG_FIT /obj/item/clothing/suit/beekeeper_suit diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 251d9de5c0..b25f76c1c8 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -11,7 +11,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_dead = "banana-dead" genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) - mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace) + mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace, /obj/item/seeds/banana/exotic_banana) reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) /obj/item/reagent_containers/food/snacks/grown/banana @@ -120,6 +120,41 @@ desc = "A peel from a bluespace banana." icon_state = "banana_peel_blue" +//Banana Spider. +/obj/item/seeds/banana/exotic_banana + name = "pack of exotic banana seeds" + desc = "They're seeds that grow into banana trees. However, those bananas might be alive." + icon_state = "seed_exoticbanana" + species = "exoticbanana" + icon_grow = "banana-grow" + plantname = "Exotic Banana Tree" + product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable + mutatelist = list() + genes = list(/datum/plant_gene/trait/slip) + +/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable + seed = /obj/item/seeds/banana/exotic_banana + name = "banana spider" + desc = "You do not know what it is, but you can bet the clown would love it." + icon_state = "exoticbanana" + list_reagents = list("nutriment" = 3, "vitamin" = 2) + foodtype = GROSS | MEAT | RAW | FRUIT + grind_results = list("blood" = 20, "liquidgibs" = 5) + var/awakening = 0 + +/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) + if(awakening || isspaceturf(user.loc)) + return + to_chat(user, "You decide to wake up the banana spider...") + awakening = 1 + + spawn(30) + if(!QDELETED(src)) + var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc)) + S.speed += round(10 / seed.potency) + S.visible_message("The banana spider chitters as it stretches its legs.") + qdel(src) + // Other /obj/item/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes name = "synthesized banana peel" diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index eb463e5f6d..87db12d892 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -58,7 +58,20 @@ wine_power = 70 //Water to wine, baby. wine_flavor = "divinity" +/* +/obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize() + . = ..() + var/uses = 1 + if(seed) + uses = round(seed.potency / 20) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god -// /obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize() -// . = ..() -// AddComponent(/datum/component/anti_magic, TRUE, TRUE) //deliver us from evil o melon god +/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major) + if(major) + to_chat(user, "[src] hums slightly, and seems to decay a bit.") + +/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/expire(mob/user) + to_chat(user, "[src] rapidly turns into ash!") + qdel(src) + new /obj/effect/decal/cleanable/ash(drop_location()) +*/ \ No newline at end of file diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index ffa9e2e21d..d9bea64411 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -174,7 +174,7 @@ to_chat(usr, "\The [src] is full.") return FALSE - GET_COMPONENT_FROM(STR, /datum/component/storage, O.loc) + var/datum/component/storage/STR = O.loc.GetComponent(/datum/component/storage) if(STR) if(!STR.remove_from_storage(O,src)) return FALSE diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index b258a15972..b7feedd312 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -893,7 +893,7 @@ return FALSE var/ignore_bags = get_pin_data(IC_INPUT, 1) if(ignore_bags) - GET_COMPONENT_FROM(STR, /datum/component/storage, A) + var/datum/component/storage/STR = A.GetComponent(/datum/component/storage) if(STR) return FALSE set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) @@ -1104,7 +1104,7 @@ /obj/item/integrated_circuit/input/matscan/do_work() var/atom/movable/H = get_pin_data_as_type(IC_INPUT, 1, /atom/movable) var/turf/T = get_turf(src) - GET_COMPONENT_FROM(mt, /datum/component/material_container, H) + var/datum/component/material_container/mt = H.GetComponent(/datum/component/material_container) if(!mt) //Invalid input return if(H in view(T)) // This is a camera. It can't examine thngs,that it can't see. diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 682e76a46e..81961c2d9c 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -411,7 +411,7 @@ .=..() /obj/item/integrated_circuit/manipulation/matman/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) set_pin_data(IC_OUTPUT, 2, materials.total_amount) for(var/I in 1 to mtypes.len) var/datum/material/M = materials.materials[mtypes[I]] @@ -423,7 +423,7 @@ return TRUE /obj/item/integrated_circuit/manipulation/matman/do_work(ord) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/movable/H = get_pin_data_as_type(IC_INPUT, 1, /atom/movable) if(!check_target(H)) activate_pin(4) @@ -441,7 +441,7 @@ else activate_pin(4) if(2) - GET_COMPONENT_FROM(mt, /datum/component/material_container, H) + var/datum/component/material_container/mt = H.GetComponent(/datum/component/material_container) var/suc for(var/I in 1 to mtypes.len) var/datum/material/M = materials.materials[mtypes[I]] @@ -467,7 +467,7 @@ activate_pin(6) /obj/item/integrated_circuit/manipulation/matman/Destroy() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() .=..() @@ -509,14 +509,14 @@ if(!container || !istype(container,/obj/item/storage) || !Adjacent(container)) return - GET_COMPONENT_FROM(STR, /datum/component/storage, container) + var/datum/component/storage/STR = container.GetComponent(/datum/component/storage) if(!STR) return STR.attackby(src, target_obj) else - GET_COMPONENT_FROM(STR, /datum/component/storage, target_obj.loc) + var/datum/component/storage/STR = target_obj.loc.GetComponent(/datum/component/storage) if(!STR) return diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index e88a80514a..2119baf1a5 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -1,368 +1,372 @@ - -//returns TRUE if this mob has sufficient access to use this object -/obj/proc/allowed(mob/M) - //check if it doesn't require any access at all - if(src.check_access(null)) - return TRUE - if(issilicon(M)) - if(ispAI(M)) - return FALSE - return TRUE //AI can do whatever it wants - if(IsAdminGhost(M)) - //Access can't stop the abuse - return TRUE - else if(istype(M) && SEND_SIGNAL(M, COMSIG_MOB_ALLOWED, src)) - return TRUE - else if(ishuman(M)) - var/mob/living/carbon/human/H = M - //if they are holding or wearing a card that has access, that works - if(check_access(H.get_active_held_item()) || src.check_access(H.wear_id)) - return TRUE - else if(ismonkey(M) || isalienadult(M)) - var/mob/living/carbon/george = M - //they can only hold things :( - if(check_access(george.get_active_held_item())) - return TRUE - else if(isanimal(M)) - var/mob/living/simple_animal/A = M - if(check_access(A.get_active_held_item()) || check_access(A.access_card)) - return TRUE - return FALSE - -/obj/item/proc/GetAccess() - return list() - -/obj/item/proc/GetID() - return null - -/obj/proc/text2access(access_text) - . = list() - if(!access_text) - return - var/list/split = splittext(access_text,";") - for(var/x in split) - var/n = text2num(x) - if(n) - . += n - -//Call this before using req_access or req_one_access directly -/obj/proc/gen_access() - //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!req_access) - req_access = list() - for(var/a in text2access(req_access_txt)) - req_access += a - if(!req_one_access) - req_one_access = list() - for(var/b in text2access(req_one_access_txt)) - req_one_access += b - -// Check if an item has access to this object -/obj/proc/check_access(obj/item/I) - return check_access_list(I ? I.GetAccess() : null) - -/obj/proc/check_access_list(list/access_list) - gen_access() - - if(!islist(req_access)) //something's very wrong - return TRUE - - if(!req_access.len && !length(req_one_access)) - return TRUE - - if(!length(access_list) || !islist(access_list)) - return FALSE - - for(var/req in req_access) - if(!(req in access_list)) //doesn't have this access - return FALSE - - if(length(req_one_access)) - for(var/req in req_one_access) - if(req in access_list) //has an access from the single access list - return TRUE - return FALSE - return TRUE - -/obj/proc/check_access_ntnet(datum/netdata/data) - return check_access_list(data.passkey) - -/proc/get_centcom_access(job) - switch(job) - if("VIP Guest") - return list(ACCESS_CENT_GENERAL) - if("Custodian") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) - if("Thunderdome Overseer") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER) - if("CentCom Official") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING) - if("Medical Officer") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_MEDICAL) - if("Death Commando") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) - if("Research Officer") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_TELEPORTER, ACCESS_CENT_STORAGE) - if("Special Ops Officer") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) - if("Admiral") - return get_all_centcom_access() - if("CentCom Commander") - return get_all_centcom_access() - if("Emergency Response Team Commander") - return get_ert_access("commander") - if("Security Response Officer") - return get_ert_access("sec") - if("Engineer Response Officer") - return get_ert_access("eng") - if("Medical Response Officer") - return get_ert_access("med") - if("CentCom Bartender") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR) - -/proc/get_all_accesses() - return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, - ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD, - ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, - ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS, - ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN, - ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION, - ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY, - ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS, - ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE, - ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING) - -/proc/get_all_centcom_access() - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN) - -/proc/get_ert_access(class) - switch(class) - if("commander") - return get_all_centcom_access() - if("sec") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING) - if("eng") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) - if("med") - return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING) - -/proc/get_all_syndicate_access() - return list(ACCESS_SYNDICATE, ACCESS_SYNDICATE) - -/proc/get_region_accesses(code) - switch(code) - if(0) - return get_all_accesses() - if(1) //station general - return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER) - if(2) //security - return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS) - if(3) //medbay - return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO) - if(4) //research - return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK) - if(5) //engineering and maintenance - return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_CE) - if(6) //supply - return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM, ACCESS_VAULT) - if(7) //command - return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_VAULT) - -/proc/get_region_accesses_name(code) - switch(code) - if(0) - return "All" - if(1) //station general - return "General" - if(2) //security - return "Security" - if(3) //medbay - return "Medbay" - if(4) //research - return "Research" - if(5) //engineering and maintenance - return "Engineering" - if(6) //supply - return "Supply" - if(7) //command - return "Command" - -/proc/get_access_desc(A) - switch(A) - if(ACCESS_CARGO) - return "Cargo Bay" - if(ACCESS_CARGO_BOT) - return "Delivery Chutes" - if(ACCESS_SECURITY) - return "Security" - if(ACCESS_BRIG) - return "Holding Cells" - if(ACCESS_COURT) - return "Courtroom" - if(ACCESS_FORENSICS_LOCKERS) - return "Forensics" - if(ACCESS_MEDICAL) - return "Medical" - if(ACCESS_GENETICS) - return "Genetics Lab" - if(ACCESS_MORGUE) - return "Morgue" - if(ACCESS_TOX) - return "R&D Lab" - if(ACCESS_TOX_STORAGE) - return "Toxins Lab" - if(ACCESS_CHEMISTRY) - return "Chemistry Lab" - if(ACCESS_RD) - return "RD Office" - if(ACCESS_BAR) - return "Bar" - if(ACCESS_JANITOR) - return "Custodial Closet" - if(ACCESS_ENGINE) - return "Engineering" - if(ACCESS_ENGINE_EQUIP) - return "Power and Engineering Equipment" - if(ACCESS_MAINT_TUNNELS) - return "Maintenance" - if(ACCESS_EXTERNAL_AIRLOCKS) - return "External Airlocks" - if(ACCESS_EMERGENCY_STORAGE) - return "Emergency Storage" - if(ACCESS_CHANGE_IDS) - return "ID Console" - if(ACCESS_AI_UPLOAD) - return "AI Chambers" - if(ACCESS_TELEPORTER) - return "Teleporter" - if(ACCESS_EVA) - return "EVA" - if(ACCESS_HEADS) - return "Bridge" - if(ACCESS_CAPTAIN) - return "Captain" - if(ACCESS_ALL_PERSONAL_LOCKERS) - return "Personal Lockers" - if(ACCESS_CHAPEL_OFFICE) - return "Chapel Office" - if(ACCESS_TECH_STORAGE) - return "Technical Storage" - if(ACCESS_ATMOSPHERICS) - return "Atmospherics" - if(ACCESS_CREMATORIUM) - return "Crematorium" - if(ACCESS_ARMORY) - return "Armory" - if(ACCESS_CONSTRUCTION) - return "Construction" - if(ACCESS_KITCHEN) - return "Kitchen" - if(ACCESS_HYDROPONICS) - return "Hydroponics" - if(ACCESS_LIBRARY) - return "Library" - if(ACCESS_LAWYER) - return "Law Office" - if(ACCESS_ROBOTICS) - return "Robotics" - if(ACCESS_VIROLOGY) - return "Virology" - if(ACCESS_CMO) - return "CMO Office" - if(ACCESS_QM) - return "Quartermaster" - if(ACCESS_SURGERY) - return "Surgery" - if(ACCESS_THEATRE) - return "Theatre" - if(ACCESS_MANUFACTURING) - return "Manufacturing" - if(ACCESS_RESEARCH) - return "Science" - if(ACCESS_MINING) - return "Mining" - if(ACCESS_MINING_OFFICE) - return "Mining Office" - if(ACCESS_MAILSORTING) - return "Cargo Office" - if(ACCESS_MINT) - return "Mint" - if(ACCESS_MINT_VAULT) - return "Mint Vault" - if(ACCESS_VAULT) - return "Main Vault" - if(ACCESS_MINING_STATION) - return "Mining EVA" - if(ACCESS_XENOBIOLOGY) - return "Xenobiology Lab" - if(ACCESS_HOP) - return "HoP Office" - if(ACCESS_HOS) - return "HoS Office" - if(ACCESS_CE) - return "CE Office" - if(ACCESS_RC_ANNOUNCE) - return "RC Announcements" - if(ACCESS_KEYCARD_AUTH) - return "Keycode Auth." - if(ACCESS_TCOMSAT) - return "Telecommunications" - if(ACCESS_GATEWAY) - return "Gateway" - if(ACCESS_SEC_DOORS) - return "Brig" - if(ACCESS_MINERAL_STOREROOM) - return "Mineral Storage" - if(ACCESS_MINISAT) - return "AI Satellite" - if(ACCESS_WEAPONS) - return "Weapon Permit" - if(ACCESS_NETWORK) - return "Network Access" - if(ACCESS_CLONING) - return "Cloning Room" - -/proc/get_centcom_access_desc(A) - switch(A) - if(ACCESS_CENT_GENERAL) - return "Code Grey" - if(ACCESS_CENT_THUNDER) - return "Code Yellow" - if(ACCESS_CENT_STORAGE) - return "Code Orange" - if(ACCESS_CENT_LIVING) - return "Code Green" - if(ACCESS_CENT_MEDICAL) - return "Code White" - if(ACCESS_CENT_TELEPORTER) - return "Code Blue" - if(ACCESS_CENT_SPECOPS) - return "Code Black" - if(ACCESS_CENT_CAPTAIN) - return "Code Gold" - if(ACCESS_CENT_BAR) - return "Code Scotch" - -/proc/get_all_jobs() - return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", - "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", - "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", - "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer") - -/proc/get_all_job_icons() //For all existing HUD icons - return get_all_jobs() + list("Prisoner") - -/proc/get_all_centcom_jobs() - return list("VIP Guest","Custodian","Thunderdome Overseer","CentCom Official","Medical Officer","Death Commando","Research Officer","Special Ops Officer","Admiral","CentCom Commander","Emergency Response Team Commander","Security Response Officer","Engineer Response Officer", "Medical Response Officer","CentCom Bartender") - -/obj/item/proc/GetJobName() //Used in secHUD icon generation - var/obj/item/card/id/I = GetID() - if(!I) - return - var/jobName = I.assignment - if(jobName in get_all_job_icons()) //Check if the job has a hud icon - return jobName - if(jobName in get_all_centcom_jobs()) //Return with the NT logo if it is a CentCom job - return "CentCom" - return "Unknown" //Return unknown if none of the above apply + +//returns TRUE if this mob has sufficient access to use this object +/obj/proc/allowed(mob/M) + //check if it doesn't require any access at all + if(src.check_access(null)) + return TRUE + if(issilicon(M)) + if(ispAI(M)) + return FALSE + return TRUE //AI can do whatever it wants + if(IsAdminGhost(M)) + //Access can't stop the abuse + return TRUE + else if(istype(M) && SEND_SIGNAL(M, COMSIG_MOB_ALLOWED, src)) + return TRUE + else if(ishuman(M)) + var/mob/living/carbon/human/H = M + //if they are holding or wearing a card that has access, that works + if(check_access(H.get_active_held_item()) || src.check_access(H.wear_id)) + return TRUE + else if(ismonkey(M) || isalienadult(M)) + var/mob/living/carbon/george = M + //they can only hold things :( + if(check_access(george.get_active_held_item())) + return TRUE + else if(isanimal(M)) + var/mob/living/simple_animal/A = M + if(check_access(A.get_active_held_item()) || check_access(A.access_card)) + return TRUE + return FALSE + +/obj/item/proc/GetAccess() + return list() + +/obj/item/proc/GetID() + return null + +/obj/proc/text2access(access_text) + . = list() + if(!access_text) + return + var/list/split = splittext(access_text,";") + for(var/x in split) + var/n = text2num(x) + if(n) + . += n + +//Call this before using req_access or req_one_access directly +/obj/proc/gen_access() + //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. + if(!req_access) + req_access = list() + for(var/a in text2access(req_access_txt)) + req_access += a + if(!req_one_access) + req_one_access = list() + for(var/b in text2access(req_one_access_txt)) + req_one_access += b + +// Check if an item has access to this object +/obj/proc/check_access(obj/item/I) + return check_access_list(I ? I.GetAccess() : null) + +/obj/proc/check_access_list(list/access_list) + gen_access() + + if(!islist(req_access)) //something's very wrong + return TRUE + + if(!req_access.len && !length(req_one_access)) + return TRUE + + if(!length(access_list) || !islist(access_list)) + return FALSE + + for(var/req in req_access) + if(!(req in access_list)) //doesn't have this access + return FALSE + + if(length(req_one_access)) + for(var/req in req_one_access) + if(req in access_list) //has an access from the single access list + return TRUE + return FALSE + return TRUE + +/obj/proc/check_access_ntnet(datum/netdata/data) + return check_access_list(data.passkey) + +/proc/get_centcom_access(job) + switch(job) + if("VIP Guest") + return list(ACCESS_CENT_GENERAL) + if("Custodian") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) + if("Thunderdome Overseer") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER) + if("CentCom Official") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING) + if("Medical Officer") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_MEDICAL) + if("Death Commando") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) + if("Research Officer") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_TELEPORTER, ACCESS_CENT_STORAGE) + if("Special Ops Officer") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) + if("Admiral") + return get_all_centcom_access() + if("CentCom Commander") + return get_all_centcom_access() + if("Emergency Response Team Commander") + return get_ert_access("commander") + if("Security Response Officer") + return get_ert_access("sec") + if("Engineer Response Officer") + return get_ert_access("eng") + if("Medical Response Officer") + return get_ert_access("med") + if("CentCom Bartender") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR) + +/proc/get_all_accesses() + return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, + ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD, + ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, + ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS, + ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN, + ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION, + ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY, + ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS, + ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE, + ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING) + +/proc/get_all_centcom_access() + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN) + +/proc/get_ert_access(class) + switch(class) + if("commander") + return get_all_centcom_access() + if("sec") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING) + if("eng") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) + if("med") + return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING) + +/proc/get_all_syndicate_access() + return list(ACCESS_SYNDICATE, ACCESS_SYNDICATE) + +/proc/get_region_accesses(code) + switch(code) + if(0) + return get_all_accesses() + if(1) //station general + return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER) + if(2) //security + return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,) + if(3) //medbay + return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO) + if(4) //research + return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK) + if(5) //engineering and maintenance + return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_CE) + if(6) //supply + return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM, ACCESS_VAULT) + if(7) //command + return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_VAULT) + +/proc/get_region_accesses_name(code) + switch(code) + if(0) + return "All" + if(1) //station general + return "General" + if(2) //security + return "Security" + if(3) //medbay + return "Medbay" + if(4) //research + return "Research" + if(5) //engineering and maintenance + return "Engineering" + if(6) //supply + return "Supply" + if(7) //command + return "Command" + +/proc/get_access_desc(A) + switch(A) + if(ACCESS_CARGO) + return "Cargo Bay" + if(ACCESS_CARGO_BOT) + return "Delivery Chutes" + if(ACCESS_SECURITY) + return "Security Equipment" + if(ACCESS_BRIG) + return "Holding Cells and Prisoner Management" + if(ACCESS_COURT) + return "Courtroom" + if(ACCESS_FORENSICS_LOCKERS) + return "Forensics Lockers" + if(ACCESS_MEDICAL) + return "Medical" + if(ACCESS_GENETICS) + return "Genetics Lab" + if(ACCESS_MORGUE) + return "Morgue" + if(ACCESS_TOX) + return "R&D Lab" + if(ACCESS_TOX_STORAGE) + return "Toxins Lab" + if(ACCESS_CHEMISTRY) + return "Chemistry Lab" + if(ACCESS_RD) + return "RD Office" + if(ACCESS_BAR) + return "Bar" + if(ACCESS_JANITOR) + return "Custodial Closet" + if(ACCESS_ENGINE) + return "Engineering" + if(ACCESS_ENGINE_EQUIP) + return "Power and Engineering Equipment" + if(ACCESS_MAINT_TUNNELS) + return "Maintenance" + if(ACCESS_EXTERNAL_AIRLOCKS) + return "External Airlocks" + if(ACCESS_EMERGENCY_STORAGE) + return "Emergency Storage" + if(ACCESS_CHANGE_IDS) + return "ID Console" + if(ACCESS_AI_UPLOAD) + return "AI Chambers" + if(ACCESS_TELEPORTER) + return "Teleporter" + if(ACCESS_EVA) + return "EVA" + if(ACCESS_HEADS) + return "Bridge and Command Equipment" + if(ACCESS_CAPTAIN) + return "Captain" + if(ACCESS_ALL_PERSONAL_LOCKERS) + return "Personal Lockers" + if(ACCESS_CHAPEL_OFFICE) + return "Chapel Office" + if(ACCESS_TECH_STORAGE) + return "Technical Storage" + if(ACCESS_ATMOSPHERICS) + return "Atmospherics" + if(ACCESS_CREMATORIUM) + return "Crematorium" + if(ACCESS_ARMORY) + return "Armory" + if(ACCESS_CONSTRUCTION) + return "Construction" + if(ACCESS_KITCHEN) + return "Kitchen" + if(ACCESS_HYDROPONICS) + return "Hydroponics" + if(ACCESS_LIBRARY) + return "Library" + if(ACCESS_LAWYER) + return "Law Office" + if(ACCESS_ROBOTICS) + return "Robotics" + if(ACCESS_VIROLOGY) + return "Virology" + if(ACCESS_CMO) + return "CMO Office" + if(ACCESS_QM) + return "Quartermaster" + if(ACCESS_SURGERY) + return "Surgery" + if(ACCESS_THEATRE) + return "Theatre" + if(ACCESS_MANUFACTURING) + return "Manufacturing" + if(ACCESS_RESEARCH) + return "Science" + if(ACCESS_MINING) + return "Mining" + if(ACCESS_MINING_OFFICE) + return "Mining Office" + if(ACCESS_MAILSORTING) + return "Cargo Office" + if(ACCESS_MINT) + return "Mint" + if(ACCESS_MINT_VAULT) + return "Mint Vault" + if(ACCESS_VAULT) + return "Main Vault" + if(ACCESS_MINING_STATION) + return "Mining EVA" + if(ACCESS_XENOBIOLOGY) + return "Xenobiology Lab" + if(ACCESS_HOP) + return "HoP Office" + if(ACCESS_HOS) + return "HoS Office" + if(ACCESS_CE) + return "CE Office" + if(ACCESS_RC_ANNOUNCE) + return "RC Announcements" + if(ACCESS_KEYCARD_AUTH) + return "Keycode Auth." + if(ACCESS_TCOMSAT) + return "Telecommunications" + if(ACCESS_GATEWAY) + return "Gateway" + if(ACCESS_SEC_DOORS) + return "Security SubDepartment Doors" + if(ACCESS_ENTER_GENPOP) + return "Prison Turnstile Entrance" + if(ACCESS_LEAVE_GENPOP) + return "Prison Turnstile Exit" + if(ACCESS_MINERAL_STOREROOM) + return "Mineral Storage" + if(ACCESS_MINISAT) + return "AI Satellite" + if(ACCESS_WEAPONS) + return "Weapon Permit" + if(ACCESS_NETWORK) + return "Network Access" + if(ACCESS_CLONING) + return "Cloning Room" + +/proc/get_centcom_access_desc(A) + switch(A) + if(ACCESS_CENT_GENERAL) + return "Code Grey" + if(ACCESS_CENT_THUNDER) + return "Code Yellow" + if(ACCESS_CENT_STORAGE) + return "Code Orange" + if(ACCESS_CENT_LIVING) + return "Code Green" + if(ACCESS_CENT_MEDICAL) + return "Code White" + if(ACCESS_CENT_TELEPORTER) + return "Code Blue" + if(ACCESS_CENT_SPECOPS) + return "Code Black" + if(ACCESS_CENT_CAPTAIN) + return "Code Gold" + if(ACCESS_CENT_BAR) + return "Code Scotch" + +/proc/get_all_jobs() + return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", + "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", + "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", + "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer") + +/proc/get_all_job_icons() //For all existing HUD icons + return get_all_jobs() + list("Prisoner") + +/proc/get_all_centcom_jobs() + return list("VIP Guest","Custodian","Thunderdome Overseer","CentCom Official","Medical Officer","Death Commando","Research Officer","Special Ops Officer","Admiral","CentCom Commander","Emergency Response Team Commander","Security Response Officer","Engineer Response Officer", "Medical Response Officer","CentCom Bartender") + +/obj/item/proc/GetJobName() //Used in secHUD icon generation + var/obj/item/card/id/I = GetID() + if(!I) + return + var/jobName = I.assignment + if(jobName in get_all_job_icons()) //Check if the job has a hud icon + return jobName + if(jobName in get_all_centcom_jobs()) //Return with the NT logo if it is a CentCom job + return "CentCom" + return "Unknown" //Return unknown if none of the above apply diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 2eeffa8b7a..a52b8589c3 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -61,6 +61,9 @@ var/display_order = JOB_DISPLAY_ORDER_DEFAULT + //If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack. + var/dresscodecompliant = TRUE + //Only override this proc //H is usually a human unless an /equip override transformed it /datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE) diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index c04560f849..da8c2aa3b9 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -15,6 +15,7 @@ Assistant outfit = /datum/outfit/job/assistant antag_rep = 7 display_order = JOB_DISPLAY_ORDER_ASSISTANT + dresscodecompliant = FALSE /datum/job/assistant/get_access() if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 93775beca9..300fcc7109 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -15,7 +15,8 @@ access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINE, + ACCESS_ENGINE_EQUIP, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN /datum/outfit/job/atmos diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index fea8557b40..c6342e2154 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -10,9 +10,9 @@ supervisors = "Nanotrasen officials and Space law" selection_color = "#aac1ee" req_admin_notify = 1 - minimal_player_age = 14 + minimal_player_age = 20 exp_requirements = 180 - exp_type = EXP_TYPE_CREW + exp_type = EXP_TYPE_COMMAND exp_type_department = EXP_TYPE_COMMAND outfit = /datum/outfit/job/captain diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 3ceb29bae2..d6fbe5551f 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -11,7 +11,8 @@ outfit = /datum/outfit/job/cargo_tech - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, + ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index a915d261ed..4614feba8d 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -32,5 +32,7 @@ satchel = /obj/item/storage/backpack/satchel/chem duffelbag = /obj/item/storage/backpack/duffelbag/med + backpack_contents = list(/obj/item/storage/hypospraykit/regular) + chameleon_extras = /obj/item/gun/syringe diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index da3f281267..f6505a4e2a 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -11,7 +11,7 @@ supervisors = "the captain" selection_color = "#ee7400" req_admin_notify = 1 - minimal_player_age = 7 + minimal_player_age = 10 exp_requirements = 180 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_ENGINEERING diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 4c7249f048..69eead70f7 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -11,7 +11,7 @@ supervisors = "the captain" selection_color = "#509ed1" req_admin_notify = 1 - minimal_player_age = 7 + minimal_player_age = 10 exp_requirements = 180 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_MEDICAL diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index e320ce20b4..2b757872d9 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -11,7 +11,7 @@ supervisors = "the captain" selection_color = "#3a8529" req_admin_notify = 1 - minimal_player_age = 10 + minimal_player_age = 20 exp_requirements = 180 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_SERVICE @@ -21,13 +21,13 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, + ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, + ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index f6b5dbd3ef..c190d88bc7 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -11,7 +11,7 @@ supervisors = "the captain" selection_color = "#b90000" req_admin_notify = 1 - minimal_player_age = 14 + minimal_player_age = 10 exp_requirements = 300 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_SECURITY @@ -19,11 +19,11 @@ outfit = /datum/outfit/job/hos mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 19fa1c7158..2a8814f29c 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -32,4 +32,6 @@ satchel = /obj/item/storage/backpack/satchel/med duffelbag = /obj/item/storage/backpack/duffelbag/med + backpack_contents = list(/obj/item/storage/hypospraykit/regular) + chameleon_extras = /obj/item/gun/syringe diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 49a93026ba..ad57d05cdc 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -11,17 +11,19 @@ supervisors = "the captain" selection_color = "#a06121" req_admin_notify = 1 - minimal_player_age = 7 + minimal_player_age = 10 exp_requirements = 180 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_SUPPLY outfit = /datum/outfit/job/quartermaster - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, - ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, - ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, + ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, + ACCESS_SEC_DOORS, ACCESS_HEADS) + minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, + ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, + ACCESS_SEC_DOORS, ACCESS_HEADS) display_order = JOB_DISPLAY_ORDER_QUARTERMASTER blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) @@ -31,11 +33,13 @@ jobtype = /datum/job/qm belt = /obj/item/pda/quartermaster - ears = /obj/item/radio/headset/headset_cargo + ears = /obj/item/radio/headset/heads/qm uniform = /obj/item/clothing/under/rank/cargo shoes = /obj/item/clothing/shoes/sneakers/brown glasses = /obj/item/clothing/glasses/sunglasses l_hand = /obj/item/clipboard + id = /obj/item/card/id/silver + backpack_contents = list(/obj/item/melee/classic_baton/telescopic = 1, /obj/item/modular_computer/tablet/preset/advanced = 1) chameleon_extras = /obj/item/stamp/qm diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 5368ceee64..a90c5cea6c 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -11,7 +11,7 @@ supervisors = "the captain" selection_color = "#7544cc" req_admin_notify = 1 - minimal_player_age = 7 + minimal_player_age = 10 exp_type_department = EXP_TYPE_SCIENCE exp_requirements = 180 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 4f12d6a19c..ae50f71c0c 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -15,8 +15,8 @@ outfit = /datum/outfit/job/security - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index ef16d8e53f..771fc02862 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -13,7 +13,8 @@ outfit = /datum/outfit/job/miner - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, + ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) display_order = JOB_DISPLAY_ORDER_SHAFT_MINER @@ -47,7 +48,7 @@ name = "Shaft Miner (Asteroid)" uniform = /obj/item/clothing/under/rank/miner shoes = /obj/item/clothing/shoes/workboots - + /datum/outfit/job/miner/equipped name = "Shaft Miner (Lavaland + Equipment)" suit = /obj/item/clothing/suit/hooded/explorer/standard diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index a5c16ab5cf..9c529f45f3 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -15,8 +15,8 @@ outfit = /datum/outfit/job/warden - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) @@ -42,7 +42,7 @@ glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - suit_store = /obj/item/gun/energy/e_gun/advtaser + suit_store = /obj/item/gun/energy/pumpaction/defender backpack_contents = list(/obj/item/melee/baton/loaded=1) backpack = /obj/item/storage/backpack/security diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index ee563f3100..7dc4fd17b9 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -78,7 +78,7 @@ state = 0 if(2) - GET_COMPONENT_FROM(STR, /datum/component/storage, I) + var/datum/component/storage/STR = I.GetComponent(/datum/component/storage) if(is_type_in_list(I, allowed_books)) if(!user.transferItemToLoc(I, src)) return diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm index c0c5a411e7..9ceb341f91 100644 --- a/code/modules/lighting/lighting_object.dm +++ b/code/modules/lighting/lighting_object.dm @@ -5,7 +5,7 @@ icon = LIGHTING_ICON icon_state = "transparent" - color = LIGHTING_BASE_MATRIX + color = null //we manually set color in init instead plane = LIGHTING_PLANE mouse_opacity = MOUSE_OPACITY_TRANSPARENT layer = LIGHTING_LAYER @@ -17,6 +17,9 @@ /atom/movable/lighting_object/Initialize(mapload) . = ..() verbs.Cut() + //We avoid setting this in the base as if we do then the parent atom handling will add_atom_color it and that + //is totally unsuitable for this object, as we are always changing its colour manually + color = LIGHTING_BASE_MATRIX myturf = loc if (myturf.lighting_object) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 23ec02976d..559ffc0673 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -11,6 +11,7 @@ heat_protection = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/explorer armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) + flags_inv = HIDEJUMPSUIT|HIDETAUR allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) resistance_flags = FIRE_PROOF tauric = TRUE //Citadel Add for tauric hardsuits @@ -129,7 +130,7 @@ /obj/item/clothing/suit/hooded/explorer/seva name = "SEVA Suit" - desc = "A fire-proof suit for exploring hot environments." + desc = "A fire-proof suit for exploring hot environments. Its design and material make it easier for a Goliath to keep their grip on the wearer." icon_state = "seva" item_state = "seva" w_class = WEIGHT_CLASS_BULKY @@ -141,7 +142,7 @@ /obj/item/clothing/head/hooded/explorer/seva name = "SEVA Hood" - desc = "A fire-proof hood for exploring hot environments." + desc = "A fire-proof hood for exploring hot environments. Its design and material make it easier for a Goliath to keep their grip on the wearer." icon_state = "seva" item_state = "seva" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -159,7 +160,7 @@ /obj/item/clothing/suit/hooded/explorer/exo name = "Exo-suit" - desc = "A robust suit for exploring dangerous environments." + desc = "A robust suit for fighting dangerous animals. Its design and material make it harder for a Goliath to keep their grip on the wearer." icon_state = "exo" item_state = "exo" w_class = WEIGHT_CLASS_BULKY @@ -170,7 +171,7 @@ /obj/item/clothing/head/hooded/explorer/exo name = "Exo-hood" - desc = "A robust helmet for exploring dangerous environments." + desc = "A robust helmet for fighting dangerous animals. Its design and material make it harder for a Goliath to keep their grip on the wearer." icon_state = "exo" item_state = "exo" armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 5990c70813..e146f1686a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -205,7 +205,7 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/mob/living/carbon/human/active_owner -/obj/item/clothing/neck/necklace/memento_mori/item_action_slot_check(slot) +/obj/item/clothing/neck/necklace/memento_mori/item_action_slot_check(slot, mob/user, datum/action/A) return slot == SLOT_NECK /obj/item/clothing/neck/necklace/memento_mori/dropped(mob/user) @@ -453,7 +453,7 @@ /obj/item/immortality_talisman/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE) /datum/action/item_action/immortality name = "Immortality" @@ -796,21 +796,21 @@ /obj/item/melee/ghost_sword/proc/ghost_check() var/list/mob/dead/observer/current_spirits = list() - + recursive_orbit_collect(src, current_spirits) recursive_orbit_collect(loc, current_spirits) //anything holding us - + for(var/i in spirits - current_spirits) var/mob/dead/observer/G = i G.invisibility = GLOB.observer_default_invisibility - + for(var/i in current_spirits) var/mob/dead/observer/G = i G.invisibility = 0 - + spirits = current_spirits return length(spirits) - + /obj/item/melee/ghost_sword/attack(mob/living/target, mob/living/carbon/human/user) force = 0 var/ghost_counter = ghost_check() diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index a004a6ae0d..4d8624864e 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -95,7 +95,7 @@ process_ore(AM) /obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/stack/ore/O) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) if(!materials.has_space(material_amount)) unload_mineral(O) @@ -107,7 +107,7 @@ /obj/machinery/mineral/processing_unit/proc/get_machine_data() var/dat = "Smelter control console

" - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] dat += "[M.name]: [M.amount] cm³" @@ -152,7 +152,7 @@ CONSOLE.updateUsrDialog() /obj/machinery/mineral/processing_unit/proc/smelt_ore() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/datum/material/mat = materials.materials[selected_material] if(mat) var/sheets_to_remove = (mat.amount >= (MINERAL_MATERIAL_AMOUNT * SMELT_AMOUNT) ) ? SMELT_AMOUNT : round(mat.amount / MINERAL_MATERIAL_AMOUNT) @@ -175,7 +175,7 @@ on = FALSE return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.use_amount(alloy.materials, amount) generate_mineral(alloy.build_path) @@ -186,7 +186,7 @@ var/build_amount = SMELT_AMOUNT - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in D.materials) var/M = D.materials[mat_id] @@ -204,7 +204,7 @@ unload_mineral(O) /obj/machinery/mineral/processing_unit/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() ..() diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index 8fdc50d2ac..c42f1b9f4e 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -34,13 +34,13 @@ GLOBAL_LIST_EMPTY(silo_access_logs) var/datum/component/remote_materials/mats = C mats.disconnect_from(src) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() return ..() /obj/machinery/ore_silo/proc/remote_attackby(obj/machinery/M, mob/user, obj/item/stack/I) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) // stolen from /datum/component/material_container/proc/OnAttackBy if(user.a_intent != INTENT_HELP) return @@ -71,7 +71,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) popup.open() /obj/machinery/ore_silo/proc/generate_ui() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/list/ui = list("Ore Silo

Stored Material:

") var/any = FALSE for(var/M in materials.materials) @@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) return TRUE else if(href_list["ejectsheet"]) var/eject_sheet = href_list["ejectsheet"] - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/count = materials.retrieve_sheets(text2num(href_list["eject_amt"]), eject_sheet, drop_location()) var/list/matlist = list() matlist[eject_sheet] = MINERAL_MATERIAL_AMOUNT diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 6b03be610d..8204977058 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -22,7 +22,7 @@ if(!T) return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/obj/item/stack/sheet/O in T) materials.insert_stack(O, O.amount) @@ -32,7 +32,7 @@ return var/dat = "Coin Press
" - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] if(!M.amount && chosen != mat_id) @@ -65,7 +65,7 @@ if(processing==1) to_chat(usr, "The machine is processing.") return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(href_list["choose"]) if(materials.materials[href_list["choose"]]) chosen = href_list["choose"] diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index f567bd1daf..fd5997d3c4 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -11,7 +11,7 @@ /obj/item/storage/bag/money/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_items = 40 STR.max_combined_w_class = 40 diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 591fc650b4..4d253a4693 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -151,7 +151,7 @@ message_admins(msg) to_chat(usr, "The round is either not ready, or has already finished...") return - + if(!GLOB.enter_allowed) to_chat(usr, "There is an administrative lock on entering the game!") return diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index 994d082585..d54b8256a9 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -17,6 +17,8 @@ hair_color = random_short_color() facial_hair_color = hair_color eye_color = random_eye_color() + horn_color = "85615a" + wing_color = "fff" if(!pref_species) var/rando_race = pick(GLOB.roundstart_races) pref_species = new rando_race() diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm index 2f1d48cfa7..156cc304a6 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm @@ -54,6 +54,10 @@ name = "Redpanda" icon_state = "redpanda" +/datum/sprite_accessory/mam_body_markings/bat + name = "Bat" + icon_state = "bat" + /datum/sprite_accessory/mam_body_markings/bee name = "Bee" icon_state = "bee" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm index 1496ca030a..ca1253feb1 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -176,6 +176,10 @@ name = "Axolotl" icon_state = "axolotl" +/datum/sprite_accessory/mam_ears/bat + name = "Bat" + icon_state = "bat" + /datum/sprite_accessory/mam_ears/bear name = "Bear" icon_state = "bear" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm index 7252f85324..be2ab152a8 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm @@ -194,6 +194,10 @@ name = "Mammal, Short ALT" icon_state = "scanidalt" +/datum/sprite_accessory/mam_snouts/scanidalt2 + name = "Mammal, Short ALT 2" + icon_state = "scanidalt2" + /datum/sprite_accessory/mam_snouts/wolf name = "Mammal, Thick" icon_state = "wolf" @@ -306,6 +310,10 @@ name = "Mammal, Short ALT (Top)" icon_state = "fscanidalt" +/datum/sprite_accessory/mam_snouts/fscanidalt2 + name = "Mammal, Short ALT 2 (Top)" + icon_state = "fscanidalt2" + /datum/sprite_accessory/mam_snouts/fwolf name = "Mammal, Thick (Top)" icon_state = "fwolf" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm index 3975f7bafc..33b174afa4 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -114,6 +114,26 @@ icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED +/datum/sprite_accessory/mam_tails/batl + name = "Bat (Long)" + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + icon_state = "batl" + +/datum/sprite_accessory/mam_tails_animated/batl + name = "Bat (Long)" + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + icon_state = "batl" + +/datum/sprite_accessory/mam_tails/bats + name = "Bat (Short)" + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + icon_state = "bats" + +/datum/sprite_accessory/mam_tails_animated/bats + name = "Bat (Short)" + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + icon_state = "bats" + /datum/sprite_accessory/tails/human/bee name = "Bee" icon_state = "bee" @@ -469,6 +489,22 @@ name = "Axolotl" icon_state = "axolotl" +/datum/sprite_accessory/mam_tails/batl + name = "Bat (Long)" + icon_state = "batl" + +/datum/sprite_accessory/mam_tails_animated/batl + name = "Bat (Long)" + icon_state = "batl" + +/datum/sprite_accessory/mam_tails/bats + name = "Bat (Short)" + icon_state = "bats" + +/datum/sprite_accessory/mam_tails_animated/bats + name = "Bat (Short)" + icon_state = "bats" + /datum/sprite_accessory/mam_tails/bee name = "Bee" icon_state = "bee" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 554b7edfdb..46a123c6bb 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -28,73 +28,14 @@ locked = TRUE // Decorative wings + /datum/sprite_accessory/deco_wings icon = 'icons/mob/wings.dmi' + color_src = WINGCOLOR -/datum/sprite_accessory/deco_wings/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/deco_wings/monarch - name = "Monarch" - icon_state = "monarch" - -/datum/sprite_accessory/deco_wings/luna - name = "Luna" - icon_state = "luna" - -/datum/sprite_accessory/deco_wings/atlas - name = "Atlas" - icon_state = "atlas" - -/datum/sprite_accessory/deco_wings/reddish - name = "Reddish" - icon_state = "redish" - -/datum/sprite_accessory/deco_wings/royal - name = "Royal" - icon_state = "royal" - -/datum/sprite_accessory/deco_wings/gothic - name = "Gothic" - icon_state = "gothic" - -/datum/sprite_accessory/deco_wings/lovers - name = "Lovers" - icon_state = "lovers" - -/datum/sprite_accessory/deco_wings/whitefly - name = "White Fly" - icon_state = "whitefly" - -/datum/sprite_accessory/deco_wings/punished - name = "Burnt Off" - icon_state = "punished" - locked = TRUE - -/datum/sprite_accessory/deco_wings/firewatch - name = "Firewatch" - icon_state = "firewatch" - -/datum/sprite_accessory/deco_wings/deathhead - name = "Deathshead" - icon_state = "deathhead" - -/datum/sprite_accessory/deco_wings/poison - name = "Poison" - icon_state = "poison" - -/datum/sprite_accessory/deco_wings/ragged - name = "Ragged" - icon_state = "ragged" - -/datum/sprite_accessory/deco_wings/moonfly - name = "Moon Fly" - icon_state = "moonfly" - -/datum/sprite_accessory/deco_wings/snow - name = "Snow" - icon_state = "snow" +/datum/sprite_accessory/deco_wings/none + name = "None" + icon_state = "none" /datum/sprite_accessory/deco_wings/angel name = "Angel" @@ -104,44 +45,123 @@ center = TRUE dimension_y = 34 -/datum/sprite_accessory/deco_wings/none - name = "None" - icon_state = "none" +/datum/sprite_accessory/deco_wings/bat + name = "Bat" + icon_state = "bat" +/datum/sprite_accessory/deco_wings/bee + name = "Bee" + icon_state = "bee" + +/datum/sprite_accessory/deco_wings/fairy + name = "Fairy" + icon_state = "fairy" + +/datum/sprite_accessory/deco_wings/feathery + name = "Feathery" + icon_state = "feathery" + +/datum/sprite_accessory/deco_wings/atlas + name = "Atlas" + icon_state = "atlas" + +/datum/sprite_accessory/deco_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/deco_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/deco_wings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/deco_wings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/deco_wings/luna + name = "Luna" + icon_state = "luna" + +/datum/sprite_accessory/deco_wings/monarch + name = "Monarch" + icon_state = "monarch" + +/datum/sprite_accessory/deco_wings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/deco_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/deco_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/deco_wings/punished + name = "Burnt Off" + icon_state = "punished" + +/datum/sprite_accessory/deco_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/deco_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/deco_wings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/deco_wings/snow + name = "Snow" + icon_state = "snow" + +/datum/sprite_accessory/deco_wings/whitefly + name = "White Fly" + icon_state = "whitefly" //INSECT WINGS /datum/sprite_accessory/insect_wings icon = 'icons/mob/wings.dmi' - color_src = null + color_src = WINGCOLOR /datum/sprite_accessory/insect_wings/none name = "None" icon_state = "none" -/datum/sprite_accessory/insect_wings/plain - name = "Plain" - icon_state = "plain" +/datum/sprite_accessory/insect_wings/bat + name = "Bat" + icon_state = "bat" -/datum/sprite_accessory/insect_wings/monarch - name = "Monarch" - icon_state = "monarch" +/datum/sprite_accessory/insect_wings/bee + name = "Bee" + icon_state = "bee" -/datum/sprite_accessory/insect_wings/luna - name = "Luna" - icon_state = "luna" +/datum/sprite_accessory/insect_wings/fairy + name = "Fairy" + icon_state = "fairy" + +/datum/sprite_accessory/insect_wings/feathery + name = "Feathery" + icon_state = "feathery" /datum/sprite_accessory/insect_wings/atlas name = "Atlas" icon_state = "atlas" -/datum/sprite_accessory/insect_wings/reddish - name = "Reddish" - icon_state = "redish" +/datum/sprite_accessory/insect_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" -/datum/sprite_accessory/insect_wings/royal - name = "Royal" - icon_state = "royal" +/datum/sprite_accessory/insect_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" /datum/sprite_accessory/insect_wings/gothic name = "Gothic" @@ -151,75 +171,46 @@ name = "Lovers" icon_state = "lovers" -/datum/sprite_accessory/insect_wings/whitefly - name = "White Fly" - icon_state = "whitefly" +/datum/sprite_accessory/insect_wings/luna + name = "Luna" + icon_state = "luna" -/datum/sprite_accessory/insect_wings/punished - name = "Burnt Off" - icon_state = "punished" - -/datum/sprite_accessory/insect_wings/firewatch - name = "Firewatch" - icon_state = "firewatch" - -/datum/sprite_accessory/insect_wings/deathhead - name = "Deathshead" - icon_state = "deathhead" - -/datum/sprite_accessory/insect_wings/poison - name = "Poison" - icon_state = "poison" - -/datum/sprite_accessory/insect_wings/ragged - name = "Ragged" - icon_state = "ragged" +/datum/sprite_accessory/insect_wings/monarch + name = "Monarch" + icon_state = "monarch" /datum/sprite_accessory/insect_wings/moonfly name = "Moon Fly" icon_state = "moonfly" +/datum/sprite_accessory/insect_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/insect_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/insect_wings/punished + name = "Burnt Off" + icon_state = "punished" + +/datum/sprite_accessory/insect_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/insect_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/insect_wings/royal + name = "Royal" + icon_state = "royal" + /datum/sprite_accessory/insect_wings/snow name = "Snow" icon_state = "snow" -/datum/sprite_accessory/insect_wings/colored - name = "Colored (Hair)" - icon_state = "snowplain" - color_src = HAIR - -/datum/sprite_accessory/insect_fluff/colored1 - name = "Colored (Primary)" - icon_state = "snowplain" - color_src = MUTCOLORS - -/datum/sprite_accessory/insect_fluff/colored2 - name = "Colored (Secondary)" - icon_state = "snowplain" - color_src = MUTCOLORS2 - -/datum/sprite_accessory/insect_fluff/colored3 - name = "Colored (Tertiary)" - icon_state = "snowplain" - color_src = MUTCOLORS3 - -/datum/sprite_accessory/insect_wings/bee - name = "Bee" - icon_state = "bee" - -/datum/sprite_accessory/insect_wings/bee_color - name = "Bee (Hair colored)" - icon_state = "bee" - color_src = HAIR - -/datum/sprite_accessory/insect_wings/fairy - name = "Fairy" - icon_state = "fairy" - -/datum/sprite_accessory/insect_wings/bat - name = "Bat" - icon_state = "bat" - -/datum/sprite_accessory/insect_wings/feathery - name = "Feathery" - icon_state = "feathery" +/datum/sprite_accessory/insect_wings/whitefly + name = "White Fly" + icon_state = "whitefly" \ No newline at end of file diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 625a923fe1..41d3d4e158 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -40,7 +40,7 @@ if(iscyborg(user) && user.has_buckled_mobs()) var/mob/living/silicon/robot/R = user - GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R) + var/datum/component/riding/riding_datum = R.GetComponent(/datum/component/riding) if(riding_datum) for(var/mob/M in R.buckled_mobs) riding_datum.force_dismount(M) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 760fb7a29f..e77a91332e 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -468,3 +468,6 @@ bodyparts += BP hand_bodyparts[i] = BP ..() //Don't redraw hands until we have organs for them + +/mob/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool) + return ..() && (user == src) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index ca1a961a92..757aadaea1 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -2,6 +2,9 @@ BLOOD SYSTEM ****************************************************/ +#define EXOTIC_BLEED_MULTIPLIER 4 //Multiplies the actually bled amount by this number for the purposes of turf reaction calculations. + + /mob/living/carbon/human/proc/suppress_bloodloss(amount) if(bleedsuppress) return @@ -30,6 +33,9 @@ bleed_rate = 0 return + if(bleed_rate <= 0) + bleed_rate = 0 + if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_NOCLONE))) //cryosleep or husked people do not pump the blood. //Blood regeneration if there is some space @@ -80,6 +86,9 @@ var/obj/item/bodypart/BP = X var/brutedamage = BP.brute_dam + if(BP.status == BODYPART_ROBOTIC) //for the moment, synth limbs won't bleed, but soon, my pretty. + continue + //We want an accurate reading of .len listclearnulls(BP.embedded_objects) temp_bleed += 0.5*BP.embedded_objects.len @@ -87,7 +96,7 @@ if(brutedamage >= 20) temp_bleed += (brutedamage * 0.013) - bleed_rate = max(bleed_rate - 0.5, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases + bleed_rate = max(bleed_rate - 0.50, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases if(bleed_rate && !bleedsuppress && !(HAS_TRAIT(src, TRAIT_FAKEDEATH))) bleed(bleed_rate) @@ -105,9 +114,11 @@ /mob/living/carbon/human/bleed(amt) amt *= physiology.bleed_mod if(!(NOBLOOD in dna.species.species_traits)) - ..() - - + .=..() + if(dna.species.exotic_blood && .) // Do we have exotic blood, and have we left any on the ground? + var/datum/reagent/R = GLOB.chemical_reagents_list[get_blood_id()] + if(istype(R) && isturf(loc)) + R.reaction_turf(get_turf(src), amt * EXOTIC_BLEED_MULTIPLIER) /mob/living/proc/restore_blood() blood_volume = initial(blood_volume) @@ -123,16 +134,16 @@ //Gets blood from mob to a container or other mob, preserving all data in it. /mob/living/proc/transfer_blood_to(atom/movable/AM, amount, forced) if(!blood_volume || !AM.reagents) - return 0 + return FALSE if(blood_volume < (BLOOD_VOLUME_BAD * blood_ratio) && !forced) - return 0 + return FALSE if(blood_volume < amount) amount = blood_volume var/blood_id = get_blood_id() if(!blood_id) - return 0 + return FALSE blood_volume -= amount @@ -141,29 +152,27 @@ if(iscarbon(AM)) var/mob/living/carbon/C = AM if(blood_id == C.get_blood_id())//both mobs have the same blood substance - if(blood_id == "blood") //normal blood + if(blood_id == "blood" || blood_id == "jellyblood") //normal blood if(blood_data["viruses"]) for(var/thing in blood_data["viruses"]) var/datum/disease/D = thing if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) continue C.ForceContractDisease(D) - if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", amount * 0.5) - return 1 + //This used to inject oof ouch results, but since we add the reagent, and the reagent causes oof ouch on mob life... why double dip? C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) - return 1 + return TRUE AM.reagents.add_reagent(blood_id, amount, blood_data, bodytemperature) - return 1 + return TRUE /mob/living/proc/get_blood_data(blood_id) return /mob/living/carbon/get_blood_data(blood_id) - if(blood_id == "blood") //actual blood reagent + if(blood_id == "blood" || blood_id == "jellyblood") //actual blood reagent var/blood_data = list() //set the blood data blood_data["donor"] = src @@ -174,6 +183,7 @@ blood_data["viruses"] += D.Copy() blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0) + blood_data["bloodcolor"] = bloodtype_to_color(dna.blood_type) if(disease_resistances && disease_resistances.len) blood_data["resistances"] = disease_resistances.Copy() var/list/temp_chem = list() @@ -206,21 +216,6 @@ if(istype(ling)) blood_data["changeling_loudness"] = ling.loudfactor return blood_data - if(blood_id == "slimejelly") //Just so MKUltra works. Takes the minimum required data. Sishen is testing if this breaks stuff. - var/blood_data = list() - if(mind) - blood_data["mind"] = mind - else if(last_mind) - blood_data["mind"] = last_mind - if(ckey) - blood_data["ckey"] = ckey - else if(last_mind) - blood_data["ckey"] = ckey(last_mind.key) - blood_data["gender"] = gender - blood_data["real_name"] = real_name - return blood_data - - //get the id of the substance this mob use as blood. /mob/proc/get_blood_id() @@ -234,12 +229,15 @@ if(!(HAS_TRAIT(src, TRAIT_NOCLONE))) return "blood" -/mob/living/carbon/human/get_blood_id() - if(dna.species.exotic_blood) +/mob/living/carbon/get_blood_id() + if(isjellyperson(src)) + return "jellyblood" + if(dna?.species?.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (HAS_TRAIT(src, TRAIT_NOCLONE))) return - return "blood" + else + return "blood" // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) @@ -248,16 +246,21 @@ return var/static/list/bloodtypes_safe = list( - "A-" = list("A-", "O-"), - "A+" = list("A-", "A+", "O-", "O+"), - "B-" = list("B-", "O-"), - "B+" = list("B-", "B+", "O-", "O+"), - "AB-" = list("A-", "B-", "O-", "AB-"), - "AB+" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+"), - "O-" = list("O-"), - "O+" = list("O-", "O+"), - "L" = list("L"), - "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U") + "A-" = list("A-", "O-", "SY"), + "A+" = list("A-", "A+", "O-", "O+", "SY"), + "B-" = list("B-", "O-", "SY"), + "B+" = list("B-", "B+", "O-", "O+", "SY"), + "AB-" = list("A-", "B-", "O-", "AB-", "SY"), + "AB+" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "SY"), + "O-" = list("O-","SY"), + "O+" = list("O-", "O+","SY"), + "L" = list("L","SY"), + "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U","SY"), + "HF" = list("HF", "SY"), + "X*" = list("X*", "SY"), + "SY" = list("SY"), + "GEL" = list("GEL","SY"), + "BUG" = list("BUG", "SY") ) var/safe = bloodtypes_safe[bloodtype] @@ -266,7 +269,7 @@ //to add a splatter of blood or other mob liquid. /mob/living/proc/add_splatter_floor(turf/T, small_drip) - if(get_blood_id() != "blood") + if(get_blood_id() == null) return if(!T) T = get_turf(src) @@ -280,24 +283,27 @@ drop.drips++ drop.add_overlay(pick(drop.random_icon_states)) drop.transfer_mob_blood_dna(src) + drop.update_icon() return else - temp_blood_DNA = drop.return_blood_DNA() //we transfer the dna from the drip to the splatter + temp_blood_DNA = list() + temp_blood_DNA |= drop.blood_DNA.Copy() //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else drop = new(T, get_static_viruses()) drop.transfer_mob_blood_dna(src) + drop.update_icon() return // Find a blood decal or create a new one. - var/obj/effect/decal/cleanable/blood/B = locate() in T + var/obj/effect/decal/cleanable/blood/splats/B = locate() in T if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(T, get_static_viruses()) - if (B.bloodiness < MAX_SHOE_BLOODINESS) //add more blood, up to a limit + B = new /obj/effect/decal/cleanable/blood/splats(T, get_static_viruses()) + if(B.bloodiness < MAX_SHOE_BLOODINESS) //add more blood, up to a limit B.bloodiness += BLOOD_AMOUNT_PER_DECAL B.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) - B.add_blood_DNA(temp_blood_DNA) + B.blood_DNA |= temp_blood_DNA /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!(NOBLOOD in dna.species.species_traits)) @@ -306,10 +312,10 @@ /mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) if(!T) T = get_turf(src) - var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in T.contents if(!B) B = new(T) - B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) + B.blood_DNA["UNKNOWN DNA"] = "X*" /mob/living/silicon/robot/add_splatter_floor(turf/T, small_drip) if(!T) @@ -318,6 +324,44 @@ if(!B) B = new(T) +/mob/living/proc/add_splash_floor(turf/T) + if(get_blood_id() == null) + return + if(!T) + T = get_turf(src) + + var/list/temp_blood_DNA + + // Find a blood decal or create a new one. + var/obj/effect/decal/cleanable/blood/B = locate() in T + if(!B) + B = new /obj/effect/decal/cleanable/blood/splatter(T, get_static_viruses()) + if(B.bloodiness < MAX_SHOE_BLOODINESS) //add more blood, up to a limit + B.bloodiness += BLOOD_AMOUNT_PER_DECAL + B.transfer_mob_blood_dna(src) //give blood info to the blood decal. + src.transfer_blood_to(B, 10) //very heavy bleeding, should logically leave larger pools + if(temp_blood_DNA) + B.blood_DNA |= temp_blood_DNA + +/mob/living/carbon/human/add_splash_floor(turf/T) + if(!(NOBLOOD in dna.species.species_traits)) + ..() + +/mob/living/carbon/alien/add_splash_floor(turf/T) + if(!T) + T = get_turf(src) + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in T.contents + if(!B) + B = new(T) + B.blood_DNA["UNKNOWN DNA"] = "X*" + +/mob/living/silicon/robot/add_splash_floor(turf/T) + if(!T) + T = get_turf(src) + var/obj/effect/decal/cleanable/oil/B = locate() in T.contents + if(!B) + B = new(T) + //This is a terrible way of handling it. /mob/living/proc/ResetBloodVol() if(ishuman(src)) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index cc11c0e8bb..d1ace36b8c 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -147,13 +147,12 @@ /mob/living/proc/exit_blood_effect(obj/effect/decal/cleanable/B) playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) //Makes the mob have the color of the blood pool it came out of - var/newcolor = rgb(149, 10, 10) - if(istype(B, /obj/effect/decal/cleanable/xenoblood)) - newcolor = rgb(43, 186, 0) + var/newcolor = BLOOD_COLOR_HUMAN + if(istype(B, /obj/effect/decal/cleanable/blood/xeno)) + newcolor = BLOOD_COLOR_XENO add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds - spawn(30) - remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, newcolor) + addtimer(CALLBACK(src, /atom/.proc/remove_atom_colour, TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS) /mob/living/proc/phasein(obj/effect/decal/cleanable/B) if(src.notransform) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index 97b29ca4e1..1b2944c1f6 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -10,7 +10,10 @@ /mob/living/brain/Initialize() . = ..() create_dna(src) - stored_dna.initialize_dna(random_blood_type()) + if(stored_dna.blood_type) + stored_dna.initialize_dna(stored_dna.blood_type) + else + stored_dna.initialize_dna(random_blood_type()) if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned) var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it. OB.brainmob = src @@ -21,6 +24,8 @@ if(!stored_dna.species) var/rando_race = pick(GLOB.roundstart_races) stored_dna.species = new rando_race() + if(stored_dna.species.exotic_bloodtype) + stored_dna.blood_type = stored_dna.species.exotic_bloodtype /mob/living/brain/Destroy() if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 9e0bb0428b..8a70ccc4cb 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -92,6 +92,17 @@ GLOBAL_VAR(posibrain_notify_cooldown) if(posi_ask == "No" || QDELETED(src)) return transfer_personality(user) + latejoin_remove() + +/obj/item/mmi/posibrain/Destroy() + latejoin_remove() + return ..() + +/obj/item/mmi/posibrain/proc/latejoin_remove() + GLOB.poi_list -= src + LAZYREMOVE(GLOB.mob_spawners[name], src) + if(!LAZYLEN(GLOB.mob_spawners[name])) + GLOB.mob_spawners -= name /obj/item/mmi/posibrain/transfer_identity(mob/living/carbon/C) name = "[initial(name)] ([C])" @@ -163,6 +174,8 @@ GLOBAL_VAR(posibrain_notify_cooldown) brainmob.container = src if(autoping) ping_ghosts("created", TRUE) + GLOB.poi_list |= src + LAZYADD(GLOB.mob_spawners[name], src) /obj/item/mmi/posibrain/attackby(obj/item/O, mob/user) return diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index c8ece3f656..3ad7acfcdc 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,7 +20,7 @@ var/heat_protection = 0.5 var/leaping = 0 - gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs + gib_type = /obj/effect/decal/cleanable/blood/gibs/xeno unique_name = 1 var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index ce2b4401e9..77300e1435 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -2,7 +2,7 @@ if(with_bodyparts) new /obj/effect/gibspawner/xeno(drop_location()) else - new /obj/effect/gibspawner/xenobodypartless(drop_location()) + new /obj/effect/gibspawner/xeno/bodypartless(drop_location()) /mob/living/carbon/alien/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a") diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 323bd408cf..ef6a372f9e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -95,8 +95,14 @@ Doesn't work on other aliens/AI.*/ var/mob/living/M = input("Select who to whisper to:","Whisper to?",null) as null|mob in options if(!M) return 0 + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return FALSE var/msg = sanitize(input("Message:", "Alien Whisper") as text|null) if(msg) + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return log_directed_talk(user, M, msg, LOG_SAY, tag="alien whisper") to_chat(M, "You hear a strange, alien voice in your head...[msg]") to_chat(user, "You said: \"[msg]\" to [M]") diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index e16be71ccf..e7cf70f441 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -10,7 +10,7 @@ if(with_bodyparts) new /obj/effect/gibspawner/larva(drop_location()) else - new /obj/effect/gibspawner/larvabodypartless(drop_location()) + new /obj/effect/gibspawner/larva/bodypartless(drop_location()) /mob/living/carbon/alien/larva/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l") diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index df1be454ee..7b6962794a 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -89,6 +89,8 @@ owner.adjustFireLoss(-heal_amt) owner.adjustOxyLoss(-heal_amt) owner.adjustCloneLoss(-heal_amt) + if(owner.blood_volume && (owner.blood_volume < BLOOD_VOLUME_NORMAL)) + owner.blood_volume += 5 else owner.adjustPlasma(plasma_rate * 0.1) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 04a2e56857..0bfd23cbff 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -111,7 +111,7 @@ else //When it is removed via surgery at a late stage, rather than forced. new_xeno.visible_message("[new_xeno] wriggles out of [owner]!", "You exit [owner], your previous host.") owner.adjustBruteLoss(40) - owner.cut_overlay(overlay) + owner.cut_overlay(overlay) qdel(src) @@ -119,19 +119,19 @@ Proc: AddInfectionImages(C) Des: Adds the infection image to all aliens for this embryo ----------------------------------------*/ -/obj/item/organ/body_egg/alien_embryo/AddInfectionImages() +/obj/item/organ/body_egg/alien_embryo/AddInfectionImages(mob/living/carbon/C) for(var/mob/living/carbon/alien/alien in GLOB.player_list) if(alien.client) - var/I = image('icons/mob/alien.dmi', loc = owner, icon_state = "infected[stage]") + var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]") alien.client.images += I /*---------------------------------------- Proc: RemoveInfectionImage(C) Des: Removes all images from the mob infected by this embryo ----------------------------------------*/ -/obj/item/organ/body_egg/alien_embryo/RemoveInfectionImages() +/obj/item/organ/body_egg/alien_embryo/RemoveInfectionImages(mob/living/carbon/C) for(var/mob/living/carbon/alien/alien in GLOB.player_list) if(alien.client) for(var/image/I in alien.client.images) - if(dd_hasprefix_case(I.icon_state, "infected") && I.loc == owner) + if(dd_hasprefix_case(I.icon_state, "infected") && I.loc == C) qdel(I) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 263edf42c2..88aa5f86d0 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -905,7 +905,7 @@ /mob/living/carbon/do_after_coefficent() . = ..() - GET_COMPONENT_FROM(mood, /datum/component/mood, src) //Currently, only carbons or higher use mood, move this once that changes. + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes. if(mood) switch(mood.sanity) //Alters do_after delay based on how sane you are if(SANITY_INSANE to SANITY_DISTURBED) @@ -947,7 +947,7 @@ return TRUE if(HAS_TRAIT(src, TRAIT_DUMB)) return TRUE - GET_COMPONENT_FROM(mood, /datum/component/mood, src) + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) if(mood) if(mood.sanity < SANITY_UNSTABLE) return TRUE diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index bc64c8303b..b0e9b808df 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -287,7 +287,7 @@ "You give [H] a pat on the head to make [p_them()] feel better!") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) if(HAS_TRAIT(M, TRAIT_FRIENDLY)) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) if (mood.sanity >= SANITY_GREAT) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M) else if (mood.sanity >= SANITY_DISTURBED) @@ -322,7 +322,7 @@ "You hug [src] to make [p_them()] feel better!") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug) if(HAS_TRAIT(M, TRAIT_FRIENDLY)) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) if (mood.sanity >= SANITY_GREAT) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M) else if (mood.sanity >= SANITY_DISTURBED) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 41daf642f2..a1184613fe 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -49,6 +49,7 @@ //Gets filled up in create_bodyparts() var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems) + var/list/leg_bodyparts = list() var/icon_render_key = "" var/static/list/limb_icon_cache = list() diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 8e6c888c40..155b0fc7de 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -36,7 +36,7 @@ /mob/living/carbon/Move(NewLoc, direct) . = ..() - if(. && mob_has_gravity()) //floating is easy + if(. && (movement_type & FLOATING)) //floating is easy if(HAS_TRAIT(src, TRAIT_NOHUNGER)) nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous else if(nutrition && stat != DEAD) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index cc0c0d7434..7d1e5320fc 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -1,8 +1,8 @@ -/mob/living/carbon/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked = FALSE) +/mob/living/carbon/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE) var/hit_percent = (100-blocked)/100 - if(hit_percent <= 0) + if(!forced && hit_percent <= 0) return 0 var/obj/item/bodypart/BP = null @@ -15,34 +15,35 @@ if(!BP) BP = bodyparts[1] + var/damage_amount = forced ? damage : damage * hit_percent switch(damagetype) if(BRUTE) if(BP) - if(damage > 0 ? BP.receive_damage(damage * hit_percent, 0) : BP.heal_damage(abs(damage * hit_percent), 0)) + if(damage > 0 ? BP.receive_damage(damage_amount) : BP.heal_damage(abs(damage_amount), 0)) update_damage_overlays() else //no bodypart, we deal damage with a more general method. - adjustBruteLoss(damage * hit_percent) + adjustBruteLoss(damage_amount, forced = forced) if(BURN) if(BP) - if(damage > 0 ? BP.receive_damage(0, damage * hit_percent) : BP.heal_damage(0, abs(damage * hit_percent))) + if(damage > 0 ? BP.receive_damage(0, damage_amount) : BP.heal_damage(0, abs(damage_amount))) update_damage_overlays() else - adjustFireLoss(damage * hit_percent) + adjustFireLoss(damage_amount, forced = forced) if(TOX) - adjustToxLoss(damage * hit_percent) + adjustToxLoss(damage_amount, forced = forced) if(OXY) - adjustOxyLoss(damage * hit_percent) + adjustOxyLoss(damage_amount, forced = forced) if(CLONE) - adjustCloneLoss(damage * hit_percent) + adjustCloneLoss(damage_amount, forced = forced) if(STAMINA) if(BP) - if(damage > 0 ? BP.receive_damage(0, 0, damage * hit_percent) : BP.heal_damage(0, 0, abs(damage * hit_percent))) + if(damage > 0 ? BP.receive_damage(0, 0, damage_amount) : BP.heal_damage(0, 0, abs(damage_amount))) update_damage_overlays() else - adjustStaminaLoss(damage * hit_percent) + adjustStaminaLoss(damage_amount, forced = forced) //citadel code if(AROUSAL) - adjustArousalLoss(damage * hit_percent) + adjustArousalLoss(damage_amount, forced = forced) return TRUE @@ -85,7 +86,7 @@ if(!forced && HAS_TRAIT(src, TRAIT_TOXINLOVER)) //damage becomes healing and healing becomes damage amount = -amount if(amount > 0) - blood_volume -= 5*amount + blood_volume -= 3*amount // x5 is too much, x3 should be still penalizing enough. else blood_volume -= amount return ..() diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index c029eac12b..5634d21775 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -93,7 +93,7 @@ msg += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n" msg += common_trait_examine() - GET_COMPONENT_FROM(mood, /datum/component/mood, src) + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) if(mood) switch(mood.shown_mood) if(-INFINITY to MOOD_LEVEL_SAD4) diff --git a/code/modules/mob/living/carbon/human/damage_procs.dm b/code/modules/mob/living/carbon/human/damage_procs.dm index 7641408529..9f6a572fc8 100644 --- a/code/modules/mob/living/carbon/human/damage_procs.dm +++ b/code/modules/mob/living/carbon/human/damage_procs.dm @@ -1,5 +1,5 @@ -/mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE) +/mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE) // depending on the species, it will run the corresponding apply_damage code there - return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src) + return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src, forced) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 64b75bc801..b0c3f61eec 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -5,10 +5,35 @@ new /obj/effect/temp_visual/dust_animation(loc, "dust-h") /mob/living/carbon/human/spawn_gibs(with_bodyparts) - if(with_bodyparts) - new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses()) + if(isjellyperson(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/slime(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/slime/bodypartless(drop_location(), dna, get_static_viruses()) + + if(isipcperson(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/ipc(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/ipc/bodypartless(drop_location(), dna, get_static_viruses()) + + if(isxenoperson(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/xeno/xenoperson(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/xeno/xenoperson/bodypartless(drop_location(), dna, get_static_viruses()) + + if(islizard(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/lizard(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/lizard/bodypartless(drop_location(), dna, get_static_viruses()) + else - new /obj/effect/gibspawner/humanbodypartless(drop_location(), dna, get_static_viruses()) + if(with_bodyparts) + new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses()) /mob/living/carbon/human/spawn_dust(just_ash = FALSE) if(just_ash) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 6ebc4f8a32..7b0fb74f44 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/human/examine(mob/user) //User is the person being examined +/mob/living/carbon/human/examine(mob/user) //this is very slightly better than it was because you can use it more places. still can't do \his[src] though. var/t_He = p_they(TRUE) var/t_His = p_their(TRUE) @@ -45,7 +45,7 @@ if(wear_suit) msg += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)].\n" //suit/armor storage - if(s_store) + if(s_store && !(SLOT_S_STORE in obscured)) msg += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name].\n" //back if(back) @@ -56,11 +56,10 @@ if(!(I.item_flags & ABSTRACT)) msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" - GET_COMPONENT(FR, /datum/component/forensics) //gloves if(gloves && !(SLOT_GLOVES in obscured)) msg += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands.\n" - else if(FR && length(FR.blood_DNA)) + else if(length(blood_DNA)) var/hand_number = get_num_arms(FALSE) if(hand_number) msg += "[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!\n" @@ -86,7 +85,7 @@ if(wear_mask && !(SLOT_WEAR_MASK in obscured)) msg += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face.\n" - if (wear_neck && !(SLOT_NECK in obscured)) + if(wear_neck && !(SLOT_NECK in obscured)) msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" //eyes @@ -152,7 +151,7 @@ var/temp = getBruteLoss() //no need to calculate each of these twice - msg += "" + msg += "" //Everything below gets this span var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) var/list/disabled = list() @@ -297,7 +296,7 @@ msg += "[t_He] seem[p_s()] winded.\n" if (getToxLoss() >= 10) msg += "[t_He] seem[p_s()] sickly.\n" - GET_COMPONENT_FROM(mood, /datum/component/mood, src) + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) if(mood.sanity <= SANITY_DISTURBED) msg += "[t_He] seem[p_s()] distressed.\n" SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "empath", /datum/mood_event/sad_empath, src) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 02e6043462..a737844f10 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -32,7 +32,7 @@ if(CONFIG_GET(flag/disable_stambuffer)) togglesprint() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /mob/living/carbon/human/clean_blood) /mob/living/carbon/human/ComponentInitialize() @@ -488,7 +488,7 @@ var/counter = 1 while(R.fields[text("com_[]", counter)]) counter++ - R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
[]", allowed_access, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
[]", allowed_access, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer, t1) to_chat(usr, "Successfully added comment.") return to_chat(usr, "Unable to locate a data core entry for this person.") @@ -689,16 +689,17 @@ if(..()) dropItemToGround(I) -/mob/living/carbon/human/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return - if(gloves) - if(SEND_SIGNAL(gloves, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) - update_inv_gloves() +/mob/living/carbon/human/clean_blood() + var/mob/living/carbon/human/H = src + if(H.gloves) + if(H.gloves.clean_blood()) + H.update_inv_gloves() else - if(bloody_hands) - bloody_hands = 0 - update_inv_gloves() + ..() // Clear the Blood_DNA list + if(H.bloody_hands) + H.bloody_hands = 0 + H.update_inv_gloves() + update_icons() //apply the now updated overlays to the mob /mob/living/carbon/human/wash_cream() if(creamed) //clean both to prevent a rare bug @@ -945,7 +946,7 @@ return FALSE /mob/living/carbon/human/proc/clear_shove_slowdown() - remove_movespeed_modifier(SHOVE_SLOWDOWN_ID) + remove_movespeed_modifier(MOVESPEED_ID_SHOVE) var/active_item = get_active_held_item() if(is_type_in_typecache(active_item, GLOB.shove_disarming_types)) visible_message("[src.name] regains their grip on \the [active_item]!", "You regain your grip on \the [active_item]", null, COMBAT_MESSAGE_RANGE) @@ -1104,3 +1105,18 @@ /mob/living/carbon/human/species/zombie/krokodil_addict race = /datum/species/krokodil_addict + +/mob/living/carbon/human/species/mammal + race = /datum/species/mammal + +/mob/living/carbon/human/species/insect + race = /datum/species/insect + +/mob/living/carbon/human/species/xeno + race = /datum/species/xeno + +/mob/living/carbon/human/species/ipc + race = /datum/species/ipc + +/mob/living/carbon/human/species/roundstartslime + race = /datum/species/jelly/roundstartslime diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index e32d073500..b1f11f6463 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -19,6 +19,8 @@ var/horn_color = "85615a" //specific horn colors, because why not? + var/wing_color = "fff" //wings too + var/skin_tone = "caucasian1" //Skin tone var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup @@ -49,6 +51,9 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/name_override //For temporary visible name changes var/genital_override = FALSE //Force genitals on things incase of chems diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index b65d62b63b..8bc8866380 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -127,3 +127,9 @@ return FALSE return . +/* +/mob/living/carbon/human/transfer_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len]*/ diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 6ea9c985e2..4e6f9e0eb9 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -56,20 +56,20 @@ //Bloody footprints var/turf/T = get_turf(src) if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) - for(var/obj/effect/decal/cleanable/blood/footprints/oldFP in T) - if (oldFP.blood_state == S.blood_state) - return - //No oldFP or they're all a different kind of blood - S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) - if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) - FP.blood_state = S.blood_state - FP.entered_dirs |= dir - FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD - FP.add_blood_DNA(S.return_blood_DNA()) - FP.update_icon() + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) + return + S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + FP.blood_state = S.blood_state + FP.entered_dirs |= dir + FP.bloodiness = S.bloody_shoes[S.blood_state] + if(S.last_bloodtype) + FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) + FP.update_icon() update_inv_shoes() //End bloody footprints + S.step_action() /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index d35df6b789..084dbd83ef 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -79,7 +79,8 @@ //This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible() /mob/living/carbon/human/equip_to_slot(obj/item/I, slot) - if(!..()) //a check failed or the item has already found its slot + . = ..() + if(!.) //a check failed or the item has already found its slot return var/not_handled = FALSE //Added in case we make this type path deeper one day @@ -136,6 +137,7 @@ update_inv_s_store() else to_chat(src, "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!") + not_handled = TRUE //Item is handled and in slot, valid to call callback, for this proc should always be true if(!not_handled) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 9395283aeb..be52a8289b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -18,7 +18,7 @@ #define THERMAL_PROTECTION_HAND_LEFT 0.025 #define THERMAL_PROTECTION_HAND_RIGHT 0.025 -/mob/living/carbon/human/Life() +/mob/living/carbon/human/Life(seconds, times_fired) set invisibility = 0 if (notransform) return @@ -41,7 +41,7 @@ if(stat != DEAD) //process your dick energy - handle_arousal() + handle_arousal(times_fired) //Update our name based on whether our face is obscured/disfigured name = get_visible_name() diff --git a/code/modules/mob/living/carbon/human/physiology.dm b/code/modules/mob/living/carbon/human/physiology.dm index ac9e9fe219..4d411deb53 100644 --- a/code/modules/mob/living/carbon/human/physiology.dm +++ b/code/modules/mob/living/carbon/human/physiology.dm @@ -21,8 +21,6 @@ var/bleed_mod = 1 // % bleeding modifier var/datum/armor/armor // internal armor datum - var/speed_mod = 0 //tick modifier for each step. Positive is slower, negative is faster. - var/hunger_mod = 1 //% of hunger rate taken per tick. var/do_after_speed = 1 //Speed mod for do_after. Lower is better. If temporarily adjusting, please only modify using *= and /=, so you don't interrupt other calculations. diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index eee425063d..c54f41017a 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -1,14 +1,14 @@ /mob/living/carbon/human/say_mod(input, message_mode) verb_say = dna.species.say_mod - switch(slurring) - if(10 to 25) - return "jumbles" - if(25 to 50) - return "slurs" - if(50 to INFINITY) - return "garbles" - else - . = ..() + . = ..() + if(message_mode != MODE_CUSTOM_SAY && message_mode != MODE_WHISPER_CRIT) + switch(slurring) + if(10 to 25) + return "jumbles" + if(25 to 50) + return "slurs" + if(50 to INFINITY) + return "garbles" /mob/living/carbon/human/GetVoice() if(istype(wear_mask, /obj/item/clothing/mask/chameleon)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1f843483ee..025e933356 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -37,6 +37,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/hair_alpha = 255 // the alpha used by the hair. 255 is completely solid, 0 is transparent. var/horn_color //specific horn colors, because why not? + var/wing_color var/use_skintones = 0 // does it use skintones or not? (spoiler alert this is only used by humans) var/exotic_blood = "" // If your race wants to bleed something other than bog standard blood, change this to reagent id. @@ -331,6 +332,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if("meat_type" in default_features) //I can't believe it's come to the meat H.type_of_meat = GLOB.meat_types[H.dna.features["meat_type"]] + C.add_movespeed_modifier(MOVESPEED_ID_SPECIES, TRUE, 100, override=TRUE, multiplicative_slowdown=speedmod, movetypes=(~FLYING)) + SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species) @@ -338,12 +341,17 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) if(C.dna.species.exotic_bloodtype) - C.dna.blood_type = random_blood_type() + if(!new_species.exotic_bloodtype) + C.dna.blood_type = random_blood_type() + else + C.dna.blood_type = new_species.exotic_bloodtype if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) for(var/X in inherent_traits) REMOVE_TRAIT(C, X, SPECIES_TRAIT) + C.remove_movespeed_modifier(MOVESPEED_ID_SPECIES) + if("meat_type" in default_features) C.type_of_meat = GLOB.meat_types[C.dna.features["meat_type"]] else @@ -537,7 +545,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(H.hidden_underwear) H.underwear = "Nude" else - H.saved_underwear = H.underwear + H.underwear = H.saved_underwear var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[H.underwear] if(B) var/mutable_appearance/MA = mutable_appearance(B.icon, B.icon_state, -BODY_LAYER) @@ -549,7 +557,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(H.hidden_undershirt) H.undershirt = "Nude" else - H.saved_undershirt = H.undershirt + H.undershirt = H.saved_undershirt var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[H.undershirt] if(T) var/mutable_appearance/MA @@ -565,7 +573,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(H.hidden_socks) H.socks = "Nude" else - H.saved_socks = H.socks + H.socks = H.saved_socks var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[H.socks] if(S) var/digilegs = (DIGITIGRADE in species_traits) ? "_d" : "" @@ -869,6 +877,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) accessory_overlay.color = "#[H.eye_color]" if(HORNCOLOR) accessory_overlay.color = "#[H.horn_color]" + if(WINGCOLOR) + accessory_overlay.color = "#[H.wing_color]" else accessory_overlay.color = forced_colour else @@ -946,6 +956,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(HORNCOLOR) extra_accessory_overlay.color = "#[H.horn_color]" + if(WINGCOLOR) + extra_accessory_overlay.color = "#[H.wing_color]" if(OFFSET_MUTPARTS in H.dna.species.offset_features) extra_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1] @@ -985,6 +997,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) extra2_accessory_overlay.color = "#[H.hair_color]" if(HORNCOLOR) extra2_accessory_overlay.color = "#[H.horn_color]" + if(WINGCOLOR) + extra2_accessory_overlay.color = "#[H.wing_color]" if(OFFSET_MUTPARTS in H.dna.species.offset_features) extra2_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1] @@ -1017,6 +1031,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return "TAUR" //END EDIT +/* TODO: Snowflake trail marks +// Impliments different trails for species depending on if they're wearing shoes. +/datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) + if(H.lying) + return /obj/effect/decal/cleanable/blood/footprints/tracks/body + if(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET))) + var/obj/item/clothing/shoes/shoes = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) ? H.wear_suit : H.shoes // suits take priority over shoes + return shoes.move_trail + else + return move_trail */ /datum/species/proc/spec_life(mob/living/carbon/human/H) if(HAS_TRAIT(H, TRAIT_NOBREATH)) @@ -1270,7 +1294,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER)) // THEY HUNGER var/hunger_rate = HUNGER_FACTOR - GET_COMPONENT_FROM(mood, /datum/component/mood, H) + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) if(mood && mood.sanity > SANITY_DISTURBED) hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75 @@ -1369,39 +1393,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/movement_delay(mob/living/carbon/human/H) . = 0 //We start at 0. var/flight = 0 //Check for flight and flying items - var/ignoreslow = 0 var/gravity = 0 if(H.movement_type & FLYING) flight = 1 gravity = H.has_gravity() - if(gravity && !flight) //Check for chemicals and innate speedups and slowdowns if we're on the ground - if(HAS_TRAIT(H, TRAIT_GOTTAGOFAST)) - . -= 1 - if(HAS_TRAIT(H, TRAIT_GOTTAGOREALLYFAST)) - . -= 2 - . += speedmod - . += H.physiology.speed_mod - if (H.m_intent == MOVE_INTENT_WALK && HAS_TRAIT(H, TRAIT_SPEEDY_STEP)) . -= 1.5 - if(HAS_TRAIT(H, TRAIT_IGNORESLOWDOWN)) - ignoreslow = 1 - - if(!gravity) - var/obj/item/tank/jetpack/J = H.back - var/obj/item/clothing/suit/space/hardsuit/C = H.wear_suit - var/obj/item/organ/cyberimp/chest/thrusters/T = H.getorganslot(ORGAN_SLOT_THRUSTERS) - if(!istype(J) && istype(C)) - J = C.jetpack - if(istype(J) && J.full_speed && J.allow_thrust(0.01, H)) //Prevents stacking - . -= 0.4 - else if(istype(T) && T.allow_thrust(0.01, H)) - . -= 0.4 - - if(!ignoreslow && gravity) + if(!HAS_TRAIT(H, TRAIT_IGNORESLOWDOWN) && gravity) if(H.wear_suit) . += H.wear_suit.slowdown if(H.shoes) @@ -1428,16 +1429,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/grav_force = min(gravity - STANDARD_GRAVITY,3) . += 1 + grav_force - GET_COMPONENT_FROM(mood, /datum/component/mood, H) - if(mood && !flight) //How can depression slow you down if you can just fly away from your problems? - switch(mood.sanity) - if(SANITY_INSANE to SANITY_CRAZY) - . += 1.5 - if(SANITY_CRAZY to SANITY_UNSTABLE) - . += 1 - if(SANITY_UNSTABLE to SANITY_DISTURBED) - . += 0.5 - if(HAS_TRAIT(H, TRAIT_FAT)) . += (1.5 - flight) if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD)) @@ -1920,8 +1911,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/knocked_item = FALSE if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types)) target_held_item = null - if(!target.has_movespeed_modifier(SHOVE_SLOWDOWN_ID)) - target.add_movespeed_modifier(SHOVE_SLOWDOWN_ID, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH) + if(!target.has_movespeed_modifier(MOVESPEED_ID_SHOVE)) + target.add_movespeed_modifier(MOVESPEED_ID_SHOVE, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH) if(target_held_item) target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!", "Your grip on \the [target_held_item] loosens!", null, COMBAT_MESSAGE_RANGE) @@ -1939,10 +1930,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) append_message = "loosening their grip on [target_held_item]" log_combat(user, target, "shoved", append_message) -/datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H) +/datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE) var/hit_percent = (100-(blocked+armor))/100 hit_percent = (hit_percent * (100-H.physiology.damage_resistance))/100 - if(hit_percent <= 0) + if(!forced && hit_percent <= 0) return 0 var/obj/item/bodypart/BP = null @@ -1964,37 +1955,44 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) switch(damagetype) if(BRUTE) H.damageoverlaytemp = 20 + var/damage_amount = forced ? damage : damage * hit_percent * brutemod * H.physiology.brute_mod if(BP) - if(damage > 0 ? BP.receive_damage(damage * hit_percent * brutemod * H.physiology.brute_mod, 0) : BP.heal_damage(abs(damage * hit_percent * brutemod * H.physiology.brute_mod), 0)) + if(damage > 0 ? BP.receive_damage(damage_amount, 0) : BP.heal_damage(abs(damage_amount), 0)) H.update_damage_overlays() if(HAS_TRAIT(H, TRAIT_MASO)) - H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod) + H.adjustArousalLoss(damage_amount, 0) if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_dna()) H.mob_climax(forced_climax=TRUE) else//no bodypart, we deal damage with a more general method. - H.adjustBruteLoss(damage * hit_percent * brutemod * H.physiology.brute_mod) + H.adjustBruteLoss(damage_amount) if(BURN) H.damageoverlaytemp = 20 + var/damage_amount = forced ? damage : damage * hit_percent * burnmod * H.physiology.burn_mod if(BP) - if(damage > 0 ? BP.receive_damage(0, damage * hit_percent * burnmod * H.physiology.burn_mod) : BP.heal_damage(0, abs(damage * hit_percent * burnmod * H.physiology.burn_mod))) + if(damage > 0 ? BP.receive_damage(0, damage_amount) : BP.heal_damage(0, abs(damage_amount))) H.update_damage_overlays() else - H.adjustFireLoss(damage * hit_percent * burnmod * H.physiology.burn_mod) + H.adjustFireLoss(damage_amount) if(TOX) - H.adjustToxLoss(damage * hit_percent * H.physiology.tox_mod) + var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.tox_mod + H.adjustToxLoss(damage_amount) if(OXY) - H.adjustOxyLoss(damage * hit_percent * H.physiology.oxy_mod) + var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.oxy_mod + H.adjustOxyLoss(damage_amount) if(CLONE) - H.adjustCloneLoss(damage * hit_percent * H.physiology.clone_mod) + var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.clone_mod + H.adjustCloneLoss(damage_amount) if(STAMINA) + var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.stamina_mod if(BP) - if(damage > 0 ? BP.receive_damage(0, 0, damage * hit_percent * H.physiology.stamina_mod) : BP.heal_damage(0, 0, abs(damage * hit_percent * H.physiology.stamina_mod), only_robotic = FALSE, only_organic = FALSE)) + if(damage > 0 ? BP.receive_damage(0, 0, damage_amount) : BP.heal_damage(0, 0, abs(damage * hit_percent * H.physiology.stamina_mod), only_robotic = FALSE, only_organic = FALSE)) H.update_stamina() else - H.adjustStaminaLoss(damage * hit_percent * H.physiology.stamina_mod) + H.adjustStaminaLoss(damage_amount) if(BRAIN) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage * hit_percent * H.physiology.brain_mod) + var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.brain_mod + H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage_amount) if(AROUSAL) //Citadel edit - arousal H.adjustArousalLoss(damage * hit_percent) return 1 diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index c1c848106c..7669a8c740 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -29,7 +29,7 @@ if(fly) fly.Remove(H) if(H.movement_type & FLYING) - H.movement_type &= ~FLYING + H.setMovetype(H.movement_type & ~FLYING) ToggleFlight(H,0) if(H.dna && H.dna.species && (H.dna.features["wings"] == "Angel")) if("wings" in H.dna.species.mutant_bodyparts) @@ -132,14 +132,14 @@ if(flight && CanFly(H)) stunmod = 2 speedmod = -0.35 - H.movement_type |= FLYING + H.setMovetype(H.movement_type | FLYING) override_float = TRUE H.pass_flags |= PASSTABLE H.OpenWings() else stunmod = 1 speedmod = 0 - H.movement_type &= ~FLYING + H.setMovetype(H.movement_type & ~FLYING) override_float = FALSE H.pass_flags &= ~PASSTABLE H.CloseWings() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm index 94dba550b6..d264f11b73 100644 --- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm @@ -3,7 +3,7 @@ id = "insect" say_mod = "flutters" default_color = "00FF00" - species_traits = list(LIPS,NOEYES,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR) + species_traits = list(LIPS,NOEYES,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG) mutant_bodyparts = list("mam_ears", "mam_snout", "mam_tail", "taur", "insect_wings", "mam_snouts", "insect_fluff","horns") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", @@ -17,6 +17,7 @@ toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/insect should_draw_citadel = TRUE + exotic_bloodtype = "BUG" /datum/species/insect/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 1ee697d66c..ec58a3be9c 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -4,8 +4,8 @@ id = "felinid" limbs_id = "human" - mutant_bodyparts = list("mam_ears", "mam_tail") - default_features = list("mcolor" = "FFF", "mam_tail" = "Cat", "mam_ears" = "Cat", "wings" = "None") + mutant_bodyparts = list("mam_ears", "mam_tail", "deco_wings") + default_features = list("mcolor" = "FFF", "mam_tail" = "Cat", "mam_ears" = "Cat", "wings" = "None", "deco_wings" = "None") mutantears = /obj/item/organ/ears/cat mutanttail = /obj/item/organ/tail/cat diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 043ee4fde1..0c3bcc2b00 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -10,6 +10,7 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null liked_food = GROSS + exotic_bloodtype = "BUG" /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "pestkiller") diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 07e594d20b..90714b390c 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -3,7 +3,7 @@ id = "mammal" default_color = "4B4B4B" should_draw_citadel = TRUE - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "deco_wings", "taur", "horns", "legs") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None", @@ -65,7 +65,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/xeno skinned_type = /obj/item/stack/sheet/animalhide/xeno - exotic_bloodtype = "L" + exotic_bloodtype = "X*" damage_overlay_type = "xeno" liked_food = MEAT diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 8f84590ff4..a7e952f430 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -634,9 +634,10 @@ id = "clockwork golem" say_mod = "clicks" limbs_id = "clockgolem" - info_text = "As a Clockwork Golem, you are faster than other types of golems. On death, you will break down into scrap." + info_text = "As a Clockwork Golem, you are faster than other types of golems, and are capable of using guns. On death, you will break down into scrap." species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES,NOGENITALS,NOAROUSAL) inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) + inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) armor = 20 //Reinforced, but much less so to allow for fast movement attack_verb = "smash" attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' @@ -682,7 +683,7 @@ blacklisted = TRUE dangerous_existence = TRUE random_eligible = FALSE - info_text = "As a Clockwork Golem Servant, you are faster than other types of golems." //warcult golems leave a corpse + info_text = "As a Clockwork Golem Servant, you are faster than other types of golems, and are capable of using guns." //warcult golems leave a corpse /datum/species/golem/cloth name = "Cloth Golem" diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 96b43795a2..3332465c78 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -1,41 +1,42 @@ -/datum/species/human - name = "Human" - id = "human" - default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY) - mutant_bodyparts = list("ears", "tail_human", "wings", "taur") // CITADEL EDIT gives humans snowflake parts - default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "wings" = "None", "taur" = "None") - use_skintones = 1 - skinned_type = /obj/item/stack/sheet/animalhide/human - disliked_food = GROSS | RAW - liked_food = JUNKFOOD | FRIED - -/datum/species/human/qualifies_for_rank(rank, list/features) - return TRUE //Pure humans are always allowed in all roles. - -/datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) - if(H) - stop_wagging_tail(H) - -/datum/species/human/spec_stun(mob/living/carbon/human/H,amount) - if(H) - stop_wagging_tail(H) - . = ..() - -/datum/species/human/can_wag_tail(mob/living/carbon/human/H) - return ("tail_human" in mutant_bodyparts) || ("waggingtail_human" in mutant_bodyparts) - -/datum/species/human/is_wagging_tail(mob/living/carbon/human/H) - return ("waggingtail_human" in mutant_bodyparts) - -/datum/species/human/start_wagging_tail(mob/living/carbon/human/H) - if("tail_human" in mutant_bodyparts) - mutant_bodyparts -= "tail_human" - mutant_bodyparts |= "waggingtail_human" - H.update_body() - -/datum/species/human/stop_wagging_tail(mob/living/carbon/human/H) - if("waggingtail_human" in mutant_bodyparts) - mutant_bodyparts -= "waggingtail_human" - mutant_bodyparts |= "tail_human" - H.update_body() +/datum/species/human + name = "Human" + id = "human" + default_color = "FFFFFF" + + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR) + mutant_bodyparts = list("ears", "tail_human", "wings", "taur", "deco_wings") // CITADEL EDIT gives humans snowflake parts + default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "wings" = "None", "taur" = "None", "deco_wings" = "None") + use_skintones = 1 + skinned_type = /obj/item/stack/sheet/animalhide/human + disliked_food = GROSS | RAW + liked_food = JUNKFOOD | FRIED + +/datum/species/human/qualifies_for_rank(rank, list/features) + return TRUE //Pure humans are always allowed in all roles. + +/datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/human/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/human/can_wag_tail(mob/living/carbon/human/H) + return ("tail_human" in mutant_bodyparts) || ("waggingtail_human" in mutant_bodyparts) + +/datum/species/human/is_wagging_tail(mob/living/carbon/human/H) + return ("waggingtail_human" in mutant_bodyparts) + +/datum/species/human/start_wagging_tail(mob/living/carbon/human/H) + if("tail_human" in mutant_bodyparts) + mutant_bodyparts -= "tail_human" + mutant_bodyparts |= "waggingtail_human" + H.update_body() + +/datum/species/human/stop_wagging_tail(mob/living/carbon/human/H) + if("waggingtail_human" in mutant_bodyparts) + mutant_bodyparts -= "waggingtail_human" + mutant_bodyparts |= "tail_human" + H.update_body() diff --git a/code/modules/mob/living/carbon/human/species_types/ipc.dm b/code/modules/mob/living/carbon/human/species_types/ipc.dm index 95b924ea18..135c98860a 100644 --- a/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -12,8 +12,8 @@ default_features = list("ipc_screen" = "Blank", "ipc_antenna" = "None") meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc mutanttongue = /obj/item/organ/tongue/robot/ipc - - exotic_blood = "oil" + mutant_heart = /obj/item/organ/heart/ipc + exotic_bloodtype = "HF" var/datum/action/innate/monitor_change/screen diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 03cd514300..71eaa5ae22 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -4,13 +4,15 @@ id = "jelly" default_color = "00FF90" say_mod = "chirps" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR) mutantlungs = /obj/item/organ/lungs/slime - mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur") //CIT CHANGE - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE + mutant_heart = /obj/item/organ/heart/slime + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur", "deco_wings") //CIT CHANGE + default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None") //CIT CHANGE inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime - exotic_blood = "slimejelly" + exotic_blood = "jellyblood" + exotic_bloodtype = "GEL" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/slime_change/slime_change //CIT CHANGE @@ -121,7 +123,7 @@ name = "Xenobiological Slime Entity" id = "slime" default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 @@ -396,7 +398,7 @@ id = "slimeperson" limbs_id = "slime" default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) inherent_traits = list(TRAIT_TOXINLOVER) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur") default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None") @@ -470,37 +472,25 @@ H.hair_style = new_style H.update_hair() else if (select_alteration == "Genitals") - var/list/organs = list() var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") switch(operation) if("add sexual organ") - var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") - if(new_organ == "Penis") - H.give_penis() - else if(new_organ == "Testicles") - H.give_balls() - else if(new_organ == "Breasts") - H.give_breasts() - else if(new_organ == "Vagina") - H.give_vagina() - else if(new_organ == "Womb") - H.give_womb() - else + var/new_organ = input("Select sexual organ:", "Organ Manipulation") as null|anything in GLOB.genitals_list + if(!new_organ) return + H.give_genital(GLOB.genitals_list[new_organ]) + if("remove sexual organ") + var/list/organs = list() for(var/obj/item/organ/genital/X in H.internal_organs) var/obj/item/organ/I = X organs["[I.name] ([I.type])"] = I - var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs - organ = organs[organ] - if(!organ) + var/obj/item/O = input("Select sexual organ:", "Organ Manipulation", null) as null|anything in organs + var/obj/item/organ/genital/G = organs[O] + if(!G) return - var/obj/item/organ/genital/O - if(isorgan(organ)) - O = organ - O.Remove(H) - organ.forceMove(get_turf(H)) - qdel(organ) + G.forceMove(get_turf(H)) + qdel(G) H.update_genitals() else if (select_alteration == "Ears") @@ -590,8 +580,8 @@ if(new_shape) H.dna.features["cock_shape"] = new_shape H.update_genitals() - H.give_balls() - H.give_penis() + H.give_genital(/obj/item/organ/genital/testicles) + H.give_genital(/obj/item/organ/genital/penis) H.apply_overlay() @@ -603,8 +593,8 @@ if(new_shape) H.dna.features["vag_shape"] = new_shape H.update_genitals() - H.give_womb() - H.give_vagina() + H.give_genital(/obj/item/organ/genital/womb) + H.give_genital(/obj/item/organ/genital/vagina) H.apply_overlay() else if (select_alteration == "Penis Length") @@ -616,8 +606,8 @@ H.dna.features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN) H.update_genitals() H.apply_overlay() - H.give_balls() - H.give_penis() + H.give_genital(/obj/item/organ/genital/testicles) + H.give_genital(/obj/item/organ/genital/penis) else if (select_alteration == "Breast Size") for(var/obj/item/organ/genital/breasts/X in H.internal_organs) @@ -628,7 +618,7 @@ H.dna.features["breasts_size"] = new_size H.update_genitals() H.apply_overlay() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/breasts) else if (select_alteration == "Breast Shape") for(var/obj/item/organ/genital/breasts/X in H.internal_organs) @@ -639,7 +629,7 @@ H.dna.features["breasts_shape"] = new_shape H.update_genitals() H.apply_overlay() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/breasts) else return @@ -854,6 +844,8 @@ return FALSE if(HAS_TRAIT(M, TRAIT_MINDSHIELD)) //mindshield implant, no dice return FALSE + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + return FALSE if(M in linked_mobs) return FALSE linked_mobs.Add(M) @@ -939,9 +931,14 @@ var/mob/living/M = input("Select who to send your message to:","Send thought to?",null) as null|mob in options if(!M) return - + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(H, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return var/msg = sanitize(input("Message:", "Telepathy") as text|null) if(msg) + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(H, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return log_directed_talk(H, M, msg, LOG_SAY, "slime telepathy") to_chat(M, "You hear an alien voice in your head... [msg]") to_chat(H, "You telepathically said: \"[msg]\" to [M]") 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 4dbfd23df8..a719f2eda0 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,16 +4,16 @@ id = "lizard" say_mod = "hisses" default_color = "00FF00" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS,HORNCOLOR) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS,HORNCOLOR,WINGCOLOR) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_REPTILE) - mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") + mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur", "deco_wings") mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard coldmod = 1.5 heatmod = 0.67 default_features = list("mcolor" = "0F0", "mcolor2" = "0F0", "mcolor3" = "0F0", "tail_lizard" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", - "legs" = "Digitigrade", "taur" = "None") + "legs" = "Digitigrade", "taur" = "None", "deco_wings" = "None") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 5a20ca37a8..6a4c7a4463 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -22,6 +22,7 @@ /datum/species/skeleton/space name = "Spooky Spacey Skeleton" id = "spaceskeleton" + limbs_id = "skeleton" blacklisted = 1 inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_FAKEDEATH, TRAIT_CALCIUM_HEALER) diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 53c6f1bd0f..7462d26ea6 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -45,14 +45,14 @@ C.adjustOxyLoss(-4) C.adjustCloneLoss(-4) return - C.blood_volume -= 0.75 + C.blood_volume -= 0.75 //Will take roughly 19.5 minutes to die from standard blood volume, roughly 83 minutes to die from max blood volume. if(C.blood_volume <= (BLOOD_VOLUME_SURVIVE*C.blood_ratio)) to_chat(C, "You ran out of blood!") C.dust() var/area/A = get_area(C) if(istype(A, /area/chapel)) to_chat(C, "You don't belong here!") - C.adjustFireLoss(20) + C.adjustFireLoss(5) C.adjust_fire_stacks(6) C.IgniteMob() @@ -88,7 +88,7 @@ to_chat(H, "[victim] doesn't have blood!") return V.drain_cooldown = world.time + 30 - if(victim.anti_magic_check(FALSE, TRUE)) + if(victim.anti_magic_check(FALSE, TRUE, FALSE, 0)) to_chat(victim, "[H] tries to bite you, but stops before touching you!") to_chat(H, "[victim] is blessed! You stop just in time to avoid catching fire.") return @@ -141,7 +141,7 @@ H = new(shape,src,caster) if(istype(H, /mob/living/simple_animal)) var/mob/living/simple_animal/SA = H - if(ventcrawl_nude_only && length(caster.get_equipped_items(include_pockets = TRUE))) + if((caster.blood_volume >= (BLOOD_VOLUME_BAD*caster.blood_ratio)) || (ventcrawl_nude_only && length(caster.get_equipped_items(include_pockets = TRUE)))) SA.ventcrawler = FALSE if(transfer_name) H.name = caster.name diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index e0cc3bb147..a1dce4fb0f 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -18,6 +18,7 @@ /datum/species/zombie/notspaceproof id = "notspaceproofzombie" + limbs_id = "zombie" blacklisted = 0 inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_FAKEDEATH) @@ -44,7 +45,7 @@ /datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount) . = min(20, amount) -/datum/species/zombie/infectious/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H) +/datum/species/zombie/infectious/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE) . = ..() if(.) regen_cooldown = world.time + REGENERATION_DELAY diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index fa3e29f119..a68aded85f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -180,7 +180,7 @@ There are several things that need to be remembered: inv.update_icon() if(!gloves && bloody_hands) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_DNA_to_color()) if(get_num_arms() < 2) if(has_left_hand()) bloody_overlay.icon_state = "bloodyhands_left" @@ -270,6 +270,32 @@ There are several things that need to be remembered: if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() +/* + if(!shoes && bloody_feet) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(dna.features["taur"] != "None") + if(dna.features["taur"] in GLOB.noodle_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "snekbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_right" + else if(dna.features["taur"] in GLOB.paw_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "pawbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_right" + else + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "bloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "bloodyfeet_right" + + overlays_standing[GLOVES_LAYER] = bloody_overlay*/ if(shoes) var/obj/item/clothing/shoes/S = shoes diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index cdae073af8..66be8058f1 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -23,7 +23,7 @@ if(changed) animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN|EASE_OUT) - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life(). + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life(). /mob/living/carbon @@ -97,8 +97,12 @@ /mob/living/carbon/update_damage_overlays() remove_overlay(DAMAGE_LAYER) + var/dam_colors = "#E62525" + if(ishuman(src)) + var/mob/living/carbon/human/H = src + dam_colors = bloodtype_to_color(H.dna.blood_type) - var/mutable_appearance/damage_overlay = mutable_appearance('icons/mob/dam_mob.dmi', "blank", -DAMAGE_LAYER) + var/mutable_appearance/damage_overlay = mutable_appearance('icons/mob/dam_mob.dmi', "blank", -DAMAGE_LAYER, color = dam_colors) overlays_standing[DAMAGE_LAYER] = damage_overlay for(var/X in bodyparts) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 563ab7cfb6..dc43ab8b07 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -8,23 +8,24 @@ Returns standard 0 if fail */ -/mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE) +/mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE) var/hit_percent = (100-blocked)/100 if(!damage || (hit_percent <= 0)) return 0 + var/damage_amount = forced ? damage : damage * hit_percent switch(damagetype) if(BRUTE) - adjustBruteLoss(damage * hit_percent) + adjustBruteLoss(damage_amount, forced = forced) if(BURN) - adjustFireLoss(damage * hit_percent) + adjustFireLoss(damage_amount, forced = forced) if(TOX) - adjustToxLoss(damage * hit_percent) + adjustToxLoss(damage_amount, forced = forced) if(OXY) - adjustOxyLoss(damage * hit_percent) + adjustOxyLoss(damage_amount, forced = forced) if(CLONE) - adjustCloneLoss(damage * hit_percent) + adjustCloneLoss(damage_amount, forced = forced) if(STAMINA) - adjustStaminaLoss(damage * hit_percent) + adjustStaminaLoss(damage_amount, forced = forced) return 1 /mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs @@ -79,7 +80,7 @@ -/mob/living/proc/apply_effect(effect = 0,effecttype = EFFECT_STUN, blocked = FALSE) +/mob/living/proc/apply_effect(effect = 0,effecttype = EFFECT_STUN, blocked = FALSE, knockdown_stamoverride, knockdown_stammax) var/hit_percent = (100-blocked)/100 if(!effect || (hit_percent <= 0)) return 0 @@ -87,7 +88,7 @@ if(EFFECT_STUN) Stun(effect * hit_percent) if(EFFECT_KNOCKDOWN) - Knockdown(effect * hit_percent) + Knockdown(effect * hit_percent, override_stamdmg = knockdown_stammax ? CLAMP(knockdown_stamoverride, 0, knockdown_stammax-getStaminaLoss()) : knockdown_stamoverride) if(EFFECT_UNCONSCIOUS) Unconscious(effect * hit_percent) if(EFFECT_IRRADIATE) @@ -107,13 +108,13 @@ return 1 -/mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0) +/mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0, kd_stamoverride, kd_stammax) if(blocked >= 100) return 0 if(stun) apply_effect(stun, EFFECT_STUN, blocked) if(knockdown) - apply_effect(knockdown, EFFECT_KNOCKDOWN, blocked) + apply_effect(knockdown, EFFECT_KNOCKDOWN, blocked, kd_stamoverride, kd_stammax) if(unconscious) apply_effect(unconscious, EFFECT_UNCONSCIOUS, blocked) if(irradiate) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 201e5fea24..2bf17bc265 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -4,7 +4,7 @@ if(digitalinvis) handle_diginvis() //AI becomes unable to see mob - if((movement_type & FLYING) && !floating) //TODO: Better floating + if((movement_type & FLYING) && !(movement_type & FLOATING)) //TODO: Better floating float(on = TRUE) if (client) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 812733ebe2..e893426ee9 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -502,7 +502,7 @@ fire_stacks = 0 confused = 0 update_canmove() - GET_COMPONENT(mood, /datum/component/mood) + var/datum/component/mood/mood = GetComponent(/datum/component/mood) if (mood) QDEL_LIST_ASSOC_VAL(mood.mood_events) mood.sanity = SANITY_GREAT @@ -716,14 +716,14 @@ var/fixed = 0 if(anchored || (buckled && buckled.anchored)) fixed = 1 - if(on && !floating && !fixed) + if(on && !(movement_type & FLOATING) && !fixed) animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) sleep(10) animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) - floating = TRUE - else if(((!on || fixed) && floating)) + setMovetype(movement_type | FLOATING) + else if(((!on || fixed) && (movement_type & FLOATING))) animate(src, pixel_y = get_standard_pixel_y_offset(lying), time = 10) - floating = FALSE + setMovetype(movement_type & ~FLOATING) // The src mob is trying to strip an item from someone // Override if a certain type of mob should be behave differently when stripping items (can't, for example) @@ -795,7 +795,7 @@ var/final_pixel_y = get_standard_pixel_y_offset(lying) animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 2, loop = 6) animate(pixel_x = final_pixel_x , pixel_y = final_pixel_y , time = 2) - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure to restart it in next life(). + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure to restart it in next life(). /mob/living/proc/get_temperature(datum/gas_mixture/environment) var/loc_temp = environment ? environment.temperature : T0C @@ -935,7 +935,7 @@ apply_effect((amount*RAD_MOB_COEFFICIENT)/max(1, (radiation**2)*RAD_OVERDOSE_REDUCTION), EFFECT_IRRADIATE, blocked) -/mob/living/anti_magic_check(magic = TRUE, holy = FALSE) +/mob/living/anti_magic_check(magic = TRUE, holy = FALSE, chargecost = 1, self = FALSE) . = ..() if(.) return diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 9d04f288cd..93e64fd4cc 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -422,4 +422,4 @@ if(!used_item) used_item = get_active_held_item() ..() - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement. + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement. diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 5664c2ebca..174fd5c394 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -391,16 +391,16 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 0 /mob/living/say_mod(input, message_mode) - if(message_mode == MODE_WHISPER) - . = verb_whisper - else if(message_mode == MODE_WHISPER_CRIT) + . = ..() + if(message_mode == MODE_WHISPER_CRIT) . = "[verb_whisper] in [p_their()] last breath" - else if(stuttering) - . = "stammers" - else if(derpspeech) - . = "gibbers" - else - . = ..() + else if(message_mode != MODE_CUSTOM_SAY) + if(message_mode == MODE_WHISPER) + . = verb_whisper + else if(stuttering) + . = "stammers" + else if(derpspeech) + . = "gibbers" /mob/living/whisper(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) say("#[message]", bubble_type, spans, sanitize, language, ignore_spam, forced) diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm index eb6d0ce991..50a808032d 100644 --- a/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm @@ -975,4 +975,635 @@ GLOBAL_LIST_INIT(vox_sounds, list("abduction" = 'sound/vox_fem/abduction.ogg', "zombie" = 'sound/vox_fem/zombie.ogg', "zone" = 'sound/vox_fem/zone.ogg', "zulu" = 'sound/vox_fem/zulu.ogg')) + +//for vim +// :%s/\(\(.*\)\.ogg\)/"\2" = 'sound\/vox\/\1',/g +GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'sound/vox/_comma.ogg', +"." = 'sound/vox/_period.ogg', +"a" = 'sound/vox/a.ogg', +"accelerating" = 'sound/vox/accelerating.ogg', +"accelerator" = 'sound/vox/accelerator.ogg', +"accepted" = 'sound/vox/accepted.ogg', +"access" = 'sound/vox/access.ogg', +"acknowledge" = 'sound/vox/acknowledge.ogg', +"acknowledged" = 'sound/vox/acknowledged.ogg', +"acquired" = 'sound/vox/acquired.ogg', +"acquisition" = 'sound/vox/acquisition.ogg', +"across" = 'sound/vox/across.ogg', +"activate" = 'sound/vox/activate.ogg', +"activated" = 'sound/vox/activated.ogg', +"activity" = 'sound/vox/activity.ogg', +"adios" = 'sound/vox/adios.ogg', +"administration" = 'sound/vox/administration.ogg', +"advanced" = 'sound/vox/advanced.ogg', +"after" = 'sound/vox/after.ogg', +"agent" = 'sound/vox/agent.ogg', +"alarm" = 'sound/vox/alarm.ogg', +"alert" = 'sound/vox/alert.ogg', +"alien" = 'sound/vox/alien.ogg', +"aligned" = 'sound/vox/aligned.ogg', +"all" = 'sound/vox/all.ogg', +"alpha" = 'sound/vox/alpha.ogg', +"am" = 'sound/vox/am.ogg', +"amigo" = 'sound/vox/amigo.ogg', +"ammunition" = 'sound/vox/ammunition.ogg', +"an" = 'sound/vox/an.ogg', +"and" = 'sound/vox/and.ogg', +"announcement" = 'sound/vox/announcement.ogg', +"anomalous" = 'sound/vox/anomalous.ogg', +"antenna" = 'sound/vox/antenna.ogg', +"any" = 'sound/vox/any.ogg', +"apprehend" = 'sound/vox/apprehend.ogg', +"approach" = 'sound/vox/approach.ogg', +"are" = 'sound/vox/are.ogg', +"area" = 'sound/vox/area.ogg', +"arm" = 'sound/vox/arm.ogg', +"armed" = 'sound/vox/armed.ogg', +"armor" = 'sound/vox/armor.ogg', +"armory" = 'sound/vox/armory.ogg', +"arrest" = 'sound/vox/arrest.ogg', +"ass" = 'sound/vox/ass.ogg', +"at" = 'sound/vox/at.ogg', +"atomic" = 'sound/vox/atomic.ogg', +"attention" = 'sound/vox/attention.ogg', +"authorize" = 'sound/vox/authorize.ogg', +"authorized" = 'sound/vox/authorized.ogg', +"automatic" = 'sound/vox/automatic.ogg', +"away" = 'sound/vox/away.ogg', +"b" = 'sound/vox/b.ogg', +"back" = 'sound/vox/back.ogg', +"backman" = 'sound/vox/backman.ogg', +"bad" = 'sound/vox/bad.ogg', +"bag" = 'sound/vox/bag.ogg', +"bailey" = 'sound/vox/bailey.ogg', +"barracks" = 'sound/vox/barracks.ogg', +"base" = 'sound/vox/base.ogg', +"bay" = 'sound/vox/bay.ogg', +"be" = 'sound/vox/be.ogg', +"been" = 'sound/vox/been.ogg', +"before" = 'sound/vox/before.ogg', +"beyond" = 'sound/vox/beyond.ogg', +"biohazard" = 'sound/vox/biohazard.ogg', +"biological" = 'sound/vox/biological.ogg', +"birdwell" = 'sound/vox/birdwell.ogg', +"bizwarn" = 'sound/vox/bizwarn.ogg', +"black" = 'sound/vox/black.ogg', +"blast" = 'sound/vox/blast.ogg', +"blocked" = 'sound/vox/blocked.ogg', +"bloop" = 'sound/vox/bloop.ogg', +"blue" = 'sound/vox/blue.ogg', +"bottom" = 'sound/vox/bottom.ogg', +"bravo" = 'sound/vox/bravo.ogg', +"breach" = 'sound/vox/breach.ogg', +"breached" = 'sound/vox/breached.ogg', +"break" = 'sound/vox/break.ogg', +"bridge" = 'sound/vox/bridge.ogg', +"bust" = 'sound/vox/bust.ogg', +"but" = 'sound/vox/but.ogg', +"button" = 'sound/vox/button.ogg', +"buzwarn" = 'sound/vox/buzwarn.ogg', +"bypass" = 'sound/vox/bypass.ogg', +"c" = 'sound/vox/c.ogg', +"cable" = 'sound/vox/cable.ogg', +"call" = 'sound/vox/call.ogg', +"called" = 'sound/vox/called.ogg', +"canal" = 'sound/vox/canal.ogg', +"cap" = 'sound/vox/cap.ogg', +"captain" = 'sound/vox/captain.ogg', +"capture" = 'sound/vox/capture.ogg', +"captured" = 'sound/vox/captured.ogg', +"ceiling" = 'sound/vox/ceiling.ogg', +"celsius" = 'sound/vox/celsius.ogg', +"center" = 'sound/vox/center.ogg', +"centi" = 'sound/vox/centi.ogg', +"central" = 'sound/vox/central.ogg', +"chamber" = 'sound/vox/chamber.ogg', +"charlie" = 'sound/vox/charlie.ogg', +"check" = 'sound/vox/check.ogg', +"checkpoint" = 'sound/vox/checkpoint.ogg', +"chemical" = 'sound/vox/chemical.ogg', +"cleanup" = 'sound/vox/cleanup.ogg', +"clear" = 'sound/vox/clear.ogg', +"clearance" = 'sound/vox/clearance.ogg', +"close" = 'sound/vox/close.ogg', +"clown" = 'sound/vox/clown.ogg', +"code" = 'sound/vox/code.ogg', +"coded" = 'sound/vox/coded.ogg', +"collider" = 'sound/vox/collider.ogg', +"command" = 'sound/vox/command.ogg', +"communication" = 'sound/vox/communication.ogg', +"complex" = 'sound/vox/complex.ogg', +"computer" = 'sound/vox/computer.ogg', +"condition" = 'sound/vox/condition.ogg', +"containment" = 'sound/vox/containment.ogg', +"contamination" = 'sound/vox/contamination.ogg', +"control" = 'sound/vox/control.ogg', +"coolant" = 'sound/vox/coolant.ogg', +"coomer" = 'sound/vox/coomer.ogg', +"core" = 'sound/vox/core.ogg', +"correct" = 'sound/vox/correct.ogg', +"corridor" = 'sound/vox/corridor.ogg', +"crew" = 'sound/vox/crew.ogg', +"cross" = 'sound/vox/cross.ogg', +"cryogenic" = 'sound/vox/cryogenic.ogg', +"d" = 'sound/vox/d.ogg', +"dadeda" = 'sound/vox/dadeda.ogg', +"damage" = 'sound/vox/damage.ogg', +"damaged" = 'sound/vox/damaged.ogg', +"danger" = 'sound/vox/danger.ogg', +"day" = 'sound/vox/day.ogg', +"deactivated" = 'sound/vox/deactivated.ogg', +"decompression" = 'sound/vox/decompression.ogg', +"decontamination" = 'sound/vox/decontamination.ogg', +"deeoo" = 'sound/vox/deeoo.ogg', +"defense" = 'sound/vox/defense.ogg', +"degrees" = 'sound/vox/degrees.ogg', +"delta" = 'sound/vox/delta.ogg', +"denied" = 'sound/vox/denied.ogg', +"deploy" = 'sound/vox/deploy.ogg', +"deployed" = 'sound/vox/deployed.ogg', +"destroy" = 'sound/vox/destroy.ogg', +"destroyed" = 'sound/vox/destroyed.ogg', +"detain" = 'sound/vox/detain.ogg', +"detected" = 'sound/vox/detected.ogg', +"detonation" = 'sound/vox/detonation.ogg', +"device" = 'sound/vox/device.ogg', +"did" = 'sound/vox/did.ogg', +"die" = 'sound/vox/die.ogg', +"dimensional" = 'sound/vox/dimensional.ogg', +"dirt" = 'sound/vox/dirt.ogg', +"disengaged" = 'sound/vox/disengaged.ogg', +"dish" = 'sound/vox/dish.ogg', +"disposal" = 'sound/vox/disposal.ogg', +"distance" = 'sound/vox/distance.ogg', +"distortion" = 'sound/vox/distortion.ogg', +"do" = 'sound/vox/do.ogg', +"doctor" = 'sound/vox/doctor.ogg', +"doop" = 'sound/vox/doop.ogg', +"door" = 'sound/vox/door.ogg', +"down" = 'sound/vox/down.ogg', +"dual" = 'sound/vox/dual.ogg', +"duct" = 'sound/vox/duct.ogg', +"e" = 'sound/vox/e.ogg', +"east" = 'sound/vox/east.ogg', +"echo" = 'sound/vox/echo.ogg', +"ed" = 'sound/vox/ed.ogg', +"effect" = 'sound/vox/effect.ogg', +"egress" = 'sound/vox/egress.ogg', +"eight" = 'sound/vox/eight.ogg', +"eighteen" = 'sound/vox/eighteen.ogg', +"eighty" = 'sound/vox/eighty.ogg', +"electric" = 'sound/vox/electric.ogg', +"electromagnetic" = 'sound/vox/electromagnetic.ogg', +"elevator" = 'sound/vox/elevator.ogg', +"eleven" = 'sound/vox/eleven.ogg', +"eliminate" = 'sound/vox/eliminate.ogg', +"emergency" = 'sound/vox/emergency.ogg', +"enemy" = 'sound/vox/enemy.ogg', +"energy" = 'sound/vox/energy.ogg', +"engage" = 'sound/vox/engage.ogg', +"engaged" = 'sound/vox/engaged.ogg', +"engine" = 'sound/vox/engine.ogg', +"enter" = 'sound/vox/enter.ogg', +"entry" = 'sound/vox/entry.ogg', +"environment" = 'sound/vox/environment.ogg', +"error" = 'sound/vox/error.ogg', +"escape" = 'sound/vox/escape.ogg', +"evacuate" = 'sound/vox/evacuate.ogg', +"exchange" = 'sound/vox/exchange.ogg', +"exit" = 'sound/vox/exit.ogg', +"expect" = 'sound/vox/expect.ogg', +"experiment" = 'sound/vox/experiment.ogg', +"experimental" = 'sound/vox/experimental.ogg', +"explode" = 'sound/vox/explode.ogg', +"explosion" = 'sound/vox/explosion.ogg', +"exposure" = 'sound/vox/exposure.ogg', +"exterminate" = 'sound/vox/exterminate.ogg', +"extinguish" = 'sound/vox/extinguish.ogg', +"extinguisher" = 'sound/vox/extinguisher.ogg', +"extreme" = 'sound/vox/extreme.ogg', +"f" = 'sound/vox/f.ogg', +"face" = 'sound/vox/face.ogg', +"facility" = 'sound/vox/facility.ogg', +"fahrenheit" = 'sound/vox/fahrenheit.ogg', +"failed" = 'sound/vox/failed.ogg', +"failure" = 'sound/vox/failure.ogg', +"farthest" = 'sound/vox/farthest.ogg', +"fast" = 'sound/vox/fast.ogg', +"feet" = 'sound/vox/feet.ogg', +"field" = 'sound/vox/field.ogg', +"fifteen" = 'sound/vox/fifteen.ogg', +"fifth" = 'sound/vox/fifth.ogg', +"fifty" = 'sound/vox/fifty.ogg', +"final" = 'sound/vox/final.ogg', +"fine" = 'sound/vox/fine.ogg', +"fire" = 'sound/vox/fire.ogg', +"first" = 'sound/vox/first.ogg', +"five" = 'sound/vox/five.ogg', +"flag" = 'sound/vox/flag.ogg', +"flooding" = 'sound/vox/flooding.ogg', +"floor" = 'sound/vox/floor.ogg', +"fool" = 'sound/vox/fool.ogg', +"for" = 'sound/vox/for.ogg', +"forbidden" = 'sound/vox/forbidden.ogg', +"force" = 'sound/vox/force.ogg', +"forms" = 'sound/vox/forms.ogg', +"found" = 'sound/vox/found.ogg', +"four" = 'sound/vox/four.ogg', +"fourteen" = 'sound/vox/fourteen.ogg', +"fourth" = 'sound/vox/fourth.ogg', +"fourty" = 'sound/vox/fourty.ogg', +"foxtrot" = 'sound/vox/foxtrot.ogg', +"freeman" = 'sound/vox/freeman.ogg', +"freezer" = 'sound/vox/freezer.ogg', +"from" = 'sound/vox/from.ogg', +"front" = 'sound/vox/front.ogg', +"fuel" = 'sound/vox/fuel.ogg', +"g" = 'sound/vox/g.ogg', +"gay" = 'sound/vox/gay.ogg', +"get" = 'sound/vox/get.ogg', +"go" = 'sound/vox/go.ogg', +"going" = 'sound/vox/going.ogg', +"good" = 'sound/vox/good.ogg', +"goodbye" = 'sound/vox/goodbye.ogg', +"gordon" = 'sound/vox/gordon.ogg', +"got" = 'sound/vox/got.ogg', +"government" = 'sound/vox/government.ogg', +"granted" = 'sound/vox/granted.ogg', +"great" = 'sound/vox/great.ogg', +"green" = 'sound/vox/green.ogg', +"grenade" = 'sound/vox/grenade.ogg', +"guard" = 'sound/vox/guard.ogg', +"gulf" = 'sound/vox/gulf.ogg', +"gun" = 'sound/vox/gun.ogg', +"guthrie" = 'sound/vox/guthrie.ogg', +"handling" = 'sound/vox/handling.ogg', +"hangar" = 'sound/vox/hangar.ogg', +"has" = 'sound/vox/has.ogg', +"have" = 'sound/vox/have.ogg', +"hazard" = 'sound/vox/hazard.ogg', +"head" = 'sound/vox/head.ogg', +"health" = 'sound/vox/health.ogg', +"heat" = 'sound/vox/heat.ogg', +"helicopter" = 'sound/vox/helicopter.ogg', +"helium" = 'sound/vox/helium.ogg', +"hello" = 'sound/vox/hello.ogg', +"help" = 'sound/vox/help.ogg', +"here" = 'sound/vox/here.ogg', +"hide" = 'sound/vox/hide.ogg', +"high" = 'sound/vox/high.ogg', +"highest" = 'sound/vox/highest.ogg', +"hit" = 'sound/vox/hit.ogg', +"holds" = 'sound/vox/holds.ogg', +"hole" = 'sound/vox/hole.ogg', +"hostile" = 'sound/vox/hostile.ogg', +"hot" = 'sound/vox/hot.ogg', +"hotel" = 'sound/vox/hotel.ogg', +"hour" = 'sound/vox/hour.ogg', +"hours" = 'sound/vox/hours.ogg', +"hundred" = 'sound/vox/hundred.ogg', +"hydro" = 'sound/vox/hydro.ogg', +"i" = 'sound/vox/i.ogg', +"idiot" = 'sound/vox/idiot.ogg', +"illegal" = 'sound/vox/illegal.ogg', +"immediate" = 'sound/vox/immediate.ogg', +"immediately" = 'sound/vox/immediately.ogg', +"in" = 'sound/vox/in.ogg', +"inches" = 'sound/vox/inches.ogg', +"india" = 'sound/vox/india.ogg', +"ing" = 'sound/vox/ing.ogg', +"inoperative" = 'sound/vox/inoperative.ogg', +"inside" = 'sound/vox/inside.ogg', +"inspection" = 'sound/vox/inspection.ogg', +"inspector" = 'sound/vox/inspector.ogg', +"interchange" = 'sound/vox/interchange.ogg', +"intruder" = 'sound/vox/intruder.ogg', +"invallid" = 'sound/vox/invallid.ogg', +"invasion" = 'sound/vox/invasion.ogg', +"is" = 'sound/vox/is.ogg', +"it" = 'sound/vox/it.ogg', +"johnson" = 'sound/vox/johnson.ogg', +"juliet" = 'sound/vox/juliet.ogg', +"key" = 'sound/vox/key.ogg', +"kill" = 'sound/vox/kill.ogg', +"kilo" = 'sound/vox/kilo.ogg', +"kit" = 'sound/vox/kit.ogg', +"lab" = 'sound/vox/lab.ogg', +"lambda" = 'sound/vox/lambda.ogg', +"laser" = 'sound/vox/laser.ogg', +"last" = 'sound/vox/last.ogg', +"launch" = 'sound/vox/launch.ogg', +"leak" = 'sound/vox/leak.ogg', +"leave" = 'sound/vox/leave.ogg', +"left" = 'sound/vox/left.ogg', +"legal" = 'sound/vox/legal.ogg', +"level" = 'sound/vox/level.ogg', +"lever" = 'sound/vox/lever.ogg', +"lie" = 'sound/vox/lie.ogg', +"lieutenant" = 'sound/vox/lieutenant.ogg', +"life" = 'sound/vox/life.ogg', +"light" = 'sound/vox/light.ogg', +"lima" = 'sound/vox/lima.ogg', +"liquid" = 'sound/vox/liquid.ogg', +"loading" = 'sound/vox/loading.ogg', +"locate" = 'sound/vox/locate.ogg', +"located" = 'sound/vox/located.ogg', +"location" = 'sound/vox/location.ogg', +"lock" = 'sound/vox/lock.ogg', +"locked" = 'sound/vox/locked.ogg', +"locker" = 'sound/vox/locker.ogg', +"lockout" = 'sound/vox/lockout.ogg', +"lower" = 'sound/vox/lower.ogg', +"lowest" = 'sound/vox/lowest.ogg', +"magnetic" = 'sound/vox/magnetic.ogg', +"main" = 'sound/vox/main.ogg', +"maintenance" = 'sound/vox/maintenance.ogg', +"malfunction" = 'sound/vox/malfunction.ogg', +"man" = 'sound/vox/man.ogg', +"mass" = 'sound/vox/mass.ogg', +"materials" = 'sound/vox/materials.ogg', +"maximum" = 'sound/vox/maximum.ogg', +"may" = 'sound/vox/may.ogg', +"med" = 'sound/vox/med.ogg', +"medical" = 'sound/vox/medical.ogg', +"men" = 'sound/vox/men.ogg', +"mercy" = 'sound/vox/mercy.ogg', +"mesa" = 'sound/vox/mesa.ogg', +"message" = 'sound/vox/message.ogg', +"meter" = 'sound/vox/meter.ogg', +"micro" = 'sound/vox/micro.ogg', +"middle" = 'sound/vox/middle.ogg', +"mike" = 'sound/vox/mike.ogg', +"miles" = 'sound/vox/miles.ogg', +"military" = 'sound/vox/military.ogg', +"milli" = 'sound/vox/milli.ogg', +"million" = 'sound/vox/million.ogg', +"minefield" = 'sound/vox/minefield.ogg', +"minimum" = 'sound/vox/minimum.ogg', +"minutes" = 'sound/vox/minutes.ogg', +"mister" = 'sound/vox/mister.ogg', +"mode" = 'sound/vox/mode.ogg', +"motor" = 'sound/vox/motor.ogg', +"motorpool" = 'sound/vox/motorpool.ogg', +"move" = 'sound/vox/move.ogg', +"must" = 'sound/vox/must.ogg', +"nearest" = 'sound/vox/nearest.ogg', +"nice" = 'sound/vox/nice.ogg', +"nine" = 'sound/vox/nine.ogg', +"nineteen" = 'sound/vox/nineteen.ogg', +"ninety" = 'sound/vox/ninety.ogg', +"no" = 'sound/vox/no.ogg', +"nominal" = 'sound/vox/nominal.ogg', +"north" = 'sound/vox/north.ogg', +"not" = 'sound/vox/not.ogg', +"november" = 'sound/vox/november.ogg', +"now" = 'sound/vox/now.ogg', +"number" = 'sound/vox/number.ogg', +"objective" = 'sound/vox/objective.ogg', +"observation" = 'sound/vox/observation.ogg', +"of" = 'sound/vox/of.ogg', +"officer" = 'sound/vox/officer.ogg', +"ok" = 'sound/vox/ok.ogg', +"on" = 'sound/vox/on.ogg', +"one" = 'sound/vox/one.ogg', +"open" = 'sound/vox/open.ogg', +"operating" = 'sound/vox/operating.ogg', +"operations" = 'sound/vox/operations.ogg', +"operative" = 'sound/vox/operative.ogg', +"option" = 'sound/vox/option.ogg', +"order" = 'sound/vox/order.ogg', +"organic" = 'sound/vox/organic.ogg', +"oscar" = 'sound/vox/oscar.ogg', +"out" = 'sound/vox/out.ogg', +"outside" = 'sound/vox/outside.ogg', +"over" = 'sound/vox/over.ogg', +"overload" = 'sound/vox/overload.ogg', +"override" = 'sound/vox/override.ogg', +"pacify" = 'sound/vox/pacify.ogg', +"pain" = 'sound/vox/pain.ogg', +"pal" = 'sound/vox/pal.ogg', +"panel" = 'sound/vox/panel.ogg', +"percent" = 'sound/vox/percent.ogg', +"perimeter" = 'sound/vox/perimeter.ogg', +"permitted" = 'sound/vox/permitted.ogg', +"personnel" = 'sound/vox/personnel.ogg', +"pipe" = 'sound/vox/pipe.ogg', +"plant" = 'sound/vox/plant.ogg', +"platform" = 'sound/vox/platform.ogg', +"please" = 'sound/vox/please.ogg', +"point" = 'sound/vox/point.ogg', +"portal" = 'sound/vox/portal.ogg', +"power" = 'sound/vox/power.ogg', +"presence" = 'sound/vox/presence.ogg', +"press" = 'sound/vox/press.ogg', +"primary" = 'sound/vox/primary.ogg', +"proceed" = 'sound/vox/proceed.ogg', +"processing" = 'sound/vox/processing.ogg', +"progress" = 'sound/vox/progress.ogg', +"proper" = 'sound/vox/proper.ogg', +"propulsion" = 'sound/vox/propulsion.ogg', +"prosecute" = 'sound/vox/prosecute.ogg', +"protective" = 'sound/vox/protective.ogg', +"push" = 'sound/vox/push.ogg', +"quantum" = 'sound/vox/quantum.ogg', +"quebec" = 'sound/vox/quebec.ogg', +"question" = 'sound/vox/question.ogg', +"questioning" = 'sound/vox/questioning.ogg', +"quick" = 'sound/vox/quick.ogg', +"quit" = 'sound/vox/quit.ogg', +"radiation" = 'sound/vox/radiation.ogg', +"radioactive" = 'sound/vox/radioactive.ogg', +"rads" = 'sound/vox/rads.ogg', +"rapid" = 'sound/vox/rapid.ogg', +"reach" = 'sound/vox/reach.ogg', +"reached" = 'sound/vox/reached.ogg', +"reactor" = 'sound/vox/reactor.ogg', +"red" = 'sound/vox/red.ogg', +"relay" = 'sound/vox/relay.ogg', +"released" = 'sound/vox/released.ogg', +"remaining" = 'sound/vox/remaining.ogg', +"renegade" = 'sound/vox/renegade.ogg', +"repair" = 'sound/vox/repair.ogg', +"report" = 'sound/vox/report.ogg', +"reports" = 'sound/vox/reports.ogg', +"required" = 'sound/vox/required.ogg', +"research" = 'sound/vox/research.ogg', +"reset" = 'sound/vox/reset.ogg', +"resevoir" = 'sound/vox/resevoir.ogg', +"resistance" = 'sound/vox/resistance.ogg', +"returned" = 'sound/vox/returned.ogg', +"right" = 'sound/vox/right.ogg', +"rocket" = 'sound/vox/rocket.ogg', +"roger" = 'sound/vox/roger.ogg', +"romeo" = 'sound/vox/romeo.ogg', +"room" = 'sound/vox/room.ogg', +"round" = 'sound/vox/round.ogg', +"run" = 'sound/vox/run.ogg', +"safe" = 'sound/vox/safe.ogg', +"safety" = 'sound/vox/safety.ogg', +"sargeant" = 'sound/vox/sargeant.ogg', +"satellite" = 'sound/vox/satellite.ogg', +"save" = 'sound/vox/save.ogg', +"science" = 'sound/vox/science.ogg', +"scores" = 'sound/vox/scores.ogg', +"scream" = 'sound/vox/scream.ogg', +"screen" = 'sound/vox/screen.ogg', +"search" = 'sound/vox/search.ogg', +"second" = 'sound/vox/second.ogg', +"secondary" = 'sound/vox/secondary.ogg', +"seconds" = 'sound/vox/seconds.ogg', +"sector" = 'sound/vox/sector.ogg', +"secure" = 'sound/vox/secure.ogg', +"secured" = 'sound/vox/secured.ogg', +"security" = 'sound/vox/security.ogg', +"select" = 'sound/vox/select.ogg', +"selected" = 'sound/vox/selected.ogg', +"service" = 'sound/vox/service.ogg', +"seven" = 'sound/vox/seven.ogg', +"seventeen" = 'sound/vox/seventeen.ogg', +"seventy" = 'sound/vox/seventy.ogg', +"severe" = 'sound/vox/severe.ogg', +"sewage" = 'sound/vox/sewage.ogg', +"sewer" = 'sound/vox/sewer.ogg', +"shield" = 'sound/vox/shield.ogg', +"shipment" = 'sound/vox/shipment.ogg', +"shock" = 'sound/vox/shock.ogg', +"shoot" = 'sound/vox/shoot.ogg', +"shower" = 'sound/vox/shower.ogg', +"shut" = 'sound/vox/shut.ogg', +"side" = 'sound/vox/side.ogg', +"sierra" = 'sound/vox/sierra.ogg', +"sight" = 'sound/vox/sight.ogg', +"silo" = 'sound/vox/silo.ogg', +"six" = 'sound/vox/six.ogg', +"sixteen" = 'sound/vox/sixteen.ogg', +"sixty" = 'sound/vox/sixty.ogg', +"slime" = 'sound/vox/slime.ogg', +"slow" = 'sound/vox/slow.ogg', +"soldier" = 'sound/vox/soldier.ogg', +"some" = 'sound/vox/some.ogg', +"someone" = 'sound/vox/someone.ogg', +"something" = 'sound/vox/something.ogg', +"son" = 'sound/vox/son.ogg', +"sorry" = 'sound/vox/sorry.ogg', +"south" = 'sound/vox/south.ogg', +"squad" = 'sound/vox/squad.ogg', +"square" = 'sound/vox/square.ogg', +"stairway" = 'sound/vox/stairway.ogg', +"status" = 'sound/vox/status.ogg', +"sterile" = 'sound/vox/sterile.ogg', +"sterilization" = 'sound/vox/sterilization.ogg', +"stolen" = 'sound/vox/stolen.ogg', +"storage" = 'sound/vox/storage.ogg', +"sub" = 'sound/vox/sub.ogg', +"subsurface" = 'sound/vox/subsurface.ogg', +"sudden" = 'sound/vox/sudden.ogg', +"suit" = 'sound/vox/suit.ogg', +"superconducting" = 'sound/vox/superconducting.ogg', +"supercooled" = 'sound/vox/supercooled.ogg', +"supply" = 'sound/vox/supply.ogg', +"surface" = 'sound/vox/surface.ogg', +"surrender" = 'sound/vox/surrender.ogg', +"surround" = 'sound/vox/surround.ogg', +"surrounded" = 'sound/vox/surrounded.ogg', +"switch" = 'sound/vox/switch.ogg', +"system" = 'sound/vox/system.ogg', +"systems" = 'sound/vox/systems.ogg', +"tactical" = 'sound/vox/tactical.ogg', +"take" = 'sound/vox/take.ogg', +"talk" = 'sound/vox/talk.ogg', +"tango" = 'sound/vox/tango.ogg', +"tank" = 'sound/vox/tank.ogg', +"target" = 'sound/vox/target.ogg', +"team" = 'sound/vox/team.ogg', +"temperature" = 'sound/vox/temperature.ogg', +"temporal" = 'sound/vox/temporal.ogg', +"ten" = 'sound/vox/ten.ogg', +"terminal" = 'sound/vox/terminal.ogg', +"terminated" = 'sound/vox/terminated.ogg', +"termination" = 'sound/vox/termination.ogg', +"test" = 'sound/vox/test.ogg', +"that" = 'sound/vox/that.ogg', +"the" = 'sound/vox/the.ogg', +"then" = 'sound/vox/then.ogg', +"there" = 'sound/vox/there.ogg', +"third" = 'sound/vox/third.ogg', +"thirteen" = 'sound/vox/thirteen.ogg', +"thirty" = 'sound/vox/thirty.ogg', +"this" = 'sound/vox/this.ogg', +"those" = 'sound/vox/those.ogg', +"thousand" = 'sound/vox/thousand.ogg', +"threat" = 'sound/vox/threat.ogg', +"three" = 'sound/vox/three.ogg', +"through" = 'sound/vox/through.ogg', +"time" = 'sound/vox/time.ogg', +"to" = 'sound/vox/to.ogg', +"top" = 'sound/vox/top.ogg', +"topside" = 'sound/vox/topside.ogg', +"touch" = 'sound/vox/touch.ogg', +"towards" = 'sound/vox/towards.ogg', +"track" = 'sound/vox/track.ogg', +"train" = 'sound/vox/train.ogg', +"transportation" = 'sound/vox/transportation.ogg', +"truck" = 'sound/vox/truck.ogg', +"tunnel" = 'sound/vox/tunnel.ogg', +"turn" = 'sound/vox/turn.ogg', +"turret" = 'sound/vox/turret.ogg', +"twelve" = 'sound/vox/twelve.ogg', +"twenty" = 'sound/vox/twenty.ogg', +"two" = 'sound/vox/two.ogg', +"unauthorized" = 'sound/vox/unauthorized.ogg', +"under" = 'sound/vox/under.ogg', +"uniform" = 'sound/vox/uniform.ogg', +"unlocked" = 'sound/vox/unlocked.ogg', +"until" = 'sound/vox/until.ogg', +"up" = 'sound/vox/up.ogg', +"upper" = 'sound/vox/upper.ogg', +"uranium" = 'sound/vox/uranium.ogg', +"us" = 'sound/vox/us.ogg', +"usa" = 'sound/vox/usa.ogg', +"use" = 'sound/vox/use.ogg', +"used" = 'sound/vox/used.ogg', +"user" = 'sound/vox/user.ogg', +"vacate" = 'sound/vox/vacate.ogg', +"valid" = 'sound/vox/valid.ogg', +"vapor" = 'sound/vox/vapor.ogg', +"vent" = 'sound/vox/vent.ogg', +"ventillation" = 'sound/vox/ventillation.ogg', +"victor" = 'sound/vox/victor.ogg', +"violated" = 'sound/vox/violated.ogg', +"violation" = 'sound/vox/violation.ogg', +"voltage" = 'sound/vox/voltage.ogg', +"vox_login" = 'sound/vox/vox_login.ogg', +"walk" = 'sound/vox/walk.ogg', +"wall" = 'sound/vox/wall.ogg', +"want" = 'sound/vox/want.ogg', +"wanted" = 'sound/vox/wanted.ogg', +"warm" = 'sound/vox/warm.ogg', +"warn" = 'sound/vox/warn.ogg', +"warning" = 'sound/vox/warning.ogg', +"waste" = 'sound/vox/waste.ogg', +"water" = 'sound/vox/water.ogg', +"we" = 'sound/vox/we.ogg', +"weapon" = 'sound/vox/weapon.ogg', +"west" = 'sound/vox/west.ogg', +"whiskey" = 'sound/vox/whiskey.ogg', +"white" = 'sound/vox/white.ogg', +"wilco" = 'sound/vox/wilco.ogg', +"will" = 'sound/vox/will.ogg', +"with" = 'sound/vox/with.ogg', +"without" = 'sound/vox/without.ogg', +"woop" = 'sound/vox/woop.ogg', +"xeno" = 'sound/vox/xeno.ogg', +"yankee" = 'sound/vox/yankee.ogg', +"yards" = 'sound/vox/yards.ogg', +"year" = 'sound/vox/year.ogg', +"yellow" = 'sound/vox/yellow.ogg', +"yes" = 'sound/vox/yes.ogg', +"you" = 'sound/vox/you.ogg', +"your" = 'sound/vox/your.ogg', +"yourself" = 'sound/vox/yourself.ogg', +"zero" = 'sound/vox/zero.ogg', +"zone" = 'sound/vox/zone.ogg', +"zulu" = 'sound/vox/zulu.ogg',)) #endif \ No newline at end of file diff --git a/code/modules/mob/living/silicon/damage_procs.dm b/code/modules/mob/living/silicon/damage_procs.dm index 69d150b315..8fbd7afbdd 100644 --- a/code/modules/mob/living/silicon/damage_procs.dm +++ b/code/modules/mob/living/silicon/damage_procs.dm @@ -1,16 +1,17 @@ -/mob/living/silicon/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE) +/mob/living/silicon/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE) var/hit_percent = (100-blocked)/100 - if(!damage || (hit_percent <= 0)) + if(!damage || (!forced && hit_percent <= 0)) return 0 + var/damage_amount = forced ? damage : damage * hit_percent switch(damagetype) if(BRUTE) - adjustBruteLoss(damage * hit_percent) + adjustBruteLoss(damage_amount, forced = forced) if(BURN) - adjustFireLoss(damage * hit_percent) + adjustFireLoss(damage_amount, forced = forced) if(OXY) - if(damage < 0) //we shouldn't be taking oxygen damage through this proc, but we'll let it heal. - adjustOxyLoss(damage * hit_percent) + if(damage < 0 || forced) //we shouldn't be taking oxygen damage through this proc, but we'll let it heal. + adjustOxyLoss(damage_amount, forced = forced) return 1 @@ -29,7 +30,7 @@ /mob/living/silicon/setCloneLoss(amount, updating_health = TRUE, forced = FALSE) return FALSE -/mob/living/silicon/adjustStaminaLoss(amount, updating_stamina = 1)//immune to stamina damage. +/mob/living/silicon/adjustStaminaLoss(amount, updating_stamina = 1, forced = FALSE)//immune to stamina damage. return FALSE /mob/living/silicon/setStaminaLoss(amount, updating_stamina = 1) diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index f36e996b81..dda8ddfebd 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -81,8 +81,11 @@ /mob/living/silicon/pai/adjustCloneLoss(amount, updating_health = TRUE, forced = FALSE) return FALSE -/mob/living/silicon/pai/adjustStaminaLoss(amount) - take_holo_damage(amount & 0.25) +/mob/living/silicon/pai/adjustStaminaLoss(amount, updating_health, forced = FALSE) + if(forced) + take_holo_damage(amount) + else + take_holo_damage(amount * 0.25) /mob/living/silicon/pai/adjustOrganLoss(slot, amount, maximum = 500) //I kept this in, unlike tg Knockdown(amount * 0.2) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6c58921abc..5b670aaa42 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -226,6 +226,9 @@ to_chat(src,"ERROR: Module installer reply timeout. Please check internal connections.") return + if(!CONFIG_GET(flag/disable_secborg) && GLOB.security_level < CONFIG_GET(number/minimum_secborg_alert)) + to_chat(src, "NOTICE: Due to local station regulations, the security cyborg module and its variants are only available during [num2seclevel(CONFIG_GET(number/minimum_secborg_alert))] alert and greater.") + var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \ "Engineering" = /obj/item/robot_module/engineering, \ "Medical" = /obj/item/robot_module/medical, \ @@ -234,7 +237,7 @@ "Service" = /obj/item/robot_module/butler) if(!CONFIG_GET(flag/disable_peaceborg)) modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper - if(!CONFIG_GET(flag/disable_secborg)) + if(BORG_SEC_AVAILABLE) modulelist["Security"] = /obj/item/robot_module/security modulelist += get_cit_modules() //Citadel change - adds Citadel's borg modules. @@ -1230,7 +1233,7 @@ /mob/living/silicon/robot/unbuckle_mob(mob/user, force=FALSE) if(iscarbon(user)) - GET_COMPONENT(riding_datum, /datum/component/riding) + var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding) if(istype(riding_datum)) riding_datum.unequip_buckle_inhands(user) riding_datum.restore_position(user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 7b95ced63f..abd2019fba 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -8,6 +8,8 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 + var/borghealth = 100 + var/list/basic_modules = list() //a list of paths, converted to a list of instances on New() var/list/emag_modules = list() //ditto var/list/ratvar_modules = list() //ditto ditto @@ -195,6 +197,8 @@ R.update_module_innate() RM.rebuild_modules() INVOKE_ASYNC(RM, .proc/do_transform_animation) + R.maxHealth = borghealth + R.health = min(borghealth, R.health) qdel(src) return RM @@ -311,6 +315,10 @@ /obj/item/multitool/cyborg, /obj/item/t_scanner, /obj/item/analyzer, + /obj/item/storage/part_replacer/cyborg, + /obj/item/holosign_creator/atmos, + /obj/item/weapon/gripper, + /obj/item/lightreplacer/cyborg, /obj/item/geiger_counter/cyborg, /obj/item/assembly/signaler/cyborg, /obj/item/areaeditor/blueprints/cyborg, @@ -352,6 +360,14 @@ to_chat(loc, "While you have picked the security module, you still have to follow your laws, NOT Space Law. \ For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.") +/obj/item/robot_module/security/Initialize() + . = ..() + if(!CONFIG_GET(flag/weaken_secborg)) + for(var/obj/item/gun/energy/disabler/cyborg/pewpew in basic_modules) + basic_modules -= pewpew + basic_modules += new /obj/item/gun/energy/e_gun/advtaser/cyborg(src) + qdel(pewpew) + /obj/item/robot_module/peacekeeper name = "Peacekeeper" basic_modules = list( @@ -362,6 +378,7 @@ /obj/item/holosign_creator/cyborg, /obj/item/borg/cyborghug/peacekeeper, /obj/item/extinguisher, + /obj/item/megaphone, /obj/item/borg/projectile_dampen) emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked) ratvar_modules = list( diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index ab1e906cf2..d31c368ca4 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -198,7 +198,6 @@ ) if(blood) - target_types += /obj/effect/decal/cleanable/xenoblood target_types += /obj/effect/decal/cleanable/blood target_types += /obj/effect/decal/cleanable/trail_holder target_types += /obj/effect/decal/cleanable/insectguts diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 1bff7dc10c..50c331940a 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -51,6 +51,7 @@ var/treatment_fire = "kelotane" var/treatment_tox_avoid = "tricordrazine" var/treatment_tox = "charcoal" + var/treatment_tox_toxlover = "toxin" var/treatment_virus_avoid = null var/treatment_virus = "spaceacillin" var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible. @@ -381,8 +382,8 @@ if((!C.reagents.has_reagent(treatment_fire_avoid)) && (C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_fire))) return TRUE - - if((!C.reagents.has_reagent(treatment_tox_avoid)) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_tox))) + var/treatment_toxavoid = get_avoidchem_toxin(C) + if(((isnull(treatment_toxavoid) || !C.reagents.has_reagent(treatment_toxavoid))) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(get_healchem_toxin(C)))) return TRUE if(treat_virus && !C.reagents.has_reagent(treatment_virus_avoid) && !C.reagents.has_reagent(treatment_virus)) @@ -396,6 +397,12 @@ return FALSE +/mob/living/simple_animal/bot/medbot/proc/get_avoidchem_toxin(mob/M) + return HAS_TRAIT(M, TRAIT_TOXINLOVER)? null : treatment_tox_avoid + +/mob/living/simple_animal/bot/medbot/proc/get_healchem_toxin(mob/M) + return HAS_TRAIT(M, TRAIT_TOXINLOVER)? treatment_tox_toxlover : treatment_tox + /mob/living/simple_animal/bot/medbot/UnarmedAttack(atom/A) if(iscarbon(A)) var/mob/living/carbon/C = A @@ -463,8 +470,10 @@ reagent_id = treatment_fire if(!reagent_id && (C.getToxLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(treatment_tox) && !C.reagents.has_reagent(treatment_tox_avoid)) - reagent_id = treatment_tox + var/toxin_heal_avoid = get_avoidchem_toxin(C) + var/toxin_healchem = get_healchem_toxin(C) + if(!C.reagents.has_reagent(toxin_healchem) && (isnull(toxin_heal_avoid) || !C.reagents.has_reagent(toxin_heal_avoid))) + reagent_id = toxin_healchem //If the patient is injured but doesn't have our special reagent in them then we should give it to them first if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 1bc7493684..94283f82da 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -476,7 +476,8 @@ if(isturf(next)) if(bloodiness) var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) - B.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + B.blood_DNA |= blood_DNA.Copy() var/newdir = get_dir(next, loc) if(newdir == dir) B.setDir(newdir) @@ -489,7 +490,6 @@ B.setDir(newdir) bloodiness-- - var/oldloc = loc var/moved = step_towards(src, next) // attempt to move if(cell) diff --git a/code/modules/mob/living/simple_animal/damage_procs.dm b/code/modules/mob/living/simple_animal/damage_procs.dm index 1031c5b7ee..0cc097dc08 100644 --- a/code/modules/mob/living/simple_animal/damage_procs.dm +++ b/code/modules/mob/living/simple_animal/damage_procs.dm @@ -37,5 +37,5 @@ else if(damage_coeff[CLONE]) . = adjustHealth(amount * damage_coeff[CLONE] * CONFIG_GET(number/damage_multiplier), updating_health, forced) -/mob/living/simple_animal/adjustStaminaLoss(amount) +/mob/living/simple_animal/adjustStaminaLoss(amount, forced = FALSE) return diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index d28b98263c..521f458e2f 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -33,7 +33,7 @@ /mob/living/simple_animal/drone/syndrone/Initialize() . = ..() - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + var/datum/component/uplink/hidden_uplink = internal_storage.GetComponent(/datum/component/uplink) hidden_uplink.telecrystals = 10 /mob/living/simple_animal/drone/syndrone/Login() @@ -47,7 +47,7 @@ /mob/living/simple_animal/drone/syndrone/badass/Initialize() . = ..() - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + var/datum/component/uplink/hidden_uplink = internal_storage.GetComponent(/datum/component/uplink) hidden_uplink.telecrystals = 30 var/obj/item/implant/weapons_auth/W = new W.implant(src) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 564fae48ad..b2971e8d01 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -323,6 +323,132 @@ else STOP_PROCESSING(SSobj, src) +// Space kiwis, ergo quite a copypasta of chickens. + +/mob/living/simple_animal/kiwi + name = "space kiwi" + desc = "Exposure to low gravity made them grow larger." + gender = FEMALE + icon_state = "kiwi" + icon_living = "kiwi" + icon_dead = "kiwi_dead" + speak = list("Chirp!","Cheep cheep chirp!!","Cheep.") + speak_emote = list("chirps","trills") + emote_hear = list("chirps.") + emote_see = list("pecks at the ground.","jumps in place.") + density = FALSE + speak_chance = 2 + turns_per_move = 3 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3) + var/egg_type = /obj/item/reagent_containers/food/snacks/egg/kiwiEgg + var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = "kicks" + health = 25 + maxHealth = 25 + ventcrawler = VENTCRAWLER_ALWAYS + var/eggsleft = 0 + var/eggsFertile = TRUE + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + var/list/feedMessages = list("It chirps happily.","It chirps happily.") + var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins chirping raucously.") + gold_core_spawnable = FRIENDLY_SPAWN + var/static/kiwi_count = 0 + +/mob/living/simple_animal/kiwi/Destroy() + --kiwi_count + return ..() + +/mob/living/simple_animal/kiwi/Initialize() + . = ..() + ++kiwi_count + +/mob/living/simple_animal/kiwi/Life() + . =..() + if(!.) + return + if((!stat && prob(3) && eggsleft > 0) && egg_type) + visible_message("[src] [pick(layMessage)]") + eggsleft-- + var/obj/item/E = new egg_type(get_turf(src)) + E.pixel_x = rand(-6,6) + E.pixel_y = rand(-6,6) + if(eggsFertile) + if(kiwi_count < MAX_CHICKENS && prob(25)) + START_PROCESSING(SSobj, E) + +/obj/item/reagent_containers/food/snacks/egg/kiwiEgg/process() + if(isturf(loc)) + amount_grown += rand(1,2) + if(amount_grown >= 100) + visible_message("[src] hatches with a quiet cracking sound.") + new /mob/living/simple_animal/babyKiwi(get_turf(src)) + STOP_PROCESSING(SSobj, src) + qdel(src) + else + STOP_PROCESSING(SSobj, src) + +/mob/living/simple_animal/kiwi/attackby(obj/item/O, mob/user, params) + if(istype(O, food_type)) //feedin' dem kiwis + if(!stat && eggsleft < 8) + var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]" + user.visible_message(feedmsg) + qdel(O) + eggsleft += rand(1, 4) + else + to_chat(user, "[name] doesn't seem hungry!") + else + ..() + +/mob/living/simple_animal/babyKiwi + name = "baby space kiwi" + desc = "So huggable." + icon_state = "babykiwi" + icon_living = "babykiwi" + icon_dead = "babykiwi_dead" + gender = FEMALE + speak = list("Cherp.","Cherp?","Chirrup.","Cheep!") + speak_emote = list("chirps") + emote_hear = list("chirps.") + emote_see = list("pecks at the ground.","Happily bounces in place.") + density = FALSE + speak_chance = 2 + turns_per_move = 2 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = "kicks" + health = 10 + maxHealth = 10 + ventcrawler = VENTCRAWLER_ALWAYS + var/amount_grown = 0 + pass_flags = PASSTABLE | PASSGRILLE | PASSMOB + mob_size = MOB_SIZE_TINY + gold_core_spawnable = FRIENDLY_SPAWN + +/mob/living/simple_animal/babyKiwi/Initialize() + . = ..() + pixel_x = rand(-6, 6) + pixel_y = rand(0, 10) + +/mob/living/simple_animal/babyKiwi/Life() + . =..() + if(!.) + return + if(!stat && !ckey) + amount_grown += rand(1,2) + if(amount_grown >= 100) + new /mob/living/simple_animal/kiwi(src.loc) + qdel(src) + +/obj/item/reagent_containers/food/snacks/egg/kiwiEgg + name = "kiwi egg" + desc = "A slightly bigger egg!" + icon_state = "kiwiegg" /obj/item/udder name = "udder" diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 8bf1874d84..d31809e9aa 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -30,7 +30,7 @@ C.adjustBruteLoss(-5) C.adjustFireLoss(-5) C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) + C.adjustToxLoss(-5, forced = TRUE) var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(C)) if(namedatum) H.color = namedatum.colour diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 3d92912f9c..5240b4d06c 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -168,7 +168,6 @@ /mob/living/simple_animal/hostile/alien/maid/Initialize(mapload) . = ..() - AddComponent(/datum/component/cleaning) /mob/living/simple_animal/hostile/alien/maid/AttackingTarget() if(ismovableatom(target)) @@ -177,6 +176,7 @@ qdel(target) return TRUE var/atom/movable/M = target - SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + M.clean_blood() visible_message("[src] polishes \the [target].") return TRUE diff --git a/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm similarity index 62% rename from modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm rename to code/modules/mob/living/simple_animal/hostile/banana_spider.dm index fdc271a158..823c26b4e9 100644 --- a/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm @@ -1,58 +1,8 @@ -/obj/item/seeds/banana/Initialize() - . = ..() - mutatelist += /obj/item/seeds/banana/exotic_banana - - -/obj/item/seeds/banana/exotic_banana - name = "pack of exotic banana seeds" - desc = "They're seeds that grow into banana trees. However, those bananas might be alive." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "seed_ExoticBanana" - species = "banana" - plantname = "Exotic Banana Tree" - product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable - growing_icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_dead = "banana-dead" - mutatelist = list() - genes = list(/datum/plant_gene/trait/slip) - reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) - - -/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable - seed = /obj/item/seeds/banana/exotic_banana - name = "banana spider" - desc = "You do not know what it is, but you can bet the clown would love it." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "banana" - item_state = "banana" - filling_color = "#FFFF00" - list_reagents = list("nutriment" = 3, "vitamin" = 2) - foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list("blood" = 20, "liquidgibs" = 5) - juice_results = list("banana" = 0) - var/awakening = 0 - - -/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) - if(awakening || isspaceturf(user.loc)) - return - to_chat(user, "You decide to wake up the banana spider...") - awakening = 1 - - spawn(30) - if(!QDELETED(src)) - var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc)) - S.speed += round(10 / seed.potency) - S.visible_message("The banana spider chitters as it stretches its legs.") - qdel(src) - - /mob/living/simple_animal/banana_spider - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' name = "banana spider" desc = "What the fuck is this abomination?" - icon_state = "banana" - icon_dead = "banana_peel" + icon_state = "bananaspider" + icon_dead = "bananaspider_peel" health = 1 maxHealth = 1 turns_per_move = 5 //this isn't player speed =| @@ -136,8 +86,7 @@ /obj/item/reagent_containers/food/snacks/deadbanana_spider name = "dead banana spider" desc = "Thank god it's gone...but it does look slippery." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "banana_peel" + icon_state = "bananaspider" bitesize = 3 eatverb = "devours" list_reagents = list("nutriment" = 3, "vitamin" = 2) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index f5b1706f87..2f39ae13a1 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -175,14 +175,17 @@ status_flags = NONE mob_size = MOB_SIZE_LARGE gold_core_spawnable = NO_SPAWN + var/slowed_by_webs = FALSE -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula/movement_delay() - var/turf/T = get_turf(src) - if(locate(/obj/structure/spider/stickyweb) in T) - speed = 2 - else - speed = 7 +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula/Moved(atom/oldloc, dir) . = ..() + if(slowed_by_webs) + if(!(locate(/obj/structure/spider/stickyweb) in loc)) + remove_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB) + slowed_by_webs = FALSE + else if(locate(/obj/structure/spider/stickyweb) in loc) + add_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB, priority=100, multiplicative_slowdown=3) + slowed_by_webs = TRUE //midwives are the queen of the spiders, can send messages to all them and web faster. That rare round where you get a queen spider and turn your 'for honor' players into 'r6siege' players will be a fun one. /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index c2d0a214b4..910e9c3c4a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -39,7 +39,7 @@ animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) - wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) + wanted_objects = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/) var/obj/item/udder/gutlunch/udder = null /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index 8210fd6490..dc2f942041 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -34,7 +34,7 @@ /mob/living/simple_animal/hostile/netherworld/migo/Initialize() . = ..() - migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/beepsky/creep.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/medbot/patchedup.ogg', 'sound/voice/medbot/feelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_aler.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/ratvar_reveal.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshot_silenced.ogg', 'sound/weapons/gunshot2.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/machines/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/ai/outbreak5.ogg', 'sound/ai/outbreak7.ogg', 'sound/ai/poweroff.ogg', 'sound/ai/radiation.ogg', 'sound/ai/shuttlecalled.ogg', 'sound/ai/shuttledock.ogg', 'sound/ai/shuttlerecalled.ogg', 'sound/ai/aimalf.ogg') //hahahaha fuck you code divers + migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/beepsky/creep.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/medbot/patchedup.ogg', 'sound/voice/medbot/feelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_aler.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/ratvar_reveal.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshot_silenced.ogg', 'sound/weapons/gunshot2.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/machines/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', get_announcer_sound("outbreak5"), get_announcer_sound("outbreak7"), get_announcer_sound("poweroff"), get_announcer_sound("radiation"), get_announcer_sound("shuttlerecalled"), get_announcer_sound("shuttledock"), get_announcer_sound("shuttlecalled"), get_announcer_sound("aimalf")) //hahahaha fuck you code divers /mob/living/simple_animal/hostile/netherworld/migo/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 1f81899d8a..a2ef5b813b 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -363,7 +363,7 @@ density = initial(density) lying = 0 . = 1 - movement_type = initial(movement_type) + setMovetype(initial(movement_type)) /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 if(gender != FEMALE || stat || next_scan_time > world.time || !childtype || !animal_species || !SSticker.IsRoundInProgress()) @@ -536,7 +536,7 @@ //ANIMAL RIDING /mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user) - GET_COMPONENT(riding_datum, /datum/component/riding) + var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding) if(riding_datum) if(user.incapacitated()) return @@ -547,7 +547,7 @@ return ..() /mob/living/simple_animal/relaymove(mob/user, direction) - GET_COMPONENT(riding_datum, /datum/component/riding) + var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding) if(tame && riding_datum) riding_datum.handle_ride(user, direction) diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 930656228d..cacd1c7c56 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( A.pipe_vision_img.plane = ABOVE_HUD_PLANE client.images += A.pipe_vision_img pipes_shown += A.pipe_vision_img - movement_type |= VENTCRAWLING + setMovetype(movement_type | VENTCRAWLING) /mob/living/proc/remove_ventcrawl() @@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( for(var/image/current_image in pipes_shown) client.images -= current_image pipes_shown.len = 0 - movement_type &= ~VENTCRAWLING + setMovetype(movement_type & ~VENTCRAWLING) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5a7c6e21ab..618baf245f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -737,15 +737,17 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) mob_spell_list -= S qdel(S) -/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE) - if(!magic && !holy) +/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE, tinfoil = FALSE, chargecost = 1, self = FALSE) + if(!magic && !holy && !tinfoil) return var/list/protection_sources = list() - if(SEND_SIGNAL(src, COMSIG_MOB_RECEIVE_MAGIC, magic, holy, protection_sources) & COMPONENT_BLOCK_MAGIC) + if(SEND_SIGNAL(src, COMSIG_MOB_RECEIVE_MAGIC, src, magic, holy, tinfoil, chargecost, self, protection_sources) & COMPONENT_BLOCK_MAGIC) if(protection_sources.len) return pick(protection_sources) else return src + if((magic && HAS_TRAIT(src, TRAIT_ANTIMAGIC)) || (holy && HAS_TRAIT(src, TRAIT_HOLY))) + return src //You can buckle on mobs if you're next to them since most are dense /mob/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) @@ -959,3 +961,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) var/datum/language_holder/H = get_language_holder() H.open_language_menu(usr) + +/mob/setMovetype(newval) + . = ..() + update_movespeed(FALSE) \ No newline at end of file diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 93b4d32123..eb22ab7403 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -88,7 +88,7 @@ if(newletter==" ") newletter="...huuuhhh..." if(newletter==".") - newletter=" *BURP*." + newletter=" BURP!" if(rand(1,100) <= strength*0.5) if(rand(1,5) == 1) newletter+="'" @@ -487,6 +487,26 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /mob/proc/can_hear() . = TRUE +/proc/bloodtype_to_color(var/type) + . = BLOOD_COLOR_HUMAN + switch(type) + if("U")//Universal blood; a bit orange + . = BLOOD_COLOR_UNIVERSAL + if("SY")//Synthetics blood; blue + . = BLOOD_COLOR_SYNTHETIC + if("L")//lizard, a bit pink/purple + . = BLOOD_COLOR_LIZARD + if("X*")//xeno blood; greenish yellow + . = BLOOD_COLOR_XENO + if("HF")// Oil/Hydraulic blood. something something why not. reee + . = BLOOD_COLOR_OIL + if("GEL")// slimepeople blood, rgb 0, 255, 144 + . = BLOOD_COLOR_SLIME + if("BUG")// yellowish, like, y'know bug guts I guess. + . = BLOOD_COLOR_BUG + //add more stuff to the switch if you have more blood colors for different types + // the defines are in _DEFINES/misc.dm + //Examine text for traits shared by multiple types. I wish examine was less copypasted. /mob/proc/common_trait_examine() if(HAS_TRAIT(src, TRAIT_DISSECTED)) @@ -497,4 +517,4 @@ It's fairly easy to fix if dealing with single letters but not so much with comp dissectionmsg = " via Experimental Dissection" else if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Thorough Dissection")) dissectionmsg = " via Thorough Dissection" - . += "This body has been dissected and analyzed[dissectionmsg].
" \ No newline at end of file + . += "This body has been dissected and analyzed[dissectionmsg].
" diff --git a/code/modules/mob/mob_movespeed.dm b/code/modules/mob/mob_movespeed.dm index 5114972493..a0be8ff7cb 100644 --- a/code/modules/mob/mob_movespeed.dm +++ b/code/modules/mob/mob_movespeed.dm @@ -1,23 +1,29 @@ /*Current movespeed modification list format: list(id = list( priority, + flags, legacy slowdown/speedup amount, + movetype_flags, + blacklisted_movetypes, + conflict )) */ //ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! -/mob/proc/add_movespeed_modifier(id, update = TRUE, priority = 0, flags = NONE, override = FALSE, multiplicative_slowdown = 0) - var/list/temp = list(priority, flags, multiplicative_slowdown) //build the modification list +/mob/proc/add_movespeed_modifier(id, update=TRUE, priority=0, flags=NONE, override=FALSE, multiplicative_slowdown=0, movetypes=ALL, blacklisted_movetypes=NONE, conflict=FALSE) + var/list/temp = list(priority, flags, multiplicative_slowdown, movetypes, blacklisted_movetypes, conflict) //build the modification list + var/resort = TRUE if(LAZYACCESS(movespeed_modification, id)) - if(movespeed_modifier_identical_check(movespeed_modification[id], temp)) + var/list/existing_data = movespeed_modification[id] + if(movespeed_modifier_identical_check(existing_data, temp)) return FALSE if(!override) return FALSE - else - remove_movespeed_modifier(id, update) - LAZYSET(movespeed_modification, id, list(priority, flags, multiplicative_slowdown)) + if(priority == existing_data[MOVESPEED_DATA_INDEX_PRIORITY]) + resort = FALSE // We don't need to re-sort if we're replacing something already there and it's the same priority + LAZYSET(movespeed_modification, id, temp) if(update) - update_movespeed(TRUE) + update_movespeed(resort) return TRUE /mob/proc/remove_movespeed_modifier(id, update = TRUE) @@ -55,9 +61,23 @@ if(resort) sort_movespeed_modlist() . = 0 + var/list/conflict_tracker = list() for(var/id in get_movespeed_modifiers()) var/list/data = movespeed_modification[id] - . += data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN] + if(!(data[MOVESPEED_DATA_INDEX_MOVETYPE] & movement_type)) // We don't affect any of these move types, skip + continue + if(data[MOVESPEED_DATA_INDEX_BL_MOVETYPE] & movement_type) // There's a movetype here that disables this modifier, skip + continue + var/conflict = data[MOVESPEED_DATA_INDEX_CONFLICT] + var/amt = data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN] + if(conflict) + // Conflicting modifiers prioritize the larger slowdown or the larger speedup + // We purposefuly don't handle mixing speedups and slowdowns on the same id + if(abs(conflict_tracker[conflict]) < abs(amt)) + conflict_tracker[conflict] = amt + else + continue + . += amt cached_multiplicative_slowdown = . /mob/proc/get_movespeed_modifiers() diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index 090d64e9d7..2de2d64754 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -146,7 +146,7 @@ t = replacetext(t, "\[u\]", "") t = replacetext(t, "\[/u\]", "") t = replacetext(t, "\[time\]", "[STATION_TIME_TIMESTAMP("hh:mm:ss")]") - t = replacetext(t, "\[date\]", "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]") + t = replacetext(t, "\[date\]", "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer]") t = replacetext(t, "\[large\]", "") t = replacetext(t, "\[/large\]", "") t = replacetext(t, "\[h1\]", "

") diff --git a/code/modules/oracle_ui/hookup_procs.dm b/code/modules/oracle_ui/hookup_procs.dm index e6038744c1..0a092caf30 100644 --- a/code/modules/oracle_ui/hookup_procs.dm +++ b/code/modules/oracle_ui/hookup_procs.dm @@ -23,6 +23,8 @@ return TRUE if(user.incapacitated()) return FALSE + if(isobj(src.loc) && get_dist(src, user) < 2) + return TRUE if(isturf(src.loc) && Adjacent(user)) return TRUE return FALSE diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 059a42bb36..471aca34c7 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -32,6 +32,7 @@ var/contact_poison // Reagent ID to transfer on contact var/contact_poison_volume = 0 var/datum/oracle_ui/ui = null + var/force_stars = FALSE // If we should force the text to get obfuscated with asterisks /obj/item/paper/pickup(user) @@ -59,7 +60,8 @@ updateinfolinks() /obj/item/paper/oui_getcontent(mob/target) - if(!target.is_literate()) + if(!target.is_literate() || force_stars) + force_stars = FALSE return "[name][stars(info)]
[stamps]" else if(istype(target.get_active_held_item(), /obj/item/pen) | istype(target.get_active_held_item(), /obj/item/toy/crayon)) return "[name][info_links]
[stamps]" @@ -70,8 +72,8 @@ if(check_rights_for(target.client, R_FUN)) //Allows admins to view faxes return TRUE if(isAI(target)) - var/mob/living/silicon/ai/ai = target - return get_dist(src, ai.current) < 2 + force_stars = TRUE + return TRUE if(iscyborg(target)) return get_dist(src, target) < 2 return ..() @@ -133,18 +135,8 @@ playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) addtimer(CALLBACK(src, .proc/reset_spamflag), 20) - /obj/item/paper/attack_ai(mob/living/silicon/ai/user) - var/dist - if(istype(user) && user.current) //is AI - dist = get_dist(src, user.current) - else //cyborg or AI not seeing through a camera - dist = get_dist(src, user) - if(dist < 2) - show_content(user) - else - to_chat(user, "You can't quite see it.") - + show_content(user) /obj/item/paper/proc/addtofield(id, text, links = 0) var/locid = 0 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 5bcb7a60df..fece60f268 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -158,6 +158,7 @@ if(..()) if(reagents.total_volume) if(M.reagents) + reagents.reaction(M, INJECT) reagents.trans_to(M, reagents.total_volume) @@ -200,7 +201,7 @@ throwforce = 35 playsound(user, 'sound/weapons/saberon.ogg', 5, 1) to_chat(user, "[src] is now active.") - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = on update_icon() diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm index bd77d468d7..3400ed6de0 100644 --- a/code/modules/photography/photos/album.dm +++ b/code/modules/photography/photos/album.dm @@ -13,7 +13,7 @@ /obj/item/storage/photo_album/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.can_hold = typecacheof(list(/obj/item/photo)) STR.max_combined_w_class = 42 STR.max_items = 21 diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 1759f31344..bbbf8edae5 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -20,6 +20,7 @@ var/self_recharge = 0 //does it self recharge, over time, or not? var/ratingdesc = TRUE var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. + rad_flags = RAD_NO_CONTAMINATE // Prevent the same cheese as with the stock parts /obj/item/stock_parts/cell/get_cell() return src @@ -201,7 +202,7 @@ /obj/item/stock_parts/cell/lascarbine name = "laser carbine power supply" - maxcharge = 2500 + maxcharge = 1500 //20 laser shots. /obj/item/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 120976b61f..e6fa1e0ee4 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -29,7 +29,7 @@ #define MOLE_HEAT_PENALTY 350 //Heat damage scales around this. Too hot setups with this amount of moles do regular damage, anything above and below is scaled #define POWER_PENALTY_THRESHOLD 5000 //Higher == Engine can generate more power before triggering the high power penalties. #define SEVERE_POWER_PENALTY_THRESHOLD 7000 //Same as above, but causes more dangerous effects -#define CRITICAL_POWER_PENALTY_THRESHOLD 9000 //Even more dangerous effects, threshold for tesla delamination +#define CRITICAL_POWER_PENALTY_THRESHOLD 12000 //Even more dangerous effects, threshold for tesla delamination #define HEAT_PENALTY_THRESHOLD 40 //Higher == Crystal safe operational temperature is higher. #define DAMAGE_HARDCAP 0.002 #define DAMAGE_INCREASE_MULTIPLIER 0.25 @@ -421,7 +421,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(prob(50)) radiation_pulse(src, power * (1 + (tritiumcomp * TRITIUM_RADIOACTIVITY_MODIFIER) + ((pluoxiumcomp * PLUOXIUM_RADIOACTIVITY_MODIFIER) * pluoxiumbonus) * (power_transmission_bonus/(10-(bzcomp * BZ_RADIOACTIVITY_MODIFIER))))) // Rad Modifiers BZ(500%), Tritium(300%), and Pluoxium(-200%) if(bzcomp >= 0.4 && prob(30 * bzcomp)) - src.fire_nuclear_particles() // Start to emit radballs at a maximum of 30% chance per tick + fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick var/device_energy = power * REACTION_POWER_MODIFIER diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 638711e8d4..0940144721 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -71,9 +71,3 @@ projectile_type = /obj/item/projectile/beam/mindflayer select_name = "MINDFUCK" fire_sound = 'sound/weapons/laser.ogg' - -/obj/item/ammo_casing/energy/laser/weak - projectile_type = /obj/item/projectile/beam/weak/minigun - e_cost = 10 - fire_sound = 'sound/weapons/gatling.ogg' - click_cooldown_override = 1 diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 65724e503a..783b8b895b 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -3,11 +3,11 @@ icon_state = "46x30mmt-20" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" - max_ammo = 20 + max_ammo = 32 /obj/item/ammo_box/magazine/wt550m9/update_icon() ..() - icon_state = "46x30mmt-[round(ammo_count(),4)]" + icon_state = "46x30mmt-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/wt550m9/wtap name = "wt550 magazine (Armour Piercing 4.6x30mm)" @@ -16,7 +16,7 @@ /obj/item/ammo_box/magazine/wt550m9/wtap/update_icon() ..() - icon_state = "46x30mmtA-[round(ammo_count(),4)]" + icon_state = "46x30mmtA-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/wt550m9/wtic name = "wt550 magazine (Incendiary 4.6x30mm)" @@ -25,7 +25,7 @@ /obj/item/ammo_box/magazine/wt550m9/wtic/update_icon() ..() - icon_state = "46x30mmtI-[round(ammo_count(),4)]" + icon_state = "46x30mmtI-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/uzim9mm name = "uzi magazine (9mm)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index fb3ed19f82..4004bc81ae 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -34,6 +34,7 @@ var/semicd = 0 //cooldown handler var/weapon_weight = WEAPON_LIGHT //currently only used for inaccuracy var/spread = 0 //Spread induced by the gun itself. + var/burst_spread = 0 //Spread induced by the gun itself during burst fire per iteration. Only checked if spread is 0. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. var/inaccuracy_modifier = 1 @@ -62,16 +63,18 @@ var/zoomed = FALSE //Zoom toggle var/zoom_amt = 3 //Distance in TURFs to move the user's screen forward (the "zoom" effect) var/zoom_out_amt = 0 - var/datum/action/toggle_scope_zoom/azoom + var/datum/action/item_action/toggle_scope_zoom/azoom + + var/dualwield_spread_mult = 1 //dualwield spread multiplier /obj/item/gun/Initialize() . = ..() if(pin) pin = new pin(src) if(gun_light) - alight = new /datum/action/item_action/toggle_gunlight(src) - build_zooming() - + alight = new (src) + if(zoomable) + azoom = new (src) /obj/item/gun/CheckParts(list/parts_list) ..() @@ -185,7 +188,7 @@ if(G == src || G.weapon_weight >= WEAPON_MEDIUM) continue else if(G.can_trigger_gun(user)) - bonus_spread += 24 * G.weapon_weight + bonus_spread += 24 * G.weapon_weight * G.dualwield_spread_mult loop_counter++ addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, bonus_spread), loop_counter) @@ -226,9 +229,9 @@ to_chat(user, " [src] is lethally chambered! You don't want to risk harming anyone...") return if(randomspread) - sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) + sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread), 1) else //Smart spread - sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread)) + sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread), 1) if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd)) shoot_with_empty_chamber(user) @@ -259,7 +262,9 @@ var/randomized_gun_spread = 0 var/rand_spr = rand() if(spread) - randomized_gun_spread = rand(0,spread) + randomized_gun_spread = rand(0, spread) + else if(burst_size > 1 && burst_spread) + randomized_gun_spread = rand(0, burst_spread) if(HAS_TRAIT(user, TRAIT_POOR_AIM)) //nice shootin' tex bonus_spread += 25 var/randomized_bonus_spread = rand(0, bonus_spread) @@ -372,6 +377,12 @@ else return ..() +/obj/item/gun/ui_action_click(mob/user, action) + if(istype(action, /datum/action/item_action/toggle_scope_zoom)) + zoom(user) + else if(istype(action, alight)) + toggle_gunlight() + /obj/item/gun/proc/toggle_gunlight() if(!gun_light) return @@ -407,21 +418,10 @@ var/datum/action/A = X A.UpdateButtonIcon() -/obj/item/gun/pickup(mob/user) - ..() - if(azoom) - azoom.Grant(user) - if(alight) - alight.Grant(user) - -/obj/item/gun/dropped(mob/user) - ..() - if(zoomed) - zoom(user,FALSE) - if(azoom) - azoom.Remove(user) - if(alight) - alight.Remove(user) +/obj/item/gun/item_action_slot_check(slot, mob/user, datum/action/A) + if(istype(A, /datum/action/item_action/toggle_scope_zoom) && slot != SLOT_HANDS) + return FALSE + return ..() /obj/item/gun/proc/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params, bypass_timer) if(!ishuman(user) || !ishuman(target)) @@ -468,41 +468,32 @@ // ZOOMING // ///////////// -/datum/action/toggle_scope_zoom +/datum/action/item_action/toggle_scope_zoom name = "Toggle Scope" - check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_LYING icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "sniper_zoom" - var/obj/item/gun/gun = null -/datum/action/toggle_scope_zoom/Trigger() - gun.zoom(owner) - -/datum/action/toggle_scope_zoom/IsAvailable() +/datum/action/item_action/toggle_scope_zoom/IsAvailable() . = ..() - if(!gun) - return FALSE if(!.) - gun.zoom(owner, FALSE) - if(!owner.get_held_index_of_item(gun)) - return FALSE - -/datum/action/toggle_scope_zoom/Remove(mob/living/L) - gun.zoom(L, FALSE) - ..() + var/obj/item/gun/G = target + G.zoom(owner, FALSE) +/datum/action/item_action/toggle_scope_zoom/Remove(mob/living/L) + var/obj/item/gun/G = target + G.zoom(L, FALSE) + return ..() /obj/item/gun/proc/zoom(mob/living/user, forced_zoom) - if(!user || !user.client) + if(!(user?.client)) return - switch(forced_zoom) - if(FALSE) - zoomed = FALSE - if(TRUE) - zoomed = TRUE - else - zoomed = !zoomed + if(!isnull(forced_zoom)) + if(zoomed == forced_zoom) + return + zoomed = forced_zoom + else + zoomed = !zoomed if(zoomed) var/_x = 0 @@ -524,16 +515,6 @@ user.client.change_view(CONFIG_GET(string/default_view)) user.client.pixel_x = 0 user.client.pixel_y = 0 - return zoomed - -//Proc, so that gun accessories/scopes/etc. can easily add zooming. -/obj/item/gun/proc/build_zooming() - if(azoom) - return - - if(zoomable) - azoom = new() - azoom.gun = src /obj/item/gun/handle_atom_del(atom/A) if(A == chambered) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 1117bc1000..2f198c1319 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -26,7 +26,6 @@ else icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""][sawn_off ? "-sawn" : ""]" - /obj/item/gun/ballistic/process_chamber(empty_chamber = 1) var/obj/item/ammo_casing/AC = chambered //Find chambered round if(istype(AC)) //there's a chambered round @@ -170,7 +169,7 @@ if(iscarbon(user)) var/mob/living/carbon/C = user user_dna = C.dna - B.add_blood_DNA(user_dna) + B.add_blood_DNA(user_dna, C.diseases) var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/spawn_atom_to_turf, /obj/effect/gibspawner/generic, B, 1, FALSE, list(user_dna)) B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner) return(BRUTELOSS) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 4bd65a7b20..5182c96671 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -2,6 +2,7 @@ w_class = WEIGHT_CLASS_NORMAL var/alarmed = 0 var/select = 1 + var/automatic_burst_overlay = TRUE can_suppress = TRUE burst_size = 3 fire_delay = 2 @@ -19,10 +20,11 @@ /obj/item/gun/ballistic/automatic/update_icon() ..() - if(!select) - add_overlay("[initial(icon_state)]semi") - if(select == 1) - add_overlay("[initial(icon_state)]burst") + if(automatic_burst_overlay) + if(!select) + add_overlay("[initial(icon_state)]semi") + if(select == 1) + add_overlay("[initial(icon_state)]burst") icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" /obj/item/gun/ballistic/automatic/attackby(obj/item/A, mob/user, params) @@ -51,19 +53,20 @@ else to_chat(user, "You cannot seem to get \the [src] out of your hands!") -/obj/item/gun/ballistic/automatic/ui_action_click() - burst_select() +/obj/item/gun/ballistic/automatic/ui_action_click(mob/user, action) + if(istype(action, /datum/action/item_action/toggle_firemode)) + burst_select() + else + return ..() /obj/item/gun/ballistic/automatic/proc/burst_select() var/mob/living/carbon/human/user = usr select = !select if(!select) - burst_size = 1 - fire_delay = 0 + disable_burst() to_chat(user, "You switch to semi-automatic.") else - burst_size = initial(burst_size) - fire_delay = initial(fire_delay) + enable_burst() to_chat(user, "You switch to [burst_size]-rnd burst.") playsound(user, 'sound/weapons/empty.ogg', 100, 1) @@ -72,6 +75,14 @@ var/datum/action/A = X A.UpdateButtonIcon() +/obj/item/gun/ballistic/automatic/proc/enable_burst() + burst_size = initial(burst_size) + fire_delay = initial(fire_delay) + +/obj/item/gun/ballistic/automatic/proc/disable_burst() + burst_size = 1 + fire_delay = 0 + /obj/item/gun/ballistic/automatic/can_shoot() return get_ammo() @@ -106,7 +117,6 @@ /obj/item/gun/ballistic/automatic/c20r/afterattack() . = ..() empty_alarm() - return /obj/item/gun/ballistic/automatic/c20r/update_icon() ..() @@ -118,17 +128,25 @@ icon_state = "wt550" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/wt550m9 - fire_delay = 2 can_suppress = FALSE - burst_size = 0 - actions_types = list() + burst_size = 2 + fire_delay = 1 can_bayonet = TRUE knife_x_offset = 25 knife_y_offset = 12 + automatic_burst_overlay = FALSE + +/obj/item/gun/ballistic/automatic/wt550/enable_burst() + . = ..() + spread = 15 + +/obj/item/gun/ballistic/automatic/wt550/disable_burst() + . = ..() + spread = 0 /obj/item/gun/ballistic/automatic/wt550/update_icon() ..() - icon_state = "wt550[magazine ? "-[CEILING(get_ammo(0)/4, 1)*4]" : ""]" + icon_state = "wt550[magazine ? "-[CEILING(( (get_ammo(FALSE) / magazine.max_ammo) * 20) /4, 1)*4]" : "-0"]" //Sprites only support up to 20. /obj/item/gun/ballistic/automatic/mini_uzi name = "\improper Type U3 Uzi" diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 6060ceba99..2cccc57d9e 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -174,9 +174,6 @@ itemState += "[ratio]" item_state = itemState -/obj/item/gun/energy/ui_action_click() - toggle_gunlight() - /obj/item/gun/energy/suicide_act(mob/living/user) if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index a4ec979a06..df8eba00ed 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -78,6 +78,12 @@ else to_chat(user, "There are no modifications currently installed.") +/obj/item/gun/energy/kinetic_accelerator/Exited(atom/movable/AM) + . = ..() + if((AM in modkits) && istype(AM, /obj/item/borg/upgrade/modkit)) + var/obj/item/borg/upgrade/modkit/M = AM + M.uninstall(src, FALSE) + /obj/item/gun/energy/kinetic_accelerator/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/borg/upgrade/modkit)) var/obj/item/borg/upgrade/modkit/MK = I @@ -261,7 +267,7 @@ icon_state = "modkit" w_class = WEIGHT_CLASS_SMALL require_module = 1 - module_type = /obj/item/robot_module/miner + module_type = list(/obj/item/robot_module/miner) var/denied_type = null var/maximum_of_type = 1 var/cost = 30 @@ -287,6 +293,8 @@ /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE + if(src in KA.modkits) // Sanity check to prevent installing the same modkit twice thanks to occasional click/lag delays. + return if(minebot_upgrade) if(minebot_exclusive && !istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone)) to_chat(user, "The modkit you're trying to install is only rated for minebot use.") @@ -322,12 +330,11 @@ for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module.modules) uninstall(KA) -/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) - forceMove(get_turf(KA)) +/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE) + if(forcemove) + forceMove(get_turf(KA)) KA.modkits -= src - - /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) //use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index bb97f9cf99..2bb813d793 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -181,7 +181,7 @@ /obj/item/gun/energy/laser/redtag/hitscan/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/gun/energy/laser/redtag/hitscan/chaplain/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params, bypass_timer) if(!ishuman(user) || !ishuman(target)) diff --git a/code/modules/projectiles/guns/energy/minigun.dm b/code/modules/projectiles/guns/energy/minigun.dm deleted file mode 100644 index d903cda47c..0000000000 --- a/code/modules/projectiles/guns/energy/minigun.dm +++ /dev/null @@ -1,149 +0,0 @@ -//The ammo/gun is stored in a back slot item -/obj/item/minigunpack2 - name = " Laser Gatling Pack" - desc = "A massive battery pack with an attached laser gatling gun!" - icon = 'icons/obj/guns/minigun.dmi' - icon_state = "holstered" - item_state = "backpack" - lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' - slot_flags = ITEM_SLOT_BACK - w_class = WEIGHT_CLASS_HUGE - var/obj/item/gun/energy/minigun/gun - var/armed = 0 //whether the gun is attached, 0 is attached, 1 is the gun is wielded. - var/overheat = 0 - var/overheat_max = 60 - var/heat_diffusion = 5 - -/obj/item/minigunpack2/Initialize() - . = ..() - gun = new(src) - START_PROCESSING(SSobj, src) - -/obj/item/minigunpack2/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/minigunpack2/process() - overheat = max(0, overheat - heat_diffusion) - -//ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/minigunpack2/attack_hand(var/mob/living/carbon/user) - if(src.loc == user) - if(!armed) - if(user.get_item_by_slot(SLOT_BACK) == src) - armed = 1 - if(!user.put_in_hands(gun)) - armed = 0 - to_chat(user, "You need a free hand to hold the gun!") - return - update_icon() - user.update_inv_back() - else - to_chat(user, "You are already holding the gun!") - else - ..() - -/obj/item/minigunpack2/attackby(obj/item/W, mob/user, params) - if(W == gun) //Don't need armed check, because if you have the gun assume its armed. - user.dropItemToGround(gun, TRUE) - else - ..() - -/obj/item/minigunpack2/dropped(mob/user) - if(armed) - user.dropItemToGround(gun, TRUE) - -/obj/item/minigunpack2/MouseDrop(atom/over_object) - . = ..() - if(armed) - return - if(iscarbon(usr)) - var/mob/M = usr - - if(!over_object) - return - - if(!M.incapacitated()) - - if(istype(over_object, /obj/screen/inventory/hand)) - var/obj/screen/inventory/hand/H = over_object - M.putItemFromInventoryInHandIfPossible(src, H.held_index) - - -/obj/item/minigunpack2/update_icon() - if(armed) - icon_state = "notholstered" - else - icon_state = "holstered" - -/obj/item/minigunpack2/proc/attach_gun(var/mob/user) - if(!gun) - gun = new(src) - gun.forceMove(src) - armed = 0 - if(user) - to_chat(user, "You attach the [gun.name] to the [name].") - else - src.visible_message("The [gun.name] snaps back onto the [name]!") - update_icon() - user.update_inv_back() - - -/obj/item/gun/energy/minigun - name = "laser gatling gun" - desc = "An advanced laser cannon with an incredible rate of fire. Requires a bulky backpack power source to use." - icon = 'icons/obj/guns/minigun.dmi' - icon_state = "minigun_spin" - item_state = "minigun" - flags_1 = CONDUCT_1 - force = 15 - recoil = 2 - slowdown = 1 - slot_flags = null - w_class = WEIGHT_CLASS_HUGE - materials = list() - ammo_type = list(/obj/item/ammo_casing/energy/laser/weak) - burst_size = 2 - automatic = 1 - can_charge = 0 - selfcharge = EGUN_SELFCHARGE - charge_tick = 2 - charge_delay = 5 - weapon_weight = WEAPON_HEAVY - item_flags = NEEDS_PERMIT | SLOWS_WHILE_IN_HAND - var/obj/item/minigunpack2/ammo_pack - -/obj/item/gun/energy/minigun/Initialize() - if(istype(loc, /obj/item/minigunpack2)) //We should spawn inside an ammo pack so let's use that one. - ammo_pack = loc - else - return INITIALIZE_HINT_QDEL //No pack, no gun - - return ..() - -/obj/item/gun/energy/minigun/attack_self(mob/living/user) - return - -/obj/item/gun/energy/minigun/dropped(mob/user) - if(ammo_pack) - ammo_pack.attach_gun(user) - else - qdel(src) - -/obj/item/gun/energy/minigun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) - if(ammo_pack) - if(ammo_pack.overheat < ammo_pack.overheat_max) - ammo_pack.overheat += burst_size - ..() - else - to_chat(user, "The gun's heat sensor locked the trigger to prevent lens damage.") - -/obj/item/gun/energy/minigun/afterattack(atom/target, mob/living/user, flag, params) - if(!ammo_pack || ammo_pack.loc != user) - to_chat(user, "You need the backpack power source to fire the gun!") - . = ..() - -/obj/item/gun/energy/minigun/dropped(mob/living/user) - ammo_pack.attach_gun(user) - diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 44c7894467..c5d4c36813 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -20,7 +20,7 @@ name = "hybrid taser" desc = "A dual-mode taser designed to fire both short-range high-power electrodes and long-range disabler beams." icon_state = "advtaser" - ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler) + ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/electrode) ammo_x_offset = 2 /obj/item/gun/energy/e_gun/advtaser/cyborg diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 9dd25bf3e3..55f21a5a2b 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -9,6 +9,7 @@ fire_sound = 'sound/weapons/emitter.ogg' flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_HUGE + var/checks_antimagic = FALSE var/max_charges = 6 var/charges = 0 var/recharge_rate = 4 @@ -31,6 +32,9 @@ return else no_den_usage = 0 + if(checks_antimagic && user.anti_magic_check(TRUE, FALSE, FALSE, 0, TRUE)) + to_chat(user, "Something is interfering with [src].") + return . = ..() /obj/item/gun/magic/can_shoot() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 42033d8c88..4cdfc6d70d 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -87,14 +87,17 @@ max_charges = 10 //10, 5, 5, 4 /obj/item/gun/magic/wand/resurrection/zap_self(mob/living/user) + ..() + charges-- + if(user.anti_magic_check()) + user.visible_message("[src] has no effect on [user]!") + return user.revive(full_heal = 1) if(iscarbon(user)) var/mob/living/carbon/C = user C.regenerate_limbs() C.regenerate_organs() to_chat(user, "You feel great!") - charges-- - ..() /obj/item/gun/magic/wand/resurrection/debug //for testing name = "debug wand of healing" diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index e4d13ad315..92fe91c222 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -45,7 +45,7 @@ var/aiming_lastangle = 0 var/mob/current_user = null var/list/obj/effect/projectile/tracer/current_tracers - + var/structure_piercing = 1 var/structure_bleed_coeff = 0.7 var/wall_pierce_amount = 0 @@ -76,7 +76,7 @@ var/static/image/drained_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_empty") var/datum/action/item_action/zoom_lock_action/zoom_lock_action - var/datum/component/mobhook + var/mob/listeningTo /obj/item/gun/energy/beam_rifle/debug delay = 0 @@ -111,7 +111,9 @@ to_chat(owner, "You switch [src]'s zooming processor to center mode.") if(ZOOM_LOCK_OFF) to_chat(owner, "You disable [src]'s zooming system.") - reset_zooming() + reset_zooming() + else + return ..() /obj/item/gun/energy/beam_rifle/proc/set_autozoom_pixel_offsets_immediate(current_angle) if(zoom_lock == ZOOM_LOCK_CENTER_VIEW || zoom_lock == ZOOM_LOCK_OFF) @@ -172,7 +174,7 @@ STOP_PROCESSING(SSfastprocess, src) set_user(null) QDEL_LIST(current_tracers) - QDEL_NULL(mobhook) + listeningTo = null return ..() /obj/item/gun/energy/beam_rifle/emp_act(severity) @@ -259,14 +261,17 @@ if(user == current_user) return stop_aiming(current_user) - QDEL_NULL(mobhook) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + listeningTo = null if(istype(current_user)) LAZYREMOVE(current_user.mousemove_intercept_objects, src) current_user = null if(istype(user)) current_user = user LAZYOR(current_user.mousemove_intercept_objects, src) - mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_mob_move))) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) + listeningTo = user /obj/item/gun/energy/beam_rifle/onMouseDrag(src_object, over_object, src_location, over_location, params, mob) if(aiming) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index efae090707..dca7a6087c 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -88,6 +88,8 @@ //Effects var/stun = 0 var/knockdown = 0 + var/knockdown_stamoverride + var/knockdown_stam_max var/unconscious = 0 var/irradiate = 0 var/stutter = 0 @@ -161,15 +163,26 @@ var/splatter_dir = dir if(starting) splatter_dir = get_dir(starting, target_loca) - if(isalien(L)) + var/obj/item/bodypart/B = L.get_bodypart(def_zone) + if(B && B.status == BODYPART_ROBOTIC) // So if you hit a robotic, it sparks instead of bloodspatters + do_sparks(2, FALSE, target.loc) + if(prob(25)) + new /obj/effect/decal/cleanable/oil(target_loca) + else if(isalien(L)) new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir) else - new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir, bloodtype_to_color(H.dna.blood_type)) + else + new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir, bloodtype_to_color()) + if(iscarbon(L)) var/mob/living/carbon/C = L C.bleed(damage) else L.add_splatter_floor(target_loca) + else if(impact_effect_type && !hitscan) new impact_effect_type(target_loca, hitx, hity) @@ -202,7 +215,7 @@ else L.log_message("has been shot by [firer] with [src]", LOG_ATTACK, color="orange") - return L.apply_effects(stun, knockdown, unconscious, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) + return L.apply_effects(stun, knockdown, unconscious, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter, knockdown_stamoverride, knockdown_stam_max) /obj/item/projectile/proc/vol_by_damage() if(src.damage) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index d8154b367d..e43eb5a3bc 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -39,14 +39,6 @@ /obj/item/projectile/beam/weak damage = 15 -/obj/item/projectile/beam/weak/minigun - damage = 12.5 - armour_penetration = 40 - -/obj/item/projectile/beam/weak/minigun/Initialize() - .=..() - speed = pick(0.7,0.75,0.8,0.85,0.9,0.95,1,1.05,1.1,1.15) - /obj/item/projectile/beam/weak/penetrator armour_penetration = 50 diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index dfc6df537d..94ec2d3c2b 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -1,60 +1,69 @@ -// .45 (M1911 & C20r) - -/obj/item/projectile/bullet/c45 - name = ".45 bullet" - damage = 20 - stamina = 65 - -/obj/item/projectile/bullet/c45_nostamina - name = ".45 bullet" - damage = 30 - -/obj/item/projectile/bullet/c45_cleaning - name = ".45 bullet" - damage = 24 - stamina = 10 - -/obj/item/projectile/bullet/c45_cleaning/on_hit(atom/target, blocked = FALSE) - . = ..() - var/turf/T = get_turf(target) - - //section shamelessly copypasta'd from the clean component - SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - for(var/A in T) - if(is_cleanable(A)) - qdel(A) - else if(istype(A, /obj/item)) - var/obj/item/I = A - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - if(ismob(I.loc)) - var/mob/M = I.loc - M.regenerate_icons() - else if(ishuman(A)) - var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.head) - SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - if(cleaned_human.wear_suit) - SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - else if(cleaned_human.w_uniform) - SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - if(cleaned_human.shoes) - SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - cleaned_human.wash_cream() - cleaned_human.regenerate_icons() - -// 4.6x30mm (Autorifles) - -/obj/item/projectile/bullet/c46x30mm - name = "4.6x30mm bullet" - damage = 20 - -/obj/item/projectile/bullet/c46x30mm_ap - name = "4.6x30mm armor-piercing bullet" - damage = 15 - armour_penetration = 40 - -/obj/item/projectile/bullet/incendiary/c46x30mm - name = "4.6x30mm incendiary bullet" - damage = 10 - fire_stacks = 1 +// .45 (M1911 & C20r) + +/obj/item/projectile/bullet/c45 + name = ".45 bullet" + damage = 20 + stamina = 65 + +/obj/item/projectile/bullet/c45_nostamina + name = ".45 bullet" + damage = 30 + +/obj/item/projectile/bullet/c45_cleaning + name = ".45 bullet" + damage = 24 + stamina = 10 + +/obj/item/projectile/bullet/c45_cleaning/on_hit(atom/target, blocked = FALSE) + . = ..() + var/turf/T = get_turf(target) + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + for(var/A in T) + if(is_cleanable(A)) + qdel(A) + else if(isitem(A)) + var/obj/item/cleaned_item = A + SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_item.clean_blood() + if(ismob(cleaned_item.loc)) + var/mob/M = cleaned_item.loc + M.regenerate_icons() + else if(ishuman(A)) + var/mob/living/carbon/human/cleaned_human = A + if(cleaned_human.lying) + if(cleaned_human.head) + SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.head.clean_blood() + cleaned_human.update_inv_head() + if(cleaned_human.wear_suit) + SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.wear_suit.clean_blood() + cleaned_human.update_inv_wear_suit() + else if(cleaned_human.w_uniform) + SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.w_uniform.clean_blood() + cleaned_human.update_inv_w_uniform() + if(cleaned_human.shoes) + SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.shoes.clean_blood() + cleaned_human.update_inv_shoes() + SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.clean_blood() + cleaned_human.wash_cream() + cleaned_human.regenerate_icons() + +// 4.6x30mm (Autorifles) + +/obj/item/projectile/bullet/c46x30mm + name = "4.6x30mm bullet" + damage = 15 + +/obj/item/projectile/bullet/c46x30mm_ap + name = "4.6x30mm armor-piercing bullet" + damage = 12.5 + armour_penetration = 40 + +/obj/item/projectile/bullet/incendiary/c46x30mm + name = "4.6x30mm incendiary bullet" + damage = 7.5 + fire_stacks = 1 diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm index 1753587ad3..e08f806fe5 100644 --- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm +++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm @@ -3,10 +3,9 @@ name = "nuclear particle" icon_state = "nuclear_particle" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - damage = 20 - damage_type = TOX - irradiate = 2500 //enough to knockdown and induce vomiting - speed = 0.4 + flag = "rad" + irradiate = 5000 + speed = 0.4 hitsound = 'sound/weapons/emitter2.ogg' impact_type = /obj/effect/projectile/impact/xray var/static/list/particle_colors = list( @@ -25,22 +24,6 @@ add_atom_colour(particle_colors[our_color], FIXED_COLOUR_PRIORITY) set_light(4, 3, particle_colors[our_color]) //Range of 4, brightness of 3 - Same range as a flashlight -/atom/proc/fire_nuclear_particles(power_ratio) //used by fusion to fire random # of nuclear particles - power ratio determines about how many are fired - var/random_particles = rand(3,6) - var/particles_to_fire - var/particles_fired - switch(power_ratio) //multiply random_particles * factor for whatever tier - if(0 to FUSION_MID_TIER_THRESHOLD) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_LOW - if(FUSION_MID_TIER_THRESHOLD to FUSION_HIGH_TIER_THRESHOLD) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_MID - if(FUSION_HIGH_TIER_THRESHOLD to FUSION_SUPER_TIER_THRESHOLD) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_HIGH - if(FUSION_SUPER_TIER_THRESHOLD to INFINITY) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_SUPER - while(particles_to_fire) - particles_fired++ - var/angle = rand(0,360) - var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src) - addtimer(CALLBACK(P, /obj/item/projectile.proc/fire, angle), particles_fired) //multiply particles fired * delay so the particles end up stagnated (once every decisecond) - particles_to_fire-- \ No newline at end of file +/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction. + var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src) + P.fire(angle) diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm index 895a165f49..d7c8b8b082 100644 --- a/code/modules/projectiles/projectile/energy/stun.dm +++ b/code/modules/projectiles/projectile/energy/stun.dm @@ -3,7 +3,9 @@ icon_state = "spark" color = "#FFFF00" nodamage = 1 - knockdown = 100 + knockdown = 60 + knockdown_stamoverride = 36 + knockdown_stam_max = 50 stutter = 5 jitter = 20 hitsound = 'sound/weapons/taserhit.ogg' @@ -11,6 +13,7 @@ tracer_type = /obj/effect/projectile/tracer/stun muzzle_type = /obj/effect/projectile/muzzle/stun impact_type = /obj/effect/projectile/impact/stun + var/tase_duration = 50 /obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = FALSE) . = ..() @@ -23,6 +26,7 @@ if(C.dna && C.dna.check_mutation(HULK)) C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk") else if((C.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(C, TRAIT_STUNIMMUNE)) + C.apply_status_effect(STATUS_EFFECT_TASED, tase_duration) addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5) /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet diff --git a/code/modules/projectiles/projectile/special/neurotoxin.dm b/code/modules/projectiles/projectile/special/neurotoxin.dm index baf1495abb..1d359585c0 100644 --- a/code/modules/projectiles/projectile/special/neurotoxin.dm +++ b/code/modules/projectiles/projectile/special/neurotoxin.dm @@ -8,7 +8,7 @@ if(isalien(target)) knockdown = 0 nodamage = TRUE - else if(isliving(target)) + else if(iscarbon(target)) var/mob/living/L = target L.Knockdown(100, TRUE, FALSE, 30, 25) return ..() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 711fe11d5d..f540ae850d 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -175,7 +175,7 @@ data["chosenPillStyle"] = chosenPillStyle data["isPillBottleLoaded"] = bottle ? 1 : 0 if(bottle) - GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) + var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage) data["pillBotContent"] = bottle.contents.len data["pillBotMaxContent"] = STRB.max_items @@ -263,7 +263,7 @@ var/target_loc = bottle ? bottle : drop_location() var/drop_threshold = INFINITY if(bottle) - GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) + var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage) if(STRB) drop_threshold = STRB.max_items - bottle.contents.len diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 6efa4276b6..05fa4d382a 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -188,7 +188,7 @@ to_chat(usr, "ERROR: Cannot replicate virus strain.") return A = A.Copy() - var/list/data = list("viruses" = list(A)) + var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY", "viruses" = list(A)) var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[A.name] culture bottle" B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium." diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index dd51ce2bc7..1afbed3533 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -407,10 +407,10 @@ /datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) ..() /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index f3df72cd4d..15d517a0f5 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -423,7 +423,7 @@ . = 1 /datum/reagent/drug/happiness/addiction_act_stage1(mob/living/M)// all work and no play makes jack a dull boy - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(min(mood.sanity, SANITY_DISTURBED)) M.Jitter(5) if(prob(20)) @@ -431,7 +431,7 @@ ..() /datum/reagent/drug/happiness/addiction_act_stage2(mob/living/M) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(min(mood.sanity, SANITY_UNSTABLE)) M.Jitter(10) if(prob(30)) @@ -439,7 +439,7 @@ ..() /datum/reagent/drug/happiness/addiction_act_stage3(mob/living/M) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(min(mood.sanity, SANITY_CRAZY)) M.Jitter(15) if(prob(40)) @@ -447,7 +447,7 @@ ..() /datum/reagent/drug/happiness/addiction_act_stage4(mob/living/carbon/human/M) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(SANITY_INSANE) M.Jitter(20) if(prob(50)) @@ -469,7 +469,7 @@ /datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L) . = ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) L.next_move_modifier *= 2 if(ishuman(L)) var/mob/living/carbon/human/H = L @@ -480,7 +480,7 @@ /datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L) . = ..() - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) L.next_move_modifier *= 0.5 if(ishuman(L)) var/mob/living/carbon/human/H = L diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 775308589f..592f7bc592 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -984,10 +984,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) ..() /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) @@ -1308,10 +1308,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOREALLYFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOREALLYFAST, id) + L.remove_movespeed_modifier(id) ..() /datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) @@ -1443,7 +1443,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) M.dizziness = max(0, M.dizziness-6) M.confused = max(0, M.confused-6) M.disgust = max(0, M.disgust-6) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) if(mood.sanity <= SANITY_NEUTRAL) // only take effect if in negative sanity and then... mood.setSanity(min(mood.sanity+5, SANITY_NEUTRAL)) // set minimum to prevent unwanted spiking over neutral ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 95b4a33c0d..af6a65ebe1 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,9 +1,9 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" - color = "#C80000" // rgb: 200, 0, 0 - description = "Blood from a human, or otherwise." + color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 + description = "Blood from some creature." metabolization_rate = 5 //fast rate so it disappears fast. taste_description = "iron" taste_mult = 1.3 @@ -28,27 +28,75 @@ if(iscarbon(L)) var/mob/living/carbon/C = L - if(C.get_blood_id() == "blood" && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) - if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", reac_volume * 0.5) - else - C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) + var/blood_id = C.get_blood_id() + if((blood_id == "blood" || blood_id == "jellyblood") && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) + C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio) + // we don't care about bloodtype here, we're just refilling the mob - if(reac_volume >= 10 && istype(L)) + if(reac_volume >= 10 && istype(L) && method != INJECT) L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) +/datum/reagent/blood/on_mob_life(mob/living/carbon/C) //Because lethals are preferred over stamina. damnifino. + var/blood_id = C.get_blood_id() + if((blood_id == "blood" || blood_id == "jellyblood")) + if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be + C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person + ..() + /datum/reagent/blood/reaction_obj(obj/O, volume) if(volume >= 3 && istype(O)) - O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + O.add_blood_DNA(data) + +/datum/reagent/blood/reaction_turf(turf/T, reac_volume)//splash the blood all over the place + if(!istype(T)) + return + if(reac_volume < 3) + return + + var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here + if(!B) + B = new(T) + if(data["blood_DNA"]) + B.blood_DNA[data["blood_DNA"]] = data["blood_type"] + if(!B.reagents) + B.reagents.add_reagent(id, reac_volume) + B.update_icon() /datum/reagent/blood/on_new(list/data) if(istype(data)) SetViruses(src, data) + color = bloodtype_to_color(data["blood_type"]) + if(data["blood_type"] == "SY") + name = "Synthetic Blood" + taste_description = "oily" + + if(data["blood_type"] == "X*") + name = "Xenomorph Blood" + taste_description = "acidic heresy" + shot_glass_icon_state = "shotglassgreen" + pH = 2.5 + + if(data["blood_type"] == "HF") + name = "Hydraulic Blood" + taste_description = "burnt oil" + pH = 9.75 + + if(data["blood_type"] == "BUG") + name = "Insect Blood" + taste_description = "greasy" + pH = 7.25 + + if(data["blood_type"] == "L") + name = "Lizard Blood" + taste_description = "spicy" + pH = 6.85 + + /datum/reagent/blood/on_merge(list/mix_data) if(data && mix_data) if(data["blood_DNA"] != mix_data["blood_DNA"]) - data["cloneable"] = 0 //On mix, consider the genetic sampling unviable for pod cloning if the DNA sample doesn't match. + data["cloneable"] = FALSE //On mix, consider the genetic sampling unviable for pod cloning if the DNA sample doesn't match. if(data["viruses"] || mix_data["viruses"]) var/list/mix1 = data["viruses"] @@ -78,27 +126,111 @@ var/datum/disease/D = thing . += D -/datum/reagent/blood/reaction_turf(turf/T, reac_volume)//splash the blood all over the place - if(!istype(T)) - return - if(reac_volume < 3) - return +/datum/reagent/blood/synthetics + data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Synthetic Blood" + id = "syntheticblood" + taste_description = "oily" + color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - if(!B) - B = new(T) - if(data["blood_DNA"]) - B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) +/datum/reagent/blood/lizard + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_LIZARD, "blood_type"="L","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Lizard Blood" + id = "lizardblood" + taste_description = "spicy" + color = BLOOD_COLOR_LIZARD // rgb: 11, 7, 48 + pH = 6.85 + +/datum/reagent/blood/jellyblood + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Slime Jelly Blood" + id = "jellyblood" + description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." + color = BLOOD_COLOR_SLIME + taste_description = "slime" + taste_mult = 1.3 + pH = 4 + +/datum/reagent/blood/xenomorph + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Xenomorph Blood" + id = "xenoblood" + taste_description = "acidic heresy" + color = BLOOD_COLOR_XENO // greenish yellow ooze + shot_glass_icon_state = "shotglassgreen" + pH = 2.5 + +/datum/reagent/blood/oil + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Hydraulic Blood" + id = "oilblood" + taste_description = "burnt oil" + color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. + pH = 9.75 + +/datum/reagent/blood/insect + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_BUG, "blood_type"="BUG","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Insectoid Blood" + id = "bugblood" + taste_description = "waxy" + color = BLOOD_COLOR_BUG // Bug colored, I guess. + pH = 7.25 + + +/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M) + if(prob(10)) + if(M.dna?.species?.exotic_bloodtype != "GEL") + to_chat(M, "Your insides are burning!") + M.adjustToxLoss(rand(20,60)*REM, 0) + . = 1 + else if(prob(40) && isjellyperson(M)) + M.heal_bodypart_damage(2*REM) + . = 1 + ..() /datum/reagent/liquidgibs name = "Liquid gibs" id = "liquidgibs" - color = "#FF9966" + color = BLOOD_COLOR_HUMAN description = "You don't even want to think about what's in here." taste_description = "gross iron" shot_glass_icon_state = "shotglassred" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= "O+","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) pH = 7.45 +/datum/reagent/liquidgibs/xeno + name = "Liquid xeno gibs" + id = "liquidxenogibs" + color = BLOOD_COLOR_XENO + taste_description = "blended heresy" + shot_glass_icon_state = "shotglassgreen" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + pH = 2.5 + +/datum/reagent/liquidgibs/slime + name = "Slime sludge" + id = "liquidslimegibs" + color = BLOOD_COLOR_SLIME + taste_description = "slime" + shot_glass_icon_state = "shotglassgreen" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + pH = 4 + +/datum/reagent/liquidgibs/synth + name = "Synthetic sludge" + id = "liquidsyntheticgibs" + color = BLOOD_COLOR_SYNTHETIC + taste_description = "jellied plastic" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + +/datum/reagent/liquidgibs/oil + name = "Hydraulic sludge" + id = "liquidoilgibs" + color = BLOOD_COLOR_OIL + taste_description = "chunky burnt oil" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + pH = 9.75 + /datum/reagent/vaccine //data must contain virus type name = "Vaccine" @@ -585,6 +717,30 @@ race = /datum/species/android mutationtext = "The pain subsides. You feel... artificial." +//Citadel Races +/datum/reagent/mutationtoxin/mammal + name = "Mammal Mutation Toxin" + id = "mammalmutationtoxin" + description = "A glowing toxin." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/mammal + mutationtext = "The pain subsides. You feel... fluffier." + +/datum/reagent/mutationtoxin/insect + name = "Insect Mutation Toxin" + id = "insectmutationtoxin" + description = "A glowing toxin." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/insect + mutationtext = "The pain subsides. You feel... attracted to dark, moist areas." + +/datum/reagent/mutationtoxin/xenoperson + name = "Xeno-Hybrid Mutation Toxin" + id = "xenopersonmutationtoxin" + description = "A glowing toxin." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/xeno + mutationtext = "The pain subsides. You feel... oddly longing for the Queen." //sadly, not the British one. //BLACKLISTED RACES /datum/reagent/mutationtoxin/skeleton @@ -947,12 +1103,12 @@ reagent_state = SOLID taste_description = "iron" pH = 6 - + overdose_threshold = 30 color = "#c2391d" /datum/reagent/iron/on_mob_life(mob/living/carbon/C) if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio)) - C.blood_volume += 0.5 + C.blood_volume += 0.01 //we'll have synthetics from medbay. ..() /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -961,6 +1117,17 @@ M.reagents.add_reagent("toxin", reac_volume) ..() +/datum/reagent/iron/overdose_start(mob/living/M) + to_chat(M, "You start feeling your guts twisting painfully!") + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + +/datum/reagent/iron/overdose_process(mob/living/carbon/C) + if(prob(20)) + var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER) + if (istype(L)) + C.applyLiverDamage(2) //mild until the fabled med rework comes out. the organ damage galore + ..() + /datum/reagent/gold name = "Gold" id = "gold" @@ -1077,17 +1244,19 @@ pH = 5.5 /datum/reagent/space_cleaner/reaction_obj(obj/O, reac_volume) - if(istype(O, /obj/effect/decal/cleanable)) + if(istype(O, /obj/effect/decal/cleanable) || istype(O, /obj/item/projectile/bullet/reusable/foam_dart) || istype(O, /obj/item/ammo_casing/caseless/foam_dart)) qdel(O) else if(O) O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + O.clean_blood() /datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume) if(reac_volume >= 1) T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + T.clean_blood() for(var/obj/effect/decal/cleanable/C in T) qdel(C) @@ -1105,26 +1274,33 @@ H.lip_style = null H.update_body() for(var/obj/item/I in C.held_items) - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + I.clean_blood() if(C.wear_mask) - if(SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + if(C.wear_mask.clean_blood()) C.update_inv_wear_mask() if(ishuman(M)) var/mob/living/carbon/human/H = C if(H.head) - if(SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + if(H.head.clean_blood()) H.update_inv_head() if(H.wear_suit) - if(SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + if(H.wear_suit.clean_blood()) H.update_inv_wear_suit() else if(H.w_uniform) - if(SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + if(H.w_uniform.clean_blood()) H.update_inv_w_uniform() if(H.shoes) - if(SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + if(H.shoes.clean_blood()) H.update_inv_shoes() H.wash_cream() - SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + M.clean_blood() /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" @@ -1353,10 +1529,10 @@ /datum/reagent/nitryl/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -2089,24 +2265,6 @@ M.emote("nya") ..() -//Kept for legacy, I think it will break everything if you enable it. -/datum/reagent/penis_enlargement - name = "Penis Enlargement" - id = "penis_enlargement" - description = "A patented chemical forumula by Doctor Ronald Hyatt that is guaranteed to bring maximum GROWTH and LENGTH to your penis, today!" - color = "#888888" - taste_description = "chinese dragon powder" - metabolization_rate = INFINITY //So it instantly removes all of itself. Don't want to put strain on the system. - -/datum/reagent/penis_enlargement/on_mob_life(mob/living/carbon/C) - var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS) - if(P) - var/added_length = round(volume/30,0.01) //Every 30u gives an extra inch. Rounded to the nearest 0.01 so float fuckery doesn't occur with the division by 30. - if(added_length >= 0.20) //Only add the length if it's greater than or equal to 0.2. This is to prevent people from smoking the reagents and causing the penis to update constantly. - P.length += added_length - P.update() - ..() - /datum/reagent/changeling_string name = "UNKNOWN" id = "changeling_sting_real" @@ -2119,26 +2277,22 @@ chemical_flags = REAGENT_INVISIBLE /datum/reagent/changeling_string/on_mob_metabolize(mob/living/carbon/C) - if(C && C.dna && data["desired_dna"]) + if(ishuman(C) && C.dna && data["desired_dna"]) original_dna = new C.dna.type C.dna.copy_dna(original_dna) var/datum/dna/new_dna = data["desired_dna"] - new_dna.copy_dna(C.dna) + new_dna.transfer_identity(C, TRUE) C.real_name = new_dna.real_name - C.updateappearance(mutcolor_update=1) - C.update_body() + C.updateappearance(mutcolor_update = TRUE) C.domutcheck() - C.regenerate_icons() ..() /datum/reagent/changeling_string/on_mob_end_metabolize(mob/living/carbon/C) if(original_dna) - original_dna.copy_dna(C.dna) + original_dna.transfer_identity(C, TRUE) C.real_name = original_dna.real_name - C.updateappearance(mutcolor_update=1) - C.update_body() + C.updateappearance(mutcolor_update = TRUE) C.domutcheck() - C.regenerate_icons() ..() /datum/reagent/changeling_string/Destroy() diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 2ed9a31107..374f7715bb 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -283,6 +283,12 @@ results = list("regen_jelly" = 2) required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) +/datum/chemical_reaction/jelly_convert + name = "Blood Jelly Conversion" + id = "blood_jelly" + results = list("slimejelly" = 1) + required_reagents = list("toxin" = 1, "jellyblood" = 1) + /datum/chemical_reaction/corazone name = "Corazone" id = "corazone" diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index b3f9591f64..d475b118b2 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -26,7 +26,7 @@ create_reagents(volume, reagent_flags) if(spawned_disease) var/datum/disease/F = new spawned_disease() - var/list/data = list("viruses"= list(F)) + var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F)) reagents.add_reagent("blood", disease_amount, data) add_initial_reagents() diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 3e555f385f..fe35981bfe 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -4,13 +4,16 @@ icon = 'icons/obj/bloodpack.dmi' icon_state = "bloodpack" volume = 200 + reagent_flags = DRAINABLE var/blood_type = null var/labelled = 0 + var/color_to_apply = "#FFFFFF" + var/mutable_appearance/fill_overlay /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) - reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) update_icon() /obj/item/reagent_containers/blood/on_reagent_change(changetype) @@ -18,6 +21,7 @@ var/datum/reagent/blood/B = reagents.has_reagent("blood") if(B && B.data && B.data["blood_type"]) blood_type = B.data["blood_type"] + color_to_apply = bloodtype_to_color(blood_type) else blood_type = null update_pack_name() @@ -45,7 +49,7 @@ /obj/item/reagent_containers/blood/random/Initialize() icon_state = "bloodpack" - blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L") + blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "SY", "HF", "GEL", "BUG") return ..() /obj/item/reagent_containers/blood/APlus @@ -72,6 +76,18 @@ /obj/item/reagent_containers/blood/universal blood_type = "U" +/obj/item/reagent_containers/blood/synthetics + blood_type = "SY" + +/obj/item/reagent_containers/blood/oilblood + blood_type = "HF" + +/obj/item/reagent_containers/blood/jellyblood + blood_type = "GEL" + +/obj/item/reagent_containers/blood/insect + blood_type = "BUG" + /obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params) if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon)) if(!user.is_literate()) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index a96ba006c9..432b9289dd 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -196,3 +196,318 @@ volume = 250 list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50) amount_per_transfer_from_this = 50 + +#define HYPO_SPRAY 0 +#define HYPO_INJECT 1 + +#define WAIT_SPRAY 25 +#define WAIT_INJECT 25 +#define SELF_SPRAY 15 +#define SELF_INJECT 15 + +#define DELUXE_WAIT_SPRAY 20 +#define DELUXE_WAIT_INJECT 20 +#define DELUXE_SELF_SPRAY 10 +#define DELUXE_SELF_INJECT 10 + +#define COMBAT_WAIT_SPRAY 0 +#define COMBAT_WAIT_INJECT 0 +#define COMBAT_SELF_SPRAY 0 +#define COMBAT_SELF_INJECT 0 + +//A vial-loaded hypospray. Cartridge-based! +/obj/item/hypospray/mkii + name = "hypospray mk.II" + icon_state = "hypo2" + icon = 'icons/obj/syringe.dmi' + desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping." + w_class = WEIGHT_CLASS_TINY + var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small) + var/mode = HYPO_INJECT + var/obj/item/reagent_containers/glass/bottle/vial/vial + var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small + var/spawnwithvial = TRUE + var/inject_wait = WAIT_INJECT + var/spray_wait = WAIT_SPRAY + var/spray_self = SELF_SPRAY + var/inject_self = SELF_INJECT + var/quickload = FALSE + var/penetrates = FALSE + +/obj/item/hypospray/mkii/brute + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine + +/obj/item/hypospray/mkii/toxin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin + +/obj/item/hypospray/mkii/oxygen + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin + +/obj/item/hypospray/mkii/burn + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane + +/obj/item/hypospray/mkii/tricord + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord + +/obj/item/hypospray/mkii/enlarge + spawnwithvial = FALSE + +/obj/item/hypospray/mkii/CMO + name = "hypospray mk.II deluxe" + allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large) + icon_state = "cmo2" + desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray." + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO + inject_wait = DELUXE_WAIT_INJECT + spray_wait = DELUXE_WAIT_SPRAY + spray_self = DELUXE_SELF_SPRAY + inject_self = DELUXE_SELF_INJECT + +/obj/item/hypospray/mkii/CMO/combat + name = "combat hypospray mk.II" + desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it." + icon_state = "combat2" + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat + inject_wait = COMBAT_WAIT_INJECT + spray_wait = COMBAT_WAIT_SPRAY + spray_self = COMBAT_SELF_SPRAY + inject_self = COMBAT_SELF_INJECT + quickload = TRUE + penetrates = TRUE + +/obj/item/hypospray/mkii/Initialize() + . = ..() + if(!spawnwithvial) + update_icon() + return + if(start_vial) + vial = new start_vial + update_icon() + +/obj/item/hypospray/mkii/update_icon() + ..() + icon_state = "[initial(icon_state)][vial ? "" : "-e"]" + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() + return + +/obj/item/hypospray/mkii/examine(mob/user) + . = ..() + if(vial) + to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.") + else + to_chat(user, "It has no vial loaded in.") + to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.") + +/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user) + if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) + var/obj/item/reagent_containers/glass/bottle/vial/V = I + V.forceMove(user.loc) + user.put_in_hands(V) + to_chat(user, "You remove [vial] from [src].") + vial = null + update_icon() + playsound(loc, 'sound/weapons/empty.ogg', 50, 1) + else + to_chat(user, "This hypo isn't loaded!") + return + +/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user) + if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null)) + if(!quickload) + to_chat(user, "[src] can not hold more than one vial!") + return FALSE + unload_hypo(vial, user) + if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) + var/obj/item/reagent_containers/glass/bottle/vial/V = I + if(!is_type_in_list(V, allowed_containers)) + to_chat(user, "[src] doesn't accept this type of vial.") + return FALSE + if(!user.transferItemToLoc(V,src)) + return FALSE + vial = V + user.visible_message("[user] has loaded a vial into [src].","You have loaded [vial] into [src].") + update_icon() + playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1) + return TRUE + else + to_chat(user, "This doesn't fit in [src].") + return FALSE + return FALSE + +/obj/item/hypospray/mkii/AltClick(mob/user) + if(vial) + vial.attack_self(user) + +// Gunna allow this for now, still really don't approve - Pooj +/obj/item/hypospray/mkii/emag_act(mob/user) + . = ..() + if(obj_flags & EMAGGED) + to_chat(user, "[src] happens to be already overcharged.") + return + inject_wait = COMBAT_WAIT_INJECT + spray_wait = COMBAT_WAIT_SPRAY + spray_self = COMBAT_SELF_INJECT + inject_self = COMBAT_SELF_SPRAY + penetrates = TRUE + to_chat(user, "You overcharge [src]'s control circuit.") + obj_flags |= EMAGGED + return TRUE + +/obj/item/hypospray/mkii/attack_hand(mob/user) + . = ..() //Don't bother changing this or removing it from containers will break. + +/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params) + return + +/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity) + if(!vial) + return + + if(!proximity) + return + + if(!ismob(target)) + return + + var/mob/living/L + if(isliving(target)) + L = target + if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob. + return + + if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles + to_chat(user, "You cannot directly fill [target]!") + return + + if(target.reagents.total_volume >= target.reagents.maximum_volume) + to_chat(user, "[target] is full.") + return + + if(ishuman(L)) + var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected)) + if(!affecting) + to_chat(user, "The limb is missing!") + return + if(affecting.status != BODYPART_ORGANIC) + to_chat(user, "Medicine won't work on a robotic limb!") + return + + var/contained = vial.reagents.log_list() + log_combat(user, L, "attemped to inject", src, addition="which had [contained]") +//Always log attemped injections for admins + if(vial != null) + switch(mode) + if(HYPO_INJECT) + if(L) //living mob + if(L != user) + L.visible_message("[user] is trying to inject [L] with [src]!", \ + "[user] is trying to inject [L] with [src]!") + if(!do_mob(user, L, inject_wait)) + return + if(!penetrates && !L.can_inject(user, 1)) + return + if(!vial.reagents.total_volume) + return + if(L.reagents.total_volume >= L.reagents.maximum_volume) + return + L.visible_message("[user] uses the [src] on [L]!", \ + "[user] uses the [src] on [L]!") + else + if(!do_mob(user, L, inject_self)) + return + if(!penetrates && !L.can_inject(user, 1)) + return + if(!vial.reagents.total_volume) + return + if(L.reagents.total_volume >= L.reagents.maximum_volume) + return + log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])") + L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG) + + var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1) + vial.reagents.reaction(L, INJECT, fraction) + vial.reagents.trans_to(target, vial.amount_per_transfer_from_this) + if(vial.amount_per_transfer_from_this >= 15) + playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1) + if(vial.amount_per_transfer_from_this < 15) + playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1) + to_chat(user, "You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.") + + if(HYPO_SPRAY) + if(L) //living mob + if(L != user) + L.visible_message("[user] is trying to spray [L] with [src]!", \ + "[user] is trying to spray [L] with [src]!") + if(!do_mob(user, L, spray_wait)) + return + if(!penetrates && !L.can_inject(user, 1)) + return + if(!vial.reagents.total_volume) + return + if(L.reagents.total_volume >= L.reagents.maximum_volume) + return + L.visible_message("[user] uses the [src] on [L]!", \ + "[user] uses the [src] on [L]!") + else + if(!do_mob(user, L, spray_self)) + return + if(!penetrates && !L.can_inject(user, 1)) + return + if(!vial.reagents.total_volume) + return + if(L.reagents.total_volume >= L.reagents.maximum_volume) + return + log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])") + L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG) + var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1) + vial.reagents.reaction(L, PATCH, fraction) + vial.reagents.trans_to(target, vial.amount_per_transfer_from_this) + if(vial.amount_per_transfer_from_this >= 15) + playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1) + if(vial.amount_per_transfer_from_this < 15) + playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1) + to_chat(user, "You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.") + else + to_chat(user, "[src] doesn't work here!") + return + +/obj/item/hypospray/mkii/attack_self(mob/living/user) + if(user) + if(user.incapacitated()) + return + else if(!vial) + to_chat(user, "This Hypo needs to be loaded first!") + return + else + unload_hypo(vial,user) + +/obj/item/hypospray/mkii/verb/modes() + set name = "Toggle Application Mode" + set category = "Object" + set src in usr + var/mob/M = usr + switch(mode) + if(HYPO_SPRAY) + mode = HYPO_INJECT + to_chat(M, "[src] is now set to inject contents on application.") + if(HYPO_INJECT) + mode = HYPO_SPRAY + to_chat(M, "[src] is now set to spray contents on application.") + +#undef HYPO_SPRAY +#undef HYPO_INJECT +#undef WAIT_SPRAY +#undef WAIT_INJECT +#undef SELF_SPRAY +#undef SELF_INJECT +#undef DELUXE_WAIT_SPRAY +#undef DELUXE_WAIT_INJECT +#undef DELUXE_SELF_SPRAY +#undef DELUXE_SELF_INJECT +#undef COMBAT_WAIT_SPRAY +#undef COMBAT_WAIT_INJECT +#undef COMBAT_SELF_SPRAY +#undef COMBAT_SELF_INJECT diff --git a/modular_citadel/code/modules/reagents/reagent container/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm old mode 100755 new mode 100644 similarity index 96% rename from modular_citadel/code/modules/reagents/reagent container/hypovial.dm rename to code/modules/reagents/reagent_containers/hypovial.dm index c1e0d6ff01..ba5ce48a4a --- a/modular_citadel/code/modules/reagents/reagent container/hypovial.dm +++ b/code/modules/reagents/reagent_containers/hypovial.dm @@ -1,7 +1,8 @@ +//hypovials used with the MkII hypospray. See hypospray.dm. + /obj/item/reagent_containers/glass/bottle/vial name = "broken hypovial" desc = "A hypovial compatible with most hyposprays." - icon = 'modular_citadel/icons/obj/vial.dmi' icon_state = "hypovial" spillable = FALSE var/comes_with = list() //Easy way of doing this. @@ -34,7 +35,7 @@ /obj/item/reagent_containers/glass/bottle/vial/update_icon() cut_overlays() if(reagents.total_volume) - var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypovial10") + var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "hypovial10") var/percent = round((reagents.total_volume / volume) * 100) switch(percent) @@ -86,7 +87,7 @@ /obj/item/reagent_containers/glass/bottle/vial/large/update_icon() cut_overlays() if(reagents.total_volume) - var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypoviallarge10") + var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "hypoviallarge10") var/percent = round((reagents.total_volume / volume) * 100) switch(percent) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 38880f669f..d4880aa085 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -186,7 +186,6 @@ /obj/item/reagent_containers/pill/antirad_plus name = "prussian blue pill" desc = "Used to treat heavy radition poisoning." - icon = 'modular_citadel/icons/obj/modularpills.dmi' icon_state = "prussian_blue" list_reagents = list("prussian_blue" = 25, "water" = 10) roundstart = 1 @@ -194,7 +193,6 @@ /obj/item/reagent_containers/pill/mutarad name = "radiation treatment deluxe pill" desc = "Used to treat heavy radition poisoning and genetic defects." - icon = 'modular_citadel/icons/obj/modularpills.dmi' icon_state = "anit_rad_fixgene" list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5) roundstart = 1 diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index a4a6a7d473..5edddd64c2 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -283,7 +283,7 @@ /obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. var/obj/item/storage/bag/trash/T = I - GET_COMPONENT_FROM(STR, /datum/component/storage, T) + var/datum/component/storage/STR = T.GetComponent(/datum/component/storage) to_chat(user, "You empty the bag.") for(var/obj/item/O in T.contents) STR.remove_from_storage(O,src) diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 624d5e0e05..348e687e03 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -29,7 +29,7 @@ pipename = initial(pipe_type.name) if(flip) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) rotcomp.BaseRot(null,ROTATION_FLIP) update_icon() diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm index 552976824d..818e80beea 100644 --- a/code/modules/research/designs/electronics_designs.dm +++ b/code/modules/research/designs/electronics_designs.dm @@ -131,3 +131,30 @@ category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE +/datum/design/xenobio_upgrade + name = "owo" + desc = "someone's bussin" + build_type = PROTOLATHE + materials = list(MAT_METAL = 300, MAT_GLASS = 100) + category = list("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/xenobio_upgrade/xenobiomonkeys + name = "Xenobiology console monkey upgrade disk" + desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console." + id = "xenobio_monkeys" + build_path = /obj/item/disk/xenobio_console_upgrade/monkey + +/datum/design/xenobio_upgrade/xenobioslimebasic + name = "Xenobiology console basic slime upgrade disk" + desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console." + id = "xenobio_slimebasic" + build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic + +/datum/design/xenobio_upgrade/xenobioslimeadv + name = "Xenobiology console advanced slime upgrade disk" + desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk." + id = "xenobio_slimeadv" + build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv + + diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm index 31723cde07..b4d67315ba 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm @@ -98,3 +98,11 @@ build_path = /obj/item/circuitboard/machine/vr_sleeper departmental_flags = DEPARTMENTAL_FLAG_ALL category = list ("Medical Machinery") + +/datum/design/board/autoylathe + name = "Machine Design (Autoylathe)" + desc = "The circuit board for an autoylathe." + id = "autoylathe" + build_path = /obj/item/circuitboard/machine/autoylathe + departmental_flags = DEPARTMENTAL_FLAG_ALL + category = list("Misc. Machinery") diff --git a/code/modules/research/designs/machine_desings/machine_designs_medical.dm b/code/modules/research/designs/machine_desings/machine_designs_medical.dm index 65b3d74f71..2f95954e01 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_medical.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_medical.dm @@ -89,3 +89,11 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING build_path = /obj/item/circuitboard/machine/clonescanner category = list("Medical Machinery") + +/datum/design/board/bloodbankgen + name = "Machine Design (Blood Bank Generator Board)" + desc = "The circuit board for a blood bank generator." + id = "bloodbankgen" + build_path = /obj/item/circuitboard/machine/bloodbankgen + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + category = list ("Medical Machinery") diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index ea67fad434..6526599179 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -288,7 +288,7 @@ departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE /datum/design/subspace_analyzer - name = "Subspace Analyzer" + name = "Subspace Wavelength Analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." id = "s-analyzer" build_type = PROTOLATHE diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 11bc31bedc..d69dda37ca 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -67,6 +67,12 @@ //Ammo Shells/ ////////////// +/datum/design/beanbag_slug/sec + id = "sec_beanbag" + build_type = PROTOLATHE + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/rubbershot/sec id = "sec_rshot" build_type = PROTOLATHE @@ -105,7 +111,7 @@ materials = list(MAT_METAL = 200) build_path = /obj/item/ammo_casing/shotgun/stunslug category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE /datum/design/techshell name = "Unloaded Technological Shotshell" @@ -139,7 +145,7 @@ materials = list(MAT_METAL = 500, MAT_GLASS = 300) build_path = /obj/item/firing_pin/test_range category = list("Firing Pins") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE /datum/design/pin_mindshield name = "Mindshield Firing Pin" @@ -235,7 +241,7 @@ reagents_list = list("radium" = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE + departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE /datum/design/xray name = "X-ray Laser Gun" @@ -309,7 +315,7 @@ materials = list(MAT_METAL = 2000, MAT_PLASMA = 500) build_path = /obj/item/grenade/chem_grenade/pyro category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE /datum/design/cryo_grenade name = "Cryo Grenade" @@ -319,7 +325,7 @@ materials = list(MAT_METAL = 2000, MAT_SILVER = 500) build_path = /obj/item/grenade/chem_grenade/cryo category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE /datum/design/adv_grenade name = "Advanced Release Grenade" @@ -329,7 +335,7 @@ materials = list(MAT_METAL = 3000, MAT_GLASS = 500) build_path = /obj/item/grenade/chem_grenade/adv_release category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE ////////// //MISC//// diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index e56350a280..0bcd0c5984 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -422,7 +422,7 @@ if(exp == SCANTYPE_OBLITERATE) visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!") if(linked_console.linked_lathe) - GET_COMPONENT_FROM(linked_materials, /datum/component/material_container, linked_console.linked_lathe) + var/datum/component/material_container/linked_materials = linked_console.linked_lathe.GetComponent(/datum/component/material_container) for(var/material in exp_on.materials) linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material) if(prob(EFFECT_PROB_LOW) && criticalReaction) diff --git a/code/modules/research/research_disk.dm b/code/modules/research/research_disk.dm index 2ec2398d88..02865dc5bb 100644 --- a/code/modules/research/research_disk.dm +++ b/code/modules/research/research_disk.dm @@ -29,3 +29,12 @@ /obj/item/disk/tech_disk/illegal/Initialize() . = ..() stored_research = new /datum/techweb/syndicate + +/obj/item/disk/tech_disk/abductor + name = "Gray technology disk" + desc = "You feel like it's not Gray because of its color." + materials = list() + +/obj/item/disk/tech_disk/abductor/Initialize() + . = ..() + stored_research = new /datum/techweb/abductor diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 3cd296f866..12fe64463d 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -43,7 +43,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi /obj/item/storage/part_replacer/bluespace name = "bluespace rapid part exchange device" - desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts." + desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts. Definitely not just a BSRPED painted orange." icon_state = "BS_RPED" w_class = WEIGHT_CLASS_NORMAL works_from_distance = TRUE @@ -52,12 +52,10 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi component_type = /datum/component/storage/concrete/bluespace/rped /obj/item/storage/part_replacer/cyborg - name = "rapid part exchange device" - desc = "Special mechanical module made to store, sort, and apply standard machine parts." icon_state = "borgrped" - item_state = "RPED" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + +/obj/item/storage/part_replacer/bluespace/cyborg + icon_state = "borg_BS_RPED" /proc/cmp_rped_sort(obj/item/A, obj/item/B) return B.get_part_rating() - A.get_part_rating() diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index cd5a190fd6..1e554f112f 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -49,6 +49,14 @@ var/datum/techweb_node/syndicate_basic/Node = new() research_node(Node, TRUE) +/datum/techweb/abductor + id = "ABDUCTOR" + organization = "Aliens" + +/datum/techweb/abductor/New() + var/datum/techweb_node/alientech/Node = new() + research_node(Node, TRUE) + /datum/techweb/science //Global science techweb for RND consoles. id = "SCIENCE" organization = "Nanotrasen" @@ -364,3 +372,7 @@ /datum/techweb/specialized/autounlocking/exofab allowed_buildtypes = MECHFAB + +/datum/techweb/specialized/autounlocking/autoylathe + design_autounlock_buildtypes = AUTOYLATHE + allowed_buildtypes = AUTOYLATHE diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 5b3a21dd5c..fdf887d259 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -10,7 +10,7 @@ // Default research tech, prevents bricking design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", - "space_heater", "xlarge_beaker", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "sec_38lethal", + "space_heater", "xlarge_beaker", "sec_beanbag", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "sec_38lethal", "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass") /datum/techweb_node/mmi @@ -60,7 +60,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag") + design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -1027,26 +1027,19 @@ id = "alien_bio" display_name = "Alien Biological Tools" description = "Advanced biological tools." - prereq_ids = list("alientech", "adv_biotech") + prereq_ids = list("alientech", "advance_surgerytools") design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery") - boost_item_paths = list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien, - /obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor, - /obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 20000 - hidden = TRUE + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) + export_price = 10000 /datum/techweb_node/alien_engi id = "alien_engi" display_name = "Alien Engineering" description = "Alien engineering tools" - prereq_ids = list("alientech", "adv_engi") + prereq_ids = list("alientech", "exp_tools") design_ids = list("alien_wrench", "alien_wirecutters", "alien_screwdriver", "alien_crowbar", "alien_welder", "alien_multitool") - boost_item_paths = list(/obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor, - /obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 20000 - hidden = TRUE + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) + export_price = 10000 /datum/techweb_node/syndicate_basic id = "syndicate_basic" @@ -1106,4 +1099,4 @@ for(var/i in processing) var/datum/techweb_node/TN = i TW.add_point_list(TN.research_costs) - return TW.printout_points() \ No newline at end of file + return TW.printout_points() diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index b28f1676a1..0099fe143d 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -58,9 +58,7 @@ var/mob/living/carbon/human/H = M if(H.mind && !HAS_TRAIT(H, TRAIT_AGEUSIA)) to_chat(H,"That didn't taste very good...") //No disgust, though. It's just not good tasting. - GET_COMPONENT_FROM(mood, /datum/component/mood, H) - if(mood) - mood.add_event(null,"gross_food", /datum/mood_event/gross_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food) last_check_time = world.time return ..() diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index b9e7122d07..7c812da065 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -64,10 +64,9 @@ var/interrupted = FALSE var/mob/target var/icon/bluespace - var/datum/weakref/redirect_component /datum/status_effect/slimerecall/on_apply() - redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/resistField)))) + RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/resistField) to_chat(owner, "You feel a sudden tug from an unknown force, and feel a pull to bluespace!") to_chat(owner, "Resist if you wish avoid the force!") bluespace = icon('icons/effects/effects.dmi',"chronofield") @@ -77,9 +76,9 @@ /datum/status_effect/slimerecall/proc/resistField() interrupted = TRUE owner.remove_status_effect(src) + /datum/status_effect/slimerecall/on_remove() - qdel(redirect_component.resolve()) - redirect_component = null + UnregisterSignal(owner, COMSIG_LIVING_RESIST) owner.cut_overlay(bluespace) if(interrupted || !ismob(target)) to_chat(owner, "The bluespace tug fades away, and you feel that the force has passed you by.") @@ -98,10 +97,9 @@ duration = -1 //Will remove self when block breaks. alert_type = /obj/screen/alert/status_effect/freon/stasis var/obj/structure/ice_stasis/cube - var/datum/weakref/redirect_component /datum/status_effect/frozenstasis/on_apply() - redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/breakCube)))) + RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/breakCube) cube = new /obj/structure/ice_stasis(get_turf(owner)) owner.forceMove(cube) owner.status_flags |= GODMODE @@ -118,8 +116,7 @@ if(cube) qdel(cube) owner.status_flags &= ~GODMODE - qdel(redirect_component.resolve()) - redirect_component = null + UnregisterSignal(owner, COMSIG_LIVING_RESIST) /datum/status_effect/slime_clone id = "slime_cloned" @@ -375,15 +372,11 @@ datum/status_effect/rebreathing/tick() duration = 30 /datum/status_effect/tarfoot/on_apply() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod += 0.5 + owner.add_movespeed_modifier(MOVESPEED_ID_TARFOOT, update=TRUE, priority=100, multiplicative_slowdown=0.5, blacklisted_movetypes=(FLYING|FLOATING)) return ..() /datum/status_effect/tarfoot/on_remove() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod -= 0.5 + owner.remove_movespeed_modifier(MOVESPEED_ID_TARFOOT) /datum/status_effect/spookcookie id = "spookcookie" @@ -695,20 +688,15 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/sepia/tick() if(prob(50) && mod > -1) mod-- - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod-- + owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) else if(mod < 1) mod++ - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod++ + // yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly + owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=0, blacklisted_movetypes=(FLYING|FLOATING)) return ..() /datum/status_effect/stabilized/sepia/on_remove() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod += -mod //Reset the changes. + owner.remove_movespeed_modifier(MOVESPEED_ID_SEPIA) /datum/status_effect/stabilized/cerulean id = "stabilizedcerulean" @@ -916,7 +904,7 @@ datum/status_effect/stabilized/blue/on_remove() colour = "light pink" /datum/status_effect/stabilized/lightpink/on_apply() - ADD_TRAIT(owner, TRAIT_GOTTAGOFAST,"slimestatus") + owner.add_movespeed_modifier(MOVESPEED_ID_SLIME_STATUS, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) return ..() /datum/status_effect/stabilized/lightpink/tick() @@ -927,7 +915,7 @@ datum/status_effect/stabilized/blue/on_remove() return ..() /datum/status_effect/stabilized/lightpink/on_remove() - REMOVE_TRAIT(owner, TRAIT_GOTTAGOFAST,"slimestatus") + owner.remove_movespeed_modifier(MOVESPEED_ID_SLIME_STATUS) /datum/status_effect/stabilized/adamantine id = "stabilizedadamantine" diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 5aebd1bafa..641b7e7dcb 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -29,12 +29,11 @@ var/datum/action/innate/slime_scan/scan_action var/datum/action/innate/feed_potion/potion_action - var/datum/component/redirect/listener - var/list/stored_slimes var/obj/item/slimepotion/slime/current_potion - var/max_slimes = 5 + var/max_slimes = 1 var/monkeys = 0 + var/upgradetier = 0 icon_screen = "slime_comp" icon_keyboard = "rd_key" @@ -50,7 +49,7 @@ scan_action = new potion_action = new stored_slimes = list() - listener = AddComponent(/datum/component/redirect, list(COMSIG_ATOM_CONTENTS_DEL = CALLBACK(src, .proc/on_contents_del))) + RegisterSignal(src, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) /obj/machinery/computer/camera_advanced/xenobio/Destroy() stored_slimes = null @@ -108,6 +107,22 @@ stored_slimes -= deleted /obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/disk/xenobio_console_upgrade)) + var/obj/item/disk/xenobio_console_upgrade/diskthing = O + var/successfulupgrade = FALSE + for(var/I in diskthing.upgradetypes) + if(upgradetier & I) + continue + else + upgradetier |= I + successfulupgrade = TRUE + if(I == XENOBIO_UPGRADE_SLIMEADV) + max_slimes = 10 + if(successfulupgrade) + to_chat(user, "You have successfully upgraded [src] with [O].") + else + to_chat(user, "[src] already has the contents of [O] installed!") + return if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube) && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS monkeys++ to_chat(user, "You feed [O] to [src]. It now has [monkeys] monkey cubes stored.") @@ -266,3 +281,29 @@ break else to_chat(owner, "Target is not near a camera. Cannot proceed.") + +/obj/item/disk/xenobio_console_upgrade + name = "Xenobiology console upgrade disk" + desc = "Allan please add detail." + icon_state = "datadisk5" + var/list/upgradetypes = list() + +/obj/item/disk/xenobio_console_upgrade/admin + name = "Xenobio all access thing" + desc = "'the consoles are literally useless!!!!!!!!!!!!!!!'" + upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV, XENOBIO_UPGRADE_MONKEYS) + +/obj/item/disk/xenobio_console_upgrade/monkey + name = "Xenobiology console monkey upgrade disk" + desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console." + upgradetypes = list(XENOBIO_UPGRADE_MONKEYS) + +/obj/item/disk/xenobio_console_upgrade/slimebasic + name = "Xenobiology console basic slime upgrade disk" + desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console." + upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC) + +/obj/item/disk/xenobio_console_upgrade/slimeadv + name = "Xenobiology console advanced slime upgrade disk" + desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk." + upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV) diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm new file mode 100644 index 0000000000..0d4d2b6ad6 --- /dev/null +++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm @@ -0,0 +1,529 @@ +GLOBAL_VAR_INIT(hhStorageTurf, null) +GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) + +/obj/item/hilbertshotel + name = "Hilbert's Hotel" + desc = "A sphere of what appears to be an intricate network of bluespace. Observing it in detail seems to give you a headache as you try to comprehend the infinite amount of infinitesimally distinct points on its surface." + icon_state = "hilbertshotel" + w_class = WEIGHT_CLASS_SMALL + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/datum/map_template/hilbertshotel/hotelRoomTemp + var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty + var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore + var/list/activeRooms = list() + var/list/storedRooms = list() + var/storageTurf + //Lore Stuff + var/ruinSpawned = FALSE + var/mysteryRoom + +/obj/item/hilbertshotel/Initialize() + . = ..() + //Load templates + hotelRoomTemp = new() + hotelRoomTempEmpty = new() + hotelRoomTempLore = new() + var/area/currentArea = get_area(src) + if(currentArea.type == /area/ruin/space/has_grav/hilbertresearchfacility) + ruinSpawned = TRUE + +/obj/item/hilbertshotel/Destroy() + ejectRooms() + return ..() + +/obj/item/hilbertshotel/attack(mob/living/M, mob/living/user) + if(M.mind) + to_chat(user, "You invite [M] to the hotel.") + promptAndCheckIn(M) + else + to_chat(user, "[M] is not intelligent enough to understand how to use this device!") + +/obj/item/hilbertshotel/attack_self(mob/user) + . = ..() + promptAndCheckIn(user) + +/obj/item/hilbertshotel/proc/promptAndCheckIn(mob/user) + var/chosenRoomNumber = input(user, "What number room will you be checking into?", "Room Number") as null|num + if(!chosenRoomNumber) + return + if(chosenRoomNumber > SHORT_REAL_LIMIT) + to_chat(user, "You have to check out the first [SHORT_REAL_LIMIT] rooms before you can go to a higher numbered one!") + return + if((chosenRoomNumber < 1) || (chosenRoomNumber != round(chosenRoomNumber))) + to_chat(user, "That is not a valid room number!") + return + if(ismob(loc)) + if(user == loc) //Not always the same as user + forceMove(get_turf(user)) + if(!storageTurf) //Blame subsystems for not allowing this to be in Initialize + if(!GLOB.hhStorageTurf) + var/datum/map_template/hilbertshotelstorage/storageTemp = new() + var/datum/turf_reservation/storageReservation = SSmapping.RequestBlockReservation(3, 3) + storageTemp.load(locate(storageReservation.bottom_left_coords[1], storageReservation.bottom_left_coords[2], storageReservation.bottom_left_coords[3])) + GLOB.hhStorageTurf = locate(storageReservation.bottom_left_coords[1]+1, storageReservation.bottom_left_coords[2]+1, storageReservation.bottom_left_coords[3]) + else + storageTurf = GLOB.hhStorageTurf + if(tryActiveRoom(chosenRoomNumber, user)) + return + if(tryStoredRoom(chosenRoomNumber, user)) + return + sendToNewRoom(chosenRoomNumber, user) + + +/obj/item/hilbertshotel/proc/tryActiveRoom(var/roomNumber, var/mob/user) + if(activeRooms["[roomNumber]"]) + var/datum/turf_reservation/roomReservation = activeRooms["[roomNumber]"] + do_sparks(3, FALSE, get_turf(user)) + user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3])) + return TRUE + else + return FALSE + +/obj/item/hilbertshotel/proc/tryStoredRoom(var/roomNumber, var/mob/user) + if(storedRooms["[roomNumber]"]) + var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height) + hotelRoomTempEmpty.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3])) + var/turfNumber = 1 + for(var/i=0, iAs the sphere breaks apart, you're suddenly ejected into the depths of space!") + var/max = world.maxx-TRANSITIONEDGE + var/min = 1+TRANSITIONEDGE + var/list/possible_transtitons = list() + for(var/AZ in SSmapping.z_list) + var/datum/space_level/D = AZ + if (D.linkage == CROSSLINKED) + possible_transtitons += D.z_value + var/_z = pick(possible_transtitons) + var/_x = rand(min,max) + var/_y = rand(min,max) + var/turf/T = locate(_x, _y, _z) + A.forceMove(T) + qdel(room) + + if(storedRooms.len) + for(var/x in storedRooms) + var/list/atomList = storedRooms[x] + for(var/atom/movable/A in atomList) + var/max = world.maxx-TRANSITIONEDGE + var/min = 1+TRANSITIONEDGE + var/list/possible_transtitons = list() + for(var/AZ in SSmapping.z_list) + var/datum/space_level/D = AZ + if (D.linkage == CROSSLINKED) + possible_transtitons += D.z_value + var/_z = pick(possible_transtitons) + var/_x = rand(min,max) + var/_y = rand(min,max) + var/turf/T = locate(_x, _y, _z) + A.forceMove(T) + +//Template Stuff +/datum/map_template/hilbertshotel + name = "Hilbert's Hotel Room" + mappath = '_maps/templates/hilbertshotel.dmm' + var/landingZoneRelativeX = 2 + var/landingZoneRelativeY = 8 + +/datum/map_template/hilbertshotel/empty + name = "Empty Hilbert's Hotel Room" + mappath = '_maps/templates/hilbertshotelempty.dmm' + +/datum/map_template/hilbertshotel/lore + name = "Doctor Hilbert's Deathbed" + mappath = '_maps/templates/hilbertshotellore.dmm' + +/datum/map_template/hilbertshotelstorage + name = "Hilbert's Hotel Storage" + mappath = '_maps/templates/hilbertshotelstorage.dmm' + + +//Turfs and Areas +/turf/closed/indestructible/hotelwall + name = "hotel wall" + desc = "A wall designed to protect the security of the hotel's guests." + icon_state = "hotelwall" + canSmoothWith = list(/turf/closed/indestructible/hotelwall) + explosion_block = INFINITY + +/turf/open/indestructible/hotelwood + desc = "Stylish dark wood with extra reinforcement. Secured firmly to the floor to prevent tampering." + icon_state = "wood" + footstep = FOOTSTEP_WOOD + tiled_dirt = FALSE + +/turf/open/indestructible/hoteltile + desc = "Smooth tile with extra reinforcement. Secured firmly to the floor to prevent tampering." + icon_state = "showroomfloor" + footstep = FOOTSTEP_FLOOR + tiled_dirt = FALSE + +/turf/open/space/bluespace + name = "\proper bluespace hyperzone" + icon_state = "bluespace" + baseturfs = /turf/open/space/bluespace + flags_1 = NOJAUNT_1 + explosion_block = INFINITY + var/obj/item/hilbertshotel/parentSphere + +/turf/open/space/bluespace/Entered(atom/movable/A) + . = ..() + A.forceMove(get_turf(parentSphere)) + +/turf/closed/indestructible/hoteldoor + name = "Hotel Door" + icon_state = "hoteldoor" + explosion_block = INFINITY + var/obj/item/hilbertshotel/parentSphere + +/turf/closed/indestructible/hoteldoor/proc/promptExit(mob/living/user) + if(!isliving(user)) + return + if(!user.mind) + return + if(!parentSphere) + to_chat(user, "The door seems to be malfunctioning and refuses to operate!") + return + if(alert(user, "Hilbert's Hotel would like to remind you that while we will do everything we can to protect the belongings you leave behind, we make no guarantees of their safety while you're gone, especially that of the health of any living creatures. With that in mind, are you ready to leave?", "Exit", "Leave", "Stay") == "Leave") + if(!user.canmove || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt. + return + user.forceMove(get_turf(parentSphere)) + do_sparks(3, FALSE, get_turf(user)) + +/turf/closed/indestructible/hoteldoor/attack_ghost(mob/dead/observer/user) + if(!isobserver(user) || !parentSphere) + return ..() + user.forceMove(get_turf(parentSphere)) + +//If only this could be simplified... +/turf/closed/indestructible/hoteldoor/attack_tk(mob/user) + return //need to be close. + +/turf/closed/indestructible/hoteldoor/attack_hand(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_animal(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_paw(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_hulk(mob/living/carbon/human/user, does_attack_animation) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_larva(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_slime(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_robot(mob/user) + if(get_dist(get_turf(src), get_turf(user)) <= 1) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/AltClick(mob/user) + . = ..() + if(get_dist(get_turf(src), get_turf(user)) <= 1) + to_chat(user, "You peak through the door's bluespace peephole...") + user.reset_perspective(parentSphere) + user.set_machine(src) + var/datum/action/peepholeCancel/PHC = new + user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) + PHC.Grant(user) + +/turf/closed/indestructible/hoteldoor/check_eye(mob/user) + if(get_dist(get_turf(src), get_turf(user)) >= 2) + user.unset_machine() + for(var/datum/action/peepholeCancel/PHC in user.actions) + PHC.Trigger() + +/datum/action/peepholeCancel + name = "Cancel View" + desc = "Stop looking through the bluespace peephole." + button_icon_state = "cancel_peephole" + +/datum/action/peepholeCancel/Trigger() + . = ..() + to_chat(owner, "You move away from the peephole.") + owner.reset_perspective() + owner.clear_fullscreen("remote_view", 0) + qdel(src) + +/area/hilbertshotel + name = "Hilbert's Hotel Room" + icon_state = "hilbertshotel" + requires_power = FALSE + has_gravity = TRUE + noteleport = TRUE + hidden = TRUE + unique = FALSE + dynamic_lighting = DYNAMIC_LIGHTING_FORCED + ambientsounds = list('sound/ambience/servicebell.ogg') + var/roomnumber = 0 + var/obj/item/hilbertshotel/parentSphere + var/datum/turf_reservation/reservation + var/turf/storageTurf + +/area/hilbertshotel/Entered(atom/movable/AM) + . = ..() + if(istype(AM, /obj/item/hilbertshotel)) + relocate(AM) + var/list/obj/item/hilbertshotel/hotels = AM.GetAllContents(/obj/item/hilbertshotel) + for(var/obj/item/hilbertshotel/H in hotels) + if(parentSphere == H) + relocate(H) + +/area/hilbertshotel/proc/relocate(obj/item/hilbertshotel/H) + if(prob(0.135685)) //Because screw you + qdel(H) + return + var/turf/targetturf = find_safe_turf() + if(!targetturf) + if(GLOB.blobstart.len > 0) + targetturf = get_turf(pick(GLOB.blobstart)) + else + CRASH("Unable to find a blobstart landmark") + var/turf/T = get_turf(H) + var/area/A = T.loc + log_game("[H] entered itself. Moving it to [loc_name(targetturf)].") + message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") + for(var/mob/M in A) + to_chat(M, "[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!") + H.forceMove(targetturf) + +/area/hilbertshotel/Exited(atom/movable/AM) + . = ..() + if(ismob(AM)) + var/mob/M = AM + if(M.mind) + var/stillPopulated = FALSE + var/list/currentLivingMobs = GetAllContents(/mob/living) //Got to catch anyone hiding in anything + for(var/mob/living/L in currentLivingMobs) //Check to see if theres any sentient mobs left. + if(L.mind) + stillPopulated = TRUE + break + if(!stillPopulated) + storeRoom() + +/area/hilbertshotel/proc/storeRoom() + var/roomSize = (reservation.top_right_coords[1]-reservation.bottom_left_coords[1]+1)*(reservation.top_right_coords[2]-reservation.bottom_left_coords[2]+1) + var/storage[roomSize] + var/turfNumber = 1 + var/obj/item/abstracthotelstorage/storageObj = new(storageTurf) + storageObj.roomNumber = roomnumber + storageObj.parentSphere = parentSphere + storageObj.name = "Room [roomnumber] Storage" + for(var/i=0, i
") - o.visible_message("[o]'s chest suddenly bursts forth, ripping their clothes off!'") - else - to_chat(o, "Your bountiful bosom is so rich with mass, you seriously doubt you'll be able to fit any clothes over it.
") - return ..() + var/mob/living/carbon/human/H = owner + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + H.visible_message("[H]'s chest suddenly bursts forth, ripping their clothes off!'", \ + "Your clothes give, ripping into peices under the strain of your swelling breasts! Unless you manage to reduce the size of your breasts, there's no way you're going to be able to put anything on over these melons..!") + else + to_chat(H, "Your bountiful bosom is so rich with mass, you seriously doubt you'll be able to fit any clothes over it.") + return ..() -/datum/status_effect/chem/breast_enlarger/tick(mob/living/carbon/human/H)//If you try to wear clothes, you fail. Slows you down if you're comically huge - var/mob/living/carbon/human/o = owner - var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") - moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click. +/datum/status_effect/chem/breast_enlarger/tick()//If you try to wear clothes, you fail. Slows you down if you're comically huge + var/mob/living/carbon/human/H = owner + var/obj/item/organ/genital/breasts/B = H.getorganslot(ORGAN_SLOT_BREASTS) if(!B) - o.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED) - sizeMoveMod(1) - owner.remove_status_effect(src) - var/items = o.get_contents() - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - to_chat(owner, "Your enormous breasts are way too large to fit anything over them!") + H.remove_status_effect(src) + return + moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click. + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(H, "Your enormous breasts are way too large to fit anything over them!") + + if(last_checked_size != B.cached_size) + H.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) + sizeMoveMod(moveCalc) + if (B.size == "huge") if(prob(1)) to_chat(owner, "Your back is feeling sore.") - var/target = o.get_bodypart(BODY_ZONE_CHEST) - o.apply_damage(0.1, BRUTE, target) - if(!B.cached_size == B.breast_values[B.prev_size]) - o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - sizeMoveMod(moveCalc) - return ..() - else if (B.breast_values[B.size] > B.breast_values[B.prev_size]) - o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - sizeMoveMod(moveCalc) - else if (B.breast_values[B.size] < B.breast_values[B.prev_size]) - o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - sizeMoveMod(moveCalc) - if((B.cached_size) < 16) - switch(round(B.cached_size)) - if(9) - if (B.breast_values[B.prev_size] != B.breast_values[B.size]) - to_chat(o, "Your expansive chest has become a more managable size, liberating your movements.") - if(10 to INFINITY) - if (B.breast_values[B.prev_size] != B.breast_values[B.size]) - to_chat(H, "Your indulgent busom is so substantial, it's affecting your movements!") + var/target = H.get_bodypart(BODY_ZONE_CHEST) + H.apply_damage(0.1, BRUTE, target) + else if(prob(1)) - to_chat(owner, "Your back is feeling a little sore.") - ..() + to_chat(H, "Your back is feeling a little sore.") + last_checked_size = B.cached_size + ..() -/datum/status_effect/chem/breast_enlarger/on_remove(mob/living/carbon/M) +/datum/status_effect/chem/breast_enlarger/on_remove() log_game("FERMICHEM: [owner]'s breasts has reduced to an acceptable size. ID: [owner.key]") + to_chat(owner, "Your expansive chest has become a more managable size, liberating your movements.") owner.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED) sizeMoveMod(1) @@ -112,51 +110,57 @@ alert_type = null var/bloodCalc var/moveCalc + var/last_checked_size //used to prevent potential cpu waste, just like the above. -/datum/status_effect/chem/penis_enlarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now. +/datum/status_effect/chem/penis_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now. log_game("FERMICHEM: [owner]'s dick has reached comical sizes. ID: [owner.key]") - var/mob/living/carbon/human/o = owner - var/items = o.get_contents() - if(o.w_uniform || o.wear_suit) - to_chat(o, "Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!") - owner.visible_message("[o]'s schlong suddenly bursts forth, ripping their clothes off!'") + var/mob/living/carbon/human/H = owner + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + H.visible_message("[H]'s schlong suddenly bursts forth, ripping their clothes off!'", \ + "Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!") else - to_chat(o, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.") - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(H, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.") return ..() -/datum/status_effect/chem/penis_enlarger/tick(mob/living/carbon/M) - var/mob/living/carbon/human/o = owner - var/obj/item/organ/genital/penis/P = o.getorganslot("penis") +/datum/status_effect/chem/penis_enlarger/tick() + var/mob/living/carbon/human/H = owner + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + if(!P) + owner.remove_status_effect(src) + return moveCalc = 1+((round(P.length) - 21)/3) //effects how fast you can move bloodCalc = 1+((round(P.length) - 21)/15) //effects how much blood you need (I didn' bother adding an arousal check because I'm spending too much time on this organ already.) - if(!P) - o.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) - o.ResetBloodVol() - owner.remove_status_effect(src) - var/items = o.get_contents() - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - to_chat(owner, "Your enormous package is way to large to fit anything over!") - switch(round(P.cached_length)) - if(21) - to_chat(o, "Your rascally willy has become a more managable size, liberating your movements.") - o.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) - o.AdjustBloodVol(bloodCalc) - if(22 to INFINITY) - if(prob(2)) - to_chat(o, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!") - o.add_movespeed_modifier(DICK_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - o.AdjustBloodVol(bloodCalc) + + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(H, "Your enormous package is way to large to fit anything over!") + + if(P.length < 22 && H.has_movespeed_modifier(DICK_MOVEMENT_SPEED)) + to_chat(owner, "Your rascally willy has become a more managable size, liberating your movements.") + H.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) + else if(P.length >= 22 && !H.has_movespeed_modifier(DICK_MOVEMENT_SPEED)) + to_chat(H, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!") + H.add_movespeed_modifier(DICK_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) + H.AdjustBloodVol(bloodCalc) ..() -/datum/status_effect/chem/penis_enlarger/on_remove(mob/living/carbon/human/o) +/datum/status_effect/chem/penis_enlarger/on_remove() log_game("FERMICHEM: [owner]'s dick has reduced to an acceptable size. ID: [owner.key]") owner.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) owner.ResetBloodVol() @@ -198,7 +202,6 @@ var/enthrallGender //Use master or mistress var/mental_capacity //Higher it is, lower the cooldown on commands, capacity reduces with resistance. - var/datum/weakref/redirect_component //resistance var/distancelist = list(2,1.5,1,0.8,0.6,0.5,0.4,0.3,0.2) //Distance multipliers @@ -228,7 +231,7 @@ master = get_mob_by_key(enthrallID) //if(M.ckey == enthrallID) // owner.remove_status_effect(src)//At the moment, a user can enthrall themselves, toggle this back in if that should be removed. - redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed# + RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) //Do resistance calc if resist is pressed# RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/owner_hear) mental_capacity = 500 - M.getOrganLoss(ORGAN_SLOT_BRAIN)//It's their brain! var/mob/living/carbon/human/H = owner @@ -500,7 +503,7 @@ cooldown += 1 //Cooldown doesn't process till status is done else if(status == "charge") - ADD_TRAIT(owner, TRAIT_GOTTAGOFAST, "MKUltra") + owner.add_movespeed_modifier(MOVESPEED_ID_MKULTRA, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) status = "charged" if(master.client?.prefs.lewdchem) to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!") @@ -510,7 +513,7 @@ else if (status == "charged") if (statusStrength < 0) status = null - REMOVE_TRAIT(owner, TRAIT_GOTTAGOFAST, "MKUltra") + owner.remove_movespeed_modifier(MOVESPEED_ID_MKULTRA) owner.Knockdown(50) to_chat(owner, "Your body gives out as the adrenaline in your system runs out.") else @@ -566,8 +569,7 @@ SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2") SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3") SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing4") - qdel(redirect_component.resolve()) - redirect_component = null + UnregisterSignal(M, COMSIG_LIVING_RESIST) UnregisterSignal(owner, COMSIG_MOVABLE_HEAR) REMOVE_TRAIT(owner, TRAIT_PACIFISM, "MKUltra") to_chat(owner, "You're now free of [master]'s influence, and fully independent!'") diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm deleted file mode 100644 index 197c9b94e1..0000000000 --- a/modular_citadel/code/datums/traits/neutral.dm +++ /dev/null @@ -1,43 +0,0 @@ -// Citadel-specific Neutral Traits - -/datum/quirk/libido - name = "Nymphomania" - desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." - value = 0 - mob_trait = TRAIT_NYMPHO - gain_text = "You are feeling extra wild." - lose_text = "You don't feel that burning sensation anymore." - -/datum/quirk/libido/add() - var/mob/living/M = quirk_holder - M.min_arousal = 16 - M.arousal_rate = 3 - -/datum/quirk/libido/remove() - var/mob/living/M = quirk_holder - M.min_arousal = initial(M.min_arousal) - M.arousal_rate = initial(M.arousal_rate) - -/datum/quirk/libido/on_process() - var/mob/living/M = quirk_holder - if(M.canbearoused == FALSE) - to_chat(quirk_holder, "Having high libido is useless when you can't feel arousal at all!") - qdel(src) - -/datum/quirk/maso - name = "Masochism" - desc = "You are aroused by pain." - value = 0 - mob_trait = TRAIT_MASO - gain_text = "You desire to be hurt." - lose_text = "Pain has become less exciting for you." - -/datum/quirk/pharmacokinesis //Prevents unwanted organ additions. - name = "Acute hepatic pharmacokinesis" - desc = "You've a rare genetic disorder that causes Incubus draft and Sucubus milk to be absorbed by your liver instead." - value = 0 - mob_trait = TRAIT_PHARMA - lose_text = "Your liver feels different." - var/active = FALSE - var/power = 0 - var/cachedmoveCalc = 1 diff --git a/modular_citadel/code/game/gamemodes/gangs/dominator.dm b/modular_citadel/code/game/gamemodes/gangs/dominator.dm index 4946cad510..c590baf62e 100644 --- a/modular_citadel/code/game/gamemodes/gangs/dominator.dm +++ b/modular_citadel/code/game/gamemodes/gangs/dominator.dm @@ -53,19 +53,17 @@ /obj/machinery/dominator/update_icon() cut_overlays() - if(!(stat & BROKEN)) - icon_state = "dominator-active" - if(operating) - var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") - if(gang) - dominator_overlay.color = gang.color - add_overlay(dominator_overlay) - else - icon_state = "dominator" - if(obj_integrity/max_integrity < 0.66) - add_overlay("damage") - else + if(stat & BROKEN) icon_state = "dominator-broken" + return + icon_state = "dominator" + if(operating) + var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") + if(gang) + dominator_overlay.color = gang.color + add_overlay(dominator_overlay) + if(obj_integrity/max_integrity < 0.66) + add_overlay("damage") /obj/machinery/dominator/examine(mob/user) ..() @@ -168,7 +166,7 @@ examine(user) return - if(tempgang.domination_time != NOT_DOMINATING) + if(tempgang.domination_time != NOT_DOMINATING) to_chat(user, "Error: Hostile Takeover is already in progress.") return diff --git a/modular_citadel/code/game/machinery/toylathe.dm b/modular_citadel/code/game/machinery/toylathe.dm index 78b5fdea88..571cdfc82a 100644 --- a/modular_citadel/code/game/machinery/toylathe.dm +++ b/modular_citadel/code/game/machinery/toylathe.dm @@ -80,7 +80,7 @@ popup.open() /obj/machinery/autoylathe/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() /obj/machinery/autoylathe/attackby(obj/item/O, mob/user, params) @@ -166,7 +166,7 @@ var/plastic_cost = being_built.materials[MAT_PLASTIC] var/power = max(2000, (metal_cost+glass_cost+plastic_cost)*multiplier/5) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff) && (materials.amount(MAT_PLASTIC) >= plastic_cost*multiplier*coeff)) busy = TRUE use_power(power) @@ -190,7 +190,7 @@ return /obj/machinery/autoylathe/proc/make_item(power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/A = drop_location() use_power(power) var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier, MAT_PLASTIC=plastic_cost*coeff*multiplier) @@ -215,7 +215,7 @@ var/T = 0 for(var/obj/item/stock_parts/matter_bin/MB in component_parts) T += MB.rating*75000 - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = T T=1.2 for(var/obj/item/stock_parts/manipulator/M in component_parts) @@ -264,7 +264,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -296,7 +296,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -311,7 +311,7 @@ return dat /obj/machinery/autoylathe/proc/materials_printout() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] @@ -324,7 +324,7 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) return FALSE if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) diff --git a/modular_citadel/code/game/objects/ids.dm b/modular_citadel/code/game/objects/ids.dm deleted file mode 100644 index 8ef724581e..0000000000 --- a/modular_citadel/code/game/objects/ids.dm +++ /dev/null @@ -1,83 +0,0 @@ - -//Polychromatic Knight Badge - -/obj/item/card/id/knight - var/id_color = "#00FF00" //defaults to green - name = "knight badge" - icon = 'modular_citadel/icons/obj/id.dmi' - icon_state = "knight" - desc = "A badge denoting the owner as a knight! It has a strip for swiping like an ID" - -/obj/item/card/id/knight/update_label(newname, newjob) - . = ..() - if(newname || newjob) - name = "[(!newname) ? "identification card" : "[newname]'s Knight Badge"][(!newjob) ? "" : " ([newjob])"]" - return - - name = "[(!registered_name) ? "identification card" : "[registered_name]'s Knight Badge"][(!assignment) ? "" : " ([assignment])"]" - -/obj/item/card/id/knight/update_icon() - var/mutable_appearance/id_overlay = mutable_appearance('modular_citadel/icons/obj/id.dmi', "knight_overlay") - - if(id_color) - id_overlay.color = id_color - cut_overlays() - - add_overlay(id_overlay) - -/obj/item/card/id/knight/AltClick(mob/living/user) - if(!in_range(src, user)) //Basic checks to prevent abuse - return - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - if(alert("Are you sure you want to recolor your id?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"","Choose Energy Color",id_color) as color|null - if(energy_color_input) - id_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - -/obj/item/card/id/knight/Initialize() - . = ..() - update_icon() - -/obj/item/card/id/knight/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") - -//================================================= - -/obj/item/emagrecharge - name = "electromagnet charging device" - desc = "A small cell with two prongs lazily jabbed into it. It looks like it's made for charging the small batteries found in electromagnetic devices, sadly this can't be recharged like a normal cell." - icon = 'icons/obj/module.dmi' - icon_state = "cell_mini" - item_flags = NOBLUDGEON - var/uses = 5 //Dictates how many charges the device adds to compatible items - -/obj/item/emagrecharge/examine(mob/user) - . = ..() - if(uses) - to_chat(user, "It can add up to [uses] charges to compatible devices") - else - to_chat(user, "It has a small, red, blinking light coming from inside of it. It's spent.") - -/obj/item/card/emag - var/uses = 15 - -/obj/item/card/emag/examine(mob/user) - . = ..() - to_chat(user, "It has [uses ? uses : "no"] charges left.") - -/obj/item/card/emag/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/emagrecharge)) - var/obj/item/emagrecharge/ER = W - if(ER.uses) - uses += ER.uses - to_chat(user, "You have added [ER.uses] charges to [src]. It now has [uses] charges.") - playsound(src, "sparks", 100, 1) - ER.uses = 0 - else - to_chat(user, "[ER] has no charges left.") - return - . = ..() diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm deleted file mode 100644 index e677c1f3ab..0000000000 --- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm +++ /dev/null @@ -1,392 +0,0 @@ -/*///////////////////////////////////////////////////////////////////////// -///////////// The TRUE Energy Sword /////////////////////////// -*////////////////////////////////////////////////////////////////////////// - -/obj/item/melee/transforming/energy/sword/cx - name = "non-eutactic blade" - desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable." - icon_state = "cxsword_hilt" - icon = 'modular_citadel/icons/eutactic/item/noneutactic.dmi' - item_state = "cxsword" - lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi' - righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi' - force = 3 - force_on = 21 - throwforce = 5 - throwforce_on = 20 - hitsound = "swing_hit" //it starts deactivated - hitsound_on = 'sound/weapons/nebhit.ogg' - attack_verb_off = list("tapped", "poked") - throw_speed = 3 - throw_range = 5 - sharpness = IS_SHARP - embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 20, "embedded_fall_chance" = 60) - armour_penetration = 10 - block_chance = 35 - light_color = "#37FFF7" - actions_types = list() - -/obj/item/melee/transforming/energy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes - altafterattack(A, user, TRUE, params) - return TRUE - -/obj/item/melee/transforming/energy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes - if(istype(user)) - user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") - return TRUE - -/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text) - active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE - if(active) //also I'd need to rip out the iconstate changing bits - force = force_on - throwforce = throwforce_on - hitsound = hitsound_on - throw_speed = 4 - if(attack_verb_on.len) - attack_verb = attack_verb_on - w_class = w_class_on - START_PROCESSING(SSobj, src) - set_light(brightness_on) - update_icon() - else - force = initial(force) - throwforce = initial(throwforce) - hitsound = initial(hitsound) - throw_speed = initial(throw_speed) - if(attack_verb_off.len) - attack_verb = attack_verb_off - w_class = initial(w_class) - STOP_PROCESSING(SSobj, src) - set_light(0) - update_icon() - transform_messages(user, supress_message_text) - add_fingerprint(user) - return TRUE - -/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text) - playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1) - if(!supress_message_text) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") - -/obj/item/melee/transforming/energy/sword/cx/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_gem") - - if(light_color) - blade_overlay.color = light_color - gem_overlay.color = light_color - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(gem_overlay) - - if(active) - add_overlay(blade_overlay) - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - -/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user) - if(!in_range(src, user)) //Basic checks to prevent abuse - return - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - - if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null - if(energy_color_input) - light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - update_light() - -/obj/item/melee/transforming/energy/sword/cx/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") - -/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) - . = ..() - if(active) - if(isinhands) - var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") - blade_inhand.color = light_color - . += blade_inhand -//Broken version. Not a toy, but not as strong. -/obj/item/melee/transforming/energy/sword/cx/broken - name = "misaligned non-eutactic blade" - desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. This one seems to have a damaged handle and misaligned components, causing the blade to be unstable at best" - force_on = 15 //As strong a survival knife/bone dagger - -/obj/item/melee/transforming/energy/sword/cx/attackby(obj/item/W, mob/living/user, params) - if(istype(W, /obj/item/melee/transforming/energy/sword/cx)) - if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP)) - to_chat(user, "\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!") - return - else - to_chat(user, "You combine the two light swords, making a single supermassive blade! You're cool.") - new /obj/item/twohanded/dualsaber/hypereutactic(user.drop_location()) - qdel(W) - qdel(src) - else - return ..() - -//OBLIGATORY TOY MEMES ///////////////////////////////////// - -/obj/item/toy/sword/cx - name = "\improper DX Non-Euplastic LightSword" - desc = "A deluxe toy replica of an energy sword. Realistic visuals and sounds! Ages 8 and up." - icon = 'modular_citadel/icons/eutactic/item/noneutactic.dmi' - icon_state = "cxsword_hilt" - item_state = "cxsword" - lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi' - righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi' - active = FALSE - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("poked", "jabbed", "hit") - light_color = "#37FFF7" - var/light_brightness = 3 - actions_types = list() - -/obj/item/toy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes - altafterattack(A, user, TRUE, params) - return TRUE - -/obj/item/toy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes - if(istype(user)) - user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") - return TRUE - -/obj/item/toy/sword/cx/attack_self(mob/user) - active = !( active ) - - if (active) - to_chat(user, "You activate the holographic blade with a press of a button.") - playsound(user, 'sound/weapons/nebon.ogg', 50, 1) - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("slashed", "stabbed", "ravaged") - set_light(light_brightness) - update_icon() - - else - to_chat(user, "You deactivate the holographic blade with a press of a button.") - playsound(user, 'sound/weapons/neboff.ogg', 50, 1) - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("poked", "jabbed", "hit") - set_light(0) - update_icon() - - add_fingerprint(user) - -/obj/item/toy/sword/cx/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_gem") - - if(light_color) - blade_overlay.color = light_color - gem_overlay.color = light_color - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(gem_overlay) - - if(active) - add_overlay(blade_overlay) - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - -/obj/item/toy/sword/cx/AltClick(mob/living/user) - if(!in_range(src, user)) //Basic checks to prevent abuse - return - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - - if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null - if(energy_color_input) - light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - update_light() - -/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) - . = ..() - if(active) - if(isinhands) - var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") - blade_inhand.color = light_color - . += blade_inhand - -/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params) - if(istype(W, /obj/item/toy/sword/cx)) - if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP)) - to_chat(user, "\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!") - return - else - to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.") - new /obj/item/twohanded/dualsaber/hypereutactic/toy(user.loc) - qdel(W) - qdel(src) - else - return ..() - -/obj/item/toy/sword/cx/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") - -///////////////////////////////////////////////////// -// HYPEREUTACTIC Blades ///////////////////////// -///////////////////////////////////////////////////// - -/obj/item/twohanded/dualsaber/hypereutactic - icon = 'modular_citadel/icons/eutactic/item/hypereutactic.dmi' - icon_state = "hypereutactic" - lefthand_file = 'modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi' - righthand_file = 'modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi' - item_state = "hypereutactic" - inhand_x_dimension = 64 - inhand_y_dimension = 64 - name = "hypereutactic blade" - desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter." - force = 7 - force_unwielded = 7 - force_wielded = 40 - wieldsound = 'sound/weapons/nebon.ogg' - unwieldsound = 'sound/weapons/neboff.ogg' - hitsound_on = 'sound/weapons/nebhit.ogg' - slowdown_wielded = 1 - armour_penetration = 60 - light_color = "#37FFF7" - rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00") - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded") - spinnable = FALSE - total_mass_on = 4 - -/obj/item/twohanded/dualsaber/hypereutactic/chaplain - name = "\improper divine lightblade" - desc = "A giant blade of bright and holy light, said to cut down the wicked with ease." - force = 5 - force_unwielded = 5 - force_wielded = 20 - block_chance = 50 - armour_penetration = 0 - var/chaplain_spawnable = TRUE - obj_flags = UNIQUE_RENAME - -/obj/item/twohanded/dualsaber/hypereutactic/chaplain/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) - -/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect() - return FALSE - -/obj/item/twohanded/dualsaber/hypereutactic/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes - altafterattack(A, user, TRUE, params) - return TRUE - -/obj/item/twohanded/dualsaber/hypereutactic/altafterattack(atom/target, mob/living/user, proximity_flag, click_parameters) //does right click memes - if(istype(user)) - user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") - return TRUE - -/obj/item/twohanded/dualsaber/hypereutactic/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/hypereutactic.dmi', "hypereutactic_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/hypereutactic.dmi', "hypereutactic_gem") - - if(light_color) - blade_overlay.color = light_color - gem_overlay.color = light_color - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(gem_overlay) - - if(wielded) - add_overlay(blade_overlay) - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - - SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)//blood overlays get weird otherwise, because the sprite changes. (retained from original desword because I have no idea what this is) - -/obj/item/twohanded/dualsaber/hypereutactic/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked) - return - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null - if(!energy_color_input || !user.canUseTopic(src, BE_CLOSE, FALSE) || hacked) - return - light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - update_light() - -/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file) - . = ..() - if(isinhands) - var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem") - gem_inhand.color = light_color - . += gem_inhand - if(wielded) - var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade") - blade_inhand.color = light_color - . += blade_inhand - -/obj/item/twohanded/dualsaber/hypereutactic/examine(mob/user) - ..() - if(!hacked) - to_chat(user, "Alt-click to recolor it.") - -/obj/item/twohanded/dualsaber/hypereutactic/rainbow_process() - . = ..() - update_icon() - update_light() - -////////////////// TOY VERSION ///////////////////////////// - -/obj/item/twohanded/dualsaber/hypereutactic/toy - name = "\improper DX Hyper-Euplastic LightSword" - desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up." - force = 0 - throwforce = 0 - throw_speed = 3 - throw_range = 5 - force_unwielded = 0 - force_wielded = 0 - attack_verb = list("attacked", "struck", "hit") - total_mass_on = TOTAL_MASS_TOY_SWORD - slowdown_wielded = 0 - -/obj/item/twohanded/dualsaber/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - return FALSE - -/obj/item/twohanded/dualsaber/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles - return FALSE - -//////// Tatortot NEB /////////////// (same stats as regular esword) -/obj/item/melee/transforming/energy/sword/cx/traitor - name = "\improper Dragon's Tooth Sword" - desc = "The Dragon's Tooth sword is a blackmarket modification of a Non-Eutactic Blade, \ - which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \ - It appears to have a wooden grip and a shaved down guard." - icon_state = "cxsword_hilt_traitor" - force_on = 30 - armour_penetration = 50 - embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10) - block_chance = 50 - hitsound_on = 'sound/weapons/blade1.ogg' - light_color = "#37F0FF" - -/obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text) - playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1) - if(!supress_message_text) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") - -//RAINBOW MEMES - -/obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow - name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander" - desc = "A custom-built toy with fancy rainbow lights built-in." - hacked = TRUE diff --git a/modular_citadel/code/game/objects/items/storage/firstaid.dm b/modular_citadel/code/game/objects/items/storage/firstaid.dm index 125330a9b9..95c88ecc86 100755 --- a/modular_citadel/code/game/objects/items/storage/firstaid.dm +++ b/modular_citadel/code/game/objects/items/storage/firstaid.dm @@ -49,7 +49,7 @@ /obj/item/storage/hypospraykit/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 12 STR.can_hold = typecacheof(list( /obj/item/hypospray/mkii, @@ -151,7 +151,7 @@ /obj/item/storage/hypospraykit/cmo/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( /obj/item/hypospray/mkii, diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 27f7576e7f..6c9da17289 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -19,11 +19,6 @@ var/hidden_undershirt = FALSE var/hidden_socks = FALSE -/mob/living/carbon/human/New() - ..() - saved_underwear = underwear - saved_undershirt = undershirt - //Species vars /datum/species var/arousal_gain_rate = AROUSAL_START_VALUE //Rate at which this species becomes aroused @@ -35,60 +30,51 @@ //Mob procs /mob/living/carbon/human/proc/underwear_toggle() set name = "Toggle undergarments" - set category = "Object" - if(ishuman(src)) - var/mob/living/carbon/human/humz = src - var/confirm = input(src, "Select what part of your form to alter", "Undergarment Toggling", "Cancel") in list("Top", "Bottom", "Socks", "All", "Cancel") - if(confirm == "Top") - humz.hidden_undershirt = !humz.hidden_undershirt + set category = "IC" - if(confirm == "Bottom") - humz.hidden_underwear = !humz.hidden_underwear + var/confirm = input(src, "Select what part of your form to alter", "Undergarment Toggling") as null|anything in list("Top", "Bottom", "Socks", "All") + if(!confirm) + return + if(confirm == "Top") + hidden_undershirt = !hidden_undershirt - if(confirm == "Socks") - humz.hidden_socks = !humz.hidden_socks + if(confirm == "Bottom") + hidden_underwear = !hidden_underwear - if(confirm == "All") - humz.hidden_undershirt = !humz.hidden_undershirt - humz.hidden_underwear = !humz.hidden_underwear - humz.hidden_socks = !humz.hidden_socks + if(confirm == "Socks") + hidden_socks = !hidden_socks - if(confirm == "Cancel") - return - src.update_body() + if(confirm == "All") + var/on_off = (hidden_undershirt || hidden_underwear || hidden_socks) ? FALSE : TRUE + hidden_undershirt = on_off + hidden_underwear = on_off + hidden_socks = on_off - else - to_chat(src, "Humans only. How the fuck did you get this verb anyway.") + update_body() -/mob/living/proc/handle_arousal() - - -/mob/living/carbon/handle_arousal() - if(canbearoused && dna) - var/datum/species/S - S = dna.species - if(S && !(SSmobs.times_fired % 36) && getArousalLoss() < max_arousal)//Totally stolen from breathing code. Do this every 36 ticks. - adjustArousalLoss(arousal_rate * S.arousal_gain_rate) - if(dna.features["exhibitionist"] && client) - var/amt_nude = 0 - if(is_chest_exposed() && (getorganslot("breasts"))) - amt_nude++ - if(is_groin_exposed()) - if(getorganslot("penis")) - amt_nude++ - if(getorganslot("vagina")) - amt_nude++ - if(amt_nude) - var/watchers = 0 - for(var/mob/_M in view(world.view, src)) - var/mob/living/M = _M - if(!istype(M)) - continue - if(M.client && !M.stat && !M.eye_blind && (locate(src) in viewers(world.view,M))) - watchers++ - if(watchers) - adjustArousalLoss((amt_nude * watchers) + S.arousal_gain_rate) +/mob/living/proc/handle_arousal(times_fired) + return +/mob/living/carbon/handle_arousal(times_fired) + if(!canbearoused || !dna) + return + var/datum/species/S = dna.species + if(!S || (times_fired % 36) || !getArousalLoss() >= max_arousal)//Totally stolen from breathing code. Do this every 36 ticks. + return + var/our_loss = arousal_rate * S.arousal_gain_rate + if(HAS_TRAIT(src, TRAIT_EXHIBITIONIST) && client) + var/amt_nude = 0 + for(var/obj/item/organ/genital/G in internal_organs) + if(G.is_exposed()) + amt_nude++ + if(amt_nude) + var/watchers = 0 + for(var/mob/living/L in view(src)) + if(L.client && !L.stat && !L.eye_blind && (src in view(L))) + watchers++ + if(watchers) + our_loss += (amt_nude * watchers) + S.arousal_gain_rate + adjustArousalLoss(our_loss) /mob/living/proc/getArousalLoss() return arousalloss @@ -138,8 +124,6 @@ S = GLOB.breasts_shapes_list[G.shape] if(S?.alt_aroused) G.aroused_state = isPercentAroused(G.aroused_amount) - if(getArousalLoss() >= ((max_arousal / 100) * 33)) - G.aroused_state = TRUE else G.aroused_state = FALSE G.update_appearance() @@ -147,54 +131,16 @@ /mob/living/proc/update_arousal_hud() return FALSE -/datum/species/proc/update_arousal_hud(mob/living/carbon/human/H) - return FALSE - /mob/living/carbon/human/update_arousal_hud() - if(!client || !hud_used) - return FALSE - if(dna.species.update_arousal_hud()) + if(!client || !(hud_used?.arousal)) return FALSE if(!canbearoused) hud_used.arousal.icon_state = "" return FALSE else - if(hud_used.arousal) - if(stat == DEAD) - hud_used.arousal.icon_state = "arousal0" - return TRUE - if(getArousalLoss() == max_arousal) - hud_used.arousal.icon_state = "arousal100" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 90)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal90" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 80)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal80" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 70)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal70" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 60)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal60" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 50)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal50" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 40)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal40" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 30)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal30" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 20)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal10" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 10)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal10" - return TRUE - else - hud_used.arousal.icon_state = "arousal0" + var/value = FLOOR(getPercentAroused(), 10) + hud_used.arousal.icon_state = "arousal[value]" + return TRUE /obj/screen/arousal name = "arousal" @@ -213,7 +159,6 @@ to_chat(M, "Arousal is disabled. Feature is unavailable.") - /mob/living/proc/mob_climax()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while. set name = "Masturbate" set category = "IC" @@ -221,225 +166,187 @@ if(mb_cd_timer <= world.time) //start the cooldown even if it fails mb_cd_timer = world.time + mb_cd_length - if(getArousalLoss() >= ((max_arousal / 100) * 33))//33% arousal or greater required - src.visible_message("[src] starts masturbating!", \ + if(getArousalLoss() >= 33)//one third of average max_arousal or greater required + visible_message("[src] starts masturbating!", \ "You start masturbating.") if(do_after(src, 30, target = src)) - src.visible_message("[src] relieves [p_them()]self!", \ + visible_message("[src] relieves [p_them()]self!", \ "You have relieved yourself.") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) setArousalLoss(min_arousal) else to_chat(src, "You aren't aroused enough for that.") +/obj/item/organ/genital/proc/climaxable(mob/living/carbon/human/H, silent = FALSE) //returns the fluid source (ergo reagents holder) if found. + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + . = reagents + else + if(linked_organ) + . = linked_organ.reagents + if(!. && !silent) + to_chat(H, "Your [name] is unable to produce it's own fluids, it's missing the organs for it.") + +/mob/living/carbon/human/proc/do_climax(datum/reagents/R, atom/target, obj/item/organ/genital/G, spill = TRUE) + if(!G) + return + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + setArousalLoss(min_arousal) + if(!target || !R) + return + var/turfing = isturf(target) + if(spill & R.total_volume >= 5) + R.reaction(turfing ? target : target.loc, TOUCH, 1, 0) + if(!turfing) + R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1)) + R.clear_reagents() //These are various procs that we'll use later, split up for readability instead of having one, huge proc. //For all of these, we assume the arguments given are proper and have been checked beforehand. /mob/living/carbon/human/proc/mob_masturbate(obj/item/organ/genital/G, mb_time = 30) //Masturbation, keep it gender-neutral - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") - return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return + var/obj/item/organ/genital/PP = CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) ? G.linked_organ : G + if(!PP) + to_chat(src, "You shudder, unable to cum with your [name].") if(mb_time) - src.visible_message("[src] starts to [G.masturbation_verb] [p_their()] [G.name].", \ - "You start to [G.masturbation_verb] your [G.name].", \ + visible_message("[src] starts to [G.masturbation_verb] [p_their()] [G.name].", \ "You start to [G.masturbation_verb] your [G.name].") - - if(do_after(src, mb_time, target = src)) - if(total_fluids > 5) - fluid_source.reaction(src.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] orgasms, cumming[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!", \ - "You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].", \ - "You have relieved yourself.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - + if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) + return + visible_message("[src] orgasms, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""] with [p_their()] [PP.name]!", \ + "You orgasm, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""] with your [PP.name].") + do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_outside(obj/item/organ/genital/G, mb_time = 30) //This is used for forced orgasms and other hands-free climaxes - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - var/unable_to_come = FALSE - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - total_fluids = fluid_source.total_volume - else - if(!G.linked_organ) - unable_to_come = TRUE - else - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume - - if(unable_to_come) - src.visible_message("[src] shudders, their [G.name] unable to cum.", \ - "Your [G.name] cannot cum, giving no relief.", \ + var/datum/reagents/fluid_source = G.climaxable(src, TRUE) + if(!fluid_source) + visible_message("[src] shudders, their [G.name] unable to cum.", \ "Your [G.name] cannot cum, giving no relief.") - else - total_fluids = fluid_source.total_volume - if(mb_time) //as long as it's not instant, give a warning - src.visible_message("[src] looks like they're about to cum.", \ - "You feel yourself about to orgasm.", \ - "You feel yourself about to orgasm.") - if(do_after(src, mb_time, target = src)) - if(total_fluids > 5) - fluid_source.reaction(src.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] orgasms[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""], using [p_their()] [G.name]!", \ - "You climax[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""] with your [G.name].", \ - "You climax using your [G.name].") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - + return + if(mb_time) //as long as it's not instant, give a warning + visible_message("[src] looks like they're about to cum.", \ + "You feel yourself about to orgasm.") + if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) + return + visible_message("[src] orgasms[isturf(loc) ? " onto [loc]" : ""], using [p_their()] [G.name]!", \ + "You climax[isturf(loc) ? " onto [loc]" : ""] with your [G.name].") + do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, mb_time = 30) //Used for climaxing with any living thing - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") - return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return if(mb_time) //Skip warning if this is an instant climax. - src.visible_message("[src] is about to climax with [L]!", \ - "You're about to climax with [L]!", \ - "You're preparing to climax with someone!") + visible_message("[src] is about to climax with [L]!", \ + "You're about to climax with [L]!") + if(!do_after(src, mb_time, target = src) || !in_range(src, L) || !G.climaxable(src, TRUE)) + return if(spillage) - if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor) - total_fluids -= total_fluids*G.fluid_transfer_factor - if(total_fluids > 5) - fluid_source.reaction(L.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] climaxes with [L][spillage ? ", overflowing and spilling":""], using [p_their()] [G.name]!", \ - "You orgasm with [L][spillage ? ", spilling out of them":""], using your [G.name].", \ - "You have climaxed with someone[spillage ? ", spilling out of them":""], using your [G.name].") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] climaxes with [L], overflowing and spilling, using [p_their()] [G.name]!", \ + "You orgasm with [L], spilling out of them, using your [G.name].") else //knots and other non-spilling orgasms - if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids) - total_fluids = 0 - src.visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ - "You ejaculate with [L], your [G.name] spilling nothing.", \ - "You have climaxed inside someone, your [G.name] spilling nothing.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ + "You ejaculate with [L], your [G.name] spilling nothing.") + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + do_climax(fluid_source, spillage ? loc : L, G, spillage) /mob/living/carbon/human/proc/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time = 30) //For beaker-filling, beware the bartender - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return + if(mb_time) + visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ + "You start to [G.masturbation_verb] your [G.name] over [container].") + if(!do_after(src, mb_time, target = src) || !in_range(src, container) || !G.climaxable(src, TRUE)) return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + visible_message("[src] uses [p_their()] [G.name] to fill [container]!", \ + "You used your [G.name] to fill [container].") + do_climax(fluid_source, container, G, FALSE) - //if(!container) //Something weird happened - // to_chat(src, "You need a container to do this!") - // return - - src.visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ - "You start to [G.masturbation_verb] your [G.name] over [container].", \ - "You start to [G.masturbation_verb] your [G.name] over something.") - if(do_after(src, mb_time, target = src) && in_range(src, container)) - fluid_source.trans_to(container, total_fluids) - src.visible_message("[src] uses [p_their()] [G.name] to fill [container]!", \ - "You used your [G.name] to fill [container].", \ - "You have relieved some pressure.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - -/mob/living/carbon/human/proc/pick_masturbate_genitals() - var/obj/item/organ/genital/ret_organ - var/list/genitals_list = list() +/mob/living/carbon/human/proc/pick_masturbate_genitals(silent = FALSE) + var/list/genitals_list var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_masturbate_with) //filter out what you can't masturbate with - if(G.is_exposed(worn_stuff)) //Nude or through_clothing - genitals_list += G - if(genitals_list.len) - ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list + if(CHECK_BITFIELD(G.genital_flags, CAN_MASTURBATE_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + if(CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) && !G.linked_organ) + continue + LAZYADD(genitals_list, G) + if(LAZYLEN(genitals_list)) + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list return ret_organ - return null //error stuff + else if(!silent) + to_chat(src, "You cannot masturbate without available genitals.") - -/mob/living/carbon/human/proc/pick_climax_genitals() - var/obj/item/organ/genital/ret_organ - var/list/genitals_list = list() +/mob/living/carbon/human/proc/pick_climax_genitals(silent = FALSE) + var/list/genitals_list var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_climax) //filter out what you can't masturbate with - if(G.is_exposed(worn_stuff)) //Nude or through_clothing - genitals_list += G - if(genitals_list.len) - ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list + if(CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + LAZYADD(genitals_list, G) + if(LAZYLEN(genitals_list)) + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list return ret_organ - return null //error stuff + else if(!silent) + to_chat(src, "You cannot climax without available genitals.") - -/mob/living/carbon/human/proc/pick_partner() +/mob/living/carbon/human/proc/pick_partner(silent = FALSE) var/list/partners = list() - if(src.pulling) - partners += src.pulling //Yes, even objects for now - if(src.pulledby) - partners += src.pulledby + if(pulling) + partners += pulling + if(pulledby) + partners += pulledby //Now we got both of them, let's check if they're proper - for(var/I in partners) - if(isliving(I)) - if(iscarbon(I)) - var/mob/living/carbon/C = I - if(!C.exposed_genitals.len) //Nothing through_clothing - if(!C.is_groin_exposed()) //No pants undone - if(!C.is_chest_exposed()) //No chest exposed - partners -= I //Then not proper, remove them - else - partners -= I //No fucking objects + for(var/mob/living/L in partners) + if(iscarbon(L)) + var/mob/living/carbon/C = L + if(!C.exposed_genitals.len && !C.is_groin_exposed() && !C.is_chest_exposed()) //Nothing through_clothing, no proper partner. + partners -= C //NOW the list should only contain correct partners if(!partners.len) - return null //No one left. - return input(src, "With whom?", "Sexual partner", null) in partners //pick one, default to null + if(!silent) + to_chat(src, "You cannot do this alone.") + return //No one left. + var/mob/living/target = input(src, "With whom?", "Sexual partner", null) as null|anything in partners //pick one, default to null + if(target && in_range(src, target)) + return target -/mob/living/carbon/human/proc/pick_climax_container() - var/obj/item/reagent_containers/SC = null +/mob/living/carbon/human/proc/pick_climax_container(silent = FALSE) var/list/containers_list = list() - for(var/obj/item/reagent_containers/container in held_items) - if(container.is_open_container() || istype(container, /obj/item/reagent_containers/food/snacks)) - containers_list += container + for(var/obj/item/reagent_containers/C in held_items) + if(C.is_open_container() || istype(C, /obj/item/reagent_containers/food/snacks)) + containers_list += C + for(var/obj/item/reagent_containers/C in range(1, src)) + if((C.is_open_container() || istype(C, /obj/item/reagent_containers/food/snacks)) && CanReach(C)) + containers_list += C if(containers_list.len) - SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list - if(SC) - if(in_range(src, SC)) - return SC - return null //If nothing correct, give null. + var/obj/item/reagent_containers/SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list + if(SC && CanReach(SC)) + return SC + else if(!silent) + to_chat(src, "You cannot do this without an appropriate container.") +/mob/living/carbon/human/proc/available_rosie_palms(silent = FALSE, list/whitelist_typepaths = list(/obj/item/dildo)) + if(restrained(TRUE)) //TRUE ignores grabs + if(!silent) + to_chat(src, "You can't do that while restrained!") + return FALSE + if(!get_num_arms() || !get_empty_held_indexes()) + if(whitelist_typepaths) + if(!islist(whitelist_typepaths)) + whitelist_typepaths = list(whitelist_typepaths) + for(var/path in whitelist_typepaths) + if(is_holding_item_of_type(path)) + return TRUE + if(!silent) + to_chat(src, "You need at least one free arm.") + return FALSE + return TRUE //Here's the main proc itself /mob/living/carbon/human/mob_climax(forced_climax=FALSE) //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints @@ -447,156 +354,97 @@ if(!forced_climax) //Don't spam the message to the victim if forced to come too fast to_chat(src, "You need to wait [DisplayTimeText((mb_cd_timer - world.time), TRUE)] before you can do that again!") return - mb_cd_timer = (world.time + mb_cd_length) - - if(canbearoused && has_dna()) - if(stat==2) + if(!canbearoused || !has_dna()) + return + if(stat == DEAD) + if(!forced_climax) to_chat(src, "You can't do that while dead!") - return - if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks - for(var/obj/item/organ/O in internal_organs) - if(istype(O, /obj/item/organ/genital)) - var/obj/item/organ/genital/G = O - if(!G.can_climax) //Skip things like wombs and testicles - continue - var/mob/living/partner - var/check_target - var/list/worn_stuff = get_equipped_items() + return + if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks + for(var/obj/item/organ/genital/G in internal_organs) + if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles + continue + var/mob/living/partner + var/check_target + var/list/worn_stuff = get_equipped_items() - if(G.is_exposed(worn_stuff)) - if(src.pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick - if(isliving(src.pulling)) //Don't fuck objects - check_target = src.pulling - if(src.pulledby && !check_target) //prioritise pulled over pulledby - if(isliving(src.pulledby)) - check_target = src.pulledby - //Now we should have a partner, or else we have to come alone - if(check_target) - if(iscarbon(check_target)) //carbons can have clothes - var/mob/living/carbon/C = check_target - if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? - partner = C - else //A cat is fine too - partner = check_target - if(partner) //Did they pass the clothing checks? - mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced - continue //You've climaxed once with this organ, continue on - //not exposed OR if no partner was found while exposed, climax alone - mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms - //Now all genitals that could climax, have. - //Since this was a forced climax, we do not need to continue with the other stuff - return - //If we get here, then this is not a forced climax and we gotta check a few things. + if(G.is_exposed(worn_stuff)) + if(pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick + if(isliving(pulling)) //Don't fuck objects + check_target = pulling + if(pulledby && !check_target) //prioritise pulled over pulledby + if(isliving(pulledby)) + check_target = pulledby + //Now we should have a partner, or else we have to come alone + if(check_target) + if(iscarbon(check_target)) //carbons can have clothes + var/mob/living/carbon/C = check_target + if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? + partner = C + else //A cat is fine too + partner = check_target + if(partner) //Did they pass the clothing checks? + mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced + continue //You've climaxed once with this organ, continue on + //not exposed OR if no partner was found while exposed, climax alone + mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms + //Now all genitals that could climax, have. + //Since this was a forced climax, we do not need to continue with the other stuff + mb_cd_timer = world.time + mb_cd_length + return + //If we get here, then this is not a forced climax and we gotta check a few things. - if(stat==1) //No sleep-masturbation, you're unconscious. - to_chat(src, "You must be conscious to do that!") - return - if(getArousalLoss() < 33) //flat number instead of percentage - to_chat(src, "You aren't aroused enough for that!") - return + if(stat == UNCONSCIOUS) //No sleep-masturbation, you're unconscious. + to_chat(src, "You must be conscious to do that!") + return + if(getArousalLoss() < 33) //flat number instead of percentage + to_chat(src, "You aren't aroused enough for that!") + return - //Ok, now we check what they want to do. - var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + //Ok, now we check what they want to do. + var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + if(!choice) + return - switch(choice) - if("Masturbate") - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_masturbate_genitals() - if(picked_organ) - mob_masturbate(picked_organ) - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot masturbate without choosing genitals.") - return + switch(choice) + if("Masturbate") + if(!available_rosie_palms()) + return + //We got hands, let's pick an organ + var/obj/item/organ/genital/picked_organ = pick_masturbate_genitals() + if(picked_organ && available_rosie_palms(TRUE)) + mob_masturbate(picked_organ) + return - if("Climax alone") - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() - if(picked_organ) - mob_climax_outside(picked_organ) - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot climax without choosing genitals.") - return + if("Climax alone") + if(!available_rosie_palms()) + return + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ && available_rosie_palms(TRUE)) + mob_climax_outside(picked_organ) - if("Climax with partner") - //We need no hands, we can be restrained and so on, so let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() - if(picked_organ) - var/mob/living/partner = pick_partner() //Get someone - if(partner) - var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No") - if(spillage == "Yes") - mob_climax_partner(picked_organ, partner, TRUE) - else - mob_climax_partner(picked_organ, partner, FALSE) - return - else - to_chat(src, "You cannot do this alone.") - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot climax without choosing genitals.") - return + if("Climax with partner") + //We need no hands, we can be restrained and so on, so let's pick an organ + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ) + var/mob/living/partner = pick_partner() //Get someone + if(partner) + var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as null|anything in list("Yes", "No") + if(spillage && in_range(src, partner)) + mob_climax_partner(picked_organ, partner, spillage == "Yes" ? TRUE : FALSE) - if("Fill container") - //We'll need hands and no restraints. - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids. - if(picked_organ) - //Good, got an organ, time to pick a container - var/obj/item/reagent_containers/fluid_container = pick_climax_container() - if(fluid_container) - mob_fill_container(picked_organ, fluid_container) - return - else - to_chat(src, "You cannot do this without anything to fill.") - return - else //They either lack organs that can climax, or they didn't pick one. - to_chat(src, "You cannot fill anything without choosing genitals.") - return - else //Somehow another option was taken, maybe something interrupted the selection or it was cancelled - return //Just end it in that case. + if("Fill container") + //We'll need hands and no restraints. + if(!available_rosie_palms(FALSE, /obj/item/reagent_containers)) + return + //We got hands, let's pick an organ + var/obj/item/organ/genital/picked_organ + picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids. + if(picked_organ) + //Good, got an organ, time to pick a container + var/obj/item/reagent_containers/fluid_container = pick_climax_container() + if(fluid_container && available_rosie_palms(TRUE, /obj/item/reagent_containers)) + mob_fill_container(picked_organ, fluid_container) + + mb_cd_timer = world.time + mb_cd_length \ No newline at end of file diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm new file mode 100644 index 0000000000..9ecf67e4b0 --- /dev/null +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -0,0 +1,339 @@ +/obj/item/organ/genital + color = "#fcccb3" + w_class = WEIGHT_CLASS_NORMAL + var/shape = "human" + var/sensitivity = AROUSAL_START_VALUE + var/genital_flags //see citadel_defines.dm + var/masturbation_verb = "masturbate" + var/orgasm_verb = "cumming" //present continous + var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? + var/size = 2 //can vary between num or text, just used in icon_state strings + var/fluid_id = null + var/fluid_max_volume = 50 + var/fluid_efficiency = 1 + var/fluid_rate = CUM_RATE + var/fluid_mult = 1 + var/aroused_state = FALSE //Boolean used in icon_state strings + var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. + var/obj/item/organ/genital/linked_organ + var/linked_organ_slot //used for linking an apparatus' organ to its other half on update_link(). + var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. + +/obj/item/organ/genital/Initialize(mapload, mob/living/carbon/human/H) + . = ..() + if(fluid_id) + create_reagents(fluid_max_volume) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + reagents.add_reagent(fluid_id, fluid_max_volume) + if(H) + get_features(H) + Insert(H) + else + update() + +/obj/item/organ/genital/Destroy() + if(linked_organ) + update_link(TRUE)//this should remove any other links it has + if(owner) + Remove(owner, TRUE)//this should remove references to it, so it can be GCd correctly + return ..() + +/obj/item/organ/genital/proc/update(removing = FALSE) + if(QDELETED(src)) + return + update_size() + update_appearance() + if(linked_organ_slot || (linked_organ && removing)) + update_link(removing) + +//exposure and through-clothing code +/mob/living/carbon + var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed + +/obj/item/organ/genital/proc/is_exposed() + if(!owner || CHECK_BITFIELD(genital_flags, GENITAL_INTERNAL) || CHECK_BITFIELD(genital_flags, GENITAL_HIDDEN)) + return FALSE + if(CHECK_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)) + return TRUE + + switch(zone) //update as more genitals are added + if(BODY_ZONE_CHEST) + return owner.is_chest_exposed() + if(BODY_ZONE_PRECISE_GROIN) + return owner.is_groin_exposed() + +/obj/item/organ/genital/proc/toggle_visibility(visibility) + switch(visibility) + if("Always visible") + ENABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) + if(!(src in owner.exposed_genitals)) + owner.exposed_genitals += src + if("Hidden by clothes") + DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) + if(src in owner.exposed_genitals) + owner.exposed_genitals -= src + if("Always hidden") + DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + ENABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) + if(src in owner.exposed_genitals) + owner.exposed_genitals -= src + + if(ishuman(owner)) //recast to use update genitals proc + var/mob/living/carbon/human/H = owner + H.update_genitals() + +/mob/living/carbon/verb/toggle_genitals() + set category = "IC" + set name = "Expose/Hide genitals" + set desc = "Allows you to toggle which genitals should show through clothes or not." + + var/list/genital_list = list() + for(var/obj/item/organ/O in internal_organs) + if(isgenital(O)) + var/obj/item/organ/genital/G = O + if(!CHECK_BITFIELD(G.genital_flags, GENITAL_INTERNAL)) + genital_list += G + if(!genital_list.len) //There is nothing to expose + return + //Full list of exposable genitals created + var/obj/item/organ/genital/picked_organ + picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", null) in genital_list + if(picked_organ) + var/picked_visibility = input(src, "Choose visibility setting", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") + picked_organ.toggle_visibility(picked_visibility) + return + +/obj/item/organ/genital/proc/modify_size(modifier, min = -INFINITY, max = INFINITY) + return + +/obj/item/organ/genital/proc/update_size() + return + +/obj/item/organ/genital/proc/update_appearance() + if(!owner || owner.stat == DEAD) + aroused_state = FALSE + +/obj/item/organ/genital/on_life() + if(!reagents || !owner) + return + reagents.maximum_volume = fluid_max_volume + if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + generate_fluid() + +/obj/item/organ/genital/proc/generate_fluid() + var/amount = fluid_rate + if(!reagents.total_volume && amount < 0.1) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. + amount += 0.1 + var/multiplier = fluid_mult + if(reagents.total_volume >= 5) + multiplier *= 0.5 + if(reagents.total_volume < reagents.maximum_volume) + reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally + reagents.add_reagent(fluid_id, (amount * multiplier))//generate the cum + return TRUE + return FALSE + +/obj/item/organ/genital/proc/update_link(removing = FALSE) + if(!removing && owner) + if(linked_organ) + return + linked_organ = owner.getorganslot(linked_organ_slot) + if(linked_organ) + linked_organ.linked_organ = src + linked_organ.upon_link() + upon_link() + return TRUE + else + if(linked_organ) + linked_organ.linked_organ = null + linked_organ = null + return FALSE + +//post organ duo making arrangements. +/obj/item/organ/genital/proc/upon_link() + return + +/obj/item/organ/genital/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) + . = ..() + if(.) + update() + RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance) + +/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) + . = ..() + if(.) + update(TRUE) + UnregisterSignal(M, COMSIG_MOB_DEATH) + +//proc to give a player their genitals and stuff when they log in +/mob/living/carbon/human/proc/give_genitals(clean = FALSE)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA + if(clean) + for(var/obj/item/organ/genital/G in internal_organs) + qdel(G) + if (NOGENITALS in dna.species.species_traits) + return + if(dna.features["has_vag"]) + give_genital(/obj/item/organ/genital/vagina) + if(dna.features["has_womb"]) + give_genital(/obj/item/organ/genital/womb) + if(dna.features["has_balls"]) + give_genital(/obj/item/organ/genital/testicles) + if(dna.features["has_breasts"]) + give_genital(/obj/item/organ/genital/breasts) + if(dna.features["has_cock"]) + give_genital(/obj/item/organ/genital/penis) + /* + if(dna.features["has_ovi"]) + give_genital(/obj/item/organ/genital/ovipositor) + if(dna.features["has_eggsack"]) + give_genital(/obj/item/organ/genital/eggsack) + */ + +/mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G) + if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot))) + return FALSE + G = new G(null, src) + return G + +/obj/item/organ/genital/proc/get_features(mob/living/carbon/human/H) + return + +/datum/species/proc/genitals_layertext(layer) + switch(layer) + if(GENITALS_BEHIND_LAYER) + return "BEHIND" + if(GENITALS_FRONT_LAYER) + return "FRONT" + +//procs to handle sprite overlays being applied to humans + +/mob/living/carbon/human/equip_to_slot(obj/item/I, slot) + . = ..() + if(!. && I && slot && !(slot in GLOB.no_genitals_update_slots)) //the item was successfully equipped, and the chosen slot wasn't merely storage, hands or cuffs. + update_genitals() + +/mob/living/carbon/human/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE) + var/no_update = FALSE + if(!I || I == l_store || I == r_store || I == s_store || I == handcuffed || I == legcuffed || get_held_index_of_item(I)) //stops storages, cuffs and held items from triggering it. + no_update = TRUE + . = ..() + if(!. || no_update) + return + update_genitals() + +/mob/living/carbon/human/proc/update_genitals() + if(!QDELETED(src)) + dna.species.handle_genitals(src) + +//Checks to see if organs are new on the mob, and changes their colours so that they don't get crazy colours. +/mob/living/carbon/human/proc/emergent_genital_call() + if(!canbearoused) + return FALSE + + var/organCheck = locate(/obj/item/organ/genital) in internal_organs + var/breastCheck = getorganslot(ORGAN_SLOT_BREASTS) + var/willyCheck = getorganslot(ORGAN_SLOT_PENIS) + + if(organCheck == FALSE) + if(ishuman(src) && dna.species.id == "human") + dna.features["genitals_use_skintone"] = TRUE + dna.species.use_skintones = TRUE + if(MUTCOLORS) + if(src.dna.species.fixed_mut_color) + dna.features["cock_color"] = "[dna.species.fixed_mut_color]" + dna.features["breasts_color"] = "[dna.species.fixed_mut_color]" + return + //So people who haven't set stuff up don't get rainbow surprises. + dna.features["cock_color"] = "[dna.features["mcolor"]]" + dna.features["breasts_color"] = "[dna.features["mcolor"]]" + else //If there's a new organ, make it the same colour. + if(breastCheck == FALSE) + dna.features["breasts_color"] = dna.features["cock_color"] + else if (willyCheck == FALSE) + dna.features["cock_color"] = dna.features["breasts_color"] + return TRUE + +/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness + if(!H)//no args + CRASH("H = null") + if(!LAZYLEN(H.internal_organs) || ((NOGENITALS in species_traits) && !H.genital_override) || HAS_TRAIT(H, TRAIT_HUSK)) + return + var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_FRONT_LAYER) + + for(var/L in relevant_layers) //Less hardcode + H.remove_overlay(L) + H.remove_overlay(GENITALS_EXPOSED_LAYER) + //start scanning for genitals + + var/list/gen_index[GENITAL_LAYER_INDEX_LENGTH] + var/list/genitals_to_add + var/list/fully_exposed + for(var/obj/item/organ/genital/G in H.internal_organs) + if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes + LAZYADD(gen_index[G.layer_index], G) + for(var/L in gen_index) + if(L) //skip nulls + LAZYADD(genitals_to_add, L) + if(!genitals_to_add) + return + //Now we added all genitals that aren't internal and should be rendered + //start applying overlays + for(var/layer in relevant_layers) + var/list/standing = list() + var/layertext = genitals_layertext(layer) + for(var/A in genitals_to_add) + var/obj/item/organ/genital/G = A + var/datum/sprite_accessory/S + var/size = G.size + var/aroused_state = G.aroused_state + switch(G.type) + if(/obj/item/organ/genital/penis) + S = GLOB.cock_shapes_list[G.shape] + if(/obj/item/organ/genital/testicles) + S = GLOB.balls_shapes_list[G.shape] + if(/obj/item/organ/genital/vagina) + S = GLOB.vagina_shapes_list[G.shape] + if(/obj/item/organ/genital/breasts) + S = GLOB.breasts_shapes_list[G.shape] + + if(!S || S.icon_state == "none") + continue + + var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer) + genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" + + if(S.center) + genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) + + if(use_skintones && H.dna.features["genitals_use_skintone"]) + genital_overlay.color = "#[skintone2hex(H.skin_tone)]" + genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]-s_[aroused_state]_[layertext]" + else + switch(S.color_src) + if("cock_color") + genital_overlay.color = "#[H.dna.features["cock_color"]]" + if("balls_color") + genital_overlay.color = "#[H.dna.features["balls_color"]]" + if("breasts_color") + genital_overlay.color = "#[H.dna.features["breasts_color"]]" + if("vag_color") + genital_overlay.color = "#[H.dna.features["vag_color"]]" + + if(layer == GENITALS_FRONT_LAYER && CHECK_BITFIELD(G.genital_flags, GENITAL_THROUGH_CLOTHES)) + genital_overlay.layer = -GENITALS_EXPOSED_LAYER + LAZYADD(fully_exposed, genital_overlay) // to be added to a layer with higher priority than clothes, hence the name of the bitflag. + else + standing += genital_overlay + + if(LAZYLEN(standing)) + H.overlays_standing[layer] = standing + + if(LAZYLEN(fully_exposed)) + H.overlays_standing[GENITALS_EXPOSED_LAYER] = fully_exposed + H.apply_overlay(GENITALS_EXPOSED_LAYER) + + for(var/L in relevant_layers) + H.apply_overlay(L) + diff --git a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm similarity index 89% rename from modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm rename to modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm index f4af8a40ba..15d84fa008 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm +++ b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm @@ -5,11 +5,9 @@ //DICKS,COCKS,PENISES,WHATEVER YOU WANT TO CALL THEM /datum/sprite_accessory/penis icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' - icon_state = null name = "penis" //the preview name of the accessory - gender_specific = 0 //Might be needed somewhere down the list. color_src = "cock_color" - locked = 0 + alt_aroused = TRUE /datum/sprite_accessory/penis/human icon_state = "human" @@ -75,27 +73,21 @@ icon_state = "testicle" name = "testicle" //the preview name of the accessory color_src = "balls_color" - locked = 0 /datum/sprite_accessory/testicles/hidden - icon_state = "hidden" + icon_state = "none" name = "Hidden" - alt_aroused = TRUE /datum/sprite_accessory/testicles/single icon_state = "single" name = "Single" - alt_aroused = TRUE //Vaginas /datum/sprite_accessory/vagina icon = 'modular_citadel/icons/obj/genitals/vagina_onmob.dmi' icon_state = null name = "vagina" - gender_specific = 0 color_src = "vag_color" - locked = 0 - alt_aroused = FALSE //if this is TRUE, then the genitals will use an alternate sprite for aroused states /datum/sprite_accessory/vagina/human icon_state = "human" @@ -131,35 +123,28 @@ //BREASTS BE HERE /datum/sprite_accessory/breasts icon = 'modular_citadel/icons/obj/genitals/breasts_onmob.dmi' - icon_state = null name = "breasts" - gender_specific = 0 color_src = "breasts_color" - locked = 0 + alt_aroused = TRUE /datum/sprite_accessory/breasts/pair icon_state = "pair" name = "Pair" - alt_aroused = TRUE /datum/sprite_accessory/breasts/quad icon_state = "quad" name = "Quad" - alt_aroused = TRUE /datum/sprite_accessory/breasts/sextuple icon_state = "sextuple" name = "Sextuple" - alt_aroused = TRUE //OVIPOSITORS BE HERE /datum/sprite_accessory/ovipositor icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' icon_state = null name = "Ovipositor" //the preview name of the accessory - gender_specific = 0 //Might be needed somewhere down the list. color_src = "cock_color" - locked = 0 /datum/sprite_accessory/ovipositor/knotted icon_state = "knotted" diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 3df2218766..6299f68b6c 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -1,50 +1,29 @@ /obj/item/organ/genital/breasts - name = "breasts" - desc = "Female milk producing organs." - icon_state = "breasts" - icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' - zone = "chest" - slot = "breasts" - w_class = 3 - size = BREASTS_SIZE_DEF //SHOULD BE A LETTER, starts as a number...??? - var/cached_size = null //for enlargement SHOULD BE A NUMBER - var/prev_size //For flavour texts SHOULD BE A LETTER - //var/breast_sizes = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "huge", "flat") - var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) - var/statuscheck = FALSE - fluid_id = "milk" - var/amount = 2 - producing = TRUE - shape = "Pair" - can_masturbate_with = TRUE - masturbation_verb = "massage" - can_climax = TRUE - fluid_transfer_factor = 0.5 + name = "breasts" + desc = "Female milk producing organs." + icon_state = "breasts" + icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_BREASTS + size = "c" //refer to the breast_values static list below for the cups associated number values + fluid_id = "milk" + shape = "pair" + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION + masturbation_verb = "massage" + orgasm_verb = "leaking" + fluid_transfer_factor = 0.5 + var/static/list/breast_values = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) + var/cached_size //these two vars pertain size modifications and so should be expressed in NUMBERS. + var/prev_size //former cached_size value, to allow update_size() to early return should be there no significant changes. -/obj/item/organ/genital/breasts/on_life() - if(QDELETED(src)) - return - if(!reagents || !owner) - return - reagents.maximum_volume = fluid_max_volume - if(fluid_id && producing) - if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. - fluid_rate = 0.1 - else - fluid_rate = CUM_RATE - if(reagents.total_volume >= 5) - fluid_mult = 0.5 - else - fluid_mult = 1 - generate_milk() - -/obj/item/organ/genital/breasts/proc/generate_milk() - if(owner.stat == DEAD) - return FALSE - reagents.isolate_reagent(fluid_id) - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate)) +/obj/item/organ/genital/breasts/Initialize(mapload, mob/living/carbon/human/H) + if(!H) + cached_size = breast_values[size] + prev_size = cached_size + return ..() /obj/item/organ/genital/breasts/update_appearance() + . = ..() var/lowershape = lowertext(shape) switch(lowershape) if("pair") @@ -55,16 +34,15 @@ desc = "You see three sets of breasts, running from their chest to their belly." else desc = "You see some breasts, they seem to be quite exotic." - if(cached_size > 16) + if(size == "huge") desc = "You see [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "two big old tonhongerekoogers", "a couple of giant bonkhonagahoogs", "a pair of humongous hungolomghnonoloughongous")]. Their volume is way beyond cupsize now, measuring in about [round(cached_size)]cm in diameter." - else if (!isnum(size)) + else if (size == "flat") desc += " They're very small and flatchested, however." else desc += " You estimate that they're [uppertext(size)]-cups." - //string = "breasts_[lowertext(shape)]_[size]-s" - if(producing && aroused_state) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) desc += " They're leaking [fluid_id]." var/string if(owner) @@ -80,57 +58,70 @@ var/mob/living/carbon/human/H = owner icon_state = sanitize_text(string) H.update_genitals() - icon_state = sanitize_text(string) - //Allows breasts to grow and change size, with sprite changes too. //maximum wah //Comical sizes slow you down in movement and actions. //Rediculous sizes makes you more cumbersome. //this is far too lewd wah -/obj/item/organ/genital/breasts/update_size()//wah - - if(!ishuman(owner) || !owner) +/obj/item/organ/genital/breasts/modify_size(modifier, min = -INFINITY, max = INFINITY) + var/new_value = CLAMP(cached_size + modifier, min, max) + if(new_value == cached_size) return - if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed - to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") - src.Remove(owner) - switch(round(cached_size)) - if(0) //If flatchested - size = "flat" - if(owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)) - owner.remove_status_effect(/datum/status_effect/chem/breast_enlarger) - statuscheck = FALSE - if(1 to 8) //If modest size - size = breast_values[round(cached_size)] - if(owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)) - owner.remove_status_effect(/datum/status_effect/chem/breast_enlarger) - statuscheck = FALSE - if(9 to 15) //If massive - size = breast_values[round(cached_size)] - if(!owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)) - owner.apply_status_effect(/datum/status_effect/chem/breast_enlarger) - statuscheck = TRUE - if(16 to INFINITY) //if Rediculous - size = cached_size + prev_size = cached_size + cached_size = new_value + update() - if(round(cached_size) < 16)//Because byond doesn't count from 0, I have to do this. - if (prev_size == 0) - prev_size = "flat" - if(size == 0)//Bloody byond with it's counting from 1 +/obj/item/organ/genital/breasts/update_size()//wah + var/rounded_cached = round(cached_size) + if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed + if(owner) + to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") + QDEL_IN(src, 1) + return + var/enlargement = FALSE + switch(rounded_cached) + if(0) //flatchested size = "flat" - if(isnum(prev_size)) - prev_size = breast_values[prev_size] - if (breast_values[size] > breast_values[prev_size]) - to_chat(owner, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.") - var/mob/living/carbon/human/H = owner - H.Force_update_genitals() - else if ((breast_values[size] < breast_values[prev_size]) && (breast_values[size] > 0.5)) - to_chat(owner, "Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.") - var/mob/living/carbon/human/H = owner - H.Force_update_genitals() - prev_size = size - else if (cached_size >= 16) - size = "huge" + if(1 to 8) //modest + size = breast_values[rounded_cached] + if(9 to 15) //massive + size = breast_values[rounded_cached] + enlargement = TRUE + if(16 to INFINITY) //rediculous + size = "huge" + enlargement = TRUE + if(owner) + var/status_effect = owner.has_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) + if(enlargement && !status_effect) + owner.apply_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) + else if(!enlargement && status_effect) + owner.remove_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) + + if(rounded_cached < 16 && owner)//Because byond doesn't count from 0, I have to do this. + var/mob/living/carbon/human/H = owner + var/r_prev_size = round(prev_size) + if (rounded_cached > r_prev_size) + to_chat(H, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.") + else if (rounded_cached < r_prev_size) + to_chat(H, "Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.") + +/obj/item/organ/genital/breasts/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" + else + color = "#[D.features["breasts_color"]]" + size = D.features["breasts_size"] + shape = D.features["breasts_shape"] + fluid_id = D.features["breasts_fluid"] + if(!D.features["breasts_producing"]) + DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) + if(!isnum(size)) + cached_size = breast_values[size] + else + cached_size = size + size = breast_values[size] + prev_size = cached_size diff --git a/modular_citadel/code/modules/arousal/organs/eggsack.dm b/modular_citadel/code/modules/arousal/organs/eggsack.dm index 402d246e40..ebdefd2371 100644 --- a/modular_citadel/code/modules/arousal/organs/eggsack.dm +++ b/modular_citadel/code/modules/arousal/organs/eggsack.dm @@ -1,14 +1,14 @@ /obj/item/organ/genital/eggsack - name = "Egg sack" - desc = "An egg producing reproductive organ." - icon_state = "egg_sack" - icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' - zone = "groin" - slot = "testicles" - color = null //don't use the /genital color since it already is colored - internal = TRUE + name = "Egg sack" + desc = "An egg producing reproductive organ." + icon_state = "egg_sack" + icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_TESTICLES + genital_flags = GENITAL_INTERNAL|GENITAL_BLACKLISTED //unimplemented + linked_organ_slot = ORGAN_SLOT_PENIS + color = null //don't use the /genital color since it already is colored var/egg_girth = EGG_GIRTH_DEF var/cum_mult = CUM_RATE_MULT var/cum_rate = CUM_RATE var/cum_efficiency = CUM_EFFICIENCY - var/obj/item/organ/ovipositor/linked_ovi diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm deleted file mode 100644 index 3abe7ecb1f..0000000000 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ /dev/null @@ -1,414 +0,0 @@ -/obj/item/organ/genital - color = "#fcccb3" - w_class = WEIGHT_CLASS_NORMAL - var/shape = "Human" //Changed to be uppercase, let me know if this breaks everything..!! - var/sensitivity = AROUSAL_START_VALUE - var/list/genital_flags = list() - var/can_masturbate_with = FALSE - var/masturbation_verb = "masturbate" - var/can_climax = FALSE - var/fluid_transfer_factor = 0.0 //How much would a partner get in them if they climax using this? - var/size = 2 //can vary between num or text, just used in icon_state strings - var/fluid_id = null - var/fluid_max_volume = 15 - var/fluid_efficiency = 1 - var/fluid_rate = 1 - var/fluid_mult = 1 - var/producing = FALSE - var/aroused_state = FALSE //Boolean used in icon_state strings - var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. - var/obj/item/organ/genital/linked_organ - var/through_clothes = FALSE - var/internal = FALSE - var/hidden = FALSE - -/obj/item/organ/genital/Initialize() - . = ..() - if(!reagents) - create_reagents(fluid_max_volume) - update() - -/obj/item/organ/genital/Destroy() - remove_ref() - if(owner) - Remove(owner, 1)//this should remove references to it, so it can be GCd correctly - update_link()//this should remove any other links it has - return ..() - -/obj/item/organ/genital/proc/update() - if(QDELETED(src)) - return - update_size() - update_appearance() - update_link() - -//exposure and through-clothing code -/mob/living/carbon - var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed - -/obj/item/organ/genital/proc/is_exposed() - if(!owner) - return FALSE - if(hidden) - return FALSE - if(internal) - return FALSE - if(through_clothes) - return TRUE - - switch(zone) //update as more genitals are added - if("chest") - return owner.is_chest_exposed() - if("groin") - return owner.is_groin_exposed() - - return FALSE - -/obj/item/organ/genital/proc/toggle_visibility(visibility) - switch(visibility) - if("Always visible") - through_clothes = TRUE - hidden = FALSE - if(!(src in owner.exposed_genitals)) - owner.exposed_genitals += src - if("Hidden by clothes") - through_clothes = FALSE - hidden = TRUE - if(src in owner.exposed_genitals) - owner.exposed_genitals -= src - if("Always hidden") - through_clothes = FALSE - hidden = TRUE - if(src in owner.exposed_genitals) - owner.exposed_genitals -= src - - if(ishuman(owner)) //recast to use update genitals proc - var/mob/living/carbon/human/H = owner - H.update_genitals() - -/mob/living/carbon/verb/toggle_genitals() - set category = "IC" - set name = "Expose/Hide genitals" - set desc = "Allows you to toggle which genitals should show through clothes or not." - - var/list/genital_list = list() - for(var/obj/item/organ/O in internal_organs) - if(isgenital(O)) - var/obj/item/organ/genital/G = O - if(!G.internal) - genital_list += G - if(!genital_list.len) //There is nothing to expose - return - //Full list of exposable genitals created - var/obj/item/organ/genital/picked_organ - picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", null) in genital_list - if(picked_organ) - var/picked_visibility = input(src, "Choose visibility setting", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") - picked_organ.toggle_visibility(picked_visibility) - return - - - - -/obj/item/organ/genital/proc/update_size() - return - -/obj/item/organ/genital/proc/update_appearance() - return - -/obj/item/organ/genital/proc/update_link() - return - -/obj/item/organ/genital/proc/remove_ref() - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/Insert(mob/living/carbon/M, special = 0) - ..() - update() - -/obj/item/organ/genital/Remove(mob/living/carbon/M, special = 0) - ..() - update() - -//proc to give a player their genitals and stuff when they log in -/mob/living/carbon/human/proc/give_genitals(clean=0)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA - if(clean) - var/obj/item/organ/genital/GtoClean - for(GtoClean in internal_organs) - qdel(GtoClean) - if (NOGENITALS in dna.species.species_traits) - return - //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. - if(dna.features["has_vag"]) - give_vagina() - if(dna.features["has_womb"]) - give_womb() - if(dna.features["has_balls"]) - give_balls() - if(dna.features["has_breasts"]) // since we have multi-boobs as a thing, we'll want to at least draw over these. but not over the pingas. - give_breasts() - if(dna.features["has_cock"]) - give_penis() - if(dna.features["has_ovi"]) - give_ovipositor() - if(dna.features["has_eggsack"]) - give_eggsack() - -/mob/living/carbon/human/proc/give_penis() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("penis")) - var/obj/item/organ/genital/penis/P = new - P.Insert(src) - if(P) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - P.color = "#[skintone2hex(skin_tone)]" - else - P.color = "#[dna.features["cock_color"]]" - P.length = dna.features["cock_length"] - P.girth_ratio = dna.features["cock_girth_ratio"] - P.shape = dna.features["cock_shape"] - P.prev_length = P.length - P.cached_length = P.length - P.update() - -/mob/living/carbon/human/proc/give_balls() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("testicles")) - var/obj/item/organ/genital/testicles/T = new - T.Insert(src) - if(T) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - T.color = "#[skintone2hex(skin_tone)]" - else - T.color = "#[dna.features["balls_color"]]" - T.size = dna.features["balls_size"] - T.sack_size = dna.features["balls_sack_size"] - T.shape = dna.features["balls_shape"] - if(dna.features["balls_shape"] == "Hidden") - T.internal = TRUE - else - T.internal = FALSE - T.fluid_id = dna.features["balls_fluid"] - T.fluid_rate = dna.features["balls_cum_rate"] - T.fluid_mult = dna.features["balls_cum_mult"] - T.fluid_efficiency = dna.features["balls_efficiency"] - T.update() - -/mob/living/carbon/human/proc/give_breasts() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("breasts")) - var/obj/item/organ/genital/breasts/B = new - B.Insert(src) - if(B) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - B.color = "#[skintone2hex(skin_tone)]" - else - B.color = "#[dna.features["breasts_color"]]" - B.size = dna.features["breasts_size"] - if(!isnum(B.size)) - if(B.size == "flat") - B.cached_size = 0 - B.prev_size = 0 - else if (B.cached_size == "huge") - B.prev_size = "huge" - else - B.cached_size = B.breast_values[B.size] - B.prev_size = B.size - else - B.cached_size = B.size - B.prev_size = B.size - B.shape = dna.features["breasts_shape"] - B.fluid_id = dna.features["breasts_fluid"] - B.producing = dna.features["breasts_producing"] - B.update() - - -/mob/living/carbon/human/proc/give_ovipositor() - return -/mob/living/carbon/human/proc/give_eggsack() - return - -/mob/living/carbon/human/proc/give_vagina() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("vagina")) - var/obj/item/organ/genital/vagina/V = new - V.Insert(src) - if(V) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - V.color = "#[skintone2hex(skin_tone)]" - else - V.color = "[dna.features["vag_color"]]" - V.shape = "[dna.features["vag_shape"]]" - V.update() - -/mob/living/carbon/human/proc/give_womb() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("womb")) - var/obj/item/organ/genital/womb/W = new - W.Insert(src) - if(W) - W.update() - - -/datum/species/proc/genitals_layertext(layer) - switch(layer) - if(GENITALS_BEHIND_LAYER) - return "BEHIND" - /*if(GENITALS_ADJ_LAYER) - return "ADJ"*/ - if(GENITALS_FRONT_LAYER) - return "FRONT" - -//procs to handle sprite overlays being applied to humans - -/obj/item/equipped(mob/user, slot) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.update_genitals() - ..() - -/mob/living/carbon/human/doUnEquip(obj/item/I, force) - . = ..() - if(!.) - return - update_genitals() - -/mob/living/carbon/human/proc/update_genitals() - if(src && !QDELETED(src)) - dna.species.handle_genitals(src) - -//fermichem procs -/mob/living/carbon/human/proc/Force_update_genitals(mob/living/carbon/human/H) //called in fermiChem - dna.species.handle_genitals(src)//should work. - //dna.species.handle_breasts(src) - -//Checks to see if organs are new on the mob, and changes their colours so that they don't get crazy colours. -/mob/living/carbon/human/proc/emergent_genital_call() - var/organCheck = FALSE - var/breastCheck = FALSE - var/willyCheck = FALSE - if(!canbearoused) - ADD_TRAIT(src, TRAIT_PHARMA, "pharma")//Prefs prevent unwanted organs. - return - for(var/obj/item/organ/O in internal_organs) - if(istype(O, /obj/item/organ/genital)) - organCheck = TRUE - if(/obj/item/organ/genital/penis) - //dna.features["has_cock"] = TRUE - willyCheck = TRUE - if(/obj/item/organ/genital/breasts) - //dna.features["has_breasts"] = TRUE//Goddamnit get in there. - breastCheck = TRUE - if(organCheck == FALSE) - if(ishuman(src) && dna.species.id == "human") - dna.features["genitals_use_skintone"] = TRUE - dna.species.use_skintones = TRUE - if(MUTCOLORS) - if(src.dna.species.fixed_mut_color) - dna.features["cock_color"] = "[src.dna.species.fixed_mut_color]" - dna.features["breasts_color"] = "[src.dna.species.fixed_mut_color]" - return - //So people who haven't set stuff up don't get rainbow surprises. - dna.features["cock_color"] = "[dna.features["mcolor"]]" - dna.features["breasts_color"] = "[dna.features["mcolor"]]" - else //If there's a new organ, make it the same colour. - if(breastCheck == FALSE) - dna.features["breasts_color"] = dna.features["cock_color"] - else if (willyCheck == FALSE) - dna.features["cock_color"] = dna.features["breasts_color"] - return - -/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness - if(!H)//no args - CRASH("H = null") - if(!LAZYLEN(H.internal_organs))//if they have no organs, we're done - return - if((NOGENITALS in species_traits) && (H.genital_override = FALSE))//golems and such - things that shouldn't - return - if(HAS_TRAIT(H, TRAIT_HUSK)) - return - var/list/genitals_to_add = list() - var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_FRONT_LAYER) //GENITALS_ADJ_LAYER removed - var/list/standing = list() - var/size - var/aroused_state - - for(var/L in relevant_layers) //Less hardcode - H.remove_overlay(L) - //start scanning for genitals - for(var/obj/item/organ/O in H.internal_organs) - if(isgenital(O)) - var/obj/item/organ/genital/G = O - if(G.hidden) - return //we're gunna just hijack this for updates. - if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes - genitals_to_add += H.getorganslot(G.slot) - //Now we added all genitals that aren't internal and should be rendered - //start applying overlays - for(var/layer in relevant_layers) - var/layertext = genitals_layertext(layer) - for(var/obj/item/organ/genital/G in genitals_to_add) - var/datum/sprite_accessory/S - size = G.size - aroused_state = G.aroused_state - switch(G.type) - if(/obj/item/organ/genital/penis) - S = GLOB.cock_shapes_list[G.shape] - if(/obj/item/organ/genital/testicles) - S = GLOB.balls_shapes_list[G.shape] - if(/obj/item/organ/genital/vagina) - S = GLOB.vagina_shapes_list[G.shape] - if(/obj/item/organ/genital/breasts) - S = GLOB.breasts_shapes_list[G.shape] - - - - - if(!S || S.icon_state == "none") - continue - - var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer) - genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" - - if(S.center) - genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) - - if(use_skintones && H.dna.features["genitals_use_skintone"]) - genital_overlay.color = "#[skintone2hex(H.skin_tone)]" - genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]-s_[aroused_state]_[layertext]" - else - switch(S.color_src) - if("cock_color") - genital_overlay.color = "#[H.dna.features["cock_color"]]" - if("balls_color") - genital_overlay.color = "#[H.dna.features["balls_color"]]" - if("breasts_color") - genital_overlay.color = "#[H.dna.features["breasts_color"]]" - if("vag_color") - genital_overlay.color = "#[H.dna.features["vag_color"]]" - - standing += genital_overlay - - if(LAZYLEN(standing)) - H.overlays_standing[layer] = standing.Copy() - standing = list() - - for(var/L in relevant_layers) - H.apply_overlay(L) diff --git a/modular_citadel/code/modules/arousal/organs/ovipositor.dm b/modular_citadel/code/modules/arousal/organs/ovipositor.dm index 76bf60d93c..c26424d296 100644 --- a/modular_citadel/code/modules/arousal/organs/ovipositor.dm +++ b/modular_citadel/code/modules/arousal/organs/ovipositor.dm @@ -3,14 +3,14 @@ desc = "An egg laying reproductive organ." icon_state = "ovi_knotted_2" icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' - zone = "groin" - slot = "penis" - w_class = 3 + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_PENIS + genital_flags = GENITAL_BLACKLISTED //unimplemented shape = "knotted" size = 3 + layer_index = PENIS_LAYER_INDEX var/length = 6 //inches var/girth = 0 var/girth_ratio = COCK_GIRTH_RATIO_DEF //citadel_defines.dm for these defines var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF var/list/oviflags = list() - var/obj/item/organ/eggsack/linked_eggsack diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 43a512acf6..17cd35c144 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -1,77 +1,78 @@ /obj/item/organ/genital/penis - name = "penis" - desc = "A male reproductive organ." - icon_state = "penis" - icon = 'modular_citadel/icons/obj/genitals/penis.dmi' - zone = "groin" - slot = ORGAN_SLOT_PENIS - can_masturbate_with = TRUE - masturbation_verb = "stroke" - can_climax = TRUE - fluid_transfer_factor = 0.5 - size = 2 //arbitrary value derived from length and girth for sprites. - var/length = 6 //inches - var/cached_length //used to detect a change in length - var/girth = 4.38 - var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm - var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF - var/list/dickflags = list() - var/list/knotted_types = list("knotted", "barbed, knotted") - var/prev_length = 6 //really should be renamed to prev_length + name = "penis" + desc = "A male reproductive organ." + icon_state = "penis" + icon = 'modular_citadel/icons/obj/genitals/penis.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_PENIS + masturbation_verb = "stroke" + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH + linked_organ_slot = ORGAN_SLOT_TESTICLES + fluid_transfer_factor = 0.5 + size = 2 //arbitrary value derived from length and girth for sprites. + layer_index = PENIS_LAYER_INDEX + var/length = 6 //inches + var/prev_length = 6 //really should be renamed to prev_length + var/girth = 4.38 + var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm -/obj/item/organ/genital/penis/Initialize() - . = ..() - /* I hate genitals.*/ - -/obj/item/organ/genital/penis/update_size() - var/mob/living/carbon/human/o = owner - if(!ishuman(o) || !o) +/obj/item/organ/genital/penis/modify_size(modifier, min = -INFINITY, max = INFINITY) + var/new_value = CLAMP(length + modifier, min, max) + if(new_value == length) return - if(cached_length < 0)//I don't actually know what round() does to negative numbers, so to be safe!! - var/obj/item/organ/genital/penis/P = o.getorganslot("penis") - to_chat(o, "You feel your tallywacker shrinking away from your body as your groin flattens out!") - P.Remove(o) - switch(round(cached_length)) - if(0 to 4) //If modest size - length = cached_length - size = 1 - if(owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.remove_status_effect(/datum/status_effect/chem/penis_enlarger) - if(5 to 10) //If modest size - length = cached_length - size = 2 - if(owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.remove_status_effect(/datum/status_effect/chem/penis_enlarger) - if(11 to 20) //If massive - length = cached_length - size = 3 - if(owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.remove_status_effect(/datum/status_effect/chem/penis_enlarger) - if(21 to 35) //If massive and due for large effects - length = cached_length - size = 3 - if(!owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.apply_status_effect(/datum/status_effect/chem/penis_enlarger) - if(36 to INFINITY) //If comical - length = cached_length - size = 4 //no new sprites for anything larger yet - if(!owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.apply_status_effect(/datum/status_effect/chem/penis_enlarger) - - if (round(length) > round(prev_length)) - to_chat(o, "Your [pick(GLOB.gentlemans_organ_names)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(round(length))] inch penis.") - else if ((round(length) < round(prev_length)) && (length > 0.5)) - to_chat(o, "Your [pick(GLOB.gentlemans_organ_names)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(round(length))] inch penis.") prev_length = length + length = CLAMP(length + modifier, min, max) + update() + +/obj/item/organ/genital/penis/update_size(modified = FALSE) + if(length < 0)//I don't actually know what round() does to negative numbers, so to be safe!! + if(owner) + to_chat(owner, "You feel your tallywacker shrinking away from your body as your groin flattens out!") + QDEL_IN(src, 1) + if(linked_organ) + QDEL_IN(linked_organ, 1) + return + var/rounded_length = round(length) + var/new_size + var/enlargement = FALSE + switch(rounded_length) + if(0 to 6) //If modest size + new_size = 1 + if(7 to 11) //If large + new_size = 2 + if(12 to 20) //If massive + new_size = 3 + if(21 to 34) //If massive and due for large effects + new_size = 3 + enlargement = TRUE + if(35 to INFINITY) //If comical + new_size = 4 //no new sprites for anything larger yet + enlargement = TRUE + if(owner) + var/status_effect = owner.has_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + if(enlargement && !status_effect) + owner.apply_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + else if(!enlargement && status_effect) + owner.remove_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + if(linked_organ) + linked_organ.size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) + linked_organ.update() + size = new_size + + if(owner) + if (round(length) > round(prev_length)) + to_chat(owner, "Your [pick(GLOB.gentlemans_organ_names)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(round(length))] inch penis.") + else if ((round(length) < round(prev_length)) && (length > 0.5)) + to_chat(owner, "Your [pick(GLOB.gentlemans_organ_names)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(round(length))] inch penis.") icon_state = sanitize_text("penis_[shape]_[size]") girth = (length * girth_ratio)//Is it just me or is this ludicous, why not make it exponentially decay? - //I have no idea on how to update sprites and I hate it /obj/item/organ/genital/penis/update_appearance() + . = ..() var/string var/lowershape = lowertext(shape) - desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." + desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) @@ -87,13 +88,13 @@ icon_state = sanitize_text(string) H.update_genitals() -/obj/item/organ/genital/penis/update_link() - if(owner) - linked_organ = (owner.getorganslot("testicles")) - if(linked_organ) - linked_organ.linked_organ = src - linked_organ.size = size +/obj/item/organ/genital/penis/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null + color = "#[D.features["cock_color"]]" + length = D.features["cock_length"] + girth_ratio = D.features["cock_girth_ratio"] + shape = D.features["cock_shape"] + prev_length = length diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index f4ef4b5064..547674a5f1 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -1,82 +1,46 @@ /obj/item/organ/genital/testicles - name = "testicles" - desc = "A male reproductive organ." - icon_state = "testicles" - icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' - zone = "groin" - slot = "testicles" - size = BALLS_SIZE_MIN - var/size_name = "average" - shape = "single" - var/sack_size = BALLS_SACK_SIZE_DEF - fluid_id = "semen" - producing = TRUE - can_masturbate_with = FALSE - masturbation_verb = "massage" - can_climax = TRUE - var/sent_full_message = TRUE //defaults to 1 since they're full to start + name = "testicles" + desc = "A male reproductive organ." + icon_state = "testicles" + icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_TESTICLES + size = BALLS_SIZE_MIN + linked_organ_slot = ORGAN_SLOT_PENIS + genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION + var/size_name = "average" + shape = "Single" + var/sack_size = BALLS_SACK_SIZE_DEF + fluid_id = "semen" + masturbation_verb = "massage" + layer_index = TESTICLES_LAYER_INDEX -/obj/item/organ/genital/testicles/on_life() - if(QDELETED(src)) - return - if(reagents && producing) - if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. - fluid_rate = 0.1 - else - fluid_rate = CUM_RATE - if(reagents.total_volume >= 5) - fluid_mult = 0.5 - else - fluid_mult = 1 - generate_cum() - -/obj/item/organ/genital/testicles/proc/generate_cum() - reagents.maximum_volume = fluid_max_volume - if(reagents.total_volume >= reagents.maximum_volume) - if(!sent_full_message) - send_full_message() - sent_full_message = TRUE +/obj/item/organ/genital/testicles/generate_fluid() + if(!linked_organ && !update_link()) return FALSE - sent_full_message = FALSE - update_link() - if(!linked_organ) - return FALSE - reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum + . = ..() + if(. && reagents.holder_full()) + to_chat(owner, "Your balls finally feel full, again.") -/obj/item/organ/genital/testicles/update_link() - if(owner && !QDELETED(src)) - linked_organ = (owner.getorganslot("penis")) - if(linked_organ) - linked_organ.linked_organ = src - size = linked_organ.size +/obj/item/organ/genital/testicles/upon_link() + size = linked_organ.size + update_size() + update_appearance() - else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/testicles/proc/send_full_message(msg = "Your balls finally feel full, again.") - if(owner && istext(msg)) - to_chat(owner, msg) - return TRUE - -/obj/item/organ/genital/testicles/update_appearance() +/obj/item/organ/genital/testicles/update_size(modified = FALSE) switch(size) - if(0.1 to 1) + if(BALLS_SIZE_MIN) size_name = "average" - if(1.1 to 2) + if(BALLS_SIZE_DEF) size_name = "enlarged" - if(2.1 to INFINITY) + if(BALLS_SIZE_MAX) size_name = "engorged" else size_name = "nonexistant" - if(!internal) - desc = "You see an [size_name] pair of testicles." - else - desc = "They don't have any testicles you can see." - +/obj/item/organ/genital/testicles/update_appearance() + . = ..() + desc = "You see an [size_name] pair of testicles." if(owner) var/string if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) @@ -91,3 +55,18 @@ var/mob/living/carbon/human/H = owner icon_state = sanitize_text(string) H.update_genitals() + +/obj/item/organ/genital/testicles/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" + else + color = "#[D.features["balls_color"]]" + sack_size = D.features["balls_sack_size"] + shape = D.features["balls_shape"] + if(D.features["balls_shape"] == "Hidden") + ENABLE_BITFIELD(genital_flags, GENITAL_INTERNAL) + fluid_id = D.features["balls_fluid"] + fluid_rate = D.features["balls_cum_rate"] + fluid_mult = D.features["balls_cum_mult"] + fluid_efficiency = D.features["balls_efficiency"] diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm index 8c15aa5437..0df954fd79 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/modular_citadel/code/modules/arousal/organs/vagina.dm @@ -1,26 +1,25 @@ /obj/item/organ/genital/vagina - name = "vagina" - desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' - icon_state = "vagina" - zone = "groin" - slot = "vagina" - size = 1 //There is only 1 size right now - can_masturbate_with = TRUE - masturbation_verb = "finger" - can_climax = TRUE + name = "vagina" + desc = "A female reproductive organ." + icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon_state = ORGAN_SLOT_VAGINA + zone = BODY_ZONE_PRECISE_GROIN + slot = "vagina" + size = 1 //There is only 1 size right now + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH + masturbation_verb = "finger" fluid_transfer_factor = 0.1 //Yes, some amount is exposed to you, go get your AIDS - w_class = 3 - var/cap_length = 8//D E P T H (cap = capacity) - var/cap_girth = 12 + layer_index = VAGINA_LAYER_INDEX + var/cap_length = 8//D E P T H (cap = capacity) + var/cap_girth = 12 var/cap_girth_ratio = 1.5 - var/clits = 1 - var/clit_diam = 0.25 - var/clit_len = 0.25 + var/clits = 1 + var/clit_diam = 0.25 + var/clit_len = 0.25 var/list/vag_types = list("tentacle", "dentata", "hairy", "spade", "furred") - /obj/item/organ/genital/vagina/update_appearance() + . = ..() var/string //Keeping this code here, so making multiple sprites for the different kinds is easier. var/lowershape = lowertext(shape) var/details @@ -63,12 +62,10 @@ icon_state = sanitize_text(string) H.update_genitals() -/obj/item/organ/genital/vagina/update_link() - if(owner) - linked_organ = (owner.getorganslot("womb")) - if(linked_organ) - linked_organ.linked_organ = src +/obj/item/organ/genital/vagina/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null + color = "[D.features["vag_color"]]" + shape = "[D.features["vag_shape"]]" diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 3f190b72ac..9dfe811571 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -1,45 +1,10 @@ /obj/item/organ/genital/womb - name = "womb" - desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' - icon_state = "womb" - zone = "groin" - slot = "womb" - internal = TRUE - fluid_id = "femcum" - producing = TRUE - -/obj/item/organ/genital/womb/on_life() - if(QDELETED(src)) - return - if(reagents && producing) - if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. - fluid_rate = 0.1 - else - fluid_rate = CUM_RATE - if(reagents.total_volume >= 5) - fluid_mult = 0.5 - else - fluid_mult = 1 - generate_femcum() - -/obj/item/organ/genital/womb/proc/generate_femcum() - reagents.maximum_volume = fluid_max_volume - update_link() - if(!linked_organ) - return FALSE - reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum - -/obj/item/organ/genital/womb/update_link() - if(owner) - linked_organ = (owner.getorganslot("vagina")) - if(linked_organ) - linked_organ.linked_organ = src - else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/womb/Destroy() - return ..() + name = "womb" + desc = "A female reproductive organ." + icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon_state = "womb" + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_WOMB + genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION + fluid_id = "femcum" + linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/modular_citadel/code/modules/awaymissions/citadel_ghostrole_spawners.dm b/modular_citadel/code/modules/awaymissions/citadel_ghostrole_spawners.dm deleted file mode 100644 index ccbf9a42fe..0000000000 --- a/modular_citadel/code/modules/awaymissions/citadel_ghostrole_spawners.dm +++ /dev/null @@ -1,73 +0,0 @@ -/obj/effect/mob_spawn/human/lavaknight - name = "odd cryogenics pod" - desc = "A humming cryo pod. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant." - mob_name = "a displaced knight from another dimension" - icon = 'icons/obj/machines/sleeper.dmi' - icon_state = "sleeper" - roundstart = FALSE - job_description = "Cydonian Knight" - death = FALSE - random = TRUE - outfit = /datum/outfit/lavaknight - mob_species = /datum/species/human - flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \ - You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \ - Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth." - assignedrole = "Cydonian Knight" - -/obj/effect/mob_spawn/human/lavaknight/special(mob/living/new_spawn) - if(ishuman(new_spawn)) - var/mob/living/carbon/human/H = new_spawn - H.dna.features["mam_ears"] = "Cat, Big" //cat people - H.dna.features["mcolor"] = H.hair_color - H.update_body() - -/obj/effect/mob_spawn/human/lavaknight/Destroy() - new/obj/structure/showcase/machinery/oldpod/used(drop_location()) - return ..() - -/datum/outfit/lavaknight - name = "Cydonian Knight" - uniform = /obj/item/clothing/under/assistantformal - mask = /obj/item/clothing/mask/breath - shoes = /obj/item/clothing/shoes/sneakers/black - r_pocket = /obj/item/melee/transforming/energy/sword/cx - suit = /obj/item/clothing/suit/space/hardsuit/lavaknight - suit_store = /obj/item/tank/internals/oxygen - id = /obj/item/card/id/knight - -/datum/outfit/lavaknight/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - if(visualsOnly) - return - - var/obj/item/card/id/knight/W = H.wear_id - W.assignment = "Knight" - W.registered_name = H.real_name - W.id_color = "#0000FF" //Regular knights get simple blue. Doesn't matter much because it's variable anyway - W.update_label(H.real_name) - W.update_icon() - -/datum/outfit/lavaknight/captain - name ="Cydonian Knight Captain" - l_pocket = /obj/item/twohanded/dualsaber/hypereutactic - -/datum/outfit/lavaknight/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - if(visualsOnly) - return - - var/obj/item/card/id/knight/W = H.wear_id - W.assignment = "Knight Captain" - W.registered_name = H.real_name - W.id_color = "#FFD700" //Captains get gold, duh. Doesn't matter because it's variable anyway - W.update_label(H.real_name) - W.update_icon() - - -/obj/effect/mob_spawn/human/lavaknight/captain - name = "odd gilded cryogenics pod" - desc = "A humming cryo pod that appears to be gilded. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant." - flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \ - You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \ - Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth. \ - You feel a natural instict to lead, and as such, you should strive to lead your comrades to safety, and hopefully home. You also feel a burning determination to uphold your vow, as well as your fellow comrade's." - outfit = /datum/outfit/lavaknight/captain diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 7e7038cb31..6dff621271 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -452,3 +452,9 @@ datum/gear/darksabresheath category = SLOT_HEAD path = /obj/item/clothing/head/flight ckeywhitelist = list("maxlynchy") + +/datum/gear/onionneck + name = "Onion Necklace" + category = SLOT_NECK + path = /obj/item/clothing/neck/necklace/onion + ckeywhitelist = list("cdrcross") diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 0a353e3f5d..5584181a70 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -32,7 +32,6 @@ WRITE_FILE(S["feature_ipc_antenna"], features["ipc_antenna"]) //Citadel WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"]) - WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"]) WRITE_FILE(S["feature_mcolor2"], features["mcolor2"]) WRITE_FILE(S["feature_mcolor3"], features["mcolor3"]) WRITE_FILE(S["feature_mam_body_markings"], features["mam_body_markings"]) diff --git a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm index 1b13ba5dc8..5e488b9837 100644 --- a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm +++ b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm @@ -6,30 +6,28 @@ icon_state = "s-ninja" item_state = "s-ninja" -/obj/item/clothing/glasses/phantomthief/Initialize() +/obj/item/clothing/glasses/phantomthief/ComponentInitialize() . = ..() - AddComponent(/datum/component/phantomthief) + AddComponent(/datum/component/wearertargeting/phantomthief) /obj/item/clothing/glasses/phantomthief/syndicate name = "suspicious plastic mask" desc = "A cheap, bulky, Syndicate-branded plastic face mask. You have to break in to break out." var/nextadrenalinepop - var/datum/component/redirect/combattoggle_redir -/obj/item/clothing/glasses/phantomthief/syndicate/examine(user) +/obj/item/clothing/glasses/phantomthief/syndicate/examine(mob/user) . = ..() - if(combattoggle_redir) + if(user.get_item_by_slot(SLOT_GLASSES) == src) if(world.time >= nextadrenalinepop) to_chat(user, "The built-in adrenaline injector is ready for use.") else to_chat(user, "[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again.") /obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate) - if(istype(user)) - if(combatmodestate && world.time >= nextadrenalinepop) - nextadrenalinepop = world.time + 5 MINUTES - user.reagents.add_reagent("syndicateadrenals", 5) - user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) + if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) + nextadrenalinepop = world.time + 5 MINUTES + user.reagents.add_reagent("syndicateadrenals", 5) + user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) /obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot) . = ..() @@ -37,12 +35,10 @@ return if(slot != SLOT_GLASSES) return - if(!combattoggle_redir) - combattoggle_redir = user.AddComponent(/datum/component/redirect, list(COMSIG_COMBAT_TOGGLED = CALLBACK(src, .proc/injectadrenaline))) + RegisterSignal(user, COMSIG_COMBAT_TOGGLED, .proc/injectadrenaline) /obj/item/clothing/glasses/phantomthief/syndicate/dropped(mob/user) . = ..() if(!istype(user)) return - if(combattoggle_redir) - QDEL_NULL(combattoggle_redir) + UnregisterSignal(user, COMSIG_COMBAT_TOGGLED) diff --git a/modular_citadel/code/modules/clothing/spacesuits/cydonian_armor.dm b/modular_citadel/code/modules/clothing/spacesuits/cydonian_armor.dm deleted file mode 100644 index 423bc536ac..0000000000 --- a/modular_citadel/code/modules/clothing/spacesuits/cydonian_armor.dm +++ /dev/null @@ -1,176 +0,0 @@ -/* - CYDONIAN ARMOR THAT IS RGB AND STUFF WOOOOOOOOOO -*/ - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight - name = "cydonian helmet" - desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips." - icon = 'modular_citadel/icons/lavaknight/item/head.dmi' - icon_state = "knight_cydonia" - item_state = "knight_yellow" - item_color = null - alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/head.dmi' - max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - resistance_flags = FIRE_PROOF | LAVA_PROOF - heat_protection = HEAD - armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100) - brightness_on = 7 - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) - var/energy_color = "#35FFF0" - var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null - mutantrace_variation = NO_MUTANTRACE_VARIATION - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/New() - ..() - if(istype(loc, /obj/item/clothing/suit/space/hardsuit/lavaknight)) - linkedsuit = loc - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/attack_self(mob/user) - on = !on - - if(on) - set_light(brightness_on) - else - set_light(0) - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/update_icon() - var/mutable_appearance/helm_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - - if(energy_color) - helm_overlay.color = energy_color - - helm_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15, HUD is 18 - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(helm_overlay) - - emissivelights() - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/equipped(mob/user, slot) - ..() - if(slot == SLOT_HEAD) - emissivelights() - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/dropped(mob/user) - ..() - emissivelightsoff() - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr) - var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - energy_overlay.color = energy_color - energy_overlay.plane = LIGHTING_PLANE + 1 - user.cut_overlay(energy_overlay) //honk - user.add_overlay(energy_overlay) //honk - -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr) - user.cut_overlay() - linkedsuit.emissivelights() //HONK HONK HONK MAXIMUM SPAGHETTI - user.regenerate_icons() //honk - -/obj/item/clothing/suit/space/hardsuit/lavaknight - icon = 'modular_citadel/icons/lavaknight/item/suit.dmi' - icon_state = "knight_cydonia" - name = "cydonian armor" - desc = "A suit designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips." - item_state = "swat_suit" - alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/suit.dmi' - max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - resistance_flags = FIRE_PROOF | LAVA_PROOF - armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight - heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - actions_types = list(/datum/action/item_action/toggle_helmet) - var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/linkedhelm - tauric = TRUE //Citadel Add for tauric hardsuits - - var/energy_color = "#35FFF0" - -/obj/item/clothing/suit/space/hardsuit/lavaknight/New() - ..() - if(helmet) - linkedhelm = helmet - light_color = energy_color - set_light(1) - -/obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize() - ..() - update_icon() - -/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon() - var/mutable_appearance/suit_overlay - - if(taurmode == SNEK_TAURIC) - suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - else if(taurmode == PAW_TAURIC) - suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - else - suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - - if(energy_color) - suit_overlay.color = energy_color - - suit_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15. - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(suit_overlay) - -/obj/item/clothing/suit/space/hardsuit/lavaknight/equipped(mob/user, slot) - ..() - if(slot == SLOT_WEAR_SUIT) - emissivelights() - -/obj/item/clothing/suit/space/hardsuit/lavaknight/dropped(mob/user) - ..() - emissivelightsoff() - -/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr) - var/mutable_appearance/energy_overlay - if(taurmode == SNEK_TAURIC) - energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - else if(taurmode == PAW_TAURIC) - energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - else - energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1) - - energy_overlay.color = energy_color - energy_overlay.plane = LIGHTING_PLANE + 1 - user.cut_overlay(energy_overlay) //honk - user.add_overlay(energy_overlay) //honk - -/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr) - user.cut_overlays() - user.regenerate_icons() //honk - -/obj/item/clothing/suit/space/hardsuit/lavaknight/AltClick(mob/living/user) - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - if(!in_range(src, user)) - return - if(user.incapacitated() || !istype(user) || !in_range(src, user)) - return - - if(alert("Are you sure you want to recolor your armor stripes?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"","Choose Energy Color",energy_color) as color|null - if(energy_color_input) - energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - user.update_inv_wear_suit() - if(linkedhelm) - linkedhelm.energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - user.update_inv_head() - linkedhelm.update_icon() - update_icon() - user.update_inv_wear_suit() - light_color = energy_color - emissivelights() - update_light() - -/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") \ No newline at end of file diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 32c73cc40a..11dbb4dc80 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -501,3 +501,11 @@ item_state = "flight-g" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' + +/obj/item/clothing/neck/necklace/onion + name = "Onion Necklace" + desc = "A string of onions sequenced together to form a necklace." + icon = 'icons/obj/custom.dmi' + icon_state = "onion" + item_state = "onion" + alternate_worn_icon = 'icons/mob/custom_w.dmi' diff --git a/modular_citadel/code/modules/events/blob.dm b/modular_citadel/code/modules/events/blob.dm deleted file mode 100644 index e8e7106f5e..0000000000 --- a/modular_citadel/code/modules/events/blob.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/round_event_control/blob - earliest_start = 60 MINUTES diff --git a/modular_citadel/code/modules/events/wizard/magicarp.dm b/modular_citadel/code/modules/events/wizard/magicarp.dm deleted file mode 100644 index 10d269c698..0000000000 --- a/modular_citadel/code/modules/events/wizard/magicarp.dm +++ /dev/null @@ -1,2 +0,0 @@ -/mob/living/simple_animal/hostile/carp/ranged - gold_core_spawnable = NO_SPAWN diff --git a/modular_citadel/code/modules/jobs/dresscode_values.dm b/modular_citadel/code/modules/jobs/dresscode_values.dm deleted file mode 100644 index 24cd5c5ac9..0000000000 --- a/modular_citadel/code/modules/jobs/dresscode_values.dm +++ /dev/null @@ -1,8 +0,0 @@ -//This file controls whether or not a job complies with dresscodes. -//If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack. - -/datum/job - var/dresscodecompliant = TRUE - -/datum/job/assistant - dresscodecompliant = FALSE \ No newline at end of file diff --git a/modular_citadel/code/modules/jobs/job_types/captain.dm b/modular_citadel/code/modules/jobs/job_types/captain.dm deleted file mode 100644 index 7135e86507..0000000000 --- a/modular_citadel/code/modules/jobs/job_types/captain.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/captain - minimal_player_age = 20 - exp_type = EXP_TYPE_COMMAND - -/datum/job/hop - minimal_player_age = 20 - exp_type_department = EXP_TYPE_SERVICE - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, - ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, - ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, - ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, - ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) - diff --git a/modular_citadel/code/modules/jobs/job_types/cargo_service.dm b/modular_citadel/code/modules/jobs/job_types/cargo_service.dm deleted file mode 100644 index 965b554f3c..0000000000 --- a/modular_citadel/code/modules/jobs/job_types/cargo_service.dm +++ /dev/null @@ -1,31 +0,0 @@ -/datum/job/bartender - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM) - -/datum/job/qm - department_head = list("Captain") - supervisors = "the captain" - req_admin_notify = 1 - minimal_player_age = 10 - exp_requirements = 180 - exp_type_department = EXP_TYPE_SUPPLY - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS) - -/datum/outfit/job/quartermaster - id = /obj/item/card/id/silver - ears = /obj/item/radio/headset/heads/qm - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) - -/datum/job/cargo_tech - department_head = list("Quartermaster") - supervisors = "the quartermaster" - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) - -/datum/job/mining - department_head = list("Quartermaster") - supervisors = "the quartermaster" - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) \ No newline at end of file diff --git a/modular_citadel/code/modules/jobs/job_types/engineering.dm b/modular_citadel/code/modules/jobs/job_types/engineering.dm deleted file mode 100644 index 4d6aa4119d..0000000000 --- a/modular_citadel/code/modules/jobs/job_types/engineering.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/job/chief_engineer - minimal_player_age = 10 - -/datum/job/engineer - access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) - -/datum/job/atmos - access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINE, - ACCESS_ENGINE_EQUIP, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) diff --git a/modular_citadel/code/modules/jobs/job_types/medical.dm b/modular_citadel/code/modules/jobs/job_types/medical.dm deleted file mode 100644 index 15841ad9d5..0000000000 --- a/modular_citadel/code/modules/jobs/job_types/medical.dm +++ /dev/null @@ -1,8 +0,0 @@ -/datum/job/cmo - minimal_player_age = 10 - -/datum/outfit/job/doctor - backpack_contents = list(/obj/item/storage/hypospraykit/regular) - -/datum/outfit/job/chemist - backpack_contents = list(/obj/item/storage/hypospraykit/regular) diff --git a/modular_citadel/code/modules/jobs/job_types/science.dm b/modular_citadel/code/modules/jobs/job_types/science.dm deleted file mode 100644 index 94272d24a6..0000000000 --- a/modular_citadel/code/modules/jobs/job_types/science.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/job/rd - minimal_player_age = 10 diff --git a/modular_citadel/code/modules/jobs/job_types/security.dm b/modular_citadel/code/modules/jobs/job_types/security.dm deleted file mode 100644 index de00f2d948..0000000000 --- a/modular_citadel/code/modules/jobs/job_types/security.dm +++ /dev/null @@ -1,5 +0,0 @@ -/datum/job/hos - minimal_player_age = 10 - -/datum/outfit/job/warden - suit_store = /obj/item/gun/energy/pumpaction/defender diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 43931db689..02b98bdbf2 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -18,9 +18,13 @@ return FALSE return . -/mob/living/carbon/proc/toggle_combat_mode() +/mob/living/carbon/proc/toggle_combat_mode(forced) if(recoveringstam) return TRUE + if(!forced) + for(var/datum/status_effect/S in status_effects) + if(S.blocks_combatmode) + return TRUE combatmode = !combatmode if(voremode) toggle_vore_mode() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm index e0d592827e..e5d386b56b 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human.dm @@ -1,12 +1,3 @@ -/mob/living/carbon/human/species/mammal - race = /datum/species/mammal - -/mob/living/carbon/human/species/insect - race = /datum/species/insect - -/mob/living/carbon/human/species/xeno - race = /datum/species/xeno - /mob/living/proc/resist_embedded() return diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index ac79ea7f25..16bf776171 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -13,7 +13,7 @@ var/sprint_buffer_max = 42 var/sprint_buffer_regen_ds = 0.3 //Tiles per world.time decisecond var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math. - var/sprint_stamina_cost = 0.55 //stamina loss per tile while insufficient sprint buffer. + var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer. //---End /mob/living/movement_delay(ignorewalk = 0) @@ -116,7 +116,7 @@ to_chat(src, "You're too exhausted to keep going...") resting = TRUE if(combatmode) - toggle_combat_mode() + toggle_combat_mode(TRUE) recoveringstam = TRUE filters += CIT_FILTER_STAMINACRIT update_canmove() diff --git a/modular_citadel/code/modules/mob/living/silicon/ai/vox_sounds.dm b/modular_citadel/code/modules/mob/living/silicon/ai/vox_sounds.dm deleted file mode 100644 index b1e112aac5..0000000000 --- a/modular_citadel/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ /dev/null @@ -1,633 +0,0 @@ -// List is required to compile the resources into the game when it loads. -// Dynamically loading it has bad results with sounds overtaking each other, even with the wait variable. -#ifdef AI_VOX - -GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'modular_citadel/sound/vox/_comma.ogg', -"." = 'modular_citadel/sound/vox/_period.ogg', -"a" = 'modular_citadel/sound/vox/a.ogg', -"accelerating" = 'modular_citadel/sound/vox/accelerating.ogg', -"accelerator" = 'modular_citadel/sound/vox/accelerator.ogg', -"accepted" = 'modular_citadel/sound/vox/accepted.ogg', -"access" = 'modular_citadel/sound/vox/access.ogg', -"acknowledge" = 'modular_citadel/sound/vox/acknowledge.ogg', -"acknowledged" = 'modular_citadel/sound/vox/acknowledged.ogg', -"acquired" = 'modular_citadel/sound/vox/acquired.ogg', -"acquisition" = 'modular_citadel/sound/vox/acquisition.ogg', -"across" = 'modular_citadel/sound/vox/across.ogg', -"activate" = 'modular_citadel/sound/vox/activate.ogg', -"activated" = 'modular_citadel/sound/vox/activated.ogg', -"activity" = 'modular_citadel/sound/vox/activity.ogg', -"adios" = 'modular_citadel/sound/vox/adios.ogg', -"administration" = 'modular_citadel/sound/vox/administration.ogg', -"advanced" = 'modular_citadel/sound/vox/advanced.ogg', -"after" = 'modular_citadel/sound/vox/after.ogg', -"agent" = 'modular_citadel/sound/vox/agent.ogg', -"alarm" = 'modular_citadel/sound/vox/alarm.ogg', -"alert" = 'modular_citadel/sound/vox/alert.ogg', -"alien" = 'modular_citadel/sound/vox/alien.ogg', -"aligned" = 'modular_citadel/sound/vox/aligned.ogg', -"all" = 'modular_citadel/sound/vox/all.ogg', -"alpha" = 'modular_citadel/sound/vox/alpha.ogg', -"am" = 'modular_citadel/sound/vox/am.ogg', -"amigo" = 'modular_citadel/sound/vox/amigo.ogg', -"ammunition" = 'modular_citadel/sound/vox/ammunition.ogg', -"an" = 'modular_citadel/sound/vox/an.ogg', -"and" = 'modular_citadel/sound/vox/and.ogg', -"announcement" = 'modular_citadel/sound/vox/announcement.ogg', -"anomalous" = 'modular_citadel/sound/vox/anomalous.ogg', -"antenna" = 'modular_citadel/sound/vox/antenna.ogg', -"any" = 'modular_citadel/sound/vox/any.ogg', -"apprehend" = 'modular_citadel/sound/vox/apprehend.ogg', -"approach" = 'modular_citadel/sound/vox/approach.ogg', -"are" = 'modular_citadel/sound/vox/are.ogg', -"area" = 'modular_citadel/sound/vox/area.ogg', -"arm" = 'modular_citadel/sound/vox/arm.ogg', -"armed" = 'modular_citadel/sound/vox/armed.ogg', -"armor" = 'modular_citadel/sound/vox/armor.ogg', -"armory" = 'modular_citadel/sound/vox/armory.ogg', -"arrest" = 'modular_citadel/sound/vox/arrest.ogg', -"ass" = 'modular_citadel/sound/vox/ass.ogg', -"at" = 'modular_citadel/sound/vox/at.ogg', -"atomic" = 'modular_citadel/sound/vox/atomic.ogg', -"attention" = 'modular_citadel/sound/vox/attention.ogg', -"authorize" = 'modular_citadel/sound/vox/authorize.ogg', -"authorized" = 'modular_citadel/sound/vox/authorized.ogg', -"automatic" = 'modular_citadel/sound/vox/automatic.ogg', -"away" = 'modular_citadel/sound/vox/away.ogg', -"b" = 'modular_citadel/sound/vox/b.ogg', -"back" = 'modular_citadel/sound/vox/back.ogg', -"backman" = 'modular_citadel/sound/vox/backman.ogg', -"bad" = 'modular_citadel/sound/vox/bad.ogg', -"bag" = 'modular_citadel/sound/vox/bag.ogg', -"bailey" = 'modular_citadel/sound/vox/bailey.ogg', -"barracks" = 'modular_citadel/sound/vox/barracks.ogg', -"base" = 'modular_citadel/sound/vox/base.ogg', -"bay" = 'modular_citadel/sound/vox/bay.ogg', -"be" = 'modular_citadel/sound/vox/be.ogg', -"been" = 'modular_citadel/sound/vox/been.ogg', -"before" = 'modular_citadel/sound/vox/before.ogg', -"beyond" = 'modular_citadel/sound/vox/beyond.ogg', -"biohazard" = 'modular_citadel/sound/vox/biohazard.ogg', -"biological" = 'modular_citadel/sound/vox/biological.ogg', -"birdwell" = 'modular_citadel/sound/vox/birdwell.ogg', -"bizwarn" = 'modular_citadel/sound/vox/bizwarn.ogg', -"black" = 'modular_citadel/sound/vox/black.ogg', -"blast" = 'modular_citadel/sound/vox/blast.ogg', -"blocked" = 'modular_citadel/sound/vox/blocked.ogg', -"bloop" = 'modular_citadel/sound/vox/bloop.ogg', -"blue" = 'modular_citadel/sound/vox/blue.ogg', -"bottom" = 'modular_citadel/sound/vox/bottom.ogg', -"bravo" = 'modular_citadel/sound/vox/bravo.ogg', -"breach" = 'modular_citadel/sound/vox/breach.ogg', -"breached" = 'modular_citadel/sound/vox/breached.ogg', -"break" = 'modular_citadel/sound/vox/break.ogg', -"bridge" = 'modular_citadel/sound/vox/bridge.ogg', -"bust" = 'modular_citadel/sound/vox/bust.ogg', -"but" = 'modular_citadel/sound/vox/but.ogg', -"button" = 'modular_citadel/sound/vox/button.ogg', -"buzwarn" = 'modular_citadel/sound/vox/buzwarn.ogg', -"bypass" = 'modular_citadel/sound/vox/bypass.ogg', -"c" = 'modular_citadel/sound/vox/c.ogg', -"cable" = 'modular_citadel/sound/vox/cable.ogg', -"call" = 'modular_citadel/sound/vox/call.ogg', -"called" = 'modular_citadel/sound/vox/called.ogg', -"canal" = 'modular_citadel/sound/vox/canal.ogg', -"cap" = 'modular_citadel/sound/vox/cap.ogg', -"captain" = 'modular_citadel/sound/vox/captain.ogg', -"capture" = 'modular_citadel/sound/vox/capture.ogg', -"captured" = 'modular_citadel/sound/vox/captured.ogg', -"ceiling" = 'modular_citadel/sound/vox/ceiling.ogg', -"celsius" = 'modular_citadel/sound/vox/celsius.ogg', -"center" = 'modular_citadel/sound/vox/center.ogg', -"centi" = 'modular_citadel/sound/vox/centi.ogg', -"central" = 'modular_citadel/sound/vox/central.ogg', -"chamber" = 'modular_citadel/sound/vox/chamber.ogg', -"charlie" = 'modular_citadel/sound/vox/charlie.ogg', -"check" = 'modular_citadel/sound/vox/check.ogg', -"checkpoint" = 'modular_citadel/sound/vox/checkpoint.ogg', -"chemical" = 'modular_citadel/sound/vox/chemical.ogg', -"cleanup" = 'modular_citadel/sound/vox/cleanup.ogg', -"clear" = 'modular_citadel/sound/vox/clear.ogg', -"clearance" = 'modular_citadel/sound/vox/clearance.ogg', -"close" = 'modular_citadel/sound/vox/close.ogg', -"clown" = 'modular_citadel/sound/vox/clown.ogg', -"code" = 'modular_citadel/sound/vox/code.ogg', -"coded" = 'modular_citadel/sound/vox/coded.ogg', -"collider" = 'modular_citadel/sound/vox/collider.ogg', -"command" = 'modular_citadel/sound/vox/command.ogg', -"communication" = 'modular_citadel/sound/vox/communication.ogg', -"complex" = 'modular_citadel/sound/vox/complex.ogg', -"computer" = 'modular_citadel/sound/vox/computer.ogg', -"condition" = 'modular_citadel/sound/vox/condition.ogg', -"containment" = 'modular_citadel/sound/vox/containment.ogg', -"contamination" = 'modular_citadel/sound/vox/contamination.ogg', -"control" = 'modular_citadel/sound/vox/control.ogg', -"coolant" = 'modular_citadel/sound/vox/coolant.ogg', -"coomer" = 'modular_citadel/sound/vox/coomer.ogg', -"core" = 'modular_citadel/sound/vox/core.ogg', -"correct" = 'modular_citadel/sound/vox/correct.ogg', -"corridor" = 'modular_citadel/sound/vox/corridor.ogg', -"crew" = 'modular_citadel/sound/vox/crew.ogg', -"cross" = 'modular_citadel/sound/vox/cross.ogg', -"cryogenic" = 'modular_citadel/sound/vox/cryogenic.ogg', -"d" = 'modular_citadel/sound/vox/d.ogg', -"dadeda" = 'modular_citadel/sound/vox/dadeda.ogg', -"damage" = 'modular_citadel/sound/vox/damage.ogg', -"damaged" = 'modular_citadel/sound/vox/damaged.ogg', -"danger" = 'modular_citadel/sound/vox/danger.ogg', -"day" = 'modular_citadel/sound/vox/day.ogg', -"deactivated" = 'modular_citadel/sound/vox/deactivated.ogg', -"decompression" = 'modular_citadel/sound/vox/decompression.ogg', -"decontamination" = 'modular_citadel/sound/vox/decontamination.ogg', -"deeoo" = 'modular_citadel/sound/vox/deeoo.ogg', -"defense" = 'modular_citadel/sound/vox/defense.ogg', -"degrees" = 'modular_citadel/sound/vox/degrees.ogg', -"delta" = 'modular_citadel/sound/vox/delta.ogg', -"denied" = 'modular_citadel/sound/vox/denied.ogg', -"deploy" = 'modular_citadel/sound/vox/deploy.ogg', -"deployed" = 'modular_citadel/sound/vox/deployed.ogg', -"destroy" = 'modular_citadel/sound/vox/destroy.ogg', -"destroyed" = 'modular_citadel/sound/vox/destroyed.ogg', -"detain" = 'modular_citadel/sound/vox/detain.ogg', -"detected" = 'modular_citadel/sound/vox/detected.ogg', -"detonation" = 'modular_citadel/sound/vox/detonation.ogg', -"device" = 'modular_citadel/sound/vox/device.ogg', -"did" = 'modular_citadel/sound/vox/did.ogg', -"die" = 'modular_citadel/sound/vox/die.ogg', -"dimensional" = 'modular_citadel/sound/vox/dimensional.ogg', -"dirt" = 'modular_citadel/sound/vox/dirt.ogg', -"disengaged" = 'modular_citadel/sound/vox/disengaged.ogg', -"dish" = 'modular_citadel/sound/vox/dish.ogg', -"disposal" = 'modular_citadel/sound/vox/disposal.ogg', -"distance" = 'modular_citadel/sound/vox/distance.ogg', -"distortion" = 'modular_citadel/sound/vox/distortion.ogg', -"do" = 'modular_citadel/sound/vox/do.ogg', -"doctor" = 'modular_citadel/sound/vox/doctor.ogg', -"doop" = 'modular_citadel/sound/vox/doop.ogg', -"door" = 'modular_citadel/sound/vox/door.ogg', -"down" = 'modular_citadel/sound/vox/down.ogg', -"dual" = 'modular_citadel/sound/vox/dual.ogg', -"duct" = 'modular_citadel/sound/vox/duct.ogg', -"e" = 'modular_citadel/sound/vox/e.ogg', -"east" = 'modular_citadel/sound/vox/east.ogg', -"echo" = 'modular_citadel/sound/vox/echo.ogg', -"ed" = 'modular_citadel/sound/vox/ed.ogg', -"effect" = 'modular_citadel/sound/vox/effect.ogg', -"egress" = 'modular_citadel/sound/vox/egress.ogg', -"eight" = 'modular_citadel/sound/vox/eight.ogg', -"eighteen" = 'modular_citadel/sound/vox/eighteen.ogg', -"eighty" = 'modular_citadel/sound/vox/eighty.ogg', -"electric" = 'modular_citadel/sound/vox/electric.ogg', -"electromagnetic" = 'modular_citadel/sound/vox/electromagnetic.ogg', -"elevator" = 'modular_citadel/sound/vox/elevator.ogg', -"eleven" = 'modular_citadel/sound/vox/eleven.ogg', -"eliminate" = 'modular_citadel/sound/vox/eliminate.ogg', -"emergency" = 'modular_citadel/sound/vox/emergency.ogg', -"enemy" = 'modular_citadel/sound/vox/enemy.ogg', -"energy" = 'modular_citadel/sound/vox/energy.ogg', -"engage" = 'modular_citadel/sound/vox/engage.ogg', -"engaged" = 'modular_citadel/sound/vox/engaged.ogg', -"engine" = 'modular_citadel/sound/vox/engine.ogg', -"enter" = 'modular_citadel/sound/vox/enter.ogg', -"entry" = 'modular_citadel/sound/vox/entry.ogg', -"environment" = 'modular_citadel/sound/vox/environment.ogg', -"error" = 'modular_citadel/sound/vox/error.ogg', -"escape" = 'modular_citadel/sound/vox/escape.ogg', -"evacuate" = 'modular_citadel/sound/vox/evacuate.ogg', -"exchange" = 'modular_citadel/sound/vox/exchange.ogg', -"exit" = 'modular_citadel/sound/vox/exit.ogg', -"expect" = 'modular_citadel/sound/vox/expect.ogg', -"experiment" = 'modular_citadel/sound/vox/experiment.ogg', -"experimental" = 'modular_citadel/sound/vox/experimental.ogg', -"explode" = 'modular_citadel/sound/vox/explode.ogg', -"explosion" = 'modular_citadel/sound/vox/explosion.ogg', -"exposure" = 'modular_citadel/sound/vox/exposure.ogg', -"exterminate" = 'modular_citadel/sound/vox/exterminate.ogg', -"extinguish" = 'modular_citadel/sound/vox/extinguish.ogg', -"extinguisher" = 'modular_citadel/sound/vox/extinguisher.ogg', -"extreme" = 'modular_citadel/sound/vox/extreme.ogg', -"f" = 'modular_citadel/sound/vox/f.ogg', -"face" = 'modular_citadel/sound/vox/face.ogg', -"facility" = 'modular_citadel/sound/vox/facility.ogg', -"fahrenheit" = 'modular_citadel/sound/vox/fahrenheit.ogg', -"failed" = 'modular_citadel/sound/vox/failed.ogg', -"failure" = 'modular_citadel/sound/vox/failure.ogg', -"farthest" = 'modular_citadel/sound/vox/farthest.ogg', -"fast" = 'modular_citadel/sound/vox/fast.ogg', -"feet" = 'modular_citadel/sound/vox/feet.ogg', -"field" = 'modular_citadel/sound/vox/field.ogg', -"fifteen" = 'modular_citadel/sound/vox/fifteen.ogg', -"fifth" = 'modular_citadel/sound/vox/fifth.ogg', -"fifty" = 'modular_citadel/sound/vox/fifty.ogg', -"final" = 'modular_citadel/sound/vox/final.ogg', -"fine" = 'modular_citadel/sound/vox/fine.ogg', -"fire" = 'modular_citadel/sound/vox/fire.ogg', -"first" = 'modular_citadel/sound/vox/first.ogg', -"five" = 'modular_citadel/sound/vox/five.ogg', -"flag" = 'modular_citadel/sound/vox/flag.ogg', -"flooding" = 'modular_citadel/sound/vox/flooding.ogg', -"floor" = 'modular_citadel/sound/vox/floor.ogg', -"fool" = 'modular_citadel/sound/vox/fool.ogg', -"for" = 'modular_citadel/sound/vox/for.ogg', -"forbidden" = 'modular_citadel/sound/vox/forbidden.ogg', -"force" = 'modular_citadel/sound/vox/force.ogg', -"forms" = 'modular_citadel/sound/vox/forms.ogg', -"found" = 'modular_citadel/sound/vox/found.ogg', -"four" = 'modular_citadel/sound/vox/four.ogg', -"fourteen" = 'modular_citadel/sound/vox/fourteen.ogg', -"fourth" = 'modular_citadel/sound/vox/fourth.ogg', -"fourty" = 'modular_citadel/sound/vox/fourty.ogg', -"foxtrot" = 'modular_citadel/sound/vox/foxtrot.ogg', -"freeman" = 'modular_citadel/sound/vox/freeman.ogg', -"freezer" = 'modular_citadel/sound/vox/freezer.ogg', -"from" = 'modular_citadel/sound/vox/from.ogg', -"front" = 'modular_citadel/sound/vox/front.ogg', -"fuel" = 'modular_citadel/sound/vox/fuel.ogg', -"g" = 'modular_citadel/sound/vox/g.ogg', -"gay" = 'modular_citadel/sound/vox/gay.ogg', -"get" = 'modular_citadel/sound/vox/get.ogg', -"go" = 'modular_citadel/sound/vox/go.ogg', -"going" = 'modular_citadel/sound/vox/going.ogg', -"good" = 'modular_citadel/sound/vox/good.ogg', -"goodbye" = 'modular_citadel/sound/vox/goodbye.ogg', -"gordon" = 'modular_citadel/sound/vox/gordon.ogg', -"got" = 'modular_citadel/sound/vox/got.ogg', -"government" = 'modular_citadel/sound/vox/government.ogg', -"granted" = 'modular_citadel/sound/vox/granted.ogg', -"great" = 'modular_citadel/sound/vox/great.ogg', -"green" = 'modular_citadel/sound/vox/green.ogg', -"grenade" = 'modular_citadel/sound/vox/grenade.ogg', -"guard" = 'modular_citadel/sound/vox/guard.ogg', -"gulf" = 'modular_citadel/sound/vox/gulf.ogg', -"gun" = 'modular_citadel/sound/vox/gun.ogg', -"guthrie" = 'modular_citadel/sound/vox/guthrie.ogg', -"handling" = 'modular_citadel/sound/vox/handling.ogg', -"hangar" = 'modular_citadel/sound/vox/hangar.ogg', -"has" = 'modular_citadel/sound/vox/has.ogg', -"have" = 'modular_citadel/sound/vox/have.ogg', -"hazard" = 'modular_citadel/sound/vox/hazard.ogg', -"head" = 'modular_citadel/sound/vox/head.ogg', -"health" = 'modular_citadel/sound/vox/health.ogg', -"heat" = 'modular_citadel/sound/vox/heat.ogg', -"helicopter" = 'modular_citadel/sound/vox/helicopter.ogg', -"helium" = 'modular_citadel/sound/vox/helium.ogg', -"hello" = 'modular_citadel/sound/vox/hello.ogg', -"help" = 'modular_citadel/sound/vox/help.ogg', -"here" = 'modular_citadel/sound/vox/here.ogg', -"hide" = 'modular_citadel/sound/vox/hide.ogg', -"high" = 'modular_citadel/sound/vox/high.ogg', -"highest" = 'modular_citadel/sound/vox/highest.ogg', -"hit" = 'modular_citadel/sound/vox/hit.ogg', -"holds" = 'modular_citadel/sound/vox/holds.ogg', -"hole" = 'modular_citadel/sound/vox/hole.ogg', -"hostile" = 'modular_citadel/sound/vox/hostile.ogg', -"hot" = 'modular_citadel/sound/vox/hot.ogg', -"hotel" = 'modular_citadel/sound/vox/hotel.ogg', -"hour" = 'modular_citadel/sound/vox/hour.ogg', -"hours" = 'modular_citadel/sound/vox/hours.ogg', -"hundred" = 'modular_citadel/sound/vox/hundred.ogg', -"hydro" = 'modular_citadel/sound/vox/hydro.ogg', -"i" = 'modular_citadel/sound/vox/i.ogg', -"idiot" = 'modular_citadel/sound/vox/idiot.ogg', -"illegal" = 'modular_citadel/sound/vox/illegal.ogg', -"immediate" = 'modular_citadel/sound/vox/immediate.ogg', -"immediately" = 'modular_citadel/sound/vox/immediately.ogg', -"in" = 'modular_citadel/sound/vox/in.ogg', -"inches" = 'modular_citadel/sound/vox/inches.ogg', -"india" = 'modular_citadel/sound/vox/india.ogg', -"ing" = 'modular_citadel/sound/vox/ing.ogg', -"inoperative" = 'modular_citadel/sound/vox/inoperative.ogg', -"inside" = 'modular_citadel/sound/vox/inside.ogg', -"inspection" = 'modular_citadel/sound/vox/inspection.ogg', -"inspector" = 'modular_citadel/sound/vox/inspector.ogg', -"interchange" = 'modular_citadel/sound/vox/interchange.ogg', -"intruder" = 'modular_citadel/sound/vox/intruder.ogg', -"invallid" = 'modular_citadel/sound/vox/invallid.ogg', -"invasion" = 'modular_citadel/sound/vox/invasion.ogg', -"is" = 'modular_citadel/sound/vox/is.ogg', -"it" = 'modular_citadel/sound/vox/it.ogg', -"johnson" = 'modular_citadel/sound/vox/johnson.ogg', -"juliet" = 'modular_citadel/sound/vox/juliet.ogg', -"key" = 'modular_citadel/sound/vox/key.ogg', -"kill" = 'modular_citadel/sound/vox/kill.ogg', -"kilo" = 'modular_citadel/sound/vox/kilo.ogg', -"kit" = 'modular_citadel/sound/vox/kit.ogg', -"lab" = 'modular_citadel/sound/vox/lab.ogg', -"lambda" = 'modular_citadel/sound/vox/lambda.ogg', -"laser" = 'modular_citadel/sound/vox/laser.ogg', -"last" = 'modular_citadel/sound/vox/last.ogg', -"launch" = 'modular_citadel/sound/vox/launch.ogg', -"leak" = 'modular_citadel/sound/vox/leak.ogg', -"leave" = 'modular_citadel/sound/vox/leave.ogg', -"left" = 'modular_citadel/sound/vox/left.ogg', -"legal" = 'modular_citadel/sound/vox/legal.ogg', -"level" = 'modular_citadel/sound/vox/level.ogg', -"lever" = 'modular_citadel/sound/vox/lever.ogg', -"lie" = 'modular_citadel/sound/vox/lie.ogg', -"lieutenant" = 'modular_citadel/sound/vox/lieutenant.ogg', -"life" = 'modular_citadel/sound/vox/life.ogg', -"light" = 'modular_citadel/sound/vox/light.ogg', -"lima" = 'modular_citadel/sound/vox/lima.ogg', -"liquid" = 'modular_citadel/sound/vox/liquid.ogg', -"loading" = 'modular_citadel/sound/vox/loading.ogg', -"locate" = 'modular_citadel/sound/vox/locate.ogg', -"located" = 'modular_citadel/sound/vox/located.ogg', -"location" = 'modular_citadel/sound/vox/location.ogg', -"lock" = 'modular_citadel/sound/vox/lock.ogg', -"locked" = 'modular_citadel/sound/vox/locked.ogg', -"locker" = 'modular_citadel/sound/vox/locker.ogg', -"lockout" = 'modular_citadel/sound/vox/lockout.ogg', -"lower" = 'modular_citadel/sound/vox/lower.ogg', -"lowest" = 'modular_citadel/sound/vox/lowest.ogg', -"magnetic" = 'modular_citadel/sound/vox/magnetic.ogg', -"main" = 'modular_citadel/sound/vox/main.ogg', -"maintenance" = 'modular_citadel/sound/vox/maintenance.ogg', -"malfunction" = 'modular_citadel/sound/vox/malfunction.ogg', -"man" = 'modular_citadel/sound/vox/man.ogg', -"mass" = 'modular_citadel/sound/vox/mass.ogg', -"materials" = 'modular_citadel/sound/vox/materials.ogg', -"maximum" = 'modular_citadel/sound/vox/maximum.ogg', -"may" = 'modular_citadel/sound/vox/may.ogg', -"med" = 'modular_citadel/sound/vox/med.ogg', -"medical" = 'modular_citadel/sound/vox/medical.ogg', -"men" = 'modular_citadel/sound/vox/men.ogg', -"mercy" = 'modular_citadel/sound/vox/mercy.ogg', -"mesa" = 'modular_citadel/sound/vox/mesa.ogg', -"message" = 'modular_citadel/sound/vox/message.ogg', -"meter" = 'modular_citadel/sound/vox/meter.ogg', -"micro" = 'modular_citadel/sound/vox/micro.ogg', -"middle" = 'modular_citadel/sound/vox/middle.ogg', -"mike" = 'modular_citadel/sound/vox/mike.ogg', -"miles" = 'modular_citadel/sound/vox/miles.ogg', -"military" = 'modular_citadel/sound/vox/military.ogg', -"milli" = 'modular_citadel/sound/vox/milli.ogg', -"million" = 'modular_citadel/sound/vox/million.ogg', -"minefield" = 'modular_citadel/sound/vox/minefield.ogg', -"minimum" = 'modular_citadel/sound/vox/minimum.ogg', -"minutes" = 'modular_citadel/sound/vox/minutes.ogg', -"mister" = 'modular_citadel/sound/vox/mister.ogg', -"mode" = 'modular_citadel/sound/vox/mode.ogg', -"motor" = 'modular_citadel/sound/vox/motor.ogg', -"motorpool" = 'modular_citadel/sound/vox/motorpool.ogg', -"move" = 'modular_citadel/sound/vox/move.ogg', -"must" = 'modular_citadel/sound/vox/must.ogg', -"nearest" = 'modular_citadel/sound/vox/nearest.ogg', -"nice" = 'modular_citadel/sound/vox/nice.ogg', -"nine" = 'modular_citadel/sound/vox/nine.ogg', -"nineteen" = 'modular_citadel/sound/vox/nineteen.ogg', -"ninety" = 'modular_citadel/sound/vox/ninety.ogg', -"no" = 'modular_citadel/sound/vox/no.ogg', -"nominal" = 'modular_citadel/sound/vox/nominal.ogg', -"north" = 'modular_citadel/sound/vox/north.ogg', -"not" = 'modular_citadel/sound/vox/not.ogg', -"november" = 'modular_citadel/sound/vox/november.ogg', -"now" = 'modular_citadel/sound/vox/now.ogg', -"number" = 'modular_citadel/sound/vox/number.ogg', -"objective" = 'modular_citadel/sound/vox/objective.ogg', -"observation" = 'modular_citadel/sound/vox/observation.ogg', -"of" = 'modular_citadel/sound/vox/of.ogg', -"officer" = 'modular_citadel/sound/vox/officer.ogg', -"ok" = 'modular_citadel/sound/vox/ok.ogg', -"on" = 'modular_citadel/sound/vox/on.ogg', -"one" = 'modular_citadel/sound/vox/one.ogg', -"open" = 'modular_citadel/sound/vox/open.ogg', -"operating" = 'modular_citadel/sound/vox/operating.ogg', -"operations" = 'modular_citadel/sound/vox/operations.ogg', -"operative" = 'modular_citadel/sound/vox/operative.ogg', -"option" = 'modular_citadel/sound/vox/option.ogg', -"order" = 'modular_citadel/sound/vox/order.ogg', -"organic" = 'modular_citadel/sound/vox/organic.ogg', -"oscar" = 'modular_citadel/sound/vox/oscar.ogg', -"out" = 'modular_citadel/sound/vox/out.ogg', -"outside" = 'modular_citadel/sound/vox/outside.ogg', -"over" = 'modular_citadel/sound/vox/over.ogg', -"overload" = 'modular_citadel/sound/vox/overload.ogg', -"override" = 'modular_citadel/sound/vox/override.ogg', -"pacify" = 'modular_citadel/sound/vox/pacify.ogg', -"pain" = 'modular_citadel/sound/vox/pain.ogg', -"pal" = 'modular_citadel/sound/vox/pal.ogg', -"panel" = 'modular_citadel/sound/vox/panel.ogg', -"percent" = 'modular_citadel/sound/vox/percent.ogg', -"perimeter" = 'modular_citadel/sound/vox/perimeter.ogg', -"permitted" = 'modular_citadel/sound/vox/permitted.ogg', -"personnel" = 'modular_citadel/sound/vox/personnel.ogg', -"pipe" = 'modular_citadel/sound/vox/pipe.ogg', -"plant" = 'modular_citadel/sound/vox/plant.ogg', -"platform" = 'modular_citadel/sound/vox/platform.ogg', -"please" = 'modular_citadel/sound/vox/please.ogg', -"point" = 'modular_citadel/sound/vox/point.ogg', -"portal" = 'modular_citadel/sound/vox/portal.ogg', -"power" = 'modular_citadel/sound/vox/power.ogg', -"presence" = 'modular_citadel/sound/vox/presence.ogg', -"press" = 'modular_citadel/sound/vox/press.ogg', -"primary" = 'modular_citadel/sound/vox/primary.ogg', -"proceed" = 'modular_citadel/sound/vox/proceed.ogg', -"processing" = 'modular_citadel/sound/vox/processing.ogg', -"progress" = 'modular_citadel/sound/vox/progress.ogg', -"proper" = 'modular_citadel/sound/vox/proper.ogg', -"propulsion" = 'modular_citadel/sound/vox/propulsion.ogg', -"prosecute" = 'modular_citadel/sound/vox/prosecute.ogg', -"protective" = 'modular_citadel/sound/vox/protective.ogg', -"push" = 'modular_citadel/sound/vox/push.ogg', -"quantum" = 'modular_citadel/sound/vox/quantum.ogg', -"quebec" = 'modular_citadel/sound/vox/quebec.ogg', -"question" = 'modular_citadel/sound/vox/question.ogg', -"questioning" = 'modular_citadel/sound/vox/questioning.ogg', -"quick" = 'modular_citadel/sound/vox/quick.ogg', -"quit" = 'modular_citadel/sound/vox/quit.ogg', -"radiation" = 'modular_citadel/sound/vox/radiation.ogg', -"radioactive" = 'modular_citadel/sound/vox/radioactive.ogg', -"rads" = 'modular_citadel/sound/vox/rads.ogg', -"rapid" = 'modular_citadel/sound/vox/rapid.ogg', -"reach" = 'modular_citadel/sound/vox/reach.ogg', -"reached" = 'modular_citadel/sound/vox/reached.ogg', -"reactor" = 'modular_citadel/sound/vox/reactor.ogg', -"red" = 'modular_citadel/sound/vox/red.ogg', -"relay" = 'modular_citadel/sound/vox/relay.ogg', -"released" = 'modular_citadel/sound/vox/released.ogg', -"remaining" = 'modular_citadel/sound/vox/remaining.ogg', -"renegade" = 'modular_citadel/sound/vox/renegade.ogg', -"repair" = 'modular_citadel/sound/vox/repair.ogg', -"report" = 'modular_citadel/sound/vox/report.ogg', -"reports" = 'modular_citadel/sound/vox/reports.ogg', -"required" = 'modular_citadel/sound/vox/required.ogg', -"research" = 'modular_citadel/sound/vox/research.ogg', -"reset" = 'modular_citadel/sound/vox/reset.ogg', -"resevoir" = 'modular_citadel/sound/vox/resevoir.ogg', -"resistance" = 'modular_citadel/sound/vox/resistance.ogg', -"returned" = 'modular_citadel/sound/vox/returned.ogg', -"right" = 'modular_citadel/sound/vox/right.ogg', -"rocket" = 'modular_citadel/sound/vox/rocket.ogg', -"roger" = 'modular_citadel/sound/vox/roger.ogg', -"romeo" = 'modular_citadel/sound/vox/romeo.ogg', -"room" = 'modular_citadel/sound/vox/room.ogg', -"round" = 'modular_citadel/sound/vox/round.ogg', -"run" = 'modular_citadel/sound/vox/run.ogg', -"safe" = 'modular_citadel/sound/vox/safe.ogg', -"safety" = 'modular_citadel/sound/vox/safety.ogg', -"sargeant" = 'modular_citadel/sound/vox/sargeant.ogg', -"satellite" = 'modular_citadel/sound/vox/satellite.ogg', -"save" = 'modular_citadel/sound/vox/save.ogg', -"science" = 'modular_citadel/sound/vox/science.ogg', -"scores" = 'modular_citadel/sound/vox/scores.ogg', -"scream" = 'modular_citadel/sound/vox/scream.ogg', -"screen" = 'modular_citadel/sound/vox/screen.ogg', -"search" = 'modular_citadel/sound/vox/search.ogg', -"second" = 'modular_citadel/sound/vox/second.ogg', -"secondary" = 'modular_citadel/sound/vox/secondary.ogg', -"seconds" = 'modular_citadel/sound/vox/seconds.ogg', -"sector" = 'modular_citadel/sound/vox/sector.ogg', -"secure" = 'modular_citadel/sound/vox/secure.ogg', -"secured" = 'modular_citadel/sound/vox/secured.ogg', -"security" = 'modular_citadel/sound/vox/security.ogg', -"select" = 'modular_citadel/sound/vox/select.ogg', -"selected" = 'modular_citadel/sound/vox/selected.ogg', -"service" = 'modular_citadel/sound/vox/service.ogg', -"seven" = 'modular_citadel/sound/vox/seven.ogg', -"seventeen" = 'modular_citadel/sound/vox/seventeen.ogg', -"seventy" = 'modular_citadel/sound/vox/seventy.ogg', -"severe" = 'modular_citadel/sound/vox/severe.ogg', -"sewage" = 'modular_citadel/sound/vox/sewage.ogg', -"sewer" = 'modular_citadel/sound/vox/sewer.ogg', -"shield" = 'modular_citadel/sound/vox/shield.ogg', -"shipment" = 'modular_citadel/sound/vox/shipment.ogg', -"shock" = 'modular_citadel/sound/vox/shock.ogg', -"shoot" = 'modular_citadel/sound/vox/shoot.ogg', -"shower" = 'modular_citadel/sound/vox/shower.ogg', -"shut" = 'modular_citadel/sound/vox/shut.ogg', -"side" = 'modular_citadel/sound/vox/side.ogg', -"sierra" = 'modular_citadel/sound/vox/sierra.ogg', -"sight" = 'modular_citadel/sound/vox/sight.ogg', -"silo" = 'modular_citadel/sound/vox/silo.ogg', -"six" = 'modular_citadel/sound/vox/six.ogg', -"sixteen" = 'modular_citadel/sound/vox/sixteen.ogg', -"sixty" = 'modular_citadel/sound/vox/sixty.ogg', -"slime" = 'modular_citadel/sound/vox/slime.ogg', -"slow" = 'modular_citadel/sound/vox/slow.ogg', -"soldier" = 'modular_citadel/sound/vox/soldier.ogg', -"some" = 'modular_citadel/sound/vox/some.ogg', -"someone" = 'modular_citadel/sound/vox/someone.ogg', -"something" = 'modular_citadel/sound/vox/something.ogg', -"son" = 'modular_citadel/sound/vox/son.ogg', -"sorry" = 'modular_citadel/sound/vox/sorry.ogg', -"south" = 'modular_citadel/sound/vox/south.ogg', -"squad" = 'modular_citadel/sound/vox/squad.ogg', -"square" = 'modular_citadel/sound/vox/square.ogg', -"stairway" = 'modular_citadel/sound/vox/stairway.ogg', -"status" = 'modular_citadel/sound/vox/status.ogg', -"sterile" = 'modular_citadel/sound/vox/sterile.ogg', -"sterilization" = 'modular_citadel/sound/vox/sterilization.ogg', -"stolen" = 'modular_citadel/sound/vox/stolen.ogg', -"storage" = 'modular_citadel/sound/vox/storage.ogg', -"sub" = 'modular_citadel/sound/vox/sub.ogg', -"subsurface" = 'modular_citadel/sound/vox/subsurface.ogg', -"sudden" = 'modular_citadel/sound/vox/sudden.ogg', -"suit" = 'modular_citadel/sound/vox/suit.ogg', -"superconducting" = 'modular_citadel/sound/vox/superconducting.ogg', -"supercooled" = 'modular_citadel/sound/vox/supercooled.ogg', -"supply" = 'modular_citadel/sound/vox/supply.ogg', -"surface" = 'modular_citadel/sound/vox/surface.ogg', -"surrender" = 'modular_citadel/sound/vox/surrender.ogg', -"surround" = 'modular_citadel/sound/vox/surround.ogg', -"surrounded" = 'modular_citadel/sound/vox/surrounded.ogg', -"switch" = 'modular_citadel/sound/vox/switch.ogg', -"system" = 'modular_citadel/sound/vox/system.ogg', -"systems" = 'modular_citadel/sound/vox/systems.ogg', -"tactical" = 'modular_citadel/sound/vox/tactical.ogg', -"take" = 'modular_citadel/sound/vox/take.ogg', -"talk" = 'modular_citadel/sound/vox/talk.ogg', -"tango" = 'modular_citadel/sound/vox/tango.ogg', -"tank" = 'modular_citadel/sound/vox/tank.ogg', -"target" = 'modular_citadel/sound/vox/target.ogg', -"team" = 'modular_citadel/sound/vox/team.ogg', -"temperature" = 'modular_citadel/sound/vox/temperature.ogg', -"temporal" = 'modular_citadel/sound/vox/temporal.ogg', -"ten" = 'modular_citadel/sound/vox/ten.ogg', -"terminal" = 'modular_citadel/sound/vox/terminal.ogg', -"terminated" = 'modular_citadel/sound/vox/terminated.ogg', -"termination" = 'modular_citadel/sound/vox/termination.ogg', -"test" = 'modular_citadel/sound/vox/test.ogg', -"that" = 'modular_citadel/sound/vox/that.ogg', -"the" = 'modular_citadel/sound/vox/the.ogg', -"then" = 'modular_citadel/sound/vox/then.ogg', -"there" = 'modular_citadel/sound/vox/there.ogg', -"third" = 'modular_citadel/sound/vox/third.ogg', -"thirteen" = 'modular_citadel/sound/vox/thirteen.ogg', -"thirty" = 'modular_citadel/sound/vox/thirty.ogg', -"this" = 'modular_citadel/sound/vox/this.ogg', -"those" = 'modular_citadel/sound/vox/those.ogg', -"thousand" = 'modular_citadel/sound/vox/thousand.ogg', -"threat" = 'modular_citadel/sound/vox/threat.ogg', -"three" = 'modular_citadel/sound/vox/three.ogg', -"through" = 'modular_citadel/sound/vox/through.ogg', -"time" = 'modular_citadel/sound/vox/time.ogg', -"to" = 'modular_citadel/sound/vox/to.ogg', -"top" = 'modular_citadel/sound/vox/top.ogg', -"topside" = 'modular_citadel/sound/vox/topside.ogg', -"touch" = 'modular_citadel/sound/vox/touch.ogg', -"towards" = 'modular_citadel/sound/vox/towards.ogg', -"track" = 'modular_citadel/sound/vox/track.ogg', -"train" = 'modular_citadel/sound/vox/train.ogg', -"transportation" = 'modular_citadel/sound/vox/transportation.ogg', -"truck" = 'modular_citadel/sound/vox/truck.ogg', -"tunnel" = 'modular_citadel/sound/vox/tunnel.ogg', -"turn" = 'modular_citadel/sound/vox/turn.ogg', -"turret" = 'modular_citadel/sound/vox/turret.ogg', -"twelve" = 'modular_citadel/sound/vox/twelve.ogg', -"twenty" = 'modular_citadel/sound/vox/twenty.ogg', -"two" = 'modular_citadel/sound/vox/two.ogg', -"unauthorized" = 'modular_citadel/sound/vox/unauthorized.ogg', -"under" = 'modular_citadel/sound/vox/under.ogg', -"uniform" = 'modular_citadel/sound/vox/uniform.ogg', -"unlocked" = 'modular_citadel/sound/vox/unlocked.ogg', -"until" = 'modular_citadel/sound/vox/until.ogg', -"up" = 'modular_citadel/sound/vox/up.ogg', -"upper" = 'modular_citadel/sound/vox/upper.ogg', -"uranium" = 'modular_citadel/sound/vox/uranium.ogg', -"us" = 'modular_citadel/sound/vox/us.ogg', -"usa" = 'modular_citadel/sound/vox/usa.ogg', -"use" = 'modular_citadel/sound/vox/use.ogg', -"used" = 'modular_citadel/sound/vox/used.ogg', -"user" = 'modular_citadel/sound/vox/user.ogg', -"vacate" = 'modular_citadel/sound/vox/vacate.ogg', -"valid" = 'modular_citadel/sound/vox/valid.ogg', -"vapor" = 'modular_citadel/sound/vox/vapor.ogg', -"vent" = 'modular_citadel/sound/vox/vent.ogg', -"ventillation" = 'modular_citadel/sound/vox/ventillation.ogg', -"victor" = 'modular_citadel/sound/vox/victor.ogg', -"violated" = 'modular_citadel/sound/vox/violated.ogg', -"violation" = 'modular_citadel/sound/vox/violation.ogg', -"voltage" = 'modular_citadel/sound/vox/voltage.ogg', -"vox_login" = 'modular_citadel/sound/vox/vox_login.ogg', -"walk" = 'modular_citadel/sound/vox/walk.ogg', -"wall" = 'modular_citadel/sound/vox/wall.ogg', -"want" = 'modular_citadel/sound/vox/want.ogg', -"wanted" = 'modular_citadel/sound/vox/wanted.ogg', -"warm" = 'modular_citadel/sound/vox/warm.ogg', -"warn" = 'modular_citadel/sound/vox/warn.ogg', -"warning" = 'modular_citadel/sound/vox/warning.ogg', -"waste" = 'modular_citadel/sound/vox/waste.ogg', -"water" = 'modular_citadel/sound/vox/water.ogg', -"we" = 'modular_citadel/sound/vox/we.ogg', -"weapon" = 'modular_citadel/sound/vox/weapon.ogg', -"west" = 'modular_citadel/sound/vox/west.ogg', -"whiskey" = 'modular_citadel/sound/vox/whiskey.ogg', -"white" = 'modular_citadel/sound/vox/white.ogg', -"wilco" = 'modular_citadel/sound/vox/wilco.ogg', -"will" = 'modular_citadel/sound/vox/will.ogg', -"with" = 'modular_citadel/sound/vox/with.ogg', -"without" = 'modular_citadel/sound/vox/without.ogg', -"woop" = 'modular_citadel/sound/vox/woop.ogg', -"xeno" = 'modular_citadel/sound/vox/xeno.ogg', -"yankee" = 'modular_citadel/sound/vox/yankee.ogg', -"yards" = 'modular_citadel/sound/vox/yards.ogg', -"year" = 'modular_citadel/sound/vox/year.ogg', -"yellow" = 'modular_citadel/sound/vox/yellow.ogg', -"yes" = 'modular_citadel/sound/vox/yes.ogg', -"you" = 'modular_citadel/sound/vox/you.ogg', -"your" = 'modular_citadel/sound/vox/your.ogg', -"yourself" = 'modular_citadel/sound/vox/yourself.ogg', -"zero" = 'modular_citadel/sound/vox/zero.ogg', -"zone" = 'modular_citadel/sound/vox/zone.ogg', -"zulu" = 'modular_citadel/sound/vox/zulu.ogg',)) -#endif \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index de3f43f8ee..99ba9ad3e2 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -13,13 +13,23 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! w_class = 3 hitsound = 'sound/weapons/bite.ogg' sharpness = IS_SHARP + var/stamtostunconversion = 0.1 //Total stamloss gets multiplied by this value for the help intent hard stun. Resting adds an additional 2x multiplier on top. Keep this low or so help me god. + var/stuncooldown = 4 SECONDS //How long it takes before you're able to attempt to stun a target again + var/nextstuntime + +/obj/item/dogborg/jaws/examine(mob/user) + . = ..() + if(!CONFIG_GET(flag/weaken_secborg)) + to_chat(user, "Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.") /obj/item/dogborg/jaws/big name = "combat jaws" desc = "The jaws of the law. Very sharp." icon_state = "jaws" - force = 10 //Lowered to match secborg. No reason it should be more than a secborg's baton. + force = 15 //Chomp chomp. Crew harm. attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + stamtostunconversion = 0.2 // 100*0.2*2=40. Stun's just long enough to slap on cuffs with click delay if the target is near hard stamcrit. + stuncooldown = 6 SECONDS /obj/item/dogborg/jaws/small @@ -31,11 +41,36 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/status = 0 /obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user) - ..() - user.do_attack_animation(A, ATTACK_EFFECT_BITE) + if(!istype(user)) + return + if(!CONFIG_GET(flag/weaken_secborg) && user.a_intent != INTENT_HARM && istype(A, /mob/living)) + if(A == user.pulling) + to_chat(user, "You already have [A] in your jaws.") + return + if(nextstuntime >= world.time) + to_chat(user, "Your jaw servos are still recharging.") + return + nextstuntime = world.time + stuncooldown + var/mob/living/M = A + var/cachedstam = M.getStaminaLoss() + var/totalstuntime = cachedstam * stamtostunconversion * (M.lying ? 2 : 1) + if(!M.resting) + M.Knockdown(cachedstam*2) //BORK BORK. GET DOWN. + M.Stun(totalstuntime) + user.do_attack_animation(A, ATTACK_EFFECT_BITE) + user.start_pulling(M, TRUE) //Yip yip. Come with. + user.changeNext_move(CLICK_CD_MELEE) + M.visible_message("[user] clamps [user.p_their()] [src] onto [M] and latches on!", "[user] clamps [user.p_their()] [src] onto you and latches on!") + if(totalstuntime >= 4 SECONDS) + playsound(usr, 'sound/effects/k9_jaw_strong.ogg', 75, FALSE, 2) //Wuff wuff. Big stun. + else + playsound(usr, 'sound/effects/k9_jaw_weak.ogg', 50, TRUE, -1) //Arf arf. Pls buff. + else + . = ..() + user.do_attack_animation(A, ATTACK_EFFECT_BITE) /obj/item/dogborg/jaws/small/attack_self(mob/user) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(R.cell && R.cell.charge > 100) if(R.emagged && status == 0) name = "combat jaws" @@ -43,14 +78,18 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! desc = "The jaws of the law." force = 12 attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + stamtostunconversion = 0.15 + stuncooldown = 5 SECONDS status = 1 to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].") else name = "puppy jaws" icon_state = "smalljaws" desc = "The jaws of a small dog." - force = 5 + force = initial(force) attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") + stamtostunconversion = initial(stamtostunconversion) + stuncooldown = initial(stuncooldown) status = 0 if(R.emagged) to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].") @@ -143,7 +182,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /obj/item/storage/bag/borgdelivery/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_BULKY STR.max_combined_w_class = 5 STR.max_items = 1 @@ -167,7 +206,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! item_flags |= NOBLUDGEON //No more attack messages /obj/item/soap/tongue/attack_self(mob/user) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(R.cell && R.cell.charge > 100) if(R.emagged && status == 0) status = !status @@ -187,7 +226,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! update_icon() /obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(!proximity || !check_allowed_items(target)) return if(R.client && (target in R.client.screen)) @@ -307,8 +346,10 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /mob/living/silicon/robot var/leaping = 0 var/pounce_cooldown = 0 - var/pounce_cooldown_time = 20 //Buffed to counter balance changes - var/pounce_spoolup = 1 + var/pounce_cooldown_time = 30 //Time in deciseconds between pounces + var/pounce_spoolup = 5 //Time in deciseconds for the pounce to happen after clicking + var/pounce_stamloss_cap = 120 //How much staminaloss pounces alone are capable of bringing a spaceman to + var/pounce_stamloss = 80 //Base staminaloss value of the pounce var/leap_at var/disabler var/laser @@ -320,13 +361,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /obj/item/dogborg/pounce/afterattack(atom/A, mob/user) var/mob/living/silicon/robot/R = user - if(R && !R.pounce_cooldown) - R.pounce_cooldown = !R.pounce_cooldown + if(R && (world.time >= R.pounce_cooldown)) + R.pounce_cooldown = world.time + R.pounce_cooldown_time to_chat(R, "Your targeting systems lock on to [A]...") + playsound(R, 'sound/effects/servostep.ogg', 100, TRUE) addtimer(CALLBACK(R, /mob/living/silicon/robot.proc/leap_at, A), R.pounce_spoolup) - spawn(R.pounce_cooldown_time) - R.pounce_cooldown = !R.pounce_cooldown - else if(R && R.pounce_cooldown) + else if(R && (world.time < R.pounce_cooldown)) to_chat(R, "Your leg actuators are still recharging!") /mob/living/silicon/robot/proc/leap_at(atom/A) @@ -349,6 +389,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! update_icons() throw_at(A, MAX_K9_LEAP_DIST, 1, spin=0, diagonals_first = 1) cell.use(750) //Less than a stunbaton since stunbatons hit everytime. + playsound(src, 'sound/effects/stealthoff.ogg', 25, TRUE, -1) weather_immunities -= "lava" /mob/living/silicon/robot/throw_impact(atom/A) @@ -366,7 +407,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! blocked = 1 if(!blocked) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") - L.Knockdown(iscarbon(L) ? 225 : 45) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. + L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) sleep(2)//Runtime prevention (infinite bump() calls on hulks) step_towards(src,L) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm index b16ac1d586..feec79ee8b 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -13,7 +13,7 @@ /mob/living/silicon/robot/proc/get_cit_modules() var/list/modulelist = list() modulelist["MediHound"] = /obj/item/robot_module/medihound - if(!CONFIG_GET(flag/disable_secborg)) + if(BORG_SEC_AVAILABLE) modulelist["Security K-9"] = /obj/item/robot_module/k9 modulelist["Scrub Puppy"] = /obj/item/robot_module/scrubpup modulelist["Borgi"] = /obj/item/robot_module/borgi @@ -53,6 +53,7 @@ has_snowflake_deadsprite = TRUE dogborg = TRUE cyborg_pixel_offset = -16 + borghealth = 80 /obj/item/robot_module/k9/do_transform_animation() ..() diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index c7a2447be6..964ef65ebc 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -11,6 +11,7 @@ . = ..() if(!resting && !sprinting) . += 1 + . += speed /mob/living/silicon/robot/proc/togglesprint(shutdown = FALSE) //Basically a copypaste of the proc from /mob/living/carbon/human if(!shutdown && (!cell || cell.charge < 25)) diff --git a/modular_citadel/code/modules/mob/living/simple_animal/kiwi.dm b/modular_citadel/code/modules/mob/living/simple_animal/kiwi.dm deleted file mode 100644 index 27c1749011..0000000000 --- a/modular_citadel/code/modules/mob/living/simple_animal/kiwi.dm +++ /dev/null @@ -1,134 +0,0 @@ -/mob/living/simple_animal/kiwi - name = "space kiwi" - desc = "Exposure to low gravity made them grow larger." - gender = FEMALE - icon = 'modular_citadel/icons/mob/kiwi.dmi' - icon_state = "kiwi" - icon_living = "kiwi" - icon_dead = "dead" - speak = list("Chirp!","Cheep cheep chirp!!","Cheep.") - speak_emote = list("chirps","trills") - emote_hear = list("chirps.") - emote_see = list("pecks at the ground.","jumps in place.") - density = FALSE - speak_chance = 2 - turns_per_move = 3 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3) - var/egg_type = /obj/item/reagent_containers/food/snacks/egg/kiwiEgg - var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "kicks" - attacktext = "kicks" - health = 25 - maxHealth = 25 - ventcrawler = VENTCRAWLER_ALWAYS - var/eggsleft = 0 - var/eggsFertile = TRUE - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - var/list/feedMessages = list("It chirps happily.","It chirps happily.") - var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins chirping raucously.") - gold_core_spawnable = FRIENDLY_SPAWN - var/static/kiwi_count = 0 - -/mob/living/simple_animal/kiwi/Destroy() - --kiwi_count - return ..() - - -/mob/living/simple_animal/kiwi/Initialize() - . = ..() - ++kiwi_count - - -/mob/living/simple_animal/kiwi/Life() - . =..() - if(!.) - return - if((!stat && prob(3) && eggsleft > 0) && egg_type) - visible_message("[src] [pick(layMessage)]") - eggsleft-- - var/obj/item/E = new egg_type(get_turf(src)) - E.pixel_x = rand(-6,6) - E.pixel_y = rand(-6,6) - if(eggsFertile) - if(kiwi_count < MAX_CHICKENS && prob(25)) - START_PROCESSING(SSobj, E) - -/obj/item/reagent_containers/food/snacks/egg/kiwiEgg/process() - if(isturf(loc)) - amount_grown += rand(1,2) - if(amount_grown >= 100) - visible_message("[src] hatches with a quiet cracking sound.") - new /mob/living/simple_animal/babyKiwi(get_turf(src)) - STOP_PROCESSING(SSobj, src) - qdel(src) - else - STOP_PROCESSING(SSobj, src) - - -/mob/living/simple_animal/kiwi/attackby(obj/item/O, mob/user, params) - if(istype(O, food_type)) //feedin' dem kiwis - if(!stat && eggsleft < 8) - var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]" - user.visible_message(feedmsg) - qdel(O) - eggsleft += rand(1, 4) - else - to_chat(user, "[name] doesn't seem hungry!") - else - ..() - - -/mob/living/simple_animal/babyKiwi - name = "baby space kiwi" - desc = "So huggable." - icon = 'modular_citadel/icons/mob/kiwi.dmi' - icon_state = "babyKiwi" - icon_living = "babyKiwi" - icon_dead = "deadBaby" - icon_gib = "chick_gib" - gender = FEMALE - speak = list("Cherp.","Cherp?","Chirrup.","Cheep!") - speak_emote = list("chirps") - emote_hear = list("chirps.") - emote_see = list("pecks at the ground.","Happily bounces in place.") - density = FALSE - speak_chance = 2 - turns_per_move = 2 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "kicks" - attacktext = "kicks" - health = 10 - maxHealth = 10 - ventcrawler = VENTCRAWLER_ALWAYS - var/amount_grown = 0 - pass_flags = PASSTABLE | PASSGRILLE | PASSMOB - mob_size = MOB_SIZE_TINY - gold_core_spawnable = FRIENDLY_SPAWN - -/mob/living/simple_animal/babyKiwi/Initialize() - . = ..() - pixel_x = rand(-6, 6) - pixel_y = rand(0, 10) - -/mob/living/simple_animal/babyKiwi/Life() - . =..() - if(!.) - return - if(!stat && !ckey) - amount_grown += rand(1,2) - if(amount_grown >= 100) - new /mob/living/simple_animal/kiwi(src.loc) - qdel(src) - - -/obj/item/reagent_containers/food/snacks/egg/kiwiEgg - name = "kiwi egg" - icon = 'modular_citadel/icons/mob/kiwi.dmi' - desc = "A slightly bigger egg!" - icon_state = "egg" - diff --git a/modular_citadel/code/modules/mob/mob.dm b/modular_citadel/code/modules/mob/mob.dm index bf6987ab81..aa0e6b5828 100644 --- a/modular_citadel/code/modules/mob/mob.dm +++ b/modular_citadel/code/modules/mob/mob.dm @@ -3,9 +3,11 @@ /mob/say_mod(input, message_mode) var/customsayverb = findtext(input, "*") - if(customsayverb) + if(customsayverb && message_mode != MODE_WHISPER_CRIT) + message_mode = MODE_CUSTOM_SAY return lowertext(copytext(input, 1, customsayverb)) - . = ..() + else + return ..() /atom/movable/proc/attach_spans(input, list/spans) var/customsayverb = findtext(input, "*") diff --git a/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm b/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm index f069a73fe8..75151417d7 100644 --- a/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm +++ b/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm @@ -1,4 +1,4 @@ /obj/item/projectile/bullet/c46x30mm_tx name = "toxin tipped 4.6x30mm bullet" - damage = 15 + damage = 10 damage_type = TOX \ No newline at end of file diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 70d3bee5af..8ee00bef06 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -57,10 +57,9 @@ icon_state = "magjectile-nl" damage = 2 knockdown = 0 - stamina = 25 - armour_penetration = -10 + stamina = 20 light_range = 2 - speed = 0.7 + speed = 0.6 range = 25 light_color = LIGHT_COLOR_BLUE @@ -109,9 +108,10 @@ fire_sound = 'sound/weapons/magpistol.ogg' mag_type = /obj/item/ammo_box/magazine/mmag/small can_suppress = 0 - casing_ejector = 0 + casing_ejector = FALSE fire_delay = 2 - recoil = 0.2 + recoil = 0.1 + inaccuracy_modifier = 0.25 /obj/item/gun/ballistic/automatic/pistol/mag/update_icon() ..() @@ -123,7 +123,6 @@ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" ///research memes/// -/* /obj/item/gun/ballistic/automatic/pistol/mag/nopin pin = null spawnwithmagazine = FALSE @@ -155,7 +154,7 @@ materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) build_path = /obj/item/ammo_box/magazine/mmag/small departmental_flags = DEPARTMENTAL_FLAG_SECURITY -*/ + //////toy memes///// /obj/item/projectile/bullet/reusable/foam_dart/mag @@ -201,9 +200,9 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large" damage = 20 - armour_penetration = 25 + armour_penetration = 20 light_range = 3 - speed = 0.7 + speed = 0.6 range = 35 light_color = LIGHT_COLOR_RED @@ -212,10 +211,10 @@ icon_state = "magjectile-large-nl" damage = 2 knockdown = 0 - stamina = 25 - armour_penetration = -10 + stamina = 20 + armour_penetration = 10 light_range = 3 - speed = 0.65 + speed = 0.6 range = 35 light_color = LIGHT_COLOR_BLUE @@ -227,6 +226,8 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/magrifle + click_cooldown_override = 2.5 + delay = 3 /obj/item/ammo_casing/caseless/anlmagm desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." @@ -234,10 +235,12 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmagrifle + click_cooldown_override = 2.5 + delay = 3 ///magazines/// -/obj/item/ammo_box/magazine/mmag/ +/obj/item/ammo_box/magazine/mmag name = "magrifle magazine (non-lethal disabler)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" @@ -261,17 +264,20 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magrifle" item_state = "arg" - slot_flags = 0 + slot_flags = NONE mag_type = /obj/item/ammo_box/magazine/mmag fire_sound = 'sound/weapons/magrifle.ogg' can_suppress = 0 - burst_size = 3 - fire_delay = 2 - spread = 5 - recoil = 0.15 - casing_ejector = 0 + burst_size = 1 + actions_types = null + fire_delay = 3 + spread = 0 + recoil = 0.1 + casing_ejector = FALSE + inaccuracy_modifier = 0.5 + weapon_weight = WEAPON_MEDIUM + dualwield_spread_mult = 1.4 -/* //research/// /obj/item/gun/ballistic/automatic/magrifle/nopin @@ -305,7 +311,7 @@ materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) build_path = /obj/item/ammo_box/magazine/mmag departmental_flags = DEPARTMENTAL_FLAG_SECURITY -*/ + ///foamagrifle/// /obj/item/ammo_box/magazine/toy/foamag @@ -327,7 +333,6 @@ spread = 60 w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY -/* // TECHWEBS IMPLEMENTATION // @@ -339,7 +344,6 @@ design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 -*/ //////Hyper-Burst Rifle////// diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index 8786eb6dc9..7e6a8b3389 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -143,6 +143,7 @@ // TECHWEBS IMPLEMENTATION */ +/* /datum/techweb_node/magnetic_weapons id = "magnetic_weapons" display_name = "Magnetic Weapons" @@ -151,6 +152,7 @@ design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_e_nl", "mag_magpistol_e", "mag_magpistol_e_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 +*/ ///magrifle/// diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index 0f7db73d6e..5fc75fa414 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -1,13 +1,6 @@ /obj/item/gun/energy/e_gun name = "blaster carbine" desc = "A high powered particle blaster carbine with varitable setting for stunning or lethal applications." - icon = 'modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi' - lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi' - righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi' - ammo_x_offset = 2 - flight_x_offset = 17 - flight_y_offset = 11 - /*///////////////////////////////////////////////////////////////////////////////////////////// The Recolourable Energy Gun diff --git a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm index c82a3e9ed9..76d7403d16 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm @@ -1,19 +1,11 @@ /obj/item/gun/energy/laser name = "blaster rifle" desc = "a high energy particle blaster, efficient and deadly." - icon = 'modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi' - ammo_x_offset = 1 - shaded_charge = 1 - lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi' - righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi' /obj/item/gun/energy/laser/practice + icon = 'modular_citadel/icons/obj/guns/energy.dmi' icon_state = "laser-p" - -/obj/item/gun/energy/laser/bluetag - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - -/obj/item/gun/energy/laser/redtag - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' + lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi' + ammo_x_offset = 1 + shaded_charge = 1 diff --git a/modular_citadel/code/modules/projectiles/projectile/energy.dm b/modular_citadel/code/modules/projectiles/projectile/energy.dm deleted file mode 100644 index a32f23f0fc..0000000000 --- a/modular_citadel/code/modules/projectiles/projectile/energy.dm +++ /dev/null @@ -1,2 +0,0 @@ -/obj/item/projectile/energy/electrode - stamina = 36 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 69f76e380b..ee90f985c6 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -30,17 +30,15 @@ inverse_chem_val = 0.35 inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse can_synth = FALSE + var/message_spam = FALSE -/datum/reagent/fermi/breast_enlarger/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/breast_enlarger/on_mob_metabolize(mob/living/M) . = ..() if(!ishuman(M)) //The monkey clause if(volume >= 15) //To prevent monkey breast farms var/turf/T = get_turf(M) var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T) - var/list/seen = viewers(8, T) - for(var/mob/S in seen) - to_chat(S, "A pair of breasts suddenly fly out of the [M]!") - //var/turf/T2 = pick(turf in view(5, M)) + M.visible_message("A pair of breasts suddenly fly out of the [M]!") var/T2 = get_random_station_turf() M.adjustBruteLoss(25) M.Knockdown(50) @@ -48,94 +46,82 @@ B.throw_at(T2, 8, 1) M.reagents.remove_reagent(id, volume) return - log_game("FERMICHEM: [M] ckey: [M.key] has ingested Sucubus milk") var/mob/living/carbon/human/H = M - H.genital_override = TRUE - var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") - if(!B) - H.emergent_genital_call() - return - if(!B.size == "huge") - var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) - B.prev_size = B.size - B.cached_size = sizeConv[B.size] + if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call()) + H.genital_override = TRUE /datum/reagent/fermi/breast_enlarger/on_mob_life(mob/living/carbon/M) //Increases breast size if(!ishuman(M))//Just in case return..() var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) if(!B) //If they don't have breasts, give them breasts. //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) + var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) if(L) - L.swelling+= 0.05 - return..() + L.swelling += 0.05 else - M.adjustToxLoss(1) - return..() + H.adjustToxLoss(1) + return..() //otherwise proceed as normal - var/obj/item/organ/genital/breasts/nB = new - nB.Insert(M) - if(nB) - if(M.dna.species.use_skintones && M.dna.features["genitals_use_skintone"]) - nB.color = skintone2hex(H.skin_tone) - else if(M.dna.features["breasts_color"]) - nB.color = "#[M.dna.features["breasts_color"]]" - else - nB.color = skintone2hex(H.skin_tone) - nB.size = "flat" - nB.cached_size = 0 - nB.prev_size = 0 - to_chat(M, "Your chest feels warm, tingling with newfound sensitivity.") - M.reagents.remove_reagent(id, 5) - B = nB + B = new + if(H.dna.species.use_skintones && H.dna.features["genitals_use_skintone"]) + B.color = skintone2hex(H.skin_tone) + else if(M.dna.features["breasts_color"]) + B.color = "#[M.dna.features["breasts_color"]]" + else + B.color = skintone2hex(H.skin_tone) + B.size = "flat" + B.cached_size = 0 + B.prev_size = 0 + to_chat(H, "Your chest feels warm, tingling with newfound sensitivity.") + H.reagents.remove_reagent(id, 5) + B.Insert(H) + //If they have them, increase size. If size is comically big, limit movement and rip clothes. - B.cached_size = B.cached_size + 0.05 - if (B.cached_size >= 8.5 && B.cached_size < 9) - if(H.w_uniform || H.wear_suit) - var/target = M.get_bodypart(BODY_ZONE_CHEST) - to_chat(M, "Your breasts begin to strain against your clothes tightly!") - M.adjustOxyLoss(5, 0) - M.apply_damage(1, BRUTE, target) - B.update() - ..() + B.modify_size(0.05) + + if (ISINRANGE_EX(B.cached_size, 8.5, 9) && (H.w_uniform || H.wear_suit)) + var/target = H.get_bodypart(BODY_ZONE_CHEST) + if(!message_spam) + to_chat(H, "Your breasts begin to strain against your clothes tightly!") + message_spam = TRUE + H.adjustOxyLoss(5, 0) + H.apply_damage(1, BRUTE, target) + return ..() /datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling+= 0.05 return ..() - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") - var/obj/item/organ/genital/testicles/T = M.getorganslot("testicles") - var/obj/item/organ/genital/vagina/V = M.getorganslot("vagina") - var/obj/item/organ/genital/womb/W = M.getorganslot("womb") + var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/T = M.getorganslot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/vagina/V = M.getorganslot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB) if(M.gender == MALE) M.gender = FEMALE M.visible_message("[M] suddenly looks more feminine!", "You suddenly feel more feminine!") if(P) - P.cached_length = P.cached_length - 0.05 - P.update() + P.modify_size(-0.05) if(T) - T.Remove(M) + qdel(T) if(!V) - var/obj/item/organ/genital/vagina/nV = new - nV.Insert(M) - V = nV + V = new + V.Insert(M) if(!W) - var/obj/item/organ/genital/womb/nW = new - nW.Insert(M) - W = nW - ..() + W = new + W.Insert(M) + return ..() /datum/reagent/fermi/BEsmaller name = "Modesty milk" @@ -147,19 +133,18 @@ can_synth = FALSE /datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M) - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) if(!B) //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling-= 0.05 return ..() //otherwise proceed as normal return..() - B.cached_size = B.cached_size - 0.05 - B.update() - ..() + B.modify_size(-0.05) + return ..() /datum/reagent/fermi/BEsmaller_hypo name = "Rectify milk" //Rectify @@ -171,31 +156,28 @@ var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) can_synth = TRUE -/datum/reagent/fermi/BEsmaller_hypo/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/BEsmaller_hypo/on_mob_metabolize(mob/living/M) . = ..() - if(!M.getorganslot("vagina")) - if(M.dna.features["has_vag"]) - var/obj/item/organ/genital/vagina/nV = new - nV.Insert(M) - if(!M.getorganslot("womb")) - if(M.dna.features["has_womb"]) - var/obj/item/organ/genital/womb/nW = new - nW.Insert(M) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + if(!H.getorganslot(ORGAN_SLOT_VAGINA) && H.dna.features["has_vag"]) + H.give_genital(/obj/item/organ/genital/vagina) + if(!H.getorganslot(ORGAN_SLOT_WOMB) && H.dna.features["has_womb"]) + H.give_genital(/obj/item/organ/genital/womb) /datum/reagent/fermi/BEsmaller_hypo/on_mob_life(mob/living/carbon/M) - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) if(!B) return..() - if(!M.dna.features["has_breasts"])//Fast fix for those who don't want it. - B.cached_size = B.cached_size - 0.1 - B.update() - else if(B.cached_size > (sizeConv[M.dna.features["breasts_size"]]+0.1)) - B.cached_size = B.cached_size - 0.05 - B.update() - else if(B.cached_size < (sizeConv[M.dna.features["breasts_size"]])+0.1) - B.cached_size = B.cached_size + 0.05 - B.update() - ..() + var/optimal_size = B.breast_values[M.dna.features["breasts_size"]] + if(!optimal_size)//Fast fix for those who don't want it. + B.modify_size(-0.1) + else if(B.cached_size > optimal_size) + B.modify_size(-0.05, optimal_size) + else if(B.cached_size < optimal_size) + B.modify_size(0.05, 0, optimal_size) + return ..() //////////////////////////////////////////////////////////////////////////////////////////////////// // PENIS ENLARGE @@ -215,16 +197,15 @@ inverse_chem_val = 0.35 inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE + var/message_spam = FALSE -/datum/reagent/fermi/penis_enlarger/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/penis_enlarger/on_mob_metabolize(mob/living/M) . = ..() if(!ishuman(M)) //Just monkeying around. if(volume >= 15) //to prevent monkey penis farms var/turf/T = get_turf(M) var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T) - var/list/seen = viewers(8, T) - for(var/mob/S in seen) - to_chat(S, "A penis suddenly flies out of the [M]!") + M.visible_message("A penis suddenly flies out of the [M]!") var/T2 = get_random_station_turf() M.adjustBruteLoss(25) M.Knockdown(50) @@ -233,80 +214,71 @@ M.reagents.remove_reagent(id, volume) return var/mob/living/carbon/human/H = M - H.genital_override = TRUE - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") - if(!P) - H.emergent_genital_call() - return - P.prev_length = P.length - P.cached_length = P.length + if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call()) + H.genital_override = TRUE /datum/reagent/fermi/penis_enlarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch. if(!ishuman(M)) - return + return ..() var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) if(!P)//They do have a preponderance for escapism, or so I've heard. //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) + var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) if(L) - L.swelling+= 0.05 - return..() + L.swelling += 0.05 else - M.adjustToxLoss(1) - return..() + H.adjustToxLoss(1) + return ..() //otherwise proceed as normal - var/obj/item/organ/genital/penis/nP = new - nP.Insert(M) - if(nP) - nP.length = 1 - to_chat(M, "Your groin feels warm, as you feel a newly forming bulge down below.") - nP.cached_length = 1 - nP.prev_length = 1 - M.reagents.remove_reagent(id, 5) - P = nP + P = new + P.length = 1 + to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.") + P.prev_length = 1 + H.reagents.remove_reagent(id, 5) + P.Insert(H) - P.cached_length = P.cached_length + 0.1 - if (P.cached_length >= 20.5 && P.cached_length < 21) - if(H.w_uniform || H.wear_suit) - var/target = M.get_bodypart(BODY_ZONE_CHEST) - to_chat(M, "Your cock begin to strain against your clothes tightly!") - M.apply_damage(2.5, BRUTE, target) + P.modify_size(0.1) + if (ISINRANGE_EX(P.length, 20.5, 21) && (H.w_uniform || H.wear_suit)) + var/target = H.get_bodypart(BODY_ZONE_CHEST) + if(!message_spam) + to_chat(H, "Your cock begin to strain against your clothes tightly!") + message_spam = TRUE + H.apply_damage(2.5, BRUTE, target) - P.update() - ..() + return ..() -/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. +/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. + if(!istype(M)) + return ..() //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling+= 0.05 return..() - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") - var/obj/item/organ/genital/testicles/T = M.getorganslot("testicles") - var/obj/item/organ/genital/vagina/V = M.getorganslot("vagina") - var/obj/item/organ/genital/womb/W = M.getorganslot("womb") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/testicles/T = M.getorganslot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/vagina/V = M.getorganslot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB) if(M.gender == FEMALE) M.gender = MALE M.visible_message("[M] suddenly looks more masculine!", "You suddenly feel more masculine!") if(B) - B.cached_size = B.cached_size - 0.05 - B.update() - if(V) - V.Remove(M) + B.modify_size(-0.05) + if(M.getorganslot(ORGAN_SLOT_VAGINA)) + qdel(V) if(W) - W.Remove(M) + qdel(W) if(!T) - var/obj/item/organ/genital/testicles/nT = new - nT.Insert(M) - T = nT - ..() + T = new + T.Insert(M) + return ..() /datum/reagent/fermi/PEsmaller // Due to cozmo's request...! name = "Chastity draft" @@ -318,19 +290,18 @@ can_synth = FALSE /datum/reagent/fermi/PEsmaller/on_mob_life(mob/living/carbon/M) + if(!ishuman(M)) + return ..() var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/penis/P = H.getorganslot("penis") + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) if(!P) //Acute hepatic pharmacokinesis. if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling-= 0.05 - return..() - - //otherwise proceed as normal return..() - P.cached_length = P.cached_length - 0.1 - P.update() + + P.modify_size(-0.1) ..() /datum/reagent/fermi/PEsmaller_hypo @@ -342,24 +313,25 @@ metabolization_rate = 0.5 can_synth = TRUE -/datum/reagent/fermi/PEsmaller_hypo/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/PEsmaller_hypo/on_mob_metabolize(mob/living/M) . = ..() - if(!M.getorganslot("testicles")) - if(M.dna.features["has_balls"]) - var/obj/item/organ/genital/testicles/nT = new - nT.Insert(M) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.dna.features["has_cock"]) + H.give_genital(/obj/item/organ/genital/penis) + if(!H.getorganslot(ORGAN_SLOT_TESTICLES) && H.dna.features["has_balls"]) + H.give_genital(/obj/item/organ/genital/testicles) /datum/reagent/fermi/PEsmaller_hypo/on_mob_life(mob/living/carbon/M) - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") + var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS) if(!P) return ..() - if(!M.dna.features["has_cock"])//Fast fix for those who don't want it. - P.cached_length = P.cached_length - 0.2 - P.update() - else if(P.cached_length > (M.dna.features["cock_length"]+0.1)) - P.cached_length = P.cached_length - 0.1 - P.update() - else if(P.cached_length < (M.dna.features["cock_length"]+0.1)) - P.cached_length = P.cached_length + 0.1 - P.update() - ..() + var/optimal_size = M.dna.features["cock_length"] + if(!optimal_size)//Fast fix for those who don't want it. + P.modify_size(-0.2) + else if(P.length > optimal_size) + P.modify_size(-0.1, optimal_size) + else if(P.length < optimal_size) + P.modify_size(0.1, 0, optimal_size) + return ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 4acfda0573..edb4bedfed 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -182,7 +182,7 @@ /datum/reagent/fermi/nanite_b_gone/on_mob_life(mob/living/carbon/C) //var/component/nanites/N = M.GetComponent(/datum/component/nanites) - GET_COMPONENT_FROM(N, /datum/component/nanites, C) + var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites) if(isnull(N)) return ..() N.nanite_volume = -purity//0.5 seems to be the default to me, so it'll neuter them. @@ -190,7 +190,7 @@ /datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C) //var/component/nanites/N = M.GetComponent(/datum/component/nanites) - GET_COMPONENT_FROM(N, /datum/component/nanites, C) + var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites) if(prob(5)) to_chat(C, "The residual voltage from the nanites causes you to seize up!") C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm index 00063c22d4..c8ebde11d9 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,11 +1,3 @@ -/datum/reagent/space_cleaner/reaction_obj(obj/O, reac_volume) - if(istype(O, /obj/effect/decal/cleanable) || istype(O, /obj/item/projectile/bullet/reusable/foam_dart) || istype(O, /obj/item/ammo_casing/caseless/foam_dart)) - qdel(O) - else - if(O) - O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - /datum/reagent/syndicateadrenals name = "Syndicate Adrenaline" id = "syndicateadrenals" diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 47f71d1acf..7fcae0eb13 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -327,10 +327,10 @@ //So slimes can play too. /datum/chemical_reaction/fermi/enthrall/slime - required_catalysts = list("slimejelly" = 1) + required_catalysts = list("jellyblood" = 1) /datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom) - var/datum/reagent/toxin/slimejelly/B = locate(/datum/reagent/toxin/slimejelly) in my_atom.reagents.reagent_list//The one line change. + var/datum/reagent/blood/jellyblood/B = locate(/datum/reagent/blood/jellyblood) in my_atom.reagents.reagent_list//The one line change. var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagents.reagent_list if(!B.data) var/list/seen = viewers(5, get_turf(my_atom)) diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm index 02f2db7c1e..6221bdde18 100644 --- a/modular_citadel/code/modules/reagents/objects/items.dm +++ b/modular_citadel/code/modules/reagents/objects/items.dm @@ -1,12 +1,12 @@ /obj/item/fermichem/pHbooklet - name = "pH indicator booklet" - desc = "A booklet containing paper soaked in universal indicator." - icon_state = "pHbooklet" - icon = 'modular_citadel/icons/obj/FermiChem.dmi' - item_flags = NOBLUDGEON - var/numberOfPages = 50 - resistance_flags = FLAMMABLE - w_class = WEIGHT_CLASS_TINY + name = "pH indicator booklet" + desc = "A booklet containing paper soaked in universal indicator." + icon_state = "pHbooklet" + icon = 'icons/obj/chemical.dmi' + item_flags = NOBLUDGEON + var/numberOfPages = 50 + resistance_flags = FLAMMABLE + w_class = WEIGHT_CLASS_TINY //A little janky with pockets /obj/item/fermichem/pHbooklet/attack_hand(mob/user) @@ -29,7 +29,7 @@ to_chat(user, "[src] is empty!") add_fingerprint(user) return - . = ..() + . = ..() if(. & COMPONENT_NO_INTERACT) return var/I = user.get_active_held_item() @@ -37,86 +37,86 @@ user.put_in_active_hand(src) /obj/item/fermichem/pHbooklet/MouseDrop() - var/mob/living/user = usr - if(numberOfPages >= 1) - var/obj/item/fermichem/pHpaper/P = new /obj/item/fermichem/pHpaper - P.add_fingerprint(user) - P.forceMove(user) - user.put_in_active_hand(P) - to_chat(user, "You take [P] out of \the [src].") - numberOfPages-- - playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1) - add_fingerprint(user) - if(numberOfPages == 0) - icon_state = "pHbookletEmpty" - return - else - to_chat(user, "[src] is empty!") - add_fingerprint(user) - return - ..() + var/mob/living/user = usr + if(numberOfPages >= 1) + var/obj/item/fermichem/pHpaper/P = new /obj/item/fermichem/pHpaper + P.add_fingerprint(user) + P.forceMove(user) + user.put_in_active_hand(P) + to_chat(user, "You take [P] out of \the [src].") + numberOfPages-- + playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1) + add_fingerprint(user) + if(numberOfPages == 0) + icon_state = "pHbookletEmpty" + return + else + to_chat(user, "[src] is empty!") + add_fingerprint(user) + return + ..() /obj/item/fermichem/pHpaper - name = "pH indicator strip" - desc = "A piece of paper that will change colour depending on the pH of a solution." - icon_state = "pHpaper" - icon = 'modular_citadel/icons/obj/FermiChem.dmi' - item_flags = NOBLUDGEON - color = "#f5c352" - var/used = FALSE - resistance_flags = FLAMMABLE - w_class = WEIGHT_CLASS_TINY + name = "pH indicator strip" + desc = "A piece of paper that will change colour depending on the pH of a solution." + icon_state = "pHpaper" + icon = 'icons/obj/chemical.dmi' + item_flags = NOBLUDGEON + color = "#f5c352" + var/used = FALSE + resistance_flags = FLAMMABLE + w_class = WEIGHT_CLASS_TINY /obj/item/fermichem/pHpaper/afterattack(obj/item/reagent_containers/cont, mob/user, proximity) - if(!istype(cont)) - return - if(used == TRUE) - to_chat(user, "[user] has already been used!") - return - if(!LAZYLEN(cont.reagents.reagent_list)) - return - switch(round(cont.reagents.pH, 1)) - if(14 to INFINITY) - color = "#462c83" - if(13 to 14) - color = "#63459b" - if(12 to 13) - color = "#5a51a2" - if(11 to 12) - color = "#3853a4" - if(10 to 11) - color = "#3f93cf" - if(9 to 10) - color = "#0bb9b7" - if(8 to 9) - color = "#23b36e" - if(7 to 8) - color = "#3aa651" - if(6 to 7) - color = "#4cb849" - if(5 to 6) - color = "#b5d335" - if(4 to 5) - color = "#f7ec1e" - if(3 to 4) - color = "#fbc314" - if(2 to 3) - color = "#f26724" - if(1 to 2) - color = "#ef1d26" - if(-INFINITY to 1) - color = "#c6040c" - desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]" - used = TRUE + if(!istype(cont)) + return + if(used == TRUE) + to_chat(user, "[user] has already been used!") + return + if(!LAZYLEN(cont.reagents.reagent_list)) + return + switch(round(cont.reagents.pH, 1)) + if(14 to INFINITY) + color = "#462c83" + if(13 to 14) + color = "#63459b" + if(12 to 13) + color = "#5a51a2" + if(11 to 12) + color = "#3853a4" + if(10 to 11) + color = "#3f93cf" + if(9 to 10) + color = "#0bb9b7" + if(8 to 9) + color = "#23b36e" + if(7 to 8) + color = "#3aa651" + if(6 to 7) + color = "#4cb849" + if(5 to 6) + color = "#b5d335" + if(4 to 5) + color = "#f7ec1e" + if(3 to 4) + color = "#fbc314" + if(2 to 3) + color = "#f26724" + if(1 to 2) + color = "#ef1d26" + if(-INFINITY to 1) + color = "#c6040c" + desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]" + used = TRUE /obj/item/fermichem/pHmeter - name = "Chemistry Analyser" - desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing." - icon_state = "pHmeter" - icon = 'modular_citadel/icons/obj/FermiChem.dmi' - resistance_flags = FLAMMABLE - w_class = WEIGHT_CLASS_TINY - var/scanmode = 1 + name = "Chemistry Analyser" + desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing." + icon_state = "pHmeter" + icon = 'icons/obj/chemical.dmi' + resistance_flags = FLAMMABLE + w_class = WEIGHT_CLASS_TINY + var/scanmode = 1 /obj/item/fermichem/pHmeter/attack_self(mob/user) if(!scanmode) @@ -127,21 +127,21 @@ scanmode = 0 /obj/item/fermichem/pHmeter/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!istype(A, /obj/item/reagent_containers)) - return - var/obj/item/reagent_containers/cont = A - if(LAZYLEN(cont.reagents.reagent_list) == null) - return - var/out_message - to_chat(user, "The chemistry meter beeps and displays:") - out_message += "Total volume: [round(cont.volume, 0.01)] Total pH: [round(cont.reagents.pH, 0.1)]\n" - if(cont.reagents.fermiIsReacting) - out_message += "A reaction appears to be occuring currently.\n" - out_message += "Chemicals found in the beaker:\n" - for(var/datum/reagent/R in cont.reagents.reagent_list) - out_message += "[R.volume]u of [R.name], Purity: [R.purity], [(scanmode?"[(R.overdose_threshold?"Overdose: [R.overdose_threshold]u, ":"")][(R.addiction_threshold?"Addiction: [R.addiction_threshold]u, ":"")]Base pH: [R.pH].":".")]\n" - if(scanmode) - out_message += "Analysis: [R.description]\n" - to_chat(user, "[out_message]") - desc = "An electrode attached to a small circuit box that will analyse a beaker. It can be toggled to give a reduced or extended report. The screen currently displays [round(cont.reagents.pH, 0.1)]." + . = ..() + if(!istype(A, /obj/item/reagent_containers)) + return + var/obj/item/reagent_containers/cont = A + if(LAZYLEN(cont.reagents.reagent_list) == null) + return + var/out_message + to_chat(user, "The chemistry meter beeps and displays:") + out_message += "Total volume: [round(cont.volume, 0.01)] Total pH: [round(cont.reagents.pH, 0.1)]\n" + if(cont.reagents.fermiIsReacting) + out_message += "A reaction appears to be occuring currently.\n" + out_message += "Chemicals found in the beaker:\n" + for(var/datum/reagent/R in cont.reagents.reagent_list) + out_message += "[R.volume]u of [R.name], Purity: [R.purity], [(scanmode?"[(R.overdose_threshold?"Overdose: [R.overdose_threshold]u, ":"")][(R.addiction_threshold?"Addiction: [R.addiction_threshold]u, ":"")]Base pH: [R.pH].":".")]\n" + if(scanmode) + out_message += "Analysis: [R.description]\n" + to_chat(user, "[out_message]") + desc = "An electrode attached to a small circuit box that will analyse a beaker. It can be toggled to give a reduced or extended report. The screen currently displays [round(cont.reagents.pH, 0.1)]." diff --git a/modular_citadel/code/modules/reagents/reagent container/cit_kegs.dm b/modular_citadel/code/modules/reagents/reagent container/cit_kegs.dm deleted file mode 100644 index d40dba8a3f..0000000000 --- a/modular_citadel/code/modules/reagents/reagent container/cit_kegs.dm +++ /dev/null @@ -1,41 +0,0 @@ -/obj/structure/reagent_dispensers/keg - name = "keg" - desc = "A keg." - icon = 'modular_citadel/icons/obj/objects.dmi' - icon_state = "keg" - reagent_id = "water" - -/obj/structure/reagent_dispensers/keg/mead - name = "keg of mead" - desc = "A keg of mead." - icon_state = "orangekeg" - reagent_id = "mead" - -/obj/structure/reagent_dispensers/keg/aphro - name = "keg of aphrodisiac" - desc = "A keg of aphrodisiac." - icon_state = "pinkkeg" - reagent_id = "aphro" - -/obj/structure/reagent_dispensers/keg/aphro/strong - name = "keg of strong aphrodisiac" - desc = "A keg of strong and addictive aphrodisiac." - reagent_id = "aphro+" - -/obj/structure/reagent_dispensers/keg/milk - name = "keg of milk" - desc = "It's not quite what you were hoping for." - icon_state = "whitekeg" - reagent_id = "milk" - -/obj/structure/reagent_dispensers/keg/semen - name = "keg of semen" - desc = "Dear lord, where did this even come from?" - icon_state = "whitekeg" - reagent_id = "semen" - -/obj/structure/reagent_dispensers/keg/gargle - name = "keg of pan galactic gargleblaster" - desc = "A keg of... wow that's a long name." - icon_state = "bluekeg" - reagent_id = "gargleblaster" \ No newline at end of file diff --git a/modular_citadel/code/modules/reagents/reagent container/hypospraymkii.dm b/modular_citadel/code/modules/reagents/reagent container/hypospraymkii.dm deleted file mode 100755 index 4aa634a488..0000000000 --- a/modular_citadel/code/modules/reagents/reagent container/hypospraymkii.dm +++ /dev/null @@ -1,299 +0,0 @@ -#define HYPO_SPRAY 0 -#define HYPO_INJECT 1 - -#define WAIT_SPRAY 25 -#define WAIT_INJECT 25 -#define SELF_SPRAY 15 -#define SELF_INJECT 15 - -#define DELUXE_WAIT_SPRAY 20 -#define DELUXE_WAIT_INJECT 20 -#define DELUXE_SELF_SPRAY 10 -#define DELUXE_SELF_INJECT 10 - -#define COMBAT_WAIT_SPRAY 0 -#define COMBAT_WAIT_INJECT 0 -#define COMBAT_SELF_SPRAY 0 -#define COMBAT_SELF_INJECT 0 - -//A vial-loaded hypospray. Cartridge-based! -/obj/item/hypospray/mkii - name = "hypospray mk.II" - icon = 'modular_citadel/icons/obj/hypospraymkii.dmi' - icon_state = "hypo2" - desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping." - w_class = WEIGHT_CLASS_TINY - var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small) - var/mode = HYPO_INJECT - var/obj/item/reagent_containers/glass/bottle/vial/vial - var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small - var/spawnwithvial = TRUE - var/inject_wait = WAIT_INJECT - var/spray_wait = WAIT_SPRAY - var/spray_self = SELF_SPRAY - var/inject_self = SELF_INJECT - var/quickload = FALSE - var/penetrates = FALSE - -/obj/item/hypospray/mkii/brute - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine - -/obj/item/hypospray/mkii/toxin - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin - -/obj/item/hypospray/mkii/oxygen - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin - -/obj/item/hypospray/mkii/burn - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane - -/obj/item/hypospray/mkii/tricord - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord - -/obj/item/hypospray/mkii/enlarge - spawnwithvial = FALSE - -/obj/item/hypospray/mkii/CMO - name = "hypospray mk.II deluxe" - allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large) - icon_state = "cmo2" - desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray." - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO - inject_wait = DELUXE_WAIT_INJECT - spray_wait = DELUXE_WAIT_SPRAY - spray_self = DELUXE_SELF_SPRAY - inject_self = DELUXE_SELF_INJECT - -/obj/item/hypospray/mkii/CMO/combat - name = "combat hypospray mk.II" - desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it." - icon_state = "combat2" - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat - inject_wait = COMBAT_WAIT_INJECT - spray_wait = COMBAT_WAIT_SPRAY - spray_self = COMBAT_SELF_SPRAY - inject_self = COMBAT_SELF_INJECT - quickload = TRUE - penetrates = TRUE - -/obj/item/hypospray/mkii/Initialize() - . = ..() - if(!spawnwithvial) - update_icon() - return - if(start_vial) - vial = new start_vial - update_icon() - -/obj/item/hypospray/mkii/update_icon() - ..() - icon_state = "[initial(icon_state)][vial ? "" : "-e"]" - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - return - -/obj/item/hypospray/mkii/examine(mob/user) - . = ..() - if(vial) - to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.") - else - to_chat(user, "It has no vial loaded in.") - to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.") - -/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user) - if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) - var/obj/item/reagent_containers/glass/bottle/vial/V = I - V.forceMove(user.loc) - user.put_in_hands(V) - to_chat(user, "You remove [vial] from [src].") - vial = null - update_icon() - playsound(loc, 'sound/weapons/empty.ogg', 50, 1) - else - to_chat(user, "This hypo isn't loaded!") - return - -/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user) - if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null)) - if(!quickload) - to_chat(user, "[src] can not hold more than one vial!") - return FALSE - unload_hypo(vial, user) - if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) - var/obj/item/reagent_containers/glass/bottle/vial/V = I - if(!is_type_in_list(V, allowed_containers)) - to_chat(user, "[src] doesn't accept this type of vial.") - return FALSE - if(!user.transferItemToLoc(V,src)) - return FALSE - vial = V - user.visible_message("[user] has loaded a vial into [src].","You have loaded [vial] into [src].") - update_icon() - playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1) - return TRUE - else - to_chat(user, "This doesn't fit in [src].") - return FALSE - return FALSE - -/obj/item/hypospray/mkii/AltClick(mob/user) - if(vial) - vial.attack_self(user) - -// Gunna allow this for now, still really don't approve - Pooj -/obj/item/hypospray/mkii/emag_act(mob/user) - . = ..() - if(obj_flags & EMAGGED) - to_chat(user, "[src] happens to be already overcharged.") - return - inject_wait = COMBAT_WAIT_INJECT - spray_wait = COMBAT_WAIT_SPRAY - spray_self = COMBAT_SELF_INJECT - inject_self = COMBAT_SELF_SPRAY - penetrates = TRUE - to_chat(user, "You overcharge [src]'s control circuit.") - obj_flags |= EMAGGED - return TRUE - -/obj/item/hypospray/mkii/attack_hand(mob/user) - . = ..() //Don't bother changing this or removing it from containers will break. - -/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params) - return - -/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity) - if(!vial) - return - - if(!proximity) - return - - if(!ismob(target)) - return - - var/mob/living/L - if(isliving(target)) - L = target - if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob. - return - - if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles - to_chat(user, "You cannot directly fill [target]!") - return - - if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "[target] is full.") - return - - if(ishuman(L)) - var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected)) - if(!affecting) - to_chat(user, "The limb is missing!") - return - if(affecting.status != BODYPART_ORGANIC) - to_chat(user, "Medicine won't work on a robotic limb!") - return - - var/contained = vial.reagents.log_list() - log_combat(user, L, "attemped to inject", src, addition="which had [contained]") -//Always log attemped injections for admins - if(vial != null) - switch(mode) - if(HYPO_INJECT) - if(L) //living mob - if(L != user) - L.visible_message("[user] is trying to inject [L] with [src]!", \ - "[user] is trying to inject [L] with [src]!") - if(!do_mob(user, L, inject_wait)) - return - if(!penetrates && !L.can_inject(user, 1)) - return - if(!vial.reagents.total_volume) - return - if(L.reagents.total_volume >= L.reagents.maximum_volume) - return - L.visible_message("[user] uses the [src] on [L]!", \ - "[user] uses the [src] on [L]!") - else - if(!do_mob(user, L, inject_self)) - return - if(!penetrates && !L.can_inject(user, 1)) - return - if(!vial.reagents.total_volume) - return - if(L.reagents.total_volume >= L.reagents.maximum_volume) - return - log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])") - L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG) - - var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1) - vial.reagents.reaction(L, INJECT, fraction) - vial.reagents.trans_to(target, vial.amount_per_transfer_from_this) - if(vial.amount_per_transfer_from_this >= 15) - playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1) - if(vial.amount_per_transfer_from_this < 15) - playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1) - to_chat(user, "You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.") - - if(HYPO_SPRAY) - if(L) //living mob - if(L != user) - L.visible_message("[user] is trying to spray [L] with [src]!", \ - "[user] is trying to spray [L] with [src]!") - if(!do_mob(user, L, spray_wait)) - return - if(!penetrates && !L.can_inject(user, 1)) - return - if(!vial.reagents.total_volume) - return - if(L.reagents.total_volume >= L.reagents.maximum_volume) - return - L.visible_message("[user] uses the [src] on [L]!", \ - "[user] uses the [src] on [L]!") - else - if(!do_mob(user, L, spray_self)) - return - if(!penetrates && !L.can_inject(user, 1)) - return - if(!vial.reagents.total_volume) - return - if(L.reagents.total_volume >= L.reagents.maximum_volume) - return - log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])") - L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG) - var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1) - vial.reagents.reaction(L, PATCH, fraction) - vial.reagents.trans_to(target, vial.amount_per_transfer_from_this) - if(vial.amount_per_transfer_from_this >= 15) - playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1) - if(vial.amount_per_transfer_from_this < 15) - playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1) - to_chat(user, "You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.") - else - to_chat(user, "[src] doesn't work here!") - return - -/obj/item/hypospray/mkii/attack_self(mob/living/user) - if(user) - if(user.incapacitated()) - return - else if(!vial) - to_chat(user, "This Hypo needs to be loaded first!") - return - else - unload_hypo(vial,user) - -/obj/item/hypospray/mkii/verb/modes() - set name = "Toggle Application Mode" - set category = "Object" - set src in usr - var/mob/M = usr - switch(mode) - if(HYPO_SPRAY) - mode = HYPO_INJECT - to_chat(M, "[src] is now set to inject contents on application.") - if(HYPO_INJECT) - mode = HYPO_SPRAY - to_chat(M, "[src] is now set to spray contents on application.") diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 0e823a658f..df3922dc09 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -2,7 +2,7 @@ /datum/reagent/consumable/semen name = "Semen" id = "semen" - description = "Sperm from some animal. Useless for anything but insemination, really." + description = "Sperm from some animal. I bet you'll drink this out of a bucket someday." taste_description = "something salty" taste_mult = 2 //Not very overpowering flavor data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) @@ -39,7 +39,9 @@ add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) - S.add_blood_DNA(return_blood_DNA()) + if(S.blood_DNA) + blood_DNA |= S.blood_DNA.Copy() + ..() /datum/reagent/consumable/femcum name = "Female Ejaculate" @@ -71,7 +73,8 @@ add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - F.add_blood_DNA(return_blood_DNA()) + if(F.blood_DNA) + blood_DNA |= F.blood_DNA.Copy() ..() /datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) diff --git a/modular_citadel/code/modules/research/designs/machine_designs.dm b/modular_citadel/code/modules/research/designs/machine_designs.dm deleted file mode 100644 index 6a1331dddc..0000000000 --- a/modular_citadel/code/modules/research/designs/machine_designs.dm +++ /dev/null @@ -1,6 +0,0 @@ -/datum/design/board/autoylathe - name = "Machine Design (Autoylathe)" - desc = "The circuit board for an autoylathe." - id = "autoylathe" - build_path = /obj/item/circuitboard/machine/autoylathe - category = list("Misc. Machinery") diff --git a/modular_citadel/code/modules/research/designs/weapon_designs.dm b/modular_citadel/code/modules/research/designs/weapon_designs.dm deleted file mode 100644 index b27cedbcc2..0000000000 --- a/modular_citadel/code/modules/research/designs/weapon_designs.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/design/mag_oldsmg/rubber_mag - name = "WT-550 Semi-Auto SMG rubberbullets Magazine (4.6x30mm rubber)" - desc = "A 20 round rubber shots magazine for the out of date security WT-550 Semi-Auto SMG" - id = "mag_oldsmg_rubber" - materials = list(MAT_METAL = 6000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtrubber - departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/code/modules/research/designs/weapon_designs/weapon_designs.dm b/modular_citadel/code/modules/research/designs/weapon_designs/weapon_designs.dm deleted file mode 100644 index 6246b9e24e..0000000000 --- a/modular_citadel/code/modules/research/designs/weapon_designs/weapon_designs.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/design/mag_oldsmg/tx_mag - name = "WT-550 Semi-Auto SMG Uranium Magazine (4.6x30mm TX)" - desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Semi-Auto SMG." - id = "mag_oldsmg_tx" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wttx - departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/code/modules/research/designs/xenobio_designs.dm b/modular_citadel/code/modules/research/designs/xenobio_designs.dm deleted file mode 100644 index 45ed8e83a0..0000000000 --- a/modular_citadel/code/modules/research/designs/xenobio_designs.dm +++ /dev/null @@ -1,25 +0,0 @@ -/datum/design/xenobio_upgrade - name = "owo" - desc = "someone's bussin" - build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100) - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/xenobio_upgrade/xenobiomonkeys - name = "Xenobiology console monkey upgrade disk" - desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console." - id = "xenobio_monkeys" - build_path = /obj/item/disk/xenobio_console_upgrade/monkey - -/datum/design/xenobio_upgrade/xenobioslimebasic - name = "Xenobiology console basic slime upgrade disk" - desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console." - id = "xenobio_slimebasic" - build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic - -/datum/design/xenobio_upgrade/xenobioslimeadv - name = "Xenobiology console advanced slime upgrade disk" - desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk." - id = "xenobio_slimeadv" - build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv diff --git a/modular_citadel/code/modules/research/techweb/_techweb.dm b/modular_citadel/code/modules/research/techweb/_techweb.dm deleted file mode 100644 index 1c96229594..0000000000 --- a/modular_citadel/code/modules/research/techweb/_techweb.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/techweb/specialized/autounlocking/autoylathe - design_autounlock_buildtypes = AUTOYLATHE - allowed_buildtypes = AUTOYLATHE diff --git a/modular_citadel/code/modules/research/xenobiology/xenobio_camera.dm b/modular_citadel/code/modules/research/xenobiology/xenobio_camera.dm deleted file mode 100644 index b700626a1d..0000000000 --- a/modular_citadel/code/modules/research/xenobiology/xenobio_camera.dm +++ /dev/null @@ -1,48 +0,0 @@ -/obj/machinery/computer/camera_advanced/xenobio - max_slimes = 1 - var/upgradetier = 0 - -/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/disk/xenobio_console_upgrade)) - var/obj/item/disk/xenobio_console_upgrade/diskthing = O - var/successfulupgrade = FALSE - for(var/I in diskthing.upgradetypes) - if(upgradetier & I) - continue - else - upgradetier |= I - successfulupgrade = TRUE - if(I == XENOBIO_UPGRADE_SLIMEADV) - max_slimes = 10 - if(successfulupgrade) - to_chat(user, "You have successfully upgraded [src] with [O].") - else - to_chat(user, "[src] already has the contents of [O] installed!") - return - . = ..() - -/obj/item/disk/xenobio_console_upgrade - name = "Xenobiology console upgrade disk" - desc = "Allan please add detail." - icon_state = "datadisk5" - var/list/upgradetypes = list() - -/obj/item/disk/xenobio_console_upgrade/admin - name = "Xenobio all access thing" - desc = "'the consoles are literally useless!!!!!!!!!!!!!!!'" - upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV, XENOBIO_UPGRADE_MONKEYS) - -/obj/item/disk/xenobio_console_upgrade/monkey - name = "Xenobiology console monkey upgrade disk" - desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console." - upgradetypes = list(XENOBIO_UPGRADE_MONKEYS) - -/obj/item/disk/xenobio_console_upgrade/slimebasic - name = "Xenobiology console basic slime upgrade disk" - desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console." - upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC) - -/obj/item/disk/xenobio_console_upgrade/slimeadv - name = "Xenobiology console advanced slime upgrade disk" - desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk." - upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV) diff --git a/modular_citadel/code/modules/vehicles/secway.dm b/modular_citadel/code/modules/vehicles/secway.dm index 85c1de15e2..9320da6dc8 100644 --- a/modular_citadel/code/modules/vehicles/secway.dm +++ b/modular_citadel/code/modules/vehicles/secway.dm @@ -24,7 +24,7 @@ if(H.sprinting && charge) charge-- new_speed = chargespeed - GET_COMPONENT(D, /datum/component/riding) + var/datum/component/riding/D = GetComponent(/datum/component/riding) D.vehicle_move_delay = new_speed for(var/i in progressbars_by_rider) var/datum/progressbar/B = progressbars_by_rider[i] diff --git a/modular_citadel/icons/eutactic/item/hypereutactic.dmi b/modular_citadel/icons/eutactic/item/hypereutactic.dmi deleted file mode 100644 index 90a665f676..0000000000 Binary files a/modular_citadel/icons/eutactic/item/hypereutactic.dmi and /dev/null differ diff --git a/modular_citadel/icons/eutactic/item/noneutactic.dmi b/modular_citadel/icons/eutactic/item/noneutactic.dmi deleted file mode 100644 index 9d8b9fd1dd..0000000000 Binary files a/modular_citadel/icons/eutactic/item/noneutactic.dmi and /dev/null differ diff --git a/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi b/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi deleted file mode 100644 index ca94055113..0000000000 Binary files a/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi and /dev/null differ diff --git a/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi b/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi deleted file mode 100644 index a9b90da740..0000000000 Binary files a/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi and /dev/null differ diff --git a/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi b/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi deleted file mode 100644 index a426597146..0000000000 Binary files a/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi and /dev/null differ diff --git a/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi b/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi deleted file mode 100644 index aab77c5fd4..0000000000 Binary files a/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi and /dev/null differ diff --git a/modular_citadel/icons/lavaknight/item/head.dmi b/modular_citadel/icons/lavaknight/item/head.dmi deleted file mode 100644 index 950d4894e9..0000000000 Binary files a/modular_citadel/icons/lavaknight/item/head.dmi and /dev/null differ diff --git a/modular_citadel/icons/lavaknight/item/suit.dmi b/modular_citadel/icons/lavaknight/item/suit.dmi deleted file mode 100644 index 49cd14b666..0000000000 Binary files a/modular_citadel/icons/lavaknight/item/suit.dmi and /dev/null differ diff --git a/modular_citadel/icons/lavaknight/mob/head.dmi b/modular_citadel/icons/lavaknight/mob/head.dmi deleted file mode 100644 index 5084c9c66f..0000000000 Binary files a/modular_citadel/icons/lavaknight/mob/head.dmi and /dev/null differ diff --git a/modular_citadel/icons/lavaknight/mob/suit.dmi b/modular_citadel/icons/lavaknight/mob/suit.dmi deleted file mode 100644 index ed51ceaaa4..0000000000 Binary files a/modular_citadel/icons/lavaknight/mob/suit.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/64x32_effects.dmi b/modular_citadel/icons/mob/64x32_effects.dmi index 7db65a8fc3..a11b3584a3 100644 Binary files a/modular_citadel/icons/mob/64x32_effects.dmi and b/modular_citadel/icons/mob/64x32_effects.dmi differ diff --git a/modular_citadel/icons/mob/BananaSpider.dmi b/modular_citadel/icons/mob/BananaSpider.dmi deleted file mode 100644 index da65ef43fa..0000000000 Binary files a/modular_citadel/icons/mob/BananaSpider.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/kiwi.dmi b/modular_citadel/icons/mob/kiwi.dmi deleted file mode 100644 index 18777f65cf..0000000000 Binary files a/modular_citadel/icons/mob/kiwi.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/mam_ears.dmi b/modular_citadel/icons/mob/mam_ears.dmi index a23716562e..fcc124c695 100644 Binary files a/modular_citadel/icons/mob/mam_ears.dmi and b/modular_citadel/icons/mob/mam_ears.dmi differ diff --git a/modular_citadel/icons/mob/mam_markings.dmi b/modular_citadel/icons/mob/mam_markings.dmi index dce56de556..af916d2fd0 100644 Binary files a/modular_citadel/icons/mob/mam_markings.dmi and b/modular_citadel/icons/mob/mam_markings.dmi differ diff --git a/modular_citadel/icons/mob/mam_snouts.dmi b/modular_citadel/icons/mob/mam_snouts.dmi index d2cb9b7286..d0f5d56314 100644 Binary files a/modular_citadel/icons/mob/mam_snouts.dmi and b/modular_citadel/icons/mob/mam_snouts.dmi differ diff --git a/modular_citadel/icons/mob/mam_tails.dmi b/modular_citadel/icons/mob/mam_tails.dmi index 5395e5c7c6..e4bd5119b6 100644 Binary files a/modular_citadel/icons/mob/mam_tails.dmi and b/modular_citadel/icons/mob/mam_tails.dmi differ diff --git a/modular_citadel/icons/mob/markings_notmammals.dmi b/modular_citadel/icons/mob/markings_notmammals.dmi index d9577698d1..79c97968ed 100644 Binary files a/modular_citadel/icons/mob/markings_notmammals.dmi and b/modular_citadel/icons/mob/markings_notmammals.dmi differ diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi index 8c0856429b..a66895f864 100644 Binary files a/modular_citadel/icons/mob/mutant_bodyparts.dmi and b/modular_citadel/icons/mob/mutant_bodyparts.dmi differ diff --git a/modular_citadel/icons/mob/taur_canine.dmi b/modular_citadel/icons/mob/taur_canine.dmi index 0242d2e673..15d6214446 100644 Binary files a/modular_citadel/icons/mob/taur_canine.dmi and b/modular_citadel/icons/mob/taur_canine.dmi differ diff --git a/modular_citadel/icons/mob/taur_hooved.dmi b/modular_citadel/icons/mob/taur_hooved.dmi index e9860f2014..63e604b430 100644 Binary files a/modular_citadel/icons/mob/taur_hooved.dmi and b/modular_citadel/icons/mob/taur_hooved.dmi differ diff --git a/modular_citadel/icons/mob/taur_naga.dmi b/modular_citadel/icons/mob/taur_naga.dmi index 1ca4509db7..7214ec7073 100644 Binary files a/modular_citadel/icons/mob/taur_naga.dmi and b/modular_citadel/icons/mob/taur_naga.dmi differ diff --git a/modular_citadel/icons/mob/uniform_digi.dmi b/modular_citadel/icons/mob/uniform_digi.dmi index 513ebce439..3f1335153e 100644 Binary files a/modular_citadel/icons/mob/uniform_digi.dmi and b/modular_citadel/icons/mob/uniform_digi.dmi differ diff --git a/modular_citadel/icons/obj/FermiChem.dmi b/modular_citadel/icons/obj/FermiChem.dmi deleted file mode 100644 index de7a86d574..0000000000 Binary files a/modular_citadel/icons/obj/FermiChem.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/genitals/hud.dmi b/modular_citadel/icons/obj/genitals/hud.dmi index bf2adcb1fc..f8c8643fe0 100644 Binary files a/modular_citadel/icons/obj/genitals/hud.dmi and b/modular_citadel/icons/obj/genitals/hud.dmi differ diff --git a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi b/modular_citadel/icons/obj/genitals/testicles_onmob.dmi index 33659cf13c..65eb24268f 100644 Binary files a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi and b/modular_citadel/icons/obj/genitals/testicles_onmob.dmi differ diff --git a/modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi b/modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi deleted file mode 100644 index 9a902e0dff..0000000000 Binary files a/modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/guns/energy.dmi b/modular_citadel/icons/obj/guns/energy.dmi new file mode 100644 index 0000000000..482ec04d94 Binary files /dev/null and b/modular_citadel/icons/obj/guns/energy.dmi differ diff --git a/modular_citadel/icons/obj/hypospraymkii.dmi b/modular_citadel/icons/obj/hypospraymkii.dmi deleted file mode 100755 index 3f32219d84..0000000000 Binary files a/modular_citadel/icons/obj/hypospraymkii.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/id.dmi b/modular_citadel/icons/obj/id.dmi deleted file mode 100644 index 653542e93d..0000000000 Binary files a/modular_citadel/icons/obj/id.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/modularpills.dmi b/modular_citadel/icons/obj/modularpills.dmi deleted file mode 100644 index 78095d82c0..0000000000 Binary files a/modular_citadel/icons/obj/modularpills.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/vial.dmi b/modular_citadel/icons/obj/vial.dmi deleted file mode 100755 index 8d1fefe470..0000000000 Binary files a/modular_citadel/icons/obj/vial.dmi and /dev/null differ diff --git a/sound/ambience/servicebell.ogg b/sound/ambience/servicebell.ogg new file mode 100644 index 0000000000..f55c7d5a75 Binary files /dev/null and b/sound/ambience/servicebell.ogg differ diff --git a/sound/AI/aimalf.ogg b/sound/announcer/classic/aimalf.ogg similarity index 100% rename from sound/AI/aimalf.ogg rename to sound/announcer/classic/aimalf.ogg diff --git a/sound/AI/aliens.ogg b/sound/announcer/classic/aliens.ogg similarity index 100% rename from sound/AI/aliens.ogg rename to sound/announcer/classic/aliens.ogg diff --git a/sound/AI/animes.ogg b/sound/announcer/classic/animes.ogg similarity index 100% rename from sound/AI/animes.ogg rename to sound/announcer/classic/animes.ogg diff --git a/sound/AI/attention.ogg b/sound/announcer/classic/attention.ogg similarity index 100% rename from sound/AI/attention.ogg rename to sound/announcer/classic/attention.ogg diff --git a/sound/AI/commandreport.ogg b/sound/announcer/classic/commandreport.ogg similarity index 100% rename from sound/AI/commandreport.ogg rename to sound/announcer/classic/commandreport.ogg diff --git a/sound/AI/granomalies.ogg b/sound/announcer/classic/granomalies.ogg similarity index 100% rename from sound/AI/granomalies.ogg rename to sound/announcer/classic/granomalies.ogg diff --git a/sound/AI/intercept.ogg b/sound/announcer/classic/intercept.ogg similarity index 100% rename from sound/AI/intercept.ogg rename to sound/announcer/classic/intercept.ogg diff --git a/sound/AI/ionstorm.ogg b/sound/announcer/classic/ionstorm.ogg similarity index 100% rename from sound/AI/ionstorm.ogg rename to sound/announcer/classic/ionstorm.ogg diff --git a/sound/AI/meteors.ogg b/sound/announcer/classic/meteors.ogg similarity index 100% rename from sound/AI/meteors.ogg rename to sound/announcer/classic/meteors.ogg diff --git a/sound/AI/newAI.ogg b/sound/announcer/classic/newAI.ogg similarity index 100% rename from sound/AI/newAI.ogg rename to sound/announcer/classic/newAI.ogg diff --git a/sound/AI/outbreak5.ogg b/sound/announcer/classic/outbreak5.ogg similarity index 100% rename from sound/AI/outbreak5.ogg rename to sound/announcer/classic/outbreak5.ogg diff --git a/sound/AI/outbreak7.ogg b/sound/announcer/classic/outbreak7.ogg similarity index 100% rename from sound/AI/outbreak7.ogg rename to sound/announcer/classic/outbreak7.ogg diff --git a/sound/AI/poweroff.ogg b/sound/announcer/classic/poweroff.ogg similarity index 100% rename from sound/AI/poweroff.ogg rename to sound/announcer/classic/poweroff.ogg diff --git a/sound/AI/poweron.ogg b/sound/announcer/classic/poweron.ogg similarity index 100% rename from sound/AI/poweron.ogg rename to sound/announcer/classic/poweron.ogg diff --git a/sound/AI/radiation.ogg b/sound/announcer/classic/radiation.ogg similarity index 100% rename from sound/AI/radiation.ogg rename to sound/announcer/classic/radiation.ogg diff --git a/sound/AI/shuttlecalled.ogg b/sound/announcer/classic/shuttlecalled.ogg similarity index 100% rename from sound/AI/shuttlecalled.ogg rename to sound/announcer/classic/shuttlecalled.ogg diff --git a/sound/AI/shuttledock.ogg b/sound/announcer/classic/shuttledock.ogg similarity index 100% rename from sound/AI/shuttledock.ogg rename to sound/announcer/classic/shuttledock.ogg diff --git a/sound/AI/shuttlerecalled.ogg b/sound/announcer/classic/shuttlerecalled.ogg similarity index 100% rename from sound/AI/shuttlerecalled.ogg rename to sound/announcer/classic/shuttlerecalled.ogg diff --git a/sound/AI/spanomalies.ogg b/sound/announcer/classic/spanomalies.ogg similarity index 100% rename from sound/AI/spanomalies.ogg rename to sound/announcer/classic/spanomalies.ogg diff --git a/sound/AI/welcome.ogg b/sound/announcer/classic/welcome.ogg similarity index 100% rename from sound/AI/welcome.ogg rename to sound/announcer/classic/welcome.ogg diff --git a/sound/announcer/medibot/aliens.ogg b/sound/announcer/medibot/aliens.ogg new file mode 100644 index 0000000000..57fa70c3ca Binary files /dev/null and b/sound/announcer/medibot/aliens.ogg differ diff --git a/sound/announcer/medibot/animes.ogg b/sound/announcer/medibot/animes.ogg new file mode 100644 index 0000000000..7615a744a6 Binary files /dev/null and b/sound/announcer/medibot/animes.ogg differ diff --git a/sound/announcer/medibot/attention.ogg b/sound/announcer/medibot/attention.ogg new file mode 100644 index 0000000000..d4d5a27085 Binary files /dev/null and b/sound/announcer/medibot/attention.ogg differ diff --git a/sound/announcer/medibot/commandreport.ogg b/sound/announcer/medibot/commandreport.ogg new file mode 100644 index 0000000000..4e5c2e1d1f Binary files /dev/null and b/sound/announcer/medibot/commandreport.ogg differ diff --git a/sound/announcer/medibot/granomalies.ogg b/sound/announcer/medibot/granomalies.ogg new file mode 100644 index 0000000000..2713a3cb19 Binary files /dev/null and b/sound/announcer/medibot/granomalies.ogg differ diff --git a/sound/announcer/medibot/intercept.ogg b/sound/announcer/medibot/intercept.ogg new file mode 100644 index 0000000000..c59d0455c1 Binary files /dev/null and b/sound/announcer/medibot/intercept.ogg differ diff --git a/sound/announcer/medibot/ionstorm.ogg b/sound/announcer/medibot/ionstorm.ogg new file mode 100644 index 0000000000..15aeac9f7f Binary files /dev/null and b/sound/announcer/medibot/ionstorm.ogg differ diff --git a/sound/announcer/medibot/meteors.ogg b/sound/announcer/medibot/meteors.ogg new file mode 100644 index 0000000000..91208cae12 Binary files /dev/null and b/sound/announcer/medibot/meteors.ogg differ diff --git a/sound/announcer/medibot/newAI.ogg b/sound/announcer/medibot/newAI.ogg new file mode 100644 index 0000000000..c40b099020 Binary files /dev/null and b/sound/announcer/medibot/newAI.ogg differ diff --git a/sound/announcer/medibot/outbreak5.ogg b/sound/announcer/medibot/outbreak5.ogg new file mode 100644 index 0000000000..7118af4449 Binary files /dev/null and b/sound/announcer/medibot/outbreak5.ogg differ diff --git a/sound/announcer/medibot/outbreak7.ogg b/sound/announcer/medibot/outbreak7.ogg new file mode 100644 index 0000000000..1fc542534d Binary files /dev/null and b/sound/announcer/medibot/outbreak7.ogg differ diff --git a/sound/announcer/medibot/poweroff.ogg b/sound/announcer/medibot/poweroff.ogg new file mode 100644 index 0000000000..875df35002 Binary files /dev/null and b/sound/announcer/medibot/poweroff.ogg differ diff --git a/sound/announcer/medibot/poweron.ogg b/sound/announcer/medibot/poweron.ogg new file mode 100644 index 0000000000..4b1605b1c7 Binary files /dev/null and b/sound/announcer/medibot/poweron.ogg differ diff --git a/sound/announcer/medibot/radiation.ogg b/sound/announcer/medibot/radiation.ogg new file mode 100644 index 0000000000..5c48830b5f Binary files /dev/null and b/sound/announcer/medibot/radiation.ogg differ diff --git a/sound/announcer/medibot/shuttlecalled.ogg b/sound/announcer/medibot/shuttlecalled.ogg new file mode 100644 index 0000000000..a775567abe Binary files /dev/null and b/sound/announcer/medibot/shuttlecalled.ogg differ diff --git a/sound/announcer/medibot/shuttledocked.ogg b/sound/announcer/medibot/shuttledocked.ogg new file mode 100644 index 0000000000..933928db06 Binary files /dev/null and b/sound/announcer/medibot/shuttledocked.ogg differ diff --git a/sound/announcer/medibot/shuttlerecalled.ogg b/sound/announcer/medibot/shuttlerecalled.ogg new file mode 100644 index 0000000000..53b622576d Binary files /dev/null and b/sound/announcer/medibot/shuttlerecalled.ogg differ diff --git a/sound/announcer/medibot/spanomalies.ogg b/sound/announcer/medibot/spanomalies.ogg new file mode 100644 index 0000000000..d710999e1e Binary files /dev/null and b/sound/announcer/medibot/spanomalies.ogg differ diff --git a/sound/announcer/medibot/welcome.ogg b/sound/announcer/medibot/welcome.ogg new file mode 100644 index 0000000000..f9a698fd08 Binary files /dev/null and b/sound/announcer/medibot/welcome.ogg differ diff --git a/sound/AI/harmalarm.ogg b/sound/effects/harmalarm.ogg similarity index 100% rename from sound/AI/harmalarm.ogg rename to sound/effects/harmalarm.ogg diff --git a/sound/effects/k9_jaw_strong.ogg b/sound/effects/k9_jaw_strong.ogg new file mode 100644 index 0000000000..9f60050b95 Binary files /dev/null and b/sound/effects/k9_jaw_strong.ogg differ diff --git a/sound/effects/k9_jaw_weak.ogg b/sound/effects/k9_jaw_weak.ogg new file mode 100644 index 0000000000..3ef2272f01 Binary files /dev/null and b/sound/effects/k9_jaw_weak.ogg differ diff --git a/modular_citadel/sound/vox/_comma.ogg b/sound/vox/_comma.ogg similarity index 100% rename from modular_citadel/sound/vox/_comma.ogg rename to sound/vox/_comma.ogg diff --git a/modular_citadel/sound/vox/_period.ogg b/sound/vox/_period.ogg similarity index 100% rename from modular_citadel/sound/vox/_period.ogg rename to sound/vox/_period.ogg diff --git a/modular_citadel/sound/vox/a.ogg b/sound/vox/a.ogg similarity index 100% rename from modular_citadel/sound/vox/a.ogg rename to sound/vox/a.ogg diff --git a/modular_citadel/sound/vox/accelerating.ogg b/sound/vox/accelerating.ogg similarity index 100% rename from modular_citadel/sound/vox/accelerating.ogg rename to sound/vox/accelerating.ogg diff --git a/modular_citadel/sound/vox/accelerator.ogg b/sound/vox/accelerator.ogg similarity index 100% rename from modular_citadel/sound/vox/accelerator.ogg rename to sound/vox/accelerator.ogg diff --git a/modular_citadel/sound/vox/accepted.ogg b/sound/vox/accepted.ogg similarity index 100% rename from modular_citadel/sound/vox/accepted.ogg rename to sound/vox/accepted.ogg diff --git a/modular_citadel/sound/vox/access.ogg b/sound/vox/access.ogg similarity index 100% rename from modular_citadel/sound/vox/access.ogg rename to sound/vox/access.ogg diff --git a/modular_citadel/sound/vox/acknowledge.ogg b/sound/vox/acknowledge.ogg similarity index 100% rename from modular_citadel/sound/vox/acknowledge.ogg rename to sound/vox/acknowledge.ogg diff --git a/modular_citadel/sound/vox/acknowledged.ogg b/sound/vox/acknowledged.ogg similarity index 100% rename from modular_citadel/sound/vox/acknowledged.ogg rename to sound/vox/acknowledged.ogg diff --git a/modular_citadel/sound/vox/acquired.ogg b/sound/vox/acquired.ogg similarity index 100% rename from modular_citadel/sound/vox/acquired.ogg rename to sound/vox/acquired.ogg diff --git a/modular_citadel/sound/vox/acquisition.ogg b/sound/vox/acquisition.ogg similarity index 100% rename from modular_citadel/sound/vox/acquisition.ogg rename to sound/vox/acquisition.ogg diff --git a/modular_citadel/sound/vox/across.ogg b/sound/vox/across.ogg similarity index 100% rename from modular_citadel/sound/vox/across.ogg rename to sound/vox/across.ogg diff --git a/modular_citadel/sound/vox/activate.ogg b/sound/vox/activate.ogg similarity index 100% rename from modular_citadel/sound/vox/activate.ogg rename to sound/vox/activate.ogg diff --git a/modular_citadel/sound/vox/activated.ogg b/sound/vox/activated.ogg similarity index 100% rename from modular_citadel/sound/vox/activated.ogg rename to sound/vox/activated.ogg diff --git a/modular_citadel/sound/vox/activity.ogg b/sound/vox/activity.ogg similarity index 100% rename from modular_citadel/sound/vox/activity.ogg rename to sound/vox/activity.ogg diff --git a/modular_citadel/sound/vox/adios.ogg b/sound/vox/adios.ogg similarity index 100% rename from modular_citadel/sound/vox/adios.ogg rename to sound/vox/adios.ogg diff --git a/modular_citadel/sound/vox/administration.ogg b/sound/vox/administration.ogg similarity index 100% rename from modular_citadel/sound/vox/administration.ogg rename to sound/vox/administration.ogg diff --git a/modular_citadel/sound/vox/advanced.ogg b/sound/vox/advanced.ogg similarity index 100% rename from modular_citadel/sound/vox/advanced.ogg rename to sound/vox/advanced.ogg diff --git a/modular_citadel/sound/vox/after.ogg b/sound/vox/after.ogg similarity index 100% rename from modular_citadel/sound/vox/after.ogg rename to sound/vox/after.ogg diff --git a/modular_citadel/sound/vox/agent.ogg b/sound/vox/agent.ogg similarity index 100% rename from modular_citadel/sound/vox/agent.ogg rename to sound/vox/agent.ogg diff --git a/modular_citadel/sound/vox/alarm.ogg b/sound/vox/alarm.ogg similarity index 100% rename from modular_citadel/sound/vox/alarm.ogg rename to sound/vox/alarm.ogg diff --git a/modular_citadel/sound/vox/alert.ogg b/sound/vox/alert.ogg similarity index 100% rename from modular_citadel/sound/vox/alert.ogg rename to sound/vox/alert.ogg diff --git a/modular_citadel/sound/vox/alien.ogg b/sound/vox/alien.ogg similarity index 100% rename from modular_citadel/sound/vox/alien.ogg rename to sound/vox/alien.ogg diff --git a/modular_citadel/sound/vox/aligned.ogg b/sound/vox/aligned.ogg similarity index 100% rename from modular_citadel/sound/vox/aligned.ogg rename to sound/vox/aligned.ogg diff --git a/modular_citadel/sound/vox/all.ogg b/sound/vox/all.ogg similarity index 100% rename from modular_citadel/sound/vox/all.ogg rename to sound/vox/all.ogg diff --git a/modular_citadel/sound/vox/alpha.ogg b/sound/vox/alpha.ogg similarity index 100% rename from modular_citadel/sound/vox/alpha.ogg rename to sound/vox/alpha.ogg diff --git a/modular_citadel/sound/vox/am.ogg b/sound/vox/am.ogg similarity index 100% rename from modular_citadel/sound/vox/am.ogg rename to sound/vox/am.ogg diff --git a/modular_citadel/sound/vox/amigo.ogg b/sound/vox/amigo.ogg similarity index 100% rename from modular_citadel/sound/vox/amigo.ogg rename to sound/vox/amigo.ogg diff --git a/modular_citadel/sound/vox/ammunition.ogg b/sound/vox/ammunition.ogg similarity index 100% rename from modular_citadel/sound/vox/ammunition.ogg rename to sound/vox/ammunition.ogg diff --git a/modular_citadel/sound/vox/an.ogg b/sound/vox/an.ogg similarity index 100% rename from modular_citadel/sound/vox/an.ogg rename to sound/vox/an.ogg diff --git a/modular_citadel/sound/vox/and.ogg b/sound/vox/and.ogg similarity index 100% rename from modular_citadel/sound/vox/and.ogg rename to sound/vox/and.ogg diff --git a/modular_citadel/sound/vox/announcement.ogg b/sound/vox/announcement.ogg similarity index 100% rename from modular_citadel/sound/vox/announcement.ogg rename to sound/vox/announcement.ogg diff --git a/modular_citadel/sound/vox/anomalous.ogg b/sound/vox/anomalous.ogg similarity index 100% rename from modular_citadel/sound/vox/anomalous.ogg rename to sound/vox/anomalous.ogg diff --git a/modular_citadel/sound/vox/antenna.ogg b/sound/vox/antenna.ogg similarity index 100% rename from modular_citadel/sound/vox/antenna.ogg rename to sound/vox/antenna.ogg diff --git a/modular_citadel/sound/vox/any.ogg b/sound/vox/any.ogg similarity index 100% rename from modular_citadel/sound/vox/any.ogg rename to sound/vox/any.ogg diff --git a/modular_citadel/sound/vox/apprehend.ogg b/sound/vox/apprehend.ogg similarity index 100% rename from modular_citadel/sound/vox/apprehend.ogg rename to sound/vox/apprehend.ogg diff --git a/modular_citadel/sound/vox/approach.ogg b/sound/vox/approach.ogg similarity index 100% rename from modular_citadel/sound/vox/approach.ogg rename to sound/vox/approach.ogg diff --git a/modular_citadel/sound/vox/are.ogg b/sound/vox/are.ogg similarity index 100% rename from modular_citadel/sound/vox/are.ogg rename to sound/vox/are.ogg diff --git a/modular_citadel/sound/vox/area.ogg b/sound/vox/area.ogg similarity index 100% rename from modular_citadel/sound/vox/area.ogg rename to sound/vox/area.ogg diff --git a/modular_citadel/sound/vox/arm.ogg b/sound/vox/arm.ogg similarity index 100% rename from modular_citadel/sound/vox/arm.ogg rename to sound/vox/arm.ogg diff --git a/modular_citadel/sound/vox/armed.ogg b/sound/vox/armed.ogg similarity index 100% rename from modular_citadel/sound/vox/armed.ogg rename to sound/vox/armed.ogg diff --git a/modular_citadel/sound/vox/armor.ogg b/sound/vox/armor.ogg similarity index 100% rename from modular_citadel/sound/vox/armor.ogg rename to sound/vox/armor.ogg diff --git a/modular_citadel/sound/vox/armory.ogg b/sound/vox/armory.ogg similarity index 100% rename from modular_citadel/sound/vox/armory.ogg rename to sound/vox/armory.ogg diff --git a/modular_citadel/sound/vox/arrest.ogg b/sound/vox/arrest.ogg similarity index 100% rename from modular_citadel/sound/vox/arrest.ogg rename to sound/vox/arrest.ogg diff --git a/modular_citadel/sound/vox/ass.ogg b/sound/vox/ass.ogg similarity index 100% rename from modular_citadel/sound/vox/ass.ogg rename to sound/vox/ass.ogg diff --git a/modular_citadel/sound/vox/at.ogg b/sound/vox/at.ogg similarity index 100% rename from modular_citadel/sound/vox/at.ogg rename to sound/vox/at.ogg diff --git a/modular_citadel/sound/vox/atomic.ogg b/sound/vox/atomic.ogg similarity index 100% rename from modular_citadel/sound/vox/atomic.ogg rename to sound/vox/atomic.ogg diff --git a/modular_citadel/sound/vox/attention.ogg b/sound/vox/attention.ogg similarity index 100% rename from modular_citadel/sound/vox/attention.ogg rename to sound/vox/attention.ogg diff --git a/modular_citadel/sound/vox/authorize.ogg b/sound/vox/authorize.ogg similarity index 100% rename from modular_citadel/sound/vox/authorize.ogg rename to sound/vox/authorize.ogg diff --git a/modular_citadel/sound/vox/authorized.ogg b/sound/vox/authorized.ogg similarity index 100% rename from modular_citadel/sound/vox/authorized.ogg rename to sound/vox/authorized.ogg diff --git a/modular_citadel/sound/vox/automatic.ogg b/sound/vox/automatic.ogg similarity index 100% rename from modular_citadel/sound/vox/automatic.ogg rename to sound/vox/automatic.ogg diff --git a/modular_citadel/sound/vox/away.ogg b/sound/vox/away.ogg similarity index 100% rename from modular_citadel/sound/vox/away.ogg rename to sound/vox/away.ogg diff --git a/modular_citadel/sound/vox/b.ogg b/sound/vox/b.ogg similarity index 100% rename from modular_citadel/sound/vox/b.ogg rename to sound/vox/b.ogg diff --git a/modular_citadel/sound/vox/back.ogg b/sound/vox/back.ogg similarity index 100% rename from modular_citadel/sound/vox/back.ogg rename to sound/vox/back.ogg diff --git a/modular_citadel/sound/vox/backman.ogg b/sound/vox/backman.ogg similarity index 100% rename from modular_citadel/sound/vox/backman.ogg rename to sound/vox/backman.ogg diff --git a/modular_citadel/sound/vox/bad.ogg b/sound/vox/bad.ogg similarity index 100% rename from modular_citadel/sound/vox/bad.ogg rename to sound/vox/bad.ogg diff --git a/modular_citadel/sound/vox/bag.ogg b/sound/vox/bag.ogg similarity index 100% rename from modular_citadel/sound/vox/bag.ogg rename to sound/vox/bag.ogg diff --git a/modular_citadel/sound/vox/bailey.ogg b/sound/vox/bailey.ogg similarity index 100% rename from modular_citadel/sound/vox/bailey.ogg rename to sound/vox/bailey.ogg diff --git a/modular_citadel/sound/vox/barracks.ogg b/sound/vox/barracks.ogg similarity index 100% rename from modular_citadel/sound/vox/barracks.ogg rename to sound/vox/barracks.ogg diff --git a/modular_citadel/sound/vox/base.ogg b/sound/vox/base.ogg similarity index 100% rename from modular_citadel/sound/vox/base.ogg rename to sound/vox/base.ogg diff --git a/modular_citadel/sound/vox/bay.ogg b/sound/vox/bay.ogg similarity index 100% rename from modular_citadel/sound/vox/bay.ogg rename to sound/vox/bay.ogg diff --git a/modular_citadel/sound/vox/be.ogg b/sound/vox/be.ogg similarity index 100% rename from modular_citadel/sound/vox/be.ogg rename to sound/vox/be.ogg diff --git a/modular_citadel/sound/vox/been.ogg b/sound/vox/been.ogg similarity index 100% rename from modular_citadel/sound/vox/been.ogg rename to sound/vox/been.ogg diff --git a/modular_citadel/sound/vox/before.ogg b/sound/vox/before.ogg similarity index 100% rename from modular_citadel/sound/vox/before.ogg rename to sound/vox/before.ogg diff --git a/modular_citadel/sound/vox/beyond.ogg b/sound/vox/beyond.ogg similarity index 100% rename from modular_citadel/sound/vox/beyond.ogg rename to sound/vox/beyond.ogg diff --git a/modular_citadel/sound/vox/biohazard.ogg b/sound/vox/biohazard.ogg similarity index 100% rename from modular_citadel/sound/vox/biohazard.ogg rename to sound/vox/biohazard.ogg diff --git a/modular_citadel/sound/vox/biological.ogg b/sound/vox/biological.ogg similarity index 100% rename from modular_citadel/sound/vox/biological.ogg rename to sound/vox/biological.ogg diff --git a/modular_citadel/sound/vox/birdwell.ogg b/sound/vox/birdwell.ogg similarity index 100% rename from modular_citadel/sound/vox/birdwell.ogg rename to sound/vox/birdwell.ogg diff --git a/modular_citadel/sound/vox/bizwarn.ogg b/sound/vox/bizwarn.ogg similarity index 100% rename from modular_citadel/sound/vox/bizwarn.ogg rename to sound/vox/bizwarn.ogg diff --git a/modular_citadel/sound/vox/black.ogg b/sound/vox/black.ogg similarity index 100% rename from modular_citadel/sound/vox/black.ogg rename to sound/vox/black.ogg diff --git a/modular_citadel/sound/vox/blast.ogg b/sound/vox/blast.ogg similarity index 100% rename from modular_citadel/sound/vox/blast.ogg rename to sound/vox/blast.ogg diff --git a/modular_citadel/sound/vox/blocked.ogg b/sound/vox/blocked.ogg similarity index 100% rename from modular_citadel/sound/vox/blocked.ogg rename to sound/vox/blocked.ogg diff --git a/modular_citadel/sound/vox/bloop.ogg b/sound/vox/bloop.ogg similarity index 100% rename from modular_citadel/sound/vox/bloop.ogg rename to sound/vox/bloop.ogg diff --git a/modular_citadel/sound/vox/blue.ogg b/sound/vox/blue.ogg similarity index 100% rename from modular_citadel/sound/vox/blue.ogg rename to sound/vox/blue.ogg diff --git a/modular_citadel/sound/vox/bottom.ogg b/sound/vox/bottom.ogg similarity index 100% rename from modular_citadel/sound/vox/bottom.ogg rename to sound/vox/bottom.ogg diff --git a/modular_citadel/sound/vox/bravo.ogg b/sound/vox/bravo.ogg similarity index 100% rename from modular_citadel/sound/vox/bravo.ogg rename to sound/vox/bravo.ogg diff --git a/modular_citadel/sound/vox/breach.ogg b/sound/vox/breach.ogg similarity index 100% rename from modular_citadel/sound/vox/breach.ogg rename to sound/vox/breach.ogg diff --git a/modular_citadel/sound/vox/breached.ogg b/sound/vox/breached.ogg similarity index 100% rename from modular_citadel/sound/vox/breached.ogg rename to sound/vox/breached.ogg diff --git a/modular_citadel/sound/vox/break.ogg b/sound/vox/break.ogg similarity index 100% rename from modular_citadel/sound/vox/break.ogg rename to sound/vox/break.ogg diff --git a/modular_citadel/sound/vox/bridge.ogg b/sound/vox/bridge.ogg similarity index 100% rename from modular_citadel/sound/vox/bridge.ogg rename to sound/vox/bridge.ogg diff --git a/modular_citadel/sound/vox/bust.ogg b/sound/vox/bust.ogg similarity index 100% rename from modular_citadel/sound/vox/bust.ogg rename to sound/vox/bust.ogg diff --git a/modular_citadel/sound/vox/but.ogg b/sound/vox/but.ogg similarity index 100% rename from modular_citadel/sound/vox/but.ogg rename to sound/vox/but.ogg diff --git a/modular_citadel/sound/vox/button.ogg b/sound/vox/button.ogg similarity index 100% rename from modular_citadel/sound/vox/button.ogg rename to sound/vox/button.ogg diff --git a/modular_citadel/sound/vox/buzwarn.ogg b/sound/vox/buzwarn.ogg similarity index 100% rename from modular_citadel/sound/vox/buzwarn.ogg rename to sound/vox/buzwarn.ogg diff --git a/modular_citadel/sound/vox/bypass.ogg b/sound/vox/bypass.ogg similarity index 100% rename from modular_citadel/sound/vox/bypass.ogg rename to sound/vox/bypass.ogg diff --git a/modular_citadel/sound/vox/c.ogg b/sound/vox/c.ogg similarity index 100% rename from modular_citadel/sound/vox/c.ogg rename to sound/vox/c.ogg diff --git a/modular_citadel/sound/vox/cable.ogg b/sound/vox/cable.ogg similarity index 100% rename from modular_citadel/sound/vox/cable.ogg rename to sound/vox/cable.ogg diff --git a/modular_citadel/sound/vox/call.ogg b/sound/vox/call.ogg similarity index 100% rename from modular_citadel/sound/vox/call.ogg rename to sound/vox/call.ogg diff --git a/modular_citadel/sound/vox/called.ogg b/sound/vox/called.ogg similarity index 100% rename from modular_citadel/sound/vox/called.ogg rename to sound/vox/called.ogg diff --git a/modular_citadel/sound/vox/canal.ogg b/sound/vox/canal.ogg similarity index 100% rename from modular_citadel/sound/vox/canal.ogg rename to sound/vox/canal.ogg diff --git a/modular_citadel/sound/vox/cap.ogg b/sound/vox/cap.ogg similarity index 100% rename from modular_citadel/sound/vox/cap.ogg rename to sound/vox/cap.ogg diff --git a/modular_citadel/sound/vox/captain.ogg b/sound/vox/captain.ogg similarity index 100% rename from modular_citadel/sound/vox/captain.ogg rename to sound/vox/captain.ogg diff --git a/modular_citadel/sound/vox/capture.ogg b/sound/vox/capture.ogg similarity index 100% rename from modular_citadel/sound/vox/capture.ogg rename to sound/vox/capture.ogg diff --git a/modular_citadel/sound/vox/captured.ogg b/sound/vox/captured.ogg similarity index 100% rename from modular_citadel/sound/vox/captured.ogg rename to sound/vox/captured.ogg diff --git a/modular_citadel/sound/vox/ceiling.ogg b/sound/vox/ceiling.ogg similarity index 100% rename from modular_citadel/sound/vox/ceiling.ogg rename to sound/vox/ceiling.ogg diff --git a/modular_citadel/sound/vox/celsius.ogg b/sound/vox/celsius.ogg similarity index 100% rename from modular_citadel/sound/vox/celsius.ogg rename to sound/vox/celsius.ogg diff --git a/modular_citadel/sound/vox/center.ogg b/sound/vox/center.ogg similarity index 100% rename from modular_citadel/sound/vox/center.ogg rename to sound/vox/center.ogg diff --git a/modular_citadel/sound/vox/centi.ogg b/sound/vox/centi.ogg similarity index 100% rename from modular_citadel/sound/vox/centi.ogg rename to sound/vox/centi.ogg diff --git a/modular_citadel/sound/vox/central.ogg b/sound/vox/central.ogg similarity index 100% rename from modular_citadel/sound/vox/central.ogg rename to sound/vox/central.ogg diff --git a/modular_citadel/sound/vox/chamber.ogg b/sound/vox/chamber.ogg similarity index 100% rename from modular_citadel/sound/vox/chamber.ogg rename to sound/vox/chamber.ogg diff --git a/modular_citadel/sound/vox/charlie.ogg b/sound/vox/charlie.ogg similarity index 100% rename from modular_citadel/sound/vox/charlie.ogg rename to sound/vox/charlie.ogg diff --git a/modular_citadel/sound/vox/check.ogg b/sound/vox/check.ogg similarity index 100% rename from modular_citadel/sound/vox/check.ogg rename to sound/vox/check.ogg diff --git a/modular_citadel/sound/vox/checkpoint.ogg b/sound/vox/checkpoint.ogg similarity index 100% rename from modular_citadel/sound/vox/checkpoint.ogg rename to sound/vox/checkpoint.ogg diff --git a/modular_citadel/sound/vox/chemical.ogg b/sound/vox/chemical.ogg similarity index 100% rename from modular_citadel/sound/vox/chemical.ogg rename to sound/vox/chemical.ogg diff --git a/modular_citadel/sound/vox/cleanup.ogg b/sound/vox/cleanup.ogg similarity index 100% rename from modular_citadel/sound/vox/cleanup.ogg rename to sound/vox/cleanup.ogg diff --git a/modular_citadel/sound/vox/clear.ogg b/sound/vox/clear.ogg similarity index 100% rename from modular_citadel/sound/vox/clear.ogg rename to sound/vox/clear.ogg diff --git a/modular_citadel/sound/vox/clearance.ogg b/sound/vox/clearance.ogg similarity index 100% rename from modular_citadel/sound/vox/clearance.ogg rename to sound/vox/clearance.ogg diff --git a/modular_citadel/sound/vox/close.ogg b/sound/vox/close.ogg similarity index 100% rename from modular_citadel/sound/vox/close.ogg rename to sound/vox/close.ogg diff --git a/modular_citadel/sound/vox/clown.ogg b/sound/vox/clown.ogg similarity index 100% rename from modular_citadel/sound/vox/clown.ogg rename to sound/vox/clown.ogg diff --git a/modular_citadel/sound/vox/code.ogg b/sound/vox/code.ogg similarity index 100% rename from modular_citadel/sound/vox/code.ogg rename to sound/vox/code.ogg diff --git a/modular_citadel/sound/vox/coded.ogg b/sound/vox/coded.ogg similarity index 100% rename from modular_citadel/sound/vox/coded.ogg rename to sound/vox/coded.ogg diff --git a/modular_citadel/sound/vox/collider.ogg b/sound/vox/collider.ogg similarity index 100% rename from modular_citadel/sound/vox/collider.ogg rename to sound/vox/collider.ogg diff --git a/modular_citadel/sound/vox/comma.ogg b/sound/vox/comma.ogg similarity index 100% rename from modular_citadel/sound/vox/comma.ogg rename to sound/vox/comma.ogg diff --git a/modular_citadel/sound/vox/command.ogg b/sound/vox/command.ogg similarity index 100% rename from modular_citadel/sound/vox/command.ogg rename to sound/vox/command.ogg diff --git a/modular_citadel/sound/vox/communication.ogg b/sound/vox/communication.ogg similarity index 100% rename from modular_citadel/sound/vox/communication.ogg rename to sound/vox/communication.ogg diff --git a/modular_citadel/sound/vox/complex.ogg b/sound/vox/complex.ogg similarity index 100% rename from modular_citadel/sound/vox/complex.ogg rename to sound/vox/complex.ogg diff --git a/modular_citadel/sound/vox/computer.ogg b/sound/vox/computer.ogg similarity index 100% rename from modular_citadel/sound/vox/computer.ogg rename to sound/vox/computer.ogg diff --git a/modular_citadel/sound/vox/condition.ogg b/sound/vox/condition.ogg similarity index 100% rename from modular_citadel/sound/vox/condition.ogg rename to sound/vox/condition.ogg diff --git a/modular_citadel/sound/vox/containment.ogg b/sound/vox/containment.ogg similarity index 100% rename from modular_citadel/sound/vox/containment.ogg rename to sound/vox/containment.ogg diff --git a/modular_citadel/sound/vox/contamination.ogg b/sound/vox/contamination.ogg similarity index 100% rename from modular_citadel/sound/vox/contamination.ogg rename to sound/vox/contamination.ogg diff --git a/modular_citadel/sound/vox/control.ogg b/sound/vox/control.ogg similarity index 100% rename from modular_citadel/sound/vox/control.ogg rename to sound/vox/control.ogg diff --git a/modular_citadel/sound/vox/coolant.ogg b/sound/vox/coolant.ogg similarity index 100% rename from modular_citadel/sound/vox/coolant.ogg rename to sound/vox/coolant.ogg diff --git a/modular_citadel/sound/vox/coomer.ogg b/sound/vox/coomer.ogg similarity index 100% rename from modular_citadel/sound/vox/coomer.ogg rename to sound/vox/coomer.ogg diff --git a/modular_citadel/sound/vox/core.ogg b/sound/vox/core.ogg similarity index 100% rename from modular_citadel/sound/vox/core.ogg rename to sound/vox/core.ogg diff --git a/modular_citadel/sound/vox/correct.ogg b/sound/vox/correct.ogg similarity index 100% rename from modular_citadel/sound/vox/correct.ogg rename to sound/vox/correct.ogg diff --git a/modular_citadel/sound/vox/corridor.ogg b/sound/vox/corridor.ogg similarity index 100% rename from modular_citadel/sound/vox/corridor.ogg rename to sound/vox/corridor.ogg diff --git a/modular_citadel/sound/vox/crew.ogg b/sound/vox/crew.ogg similarity index 100% rename from modular_citadel/sound/vox/crew.ogg rename to sound/vox/crew.ogg diff --git a/modular_citadel/sound/vox/cross.ogg b/sound/vox/cross.ogg similarity index 100% rename from modular_citadel/sound/vox/cross.ogg rename to sound/vox/cross.ogg diff --git a/modular_citadel/sound/vox/cryogenic.ogg b/sound/vox/cryogenic.ogg similarity index 100% rename from modular_citadel/sound/vox/cryogenic.ogg rename to sound/vox/cryogenic.ogg diff --git a/modular_citadel/sound/vox/d.ogg b/sound/vox/d.ogg similarity index 100% rename from modular_citadel/sound/vox/d.ogg rename to sound/vox/d.ogg diff --git a/modular_citadel/sound/vox/dadeda.ogg b/sound/vox/dadeda.ogg similarity index 100% rename from modular_citadel/sound/vox/dadeda.ogg rename to sound/vox/dadeda.ogg diff --git a/modular_citadel/sound/vox/damage.ogg b/sound/vox/damage.ogg similarity index 100% rename from modular_citadel/sound/vox/damage.ogg rename to sound/vox/damage.ogg diff --git a/modular_citadel/sound/vox/damaged.ogg b/sound/vox/damaged.ogg similarity index 100% rename from modular_citadel/sound/vox/damaged.ogg rename to sound/vox/damaged.ogg diff --git a/modular_citadel/sound/vox/danger.ogg b/sound/vox/danger.ogg similarity index 100% rename from modular_citadel/sound/vox/danger.ogg rename to sound/vox/danger.ogg diff --git a/modular_citadel/sound/vox/day.ogg b/sound/vox/day.ogg similarity index 100% rename from modular_citadel/sound/vox/day.ogg rename to sound/vox/day.ogg diff --git a/modular_citadel/sound/vox/deactivated.ogg b/sound/vox/deactivated.ogg similarity index 100% rename from modular_citadel/sound/vox/deactivated.ogg rename to sound/vox/deactivated.ogg diff --git a/modular_citadel/sound/vox/decompression.ogg b/sound/vox/decompression.ogg similarity index 100% rename from modular_citadel/sound/vox/decompression.ogg rename to sound/vox/decompression.ogg diff --git a/modular_citadel/sound/vox/decontamination.ogg b/sound/vox/decontamination.ogg similarity index 100% rename from modular_citadel/sound/vox/decontamination.ogg rename to sound/vox/decontamination.ogg diff --git a/modular_citadel/sound/vox/deeoo.ogg b/sound/vox/deeoo.ogg similarity index 100% rename from modular_citadel/sound/vox/deeoo.ogg rename to sound/vox/deeoo.ogg diff --git a/modular_citadel/sound/vox/defense.ogg b/sound/vox/defense.ogg similarity index 100% rename from modular_citadel/sound/vox/defense.ogg rename to sound/vox/defense.ogg diff --git a/modular_citadel/sound/vox/degrees.ogg b/sound/vox/degrees.ogg similarity index 100% rename from modular_citadel/sound/vox/degrees.ogg rename to sound/vox/degrees.ogg diff --git a/modular_citadel/sound/vox/delta.ogg b/sound/vox/delta.ogg similarity index 100% rename from modular_citadel/sound/vox/delta.ogg rename to sound/vox/delta.ogg diff --git a/modular_citadel/sound/vox/denied.ogg b/sound/vox/denied.ogg similarity index 100% rename from modular_citadel/sound/vox/denied.ogg rename to sound/vox/denied.ogg diff --git a/modular_citadel/sound/vox/deploy.ogg b/sound/vox/deploy.ogg similarity index 100% rename from modular_citadel/sound/vox/deploy.ogg rename to sound/vox/deploy.ogg diff --git a/modular_citadel/sound/vox/deployed.ogg b/sound/vox/deployed.ogg similarity index 100% rename from modular_citadel/sound/vox/deployed.ogg rename to sound/vox/deployed.ogg diff --git a/modular_citadel/sound/vox/destroy.ogg b/sound/vox/destroy.ogg similarity index 100% rename from modular_citadel/sound/vox/destroy.ogg rename to sound/vox/destroy.ogg diff --git a/modular_citadel/sound/vox/destroyed.ogg b/sound/vox/destroyed.ogg similarity index 100% rename from modular_citadel/sound/vox/destroyed.ogg rename to sound/vox/destroyed.ogg diff --git a/modular_citadel/sound/vox/detain.ogg b/sound/vox/detain.ogg similarity index 100% rename from modular_citadel/sound/vox/detain.ogg rename to sound/vox/detain.ogg diff --git a/modular_citadel/sound/vox/detected.ogg b/sound/vox/detected.ogg similarity index 100% rename from modular_citadel/sound/vox/detected.ogg rename to sound/vox/detected.ogg diff --git a/modular_citadel/sound/vox/detonation.ogg b/sound/vox/detonation.ogg similarity index 100% rename from modular_citadel/sound/vox/detonation.ogg rename to sound/vox/detonation.ogg diff --git a/modular_citadel/sound/vox/device.ogg b/sound/vox/device.ogg similarity index 100% rename from modular_citadel/sound/vox/device.ogg rename to sound/vox/device.ogg diff --git a/modular_citadel/sound/vox/did.ogg b/sound/vox/did.ogg similarity index 100% rename from modular_citadel/sound/vox/did.ogg rename to sound/vox/did.ogg diff --git a/modular_citadel/sound/vox/die.ogg b/sound/vox/die.ogg similarity index 100% rename from modular_citadel/sound/vox/die.ogg rename to sound/vox/die.ogg diff --git a/modular_citadel/sound/vox/dimensional.ogg b/sound/vox/dimensional.ogg similarity index 100% rename from modular_citadel/sound/vox/dimensional.ogg rename to sound/vox/dimensional.ogg diff --git a/modular_citadel/sound/vox/dirt.ogg b/sound/vox/dirt.ogg similarity index 100% rename from modular_citadel/sound/vox/dirt.ogg rename to sound/vox/dirt.ogg diff --git a/modular_citadel/sound/vox/disengaged.ogg b/sound/vox/disengaged.ogg similarity index 100% rename from modular_citadel/sound/vox/disengaged.ogg rename to sound/vox/disengaged.ogg diff --git a/modular_citadel/sound/vox/dish.ogg b/sound/vox/dish.ogg similarity index 100% rename from modular_citadel/sound/vox/dish.ogg rename to sound/vox/dish.ogg diff --git a/modular_citadel/sound/vox/disposal.ogg b/sound/vox/disposal.ogg similarity index 100% rename from modular_citadel/sound/vox/disposal.ogg rename to sound/vox/disposal.ogg diff --git a/modular_citadel/sound/vox/distance.ogg b/sound/vox/distance.ogg similarity index 100% rename from modular_citadel/sound/vox/distance.ogg rename to sound/vox/distance.ogg diff --git a/modular_citadel/sound/vox/distortion.ogg b/sound/vox/distortion.ogg similarity index 100% rename from modular_citadel/sound/vox/distortion.ogg rename to sound/vox/distortion.ogg diff --git a/modular_citadel/sound/vox/do.ogg b/sound/vox/do.ogg similarity index 100% rename from modular_citadel/sound/vox/do.ogg rename to sound/vox/do.ogg diff --git a/modular_citadel/sound/vox/doctor.ogg b/sound/vox/doctor.ogg similarity index 100% rename from modular_citadel/sound/vox/doctor.ogg rename to sound/vox/doctor.ogg diff --git a/modular_citadel/sound/vox/doop.ogg b/sound/vox/doop.ogg similarity index 100% rename from modular_citadel/sound/vox/doop.ogg rename to sound/vox/doop.ogg diff --git a/modular_citadel/sound/vox/door.ogg b/sound/vox/door.ogg similarity index 100% rename from modular_citadel/sound/vox/door.ogg rename to sound/vox/door.ogg diff --git a/modular_citadel/sound/vox/down.ogg b/sound/vox/down.ogg similarity index 100% rename from modular_citadel/sound/vox/down.ogg rename to sound/vox/down.ogg diff --git a/modular_citadel/sound/vox/dual.ogg b/sound/vox/dual.ogg similarity index 100% rename from modular_citadel/sound/vox/dual.ogg rename to sound/vox/dual.ogg diff --git a/modular_citadel/sound/vox/duct.ogg b/sound/vox/duct.ogg similarity index 100% rename from modular_citadel/sound/vox/duct.ogg rename to sound/vox/duct.ogg diff --git a/modular_citadel/sound/vox/e.ogg b/sound/vox/e.ogg similarity index 100% rename from modular_citadel/sound/vox/e.ogg rename to sound/vox/e.ogg diff --git a/modular_citadel/sound/vox/east.ogg b/sound/vox/east.ogg similarity index 100% rename from modular_citadel/sound/vox/east.ogg rename to sound/vox/east.ogg diff --git a/modular_citadel/sound/vox/echo.ogg b/sound/vox/echo.ogg similarity index 100% rename from modular_citadel/sound/vox/echo.ogg rename to sound/vox/echo.ogg diff --git a/modular_citadel/sound/vox/ed.ogg b/sound/vox/ed.ogg similarity index 100% rename from modular_citadel/sound/vox/ed.ogg rename to sound/vox/ed.ogg diff --git a/modular_citadel/sound/vox/effect.ogg b/sound/vox/effect.ogg similarity index 100% rename from modular_citadel/sound/vox/effect.ogg rename to sound/vox/effect.ogg diff --git a/modular_citadel/sound/vox/egress.ogg b/sound/vox/egress.ogg similarity index 100% rename from modular_citadel/sound/vox/egress.ogg rename to sound/vox/egress.ogg diff --git a/modular_citadel/sound/vox/eight.ogg b/sound/vox/eight.ogg similarity index 100% rename from modular_citadel/sound/vox/eight.ogg rename to sound/vox/eight.ogg diff --git a/modular_citadel/sound/vox/eighteen.ogg b/sound/vox/eighteen.ogg similarity index 100% rename from modular_citadel/sound/vox/eighteen.ogg rename to sound/vox/eighteen.ogg diff --git a/modular_citadel/sound/vox/eighty.ogg b/sound/vox/eighty.ogg similarity index 100% rename from modular_citadel/sound/vox/eighty.ogg rename to sound/vox/eighty.ogg diff --git a/modular_citadel/sound/vox/electric.ogg b/sound/vox/electric.ogg similarity index 100% rename from modular_citadel/sound/vox/electric.ogg rename to sound/vox/electric.ogg diff --git a/modular_citadel/sound/vox/electromagnetic.ogg b/sound/vox/electromagnetic.ogg similarity index 100% rename from modular_citadel/sound/vox/electromagnetic.ogg rename to sound/vox/electromagnetic.ogg diff --git a/modular_citadel/sound/vox/elevator.ogg b/sound/vox/elevator.ogg similarity index 100% rename from modular_citadel/sound/vox/elevator.ogg rename to sound/vox/elevator.ogg diff --git a/modular_citadel/sound/vox/eleven.ogg b/sound/vox/eleven.ogg similarity index 100% rename from modular_citadel/sound/vox/eleven.ogg rename to sound/vox/eleven.ogg diff --git a/modular_citadel/sound/vox/eliminate.ogg b/sound/vox/eliminate.ogg similarity index 100% rename from modular_citadel/sound/vox/eliminate.ogg rename to sound/vox/eliminate.ogg diff --git a/modular_citadel/sound/vox/emergency.ogg b/sound/vox/emergency.ogg similarity index 100% rename from modular_citadel/sound/vox/emergency.ogg rename to sound/vox/emergency.ogg diff --git a/modular_citadel/sound/vox/enemy.ogg b/sound/vox/enemy.ogg similarity index 100% rename from modular_citadel/sound/vox/enemy.ogg rename to sound/vox/enemy.ogg diff --git a/modular_citadel/sound/vox/energy.ogg b/sound/vox/energy.ogg similarity index 100% rename from modular_citadel/sound/vox/energy.ogg rename to sound/vox/energy.ogg diff --git a/modular_citadel/sound/vox/engage.ogg b/sound/vox/engage.ogg similarity index 100% rename from modular_citadel/sound/vox/engage.ogg rename to sound/vox/engage.ogg diff --git a/modular_citadel/sound/vox/engaged.ogg b/sound/vox/engaged.ogg similarity index 100% rename from modular_citadel/sound/vox/engaged.ogg rename to sound/vox/engaged.ogg diff --git a/modular_citadel/sound/vox/engine.ogg b/sound/vox/engine.ogg similarity index 100% rename from modular_citadel/sound/vox/engine.ogg rename to sound/vox/engine.ogg diff --git a/modular_citadel/sound/vox/enter.ogg b/sound/vox/enter.ogg similarity index 100% rename from modular_citadel/sound/vox/enter.ogg rename to sound/vox/enter.ogg diff --git a/modular_citadel/sound/vox/entry.ogg b/sound/vox/entry.ogg similarity index 100% rename from modular_citadel/sound/vox/entry.ogg rename to sound/vox/entry.ogg diff --git a/modular_citadel/sound/vox/environment.ogg b/sound/vox/environment.ogg similarity index 100% rename from modular_citadel/sound/vox/environment.ogg rename to sound/vox/environment.ogg diff --git a/modular_citadel/sound/vox/error.ogg b/sound/vox/error.ogg similarity index 100% rename from modular_citadel/sound/vox/error.ogg rename to sound/vox/error.ogg diff --git a/modular_citadel/sound/vox/escape.ogg b/sound/vox/escape.ogg similarity index 100% rename from modular_citadel/sound/vox/escape.ogg rename to sound/vox/escape.ogg diff --git a/modular_citadel/sound/vox/evacuate.ogg b/sound/vox/evacuate.ogg similarity index 100% rename from modular_citadel/sound/vox/evacuate.ogg rename to sound/vox/evacuate.ogg diff --git a/modular_citadel/sound/vox/exchange.ogg b/sound/vox/exchange.ogg similarity index 100% rename from modular_citadel/sound/vox/exchange.ogg rename to sound/vox/exchange.ogg diff --git a/modular_citadel/sound/vox/exit.ogg b/sound/vox/exit.ogg similarity index 100% rename from modular_citadel/sound/vox/exit.ogg rename to sound/vox/exit.ogg diff --git a/modular_citadel/sound/vox/expect.ogg b/sound/vox/expect.ogg similarity index 100% rename from modular_citadel/sound/vox/expect.ogg rename to sound/vox/expect.ogg diff --git a/modular_citadel/sound/vox/experiment.ogg b/sound/vox/experiment.ogg similarity index 100% rename from modular_citadel/sound/vox/experiment.ogg rename to sound/vox/experiment.ogg diff --git a/modular_citadel/sound/vox/experimental.ogg b/sound/vox/experimental.ogg similarity index 100% rename from modular_citadel/sound/vox/experimental.ogg rename to sound/vox/experimental.ogg diff --git a/modular_citadel/sound/vox/explode.ogg b/sound/vox/explode.ogg similarity index 100% rename from modular_citadel/sound/vox/explode.ogg rename to sound/vox/explode.ogg diff --git a/modular_citadel/sound/vox/explosion.ogg b/sound/vox/explosion.ogg similarity index 100% rename from modular_citadel/sound/vox/explosion.ogg rename to sound/vox/explosion.ogg diff --git a/modular_citadel/sound/vox/exposure.ogg b/sound/vox/exposure.ogg similarity index 100% rename from modular_citadel/sound/vox/exposure.ogg rename to sound/vox/exposure.ogg diff --git a/modular_citadel/sound/vox/exterminate.ogg b/sound/vox/exterminate.ogg similarity index 100% rename from modular_citadel/sound/vox/exterminate.ogg rename to sound/vox/exterminate.ogg diff --git a/modular_citadel/sound/vox/extinguish.ogg b/sound/vox/extinguish.ogg similarity index 100% rename from modular_citadel/sound/vox/extinguish.ogg rename to sound/vox/extinguish.ogg diff --git a/modular_citadel/sound/vox/extinguisher.ogg b/sound/vox/extinguisher.ogg similarity index 100% rename from modular_citadel/sound/vox/extinguisher.ogg rename to sound/vox/extinguisher.ogg diff --git a/modular_citadel/sound/vox/extreme.ogg b/sound/vox/extreme.ogg similarity index 100% rename from modular_citadel/sound/vox/extreme.ogg rename to sound/vox/extreme.ogg diff --git a/modular_citadel/sound/vox/f.ogg b/sound/vox/f.ogg similarity index 100% rename from modular_citadel/sound/vox/f.ogg rename to sound/vox/f.ogg diff --git a/modular_citadel/sound/vox/face.ogg b/sound/vox/face.ogg similarity index 100% rename from modular_citadel/sound/vox/face.ogg rename to sound/vox/face.ogg diff --git a/modular_citadel/sound/vox/facility.ogg b/sound/vox/facility.ogg similarity index 100% rename from modular_citadel/sound/vox/facility.ogg rename to sound/vox/facility.ogg diff --git a/modular_citadel/sound/vox/fahrenheit.ogg b/sound/vox/fahrenheit.ogg similarity index 100% rename from modular_citadel/sound/vox/fahrenheit.ogg rename to sound/vox/fahrenheit.ogg diff --git a/modular_citadel/sound/vox/failed.ogg b/sound/vox/failed.ogg similarity index 100% rename from modular_citadel/sound/vox/failed.ogg rename to sound/vox/failed.ogg diff --git a/modular_citadel/sound/vox/failure.ogg b/sound/vox/failure.ogg similarity index 100% rename from modular_citadel/sound/vox/failure.ogg rename to sound/vox/failure.ogg diff --git a/modular_citadel/sound/vox/farthest.ogg b/sound/vox/farthest.ogg similarity index 100% rename from modular_citadel/sound/vox/farthest.ogg rename to sound/vox/farthest.ogg diff --git a/modular_citadel/sound/vox/fast.ogg b/sound/vox/fast.ogg similarity index 100% rename from modular_citadel/sound/vox/fast.ogg rename to sound/vox/fast.ogg diff --git a/modular_citadel/sound/vox/feet.ogg b/sound/vox/feet.ogg similarity index 100% rename from modular_citadel/sound/vox/feet.ogg rename to sound/vox/feet.ogg diff --git a/modular_citadel/sound/vox/field.ogg b/sound/vox/field.ogg similarity index 100% rename from modular_citadel/sound/vox/field.ogg rename to sound/vox/field.ogg diff --git a/modular_citadel/sound/vox/fifteen.ogg b/sound/vox/fifteen.ogg similarity index 100% rename from modular_citadel/sound/vox/fifteen.ogg rename to sound/vox/fifteen.ogg diff --git a/modular_citadel/sound/vox/fifth.ogg b/sound/vox/fifth.ogg similarity index 100% rename from modular_citadel/sound/vox/fifth.ogg rename to sound/vox/fifth.ogg diff --git a/modular_citadel/sound/vox/fifty.ogg b/sound/vox/fifty.ogg similarity index 100% rename from modular_citadel/sound/vox/fifty.ogg rename to sound/vox/fifty.ogg diff --git a/modular_citadel/sound/vox/final.ogg b/sound/vox/final.ogg similarity index 100% rename from modular_citadel/sound/vox/final.ogg rename to sound/vox/final.ogg diff --git a/modular_citadel/sound/vox/fine.ogg b/sound/vox/fine.ogg similarity index 100% rename from modular_citadel/sound/vox/fine.ogg rename to sound/vox/fine.ogg diff --git a/modular_citadel/sound/vox/fire.ogg b/sound/vox/fire.ogg similarity index 100% rename from modular_citadel/sound/vox/fire.ogg rename to sound/vox/fire.ogg diff --git a/modular_citadel/sound/vox/first.ogg b/sound/vox/first.ogg similarity index 100% rename from modular_citadel/sound/vox/first.ogg rename to sound/vox/first.ogg diff --git a/modular_citadel/sound/vox/five.ogg b/sound/vox/five.ogg similarity index 100% rename from modular_citadel/sound/vox/five.ogg rename to sound/vox/five.ogg diff --git a/modular_citadel/sound/vox/flag.ogg b/sound/vox/flag.ogg similarity index 100% rename from modular_citadel/sound/vox/flag.ogg rename to sound/vox/flag.ogg diff --git a/modular_citadel/sound/vox/flooding.ogg b/sound/vox/flooding.ogg similarity index 100% rename from modular_citadel/sound/vox/flooding.ogg rename to sound/vox/flooding.ogg diff --git a/modular_citadel/sound/vox/floor.ogg b/sound/vox/floor.ogg similarity index 100% rename from modular_citadel/sound/vox/floor.ogg rename to sound/vox/floor.ogg diff --git a/modular_citadel/sound/vox/fool.ogg b/sound/vox/fool.ogg similarity index 100% rename from modular_citadel/sound/vox/fool.ogg rename to sound/vox/fool.ogg diff --git a/modular_citadel/sound/vox/for.ogg b/sound/vox/for.ogg similarity index 100% rename from modular_citadel/sound/vox/for.ogg rename to sound/vox/for.ogg diff --git a/modular_citadel/sound/vox/forbidden.ogg b/sound/vox/forbidden.ogg similarity index 100% rename from modular_citadel/sound/vox/forbidden.ogg rename to sound/vox/forbidden.ogg diff --git a/modular_citadel/sound/vox/force.ogg b/sound/vox/force.ogg similarity index 100% rename from modular_citadel/sound/vox/force.ogg rename to sound/vox/force.ogg diff --git a/modular_citadel/sound/vox/forms.ogg b/sound/vox/forms.ogg similarity index 100% rename from modular_citadel/sound/vox/forms.ogg rename to sound/vox/forms.ogg diff --git a/modular_citadel/sound/vox/found.ogg b/sound/vox/found.ogg similarity index 100% rename from modular_citadel/sound/vox/found.ogg rename to sound/vox/found.ogg diff --git a/modular_citadel/sound/vox/four.ogg b/sound/vox/four.ogg similarity index 100% rename from modular_citadel/sound/vox/four.ogg rename to sound/vox/four.ogg diff --git a/modular_citadel/sound/vox/fourteen.ogg b/sound/vox/fourteen.ogg similarity index 100% rename from modular_citadel/sound/vox/fourteen.ogg rename to sound/vox/fourteen.ogg diff --git a/modular_citadel/sound/vox/fourth.ogg b/sound/vox/fourth.ogg similarity index 100% rename from modular_citadel/sound/vox/fourth.ogg rename to sound/vox/fourth.ogg diff --git a/modular_citadel/sound/vox/fourty.ogg b/sound/vox/fourty.ogg similarity index 100% rename from modular_citadel/sound/vox/fourty.ogg rename to sound/vox/fourty.ogg diff --git a/modular_citadel/sound/vox/foxtrot.ogg b/sound/vox/foxtrot.ogg similarity index 100% rename from modular_citadel/sound/vox/foxtrot.ogg rename to sound/vox/foxtrot.ogg diff --git a/modular_citadel/sound/vox/freeman.ogg b/sound/vox/freeman.ogg similarity index 100% rename from modular_citadel/sound/vox/freeman.ogg rename to sound/vox/freeman.ogg diff --git a/modular_citadel/sound/vox/freezer.ogg b/sound/vox/freezer.ogg similarity index 100% rename from modular_citadel/sound/vox/freezer.ogg rename to sound/vox/freezer.ogg diff --git a/modular_citadel/sound/vox/from.ogg b/sound/vox/from.ogg similarity index 100% rename from modular_citadel/sound/vox/from.ogg rename to sound/vox/from.ogg diff --git a/modular_citadel/sound/vox/front.ogg b/sound/vox/front.ogg similarity index 100% rename from modular_citadel/sound/vox/front.ogg rename to sound/vox/front.ogg diff --git a/modular_citadel/sound/vox/fuel.ogg b/sound/vox/fuel.ogg similarity index 100% rename from modular_citadel/sound/vox/fuel.ogg rename to sound/vox/fuel.ogg diff --git a/modular_citadel/sound/vox/g.ogg b/sound/vox/g.ogg similarity index 100% rename from modular_citadel/sound/vox/g.ogg rename to sound/vox/g.ogg diff --git a/modular_citadel/sound/vox/gay.ogg b/sound/vox/gay.ogg similarity index 100% rename from modular_citadel/sound/vox/gay.ogg rename to sound/vox/gay.ogg diff --git a/modular_citadel/sound/vox/get.ogg b/sound/vox/get.ogg similarity index 100% rename from modular_citadel/sound/vox/get.ogg rename to sound/vox/get.ogg diff --git a/modular_citadel/sound/vox/go.ogg b/sound/vox/go.ogg similarity index 100% rename from modular_citadel/sound/vox/go.ogg rename to sound/vox/go.ogg diff --git a/modular_citadel/sound/vox/going.ogg b/sound/vox/going.ogg similarity index 100% rename from modular_citadel/sound/vox/going.ogg rename to sound/vox/going.ogg diff --git a/modular_citadel/sound/vox/good.ogg b/sound/vox/good.ogg similarity index 100% rename from modular_citadel/sound/vox/good.ogg rename to sound/vox/good.ogg diff --git a/modular_citadel/sound/vox/goodbye.ogg b/sound/vox/goodbye.ogg similarity index 100% rename from modular_citadel/sound/vox/goodbye.ogg rename to sound/vox/goodbye.ogg diff --git a/modular_citadel/sound/vox/gordon.ogg b/sound/vox/gordon.ogg similarity index 100% rename from modular_citadel/sound/vox/gordon.ogg rename to sound/vox/gordon.ogg diff --git a/modular_citadel/sound/vox/got.ogg b/sound/vox/got.ogg similarity index 100% rename from modular_citadel/sound/vox/got.ogg rename to sound/vox/got.ogg diff --git a/modular_citadel/sound/vox/government.ogg b/sound/vox/government.ogg similarity index 100% rename from modular_citadel/sound/vox/government.ogg rename to sound/vox/government.ogg diff --git a/modular_citadel/sound/vox/granted.ogg b/sound/vox/granted.ogg similarity index 100% rename from modular_citadel/sound/vox/granted.ogg rename to sound/vox/granted.ogg diff --git a/modular_citadel/sound/vox/great.ogg b/sound/vox/great.ogg similarity index 100% rename from modular_citadel/sound/vox/great.ogg rename to sound/vox/great.ogg diff --git a/modular_citadel/sound/vox/green.ogg b/sound/vox/green.ogg similarity index 100% rename from modular_citadel/sound/vox/green.ogg rename to sound/vox/green.ogg diff --git a/modular_citadel/sound/vox/grenade.ogg b/sound/vox/grenade.ogg similarity index 100% rename from modular_citadel/sound/vox/grenade.ogg rename to sound/vox/grenade.ogg diff --git a/modular_citadel/sound/vox/guard.ogg b/sound/vox/guard.ogg similarity index 100% rename from modular_citadel/sound/vox/guard.ogg rename to sound/vox/guard.ogg diff --git a/modular_citadel/sound/vox/gulf.ogg b/sound/vox/gulf.ogg similarity index 100% rename from modular_citadel/sound/vox/gulf.ogg rename to sound/vox/gulf.ogg diff --git a/modular_citadel/sound/vox/gun.ogg b/sound/vox/gun.ogg similarity index 100% rename from modular_citadel/sound/vox/gun.ogg rename to sound/vox/gun.ogg diff --git a/modular_citadel/sound/vox/guthrie.ogg b/sound/vox/guthrie.ogg similarity index 100% rename from modular_citadel/sound/vox/guthrie.ogg rename to sound/vox/guthrie.ogg diff --git a/modular_citadel/sound/vox/handling.ogg b/sound/vox/handling.ogg similarity index 100% rename from modular_citadel/sound/vox/handling.ogg rename to sound/vox/handling.ogg diff --git a/modular_citadel/sound/vox/hangar.ogg b/sound/vox/hangar.ogg similarity index 100% rename from modular_citadel/sound/vox/hangar.ogg rename to sound/vox/hangar.ogg diff --git a/modular_citadel/sound/vox/has.ogg b/sound/vox/has.ogg similarity index 100% rename from modular_citadel/sound/vox/has.ogg rename to sound/vox/has.ogg diff --git a/modular_citadel/sound/vox/have.ogg b/sound/vox/have.ogg similarity index 100% rename from modular_citadel/sound/vox/have.ogg rename to sound/vox/have.ogg diff --git a/modular_citadel/sound/vox/hazard.ogg b/sound/vox/hazard.ogg similarity index 100% rename from modular_citadel/sound/vox/hazard.ogg rename to sound/vox/hazard.ogg diff --git a/modular_citadel/sound/vox/head.ogg b/sound/vox/head.ogg similarity index 100% rename from modular_citadel/sound/vox/head.ogg rename to sound/vox/head.ogg diff --git a/modular_citadel/sound/vox/health.ogg b/sound/vox/health.ogg similarity index 100% rename from modular_citadel/sound/vox/health.ogg rename to sound/vox/health.ogg diff --git a/modular_citadel/sound/vox/heat.ogg b/sound/vox/heat.ogg similarity index 100% rename from modular_citadel/sound/vox/heat.ogg rename to sound/vox/heat.ogg diff --git a/modular_citadel/sound/vox/helicopter.ogg b/sound/vox/helicopter.ogg similarity index 100% rename from modular_citadel/sound/vox/helicopter.ogg rename to sound/vox/helicopter.ogg diff --git a/modular_citadel/sound/vox/helium.ogg b/sound/vox/helium.ogg similarity index 100% rename from modular_citadel/sound/vox/helium.ogg rename to sound/vox/helium.ogg diff --git a/modular_citadel/sound/vox/hello.ogg b/sound/vox/hello.ogg similarity index 100% rename from modular_citadel/sound/vox/hello.ogg rename to sound/vox/hello.ogg diff --git a/modular_citadel/sound/vox/help.ogg b/sound/vox/help.ogg similarity index 100% rename from modular_citadel/sound/vox/help.ogg rename to sound/vox/help.ogg diff --git a/modular_citadel/sound/vox/here.ogg b/sound/vox/here.ogg similarity index 100% rename from modular_citadel/sound/vox/here.ogg rename to sound/vox/here.ogg diff --git a/modular_citadel/sound/vox/hide.ogg b/sound/vox/hide.ogg similarity index 100% rename from modular_citadel/sound/vox/hide.ogg rename to sound/vox/hide.ogg diff --git a/modular_citadel/sound/vox/high.ogg b/sound/vox/high.ogg similarity index 100% rename from modular_citadel/sound/vox/high.ogg rename to sound/vox/high.ogg diff --git a/modular_citadel/sound/vox/highest.ogg b/sound/vox/highest.ogg similarity index 100% rename from modular_citadel/sound/vox/highest.ogg rename to sound/vox/highest.ogg diff --git a/modular_citadel/sound/vox/hit.ogg b/sound/vox/hit.ogg similarity index 100% rename from modular_citadel/sound/vox/hit.ogg rename to sound/vox/hit.ogg diff --git a/modular_citadel/sound/vox/holds.ogg b/sound/vox/holds.ogg similarity index 100% rename from modular_citadel/sound/vox/holds.ogg rename to sound/vox/holds.ogg diff --git a/modular_citadel/sound/vox/hole.ogg b/sound/vox/hole.ogg similarity index 100% rename from modular_citadel/sound/vox/hole.ogg rename to sound/vox/hole.ogg diff --git a/modular_citadel/sound/vox/hostile.ogg b/sound/vox/hostile.ogg similarity index 100% rename from modular_citadel/sound/vox/hostile.ogg rename to sound/vox/hostile.ogg diff --git a/modular_citadel/sound/vox/hot.ogg b/sound/vox/hot.ogg similarity index 100% rename from modular_citadel/sound/vox/hot.ogg rename to sound/vox/hot.ogg diff --git a/modular_citadel/sound/vox/hotel.ogg b/sound/vox/hotel.ogg similarity index 100% rename from modular_citadel/sound/vox/hotel.ogg rename to sound/vox/hotel.ogg diff --git a/modular_citadel/sound/vox/hour.ogg b/sound/vox/hour.ogg similarity index 100% rename from modular_citadel/sound/vox/hour.ogg rename to sound/vox/hour.ogg diff --git a/modular_citadel/sound/vox/hours.ogg b/sound/vox/hours.ogg similarity index 100% rename from modular_citadel/sound/vox/hours.ogg rename to sound/vox/hours.ogg diff --git a/modular_citadel/sound/vox/hundred.ogg b/sound/vox/hundred.ogg similarity index 100% rename from modular_citadel/sound/vox/hundred.ogg rename to sound/vox/hundred.ogg diff --git a/modular_citadel/sound/vox/hydro.ogg b/sound/vox/hydro.ogg similarity index 100% rename from modular_citadel/sound/vox/hydro.ogg rename to sound/vox/hydro.ogg diff --git a/modular_citadel/sound/vox/i.ogg b/sound/vox/i.ogg similarity index 100% rename from modular_citadel/sound/vox/i.ogg rename to sound/vox/i.ogg diff --git a/modular_citadel/sound/vox/idiot.ogg b/sound/vox/idiot.ogg similarity index 100% rename from modular_citadel/sound/vox/idiot.ogg rename to sound/vox/idiot.ogg diff --git a/modular_citadel/sound/vox/illegal.ogg b/sound/vox/illegal.ogg similarity index 100% rename from modular_citadel/sound/vox/illegal.ogg rename to sound/vox/illegal.ogg diff --git a/modular_citadel/sound/vox/immediate.ogg b/sound/vox/immediate.ogg similarity index 100% rename from modular_citadel/sound/vox/immediate.ogg rename to sound/vox/immediate.ogg diff --git a/modular_citadel/sound/vox/immediately.ogg b/sound/vox/immediately.ogg similarity index 100% rename from modular_citadel/sound/vox/immediately.ogg rename to sound/vox/immediately.ogg diff --git a/modular_citadel/sound/vox/in.ogg b/sound/vox/in.ogg similarity index 100% rename from modular_citadel/sound/vox/in.ogg rename to sound/vox/in.ogg diff --git a/modular_citadel/sound/vox/inches.ogg b/sound/vox/inches.ogg similarity index 100% rename from modular_citadel/sound/vox/inches.ogg rename to sound/vox/inches.ogg diff --git a/modular_citadel/sound/vox/india.ogg b/sound/vox/india.ogg similarity index 100% rename from modular_citadel/sound/vox/india.ogg rename to sound/vox/india.ogg diff --git a/modular_citadel/sound/vox/ing.ogg b/sound/vox/ing.ogg similarity index 100% rename from modular_citadel/sound/vox/ing.ogg rename to sound/vox/ing.ogg diff --git a/modular_citadel/sound/vox/inoperative.ogg b/sound/vox/inoperative.ogg similarity index 100% rename from modular_citadel/sound/vox/inoperative.ogg rename to sound/vox/inoperative.ogg diff --git a/modular_citadel/sound/vox/inside.ogg b/sound/vox/inside.ogg similarity index 100% rename from modular_citadel/sound/vox/inside.ogg rename to sound/vox/inside.ogg diff --git a/modular_citadel/sound/vox/inspection.ogg b/sound/vox/inspection.ogg similarity index 100% rename from modular_citadel/sound/vox/inspection.ogg rename to sound/vox/inspection.ogg diff --git a/modular_citadel/sound/vox/inspector.ogg b/sound/vox/inspector.ogg similarity index 100% rename from modular_citadel/sound/vox/inspector.ogg rename to sound/vox/inspector.ogg diff --git a/modular_citadel/sound/vox/interchange.ogg b/sound/vox/interchange.ogg similarity index 100% rename from modular_citadel/sound/vox/interchange.ogg rename to sound/vox/interchange.ogg diff --git a/modular_citadel/sound/vox/intruder.ogg b/sound/vox/intruder.ogg similarity index 100% rename from modular_citadel/sound/vox/intruder.ogg rename to sound/vox/intruder.ogg diff --git a/modular_citadel/sound/vox/invallid.ogg b/sound/vox/invallid.ogg similarity index 100% rename from modular_citadel/sound/vox/invallid.ogg rename to sound/vox/invallid.ogg diff --git a/modular_citadel/sound/vox/invasion.ogg b/sound/vox/invasion.ogg similarity index 100% rename from modular_citadel/sound/vox/invasion.ogg rename to sound/vox/invasion.ogg diff --git a/modular_citadel/sound/vox/is.ogg b/sound/vox/is.ogg similarity index 100% rename from modular_citadel/sound/vox/is.ogg rename to sound/vox/is.ogg diff --git a/modular_citadel/sound/vox/it.ogg b/sound/vox/it.ogg similarity index 100% rename from modular_citadel/sound/vox/it.ogg rename to sound/vox/it.ogg diff --git a/modular_citadel/sound/vox/johnson.ogg b/sound/vox/johnson.ogg similarity index 100% rename from modular_citadel/sound/vox/johnson.ogg rename to sound/vox/johnson.ogg diff --git a/modular_citadel/sound/vox/juliet.ogg b/sound/vox/juliet.ogg similarity index 100% rename from modular_citadel/sound/vox/juliet.ogg rename to sound/vox/juliet.ogg diff --git a/modular_citadel/sound/vox/key.ogg b/sound/vox/key.ogg similarity index 100% rename from modular_citadel/sound/vox/key.ogg rename to sound/vox/key.ogg diff --git a/modular_citadel/sound/vox/kill.ogg b/sound/vox/kill.ogg similarity index 100% rename from modular_citadel/sound/vox/kill.ogg rename to sound/vox/kill.ogg diff --git a/modular_citadel/sound/vox/kilo.ogg b/sound/vox/kilo.ogg similarity index 100% rename from modular_citadel/sound/vox/kilo.ogg rename to sound/vox/kilo.ogg diff --git a/modular_citadel/sound/vox/kit.ogg b/sound/vox/kit.ogg similarity index 100% rename from modular_citadel/sound/vox/kit.ogg rename to sound/vox/kit.ogg diff --git a/modular_citadel/sound/vox/lab.ogg b/sound/vox/lab.ogg similarity index 100% rename from modular_citadel/sound/vox/lab.ogg rename to sound/vox/lab.ogg diff --git a/modular_citadel/sound/vox/lambda.ogg b/sound/vox/lambda.ogg similarity index 100% rename from modular_citadel/sound/vox/lambda.ogg rename to sound/vox/lambda.ogg diff --git a/modular_citadel/sound/vox/laser.ogg b/sound/vox/laser.ogg similarity index 100% rename from modular_citadel/sound/vox/laser.ogg rename to sound/vox/laser.ogg diff --git a/modular_citadel/sound/vox/last.ogg b/sound/vox/last.ogg similarity index 100% rename from modular_citadel/sound/vox/last.ogg rename to sound/vox/last.ogg diff --git a/modular_citadel/sound/vox/launch.ogg b/sound/vox/launch.ogg similarity index 100% rename from modular_citadel/sound/vox/launch.ogg rename to sound/vox/launch.ogg diff --git a/modular_citadel/sound/vox/leak.ogg b/sound/vox/leak.ogg similarity index 100% rename from modular_citadel/sound/vox/leak.ogg rename to sound/vox/leak.ogg diff --git a/modular_citadel/sound/vox/leave.ogg b/sound/vox/leave.ogg similarity index 100% rename from modular_citadel/sound/vox/leave.ogg rename to sound/vox/leave.ogg diff --git a/modular_citadel/sound/vox/left.ogg b/sound/vox/left.ogg similarity index 100% rename from modular_citadel/sound/vox/left.ogg rename to sound/vox/left.ogg diff --git a/modular_citadel/sound/vox/legal.ogg b/sound/vox/legal.ogg similarity index 100% rename from modular_citadel/sound/vox/legal.ogg rename to sound/vox/legal.ogg diff --git a/modular_citadel/sound/vox/level.ogg b/sound/vox/level.ogg similarity index 100% rename from modular_citadel/sound/vox/level.ogg rename to sound/vox/level.ogg diff --git a/modular_citadel/sound/vox/lever.ogg b/sound/vox/lever.ogg similarity index 100% rename from modular_citadel/sound/vox/lever.ogg rename to sound/vox/lever.ogg diff --git a/modular_citadel/sound/vox/lie.ogg b/sound/vox/lie.ogg similarity index 100% rename from modular_citadel/sound/vox/lie.ogg rename to sound/vox/lie.ogg diff --git a/modular_citadel/sound/vox/lieutenant.ogg b/sound/vox/lieutenant.ogg similarity index 100% rename from modular_citadel/sound/vox/lieutenant.ogg rename to sound/vox/lieutenant.ogg diff --git a/modular_citadel/sound/vox/life.ogg b/sound/vox/life.ogg similarity index 100% rename from modular_citadel/sound/vox/life.ogg rename to sound/vox/life.ogg diff --git a/modular_citadel/sound/vox/light.ogg b/sound/vox/light.ogg similarity index 100% rename from modular_citadel/sound/vox/light.ogg rename to sound/vox/light.ogg diff --git a/modular_citadel/sound/vox/lima.ogg b/sound/vox/lima.ogg similarity index 100% rename from modular_citadel/sound/vox/lima.ogg rename to sound/vox/lima.ogg diff --git a/modular_citadel/sound/vox/liquid.ogg b/sound/vox/liquid.ogg similarity index 100% rename from modular_citadel/sound/vox/liquid.ogg rename to sound/vox/liquid.ogg diff --git a/modular_citadel/sound/vox/loading.ogg b/sound/vox/loading.ogg similarity index 100% rename from modular_citadel/sound/vox/loading.ogg rename to sound/vox/loading.ogg diff --git a/modular_citadel/sound/vox/locate.ogg b/sound/vox/locate.ogg similarity index 100% rename from modular_citadel/sound/vox/locate.ogg rename to sound/vox/locate.ogg diff --git a/modular_citadel/sound/vox/located.ogg b/sound/vox/located.ogg similarity index 100% rename from modular_citadel/sound/vox/located.ogg rename to sound/vox/located.ogg diff --git a/modular_citadel/sound/vox/location.ogg b/sound/vox/location.ogg similarity index 100% rename from modular_citadel/sound/vox/location.ogg rename to sound/vox/location.ogg diff --git a/modular_citadel/sound/vox/lock.ogg b/sound/vox/lock.ogg similarity index 100% rename from modular_citadel/sound/vox/lock.ogg rename to sound/vox/lock.ogg diff --git a/modular_citadel/sound/vox/locked.ogg b/sound/vox/locked.ogg similarity index 100% rename from modular_citadel/sound/vox/locked.ogg rename to sound/vox/locked.ogg diff --git a/modular_citadel/sound/vox/locker.ogg b/sound/vox/locker.ogg similarity index 100% rename from modular_citadel/sound/vox/locker.ogg rename to sound/vox/locker.ogg diff --git a/modular_citadel/sound/vox/lockout.ogg b/sound/vox/lockout.ogg similarity index 100% rename from modular_citadel/sound/vox/lockout.ogg rename to sound/vox/lockout.ogg diff --git a/modular_citadel/sound/vox/lower.ogg b/sound/vox/lower.ogg similarity index 100% rename from modular_citadel/sound/vox/lower.ogg rename to sound/vox/lower.ogg diff --git a/modular_citadel/sound/vox/lowest.ogg b/sound/vox/lowest.ogg similarity index 100% rename from modular_citadel/sound/vox/lowest.ogg rename to sound/vox/lowest.ogg diff --git a/modular_citadel/sound/vox/magnetic.ogg b/sound/vox/magnetic.ogg similarity index 100% rename from modular_citadel/sound/vox/magnetic.ogg rename to sound/vox/magnetic.ogg diff --git a/modular_citadel/sound/vox/main.ogg b/sound/vox/main.ogg similarity index 100% rename from modular_citadel/sound/vox/main.ogg rename to sound/vox/main.ogg diff --git a/modular_citadel/sound/vox/maintenance.ogg b/sound/vox/maintenance.ogg similarity index 100% rename from modular_citadel/sound/vox/maintenance.ogg rename to sound/vox/maintenance.ogg diff --git a/modular_citadel/sound/vox/malfunction.ogg b/sound/vox/malfunction.ogg similarity index 100% rename from modular_citadel/sound/vox/malfunction.ogg rename to sound/vox/malfunction.ogg diff --git a/modular_citadel/sound/vox/man.ogg b/sound/vox/man.ogg similarity index 100% rename from modular_citadel/sound/vox/man.ogg rename to sound/vox/man.ogg diff --git a/modular_citadel/sound/vox/mass.ogg b/sound/vox/mass.ogg similarity index 100% rename from modular_citadel/sound/vox/mass.ogg rename to sound/vox/mass.ogg diff --git a/modular_citadel/sound/vox/materials.ogg b/sound/vox/materials.ogg similarity index 100% rename from modular_citadel/sound/vox/materials.ogg rename to sound/vox/materials.ogg diff --git a/modular_citadel/sound/vox/maximum.ogg b/sound/vox/maximum.ogg similarity index 100% rename from modular_citadel/sound/vox/maximum.ogg rename to sound/vox/maximum.ogg diff --git a/modular_citadel/sound/vox/may.ogg b/sound/vox/may.ogg similarity index 100% rename from modular_citadel/sound/vox/may.ogg rename to sound/vox/may.ogg diff --git a/modular_citadel/sound/vox/med.ogg b/sound/vox/med.ogg similarity index 100% rename from modular_citadel/sound/vox/med.ogg rename to sound/vox/med.ogg diff --git a/modular_citadel/sound/vox/medical.ogg b/sound/vox/medical.ogg similarity index 100% rename from modular_citadel/sound/vox/medical.ogg rename to sound/vox/medical.ogg diff --git a/modular_citadel/sound/vox/men.ogg b/sound/vox/men.ogg similarity index 100% rename from modular_citadel/sound/vox/men.ogg rename to sound/vox/men.ogg diff --git a/modular_citadel/sound/vox/mercy.ogg b/sound/vox/mercy.ogg similarity index 100% rename from modular_citadel/sound/vox/mercy.ogg rename to sound/vox/mercy.ogg diff --git a/modular_citadel/sound/vox/mesa.ogg b/sound/vox/mesa.ogg similarity index 100% rename from modular_citadel/sound/vox/mesa.ogg rename to sound/vox/mesa.ogg diff --git a/modular_citadel/sound/vox/message.ogg b/sound/vox/message.ogg similarity index 100% rename from modular_citadel/sound/vox/message.ogg rename to sound/vox/message.ogg diff --git a/modular_citadel/sound/vox/meter.ogg b/sound/vox/meter.ogg similarity index 100% rename from modular_citadel/sound/vox/meter.ogg rename to sound/vox/meter.ogg diff --git a/modular_citadel/sound/vox/micro.ogg b/sound/vox/micro.ogg similarity index 100% rename from modular_citadel/sound/vox/micro.ogg rename to sound/vox/micro.ogg diff --git a/modular_citadel/sound/vox/middle.ogg b/sound/vox/middle.ogg similarity index 100% rename from modular_citadel/sound/vox/middle.ogg rename to sound/vox/middle.ogg diff --git a/modular_citadel/sound/vox/mike.ogg b/sound/vox/mike.ogg similarity index 100% rename from modular_citadel/sound/vox/mike.ogg rename to sound/vox/mike.ogg diff --git a/modular_citadel/sound/vox/miles.ogg b/sound/vox/miles.ogg similarity index 100% rename from modular_citadel/sound/vox/miles.ogg rename to sound/vox/miles.ogg diff --git a/modular_citadel/sound/vox/military.ogg b/sound/vox/military.ogg similarity index 100% rename from modular_citadel/sound/vox/military.ogg rename to sound/vox/military.ogg diff --git a/modular_citadel/sound/vox/milli.ogg b/sound/vox/milli.ogg similarity index 100% rename from modular_citadel/sound/vox/milli.ogg rename to sound/vox/milli.ogg diff --git a/modular_citadel/sound/vox/million.ogg b/sound/vox/million.ogg similarity index 100% rename from modular_citadel/sound/vox/million.ogg rename to sound/vox/million.ogg diff --git a/modular_citadel/sound/vox/minefield.ogg b/sound/vox/minefield.ogg similarity index 100% rename from modular_citadel/sound/vox/minefield.ogg rename to sound/vox/minefield.ogg diff --git a/modular_citadel/sound/vox/minimum.ogg b/sound/vox/minimum.ogg similarity index 100% rename from modular_citadel/sound/vox/minimum.ogg rename to sound/vox/minimum.ogg diff --git a/modular_citadel/sound/vox/minutes.ogg b/sound/vox/minutes.ogg similarity index 100% rename from modular_citadel/sound/vox/minutes.ogg rename to sound/vox/minutes.ogg diff --git a/modular_citadel/sound/vox/mister.ogg b/sound/vox/mister.ogg similarity index 100% rename from modular_citadel/sound/vox/mister.ogg rename to sound/vox/mister.ogg diff --git a/modular_citadel/sound/vox/mode.ogg b/sound/vox/mode.ogg similarity index 100% rename from modular_citadel/sound/vox/mode.ogg rename to sound/vox/mode.ogg diff --git a/modular_citadel/sound/vox/motor.ogg b/sound/vox/motor.ogg similarity index 100% rename from modular_citadel/sound/vox/motor.ogg rename to sound/vox/motor.ogg diff --git a/modular_citadel/sound/vox/motorpool.ogg b/sound/vox/motorpool.ogg similarity index 100% rename from modular_citadel/sound/vox/motorpool.ogg rename to sound/vox/motorpool.ogg diff --git a/modular_citadel/sound/vox/move.ogg b/sound/vox/move.ogg similarity index 100% rename from modular_citadel/sound/vox/move.ogg rename to sound/vox/move.ogg diff --git a/modular_citadel/sound/vox/must.ogg b/sound/vox/must.ogg similarity index 100% rename from modular_citadel/sound/vox/must.ogg rename to sound/vox/must.ogg diff --git a/modular_citadel/sound/vox/nearest.ogg b/sound/vox/nearest.ogg similarity index 100% rename from modular_citadel/sound/vox/nearest.ogg rename to sound/vox/nearest.ogg diff --git a/modular_citadel/sound/vox/nice.ogg b/sound/vox/nice.ogg similarity index 100% rename from modular_citadel/sound/vox/nice.ogg rename to sound/vox/nice.ogg diff --git a/modular_citadel/sound/vox/nine.ogg b/sound/vox/nine.ogg similarity index 100% rename from modular_citadel/sound/vox/nine.ogg rename to sound/vox/nine.ogg diff --git a/modular_citadel/sound/vox/nineteen.ogg b/sound/vox/nineteen.ogg similarity index 100% rename from modular_citadel/sound/vox/nineteen.ogg rename to sound/vox/nineteen.ogg diff --git a/modular_citadel/sound/vox/ninety.ogg b/sound/vox/ninety.ogg similarity index 100% rename from modular_citadel/sound/vox/ninety.ogg rename to sound/vox/ninety.ogg diff --git a/modular_citadel/sound/vox/no.ogg b/sound/vox/no.ogg similarity index 100% rename from modular_citadel/sound/vox/no.ogg rename to sound/vox/no.ogg diff --git a/modular_citadel/sound/vox/nominal.ogg b/sound/vox/nominal.ogg similarity index 100% rename from modular_citadel/sound/vox/nominal.ogg rename to sound/vox/nominal.ogg diff --git a/modular_citadel/sound/vox/north.ogg b/sound/vox/north.ogg similarity index 100% rename from modular_citadel/sound/vox/north.ogg rename to sound/vox/north.ogg diff --git a/modular_citadel/sound/vox/not.ogg b/sound/vox/not.ogg similarity index 100% rename from modular_citadel/sound/vox/not.ogg rename to sound/vox/not.ogg diff --git a/modular_citadel/sound/vox/november.ogg b/sound/vox/november.ogg similarity index 100% rename from modular_citadel/sound/vox/november.ogg rename to sound/vox/november.ogg diff --git a/modular_citadel/sound/vox/now.ogg b/sound/vox/now.ogg similarity index 100% rename from modular_citadel/sound/vox/now.ogg rename to sound/vox/now.ogg diff --git a/modular_citadel/sound/vox/number.ogg b/sound/vox/number.ogg similarity index 100% rename from modular_citadel/sound/vox/number.ogg rename to sound/vox/number.ogg diff --git a/modular_citadel/sound/vox/objective.ogg b/sound/vox/objective.ogg similarity index 100% rename from modular_citadel/sound/vox/objective.ogg rename to sound/vox/objective.ogg diff --git a/modular_citadel/sound/vox/observation.ogg b/sound/vox/observation.ogg similarity index 100% rename from modular_citadel/sound/vox/observation.ogg rename to sound/vox/observation.ogg diff --git a/modular_citadel/sound/vox/of.ogg b/sound/vox/of.ogg similarity index 100% rename from modular_citadel/sound/vox/of.ogg rename to sound/vox/of.ogg diff --git a/modular_citadel/sound/vox/officer.ogg b/sound/vox/officer.ogg similarity index 100% rename from modular_citadel/sound/vox/officer.ogg rename to sound/vox/officer.ogg diff --git a/modular_citadel/sound/vox/ok.ogg b/sound/vox/ok.ogg similarity index 100% rename from modular_citadel/sound/vox/ok.ogg rename to sound/vox/ok.ogg diff --git a/modular_citadel/sound/vox/on.ogg b/sound/vox/on.ogg similarity index 100% rename from modular_citadel/sound/vox/on.ogg rename to sound/vox/on.ogg diff --git a/modular_citadel/sound/vox/one.ogg b/sound/vox/one.ogg similarity index 100% rename from modular_citadel/sound/vox/one.ogg rename to sound/vox/one.ogg diff --git a/modular_citadel/sound/vox/open.ogg b/sound/vox/open.ogg similarity index 100% rename from modular_citadel/sound/vox/open.ogg rename to sound/vox/open.ogg diff --git a/modular_citadel/sound/vox/operating.ogg b/sound/vox/operating.ogg similarity index 100% rename from modular_citadel/sound/vox/operating.ogg rename to sound/vox/operating.ogg diff --git a/modular_citadel/sound/vox/operations.ogg b/sound/vox/operations.ogg similarity index 100% rename from modular_citadel/sound/vox/operations.ogg rename to sound/vox/operations.ogg diff --git a/modular_citadel/sound/vox/operative.ogg b/sound/vox/operative.ogg similarity index 100% rename from modular_citadel/sound/vox/operative.ogg rename to sound/vox/operative.ogg diff --git a/modular_citadel/sound/vox/option.ogg b/sound/vox/option.ogg similarity index 100% rename from modular_citadel/sound/vox/option.ogg rename to sound/vox/option.ogg diff --git a/modular_citadel/sound/vox/order.ogg b/sound/vox/order.ogg similarity index 100% rename from modular_citadel/sound/vox/order.ogg rename to sound/vox/order.ogg diff --git a/modular_citadel/sound/vox/organic.ogg b/sound/vox/organic.ogg similarity index 100% rename from modular_citadel/sound/vox/organic.ogg rename to sound/vox/organic.ogg diff --git a/modular_citadel/sound/vox/oscar.ogg b/sound/vox/oscar.ogg similarity index 100% rename from modular_citadel/sound/vox/oscar.ogg rename to sound/vox/oscar.ogg diff --git a/modular_citadel/sound/vox/out.ogg b/sound/vox/out.ogg similarity index 100% rename from modular_citadel/sound/vox/out.ogg rename to sound/vox/out.ogg diff --git a/modular_citadel/sound/vox/outside.ogg b/sound/vox/outside.ogg similarity index 100% rename from modular_citadel/sound/vox/outside.ogg rename to sound/vox/outside.ogg diff --git a/modular_citadel/sound/vox/over.ogg b/sound/vox/over.ogg similarity index 100% rename from modular_citadel/sound/vox/over.ogg rename to sound/vox/over.ogg diff --git a/modular_citadel/sound/vox/overload.ogg b/sound/vox/overload.ogg similarity index 100% rename from modular_citadel/sound/vox/overload.ogg rename to sound/vox/overload.ogg diff --git a/modular_citadel/sound/vox/override.ogg b/sound/vox/override.ogg similarity index 100% rename from modular_citadel/sound/vox/override.ogg rename to sound/vox/override.ogg diff --git a/modular_citadel/sound/vox/pacify.ogg b/sound/vox/pacify.ogg similarity index 100% rename from modular_citadel/sound/vox/pacify.ogg rename to sound/vox/pacify.ogg diff --git a/modular_citadel/sound/vox/pain.ogg b/sound/vox/pain.ogg similarity index 100% rename from modular_citadel/sound/vox/pain.ogg rename to sound/vox/pain.ogg diff --git a/modular_citadel/sound/vox/pal.ogg b/sound/vox/pal.ogg similarity index 100% rename from modular_citadel/sound/vox/pal.ogg rename to sound/vox/pal.ogg diff --git a/modular_citadel/sound/vox/panel.ogg b/sound/vox/panel.ogg similarity index 100% rename from modular_citadel/sound/vox/panel.ogg rename to sound/vox/panel.ogg diff --git a/modular_citadel/sound/vox/percent.ogg b/sound/vox/percent.ogg similarity index 100% rename from modular_citadel/sound/vox/percent.ogg rename to sound/vox/percent.ogg diff --git a/modular_citadel/sound/vox/perimeter.ogg b/sound/vox/perimeter.ogg similarity index 100% rename from modular_citadel/sound/vox/perimeter.ogg rename to sound/vox/perimeter.ogg diff --git a/modular_citadel/sound/vox/period.ogg b/sound/vox/period.ogg similarity index 100% rename from modular_citadel/sound/vox/period.ogg rename to sound/vox/period.ogg diff --git a/modular_citadel/sound/vox/permitted.ogg b/sound/vox/permitted.ogg similarity index 100% rename from modular_citadel/sound/vox/permitted.ogg rename to sound/vox/permitted.ogg diff --git a/modular_citadel/sound/vox/personnel.ogg b/sound/vox/personnel.ogg similarity index 100% rename from modular_citadel/sound/vox/personnel.ogg rename to sound/vox/personnel.ogg diff --git a/modular_citadel/sound/vox/pipe.ogg b/sound/vox/pipe.ogg similarity index 100% rename from modular_citadel/sound/vox/pipe.ogg rename to sound/vox/pipe.ogg diff --git a/modular_citadel/sound/vox/plant.ogg b/sound/vox/plant.ogg similarity index 100% rename from modular_citadel/sound/vox/plant.ogg rename to sound/vox/plant.ogg diff --git a/modular_citadel/sound/vox/platform.ogg b/sound/vox/platform.ogg similarity index 100% rename from modular_citadel/sound/vox/platform.ogg rename to sound/vox/platform.ogg diff --git a/modular_citadel/sound/vox/please.ogg b/sound/vox/please.ogg similarity index 100% rename from modular_citadel/sound/vox/please.ogg rename to sound/vox/please.ogg diff --git a/modular_citadel/sound/vox/point.ogg b/sound/vox/point.ogg similarity index 100% rename from modular_citadel/sound/vox/point.ogg rename to sound/vox/point.ogg diff --git a/modular_citadel/sound/vox/portal.ogg b/sound/vox/portal.ogg similarity index 100% rename from modular_citadel/sound/vox/portal.ogg rename to sound/vox/portal.ogg diff --git a/modular_citadel/sound/vox/power.ogg b/sound/vox/power.ogg similarity index 100% rename from modular_citadel/sound/vox/power.ogg rename to sound/vox/power.ogg diff --git a/modular_citadel/sound/vox/presence.ogg b/sound/vox/presence.ogg similarity index 100% rename from modular_citadel/sound/vox/presence.ogg rename to sound/vox/presence.ogg diff --git a/modular_citadel/sound/vox/press.ogg b/sound/vox/press.ogg similarity index 100% rename from modular_citadel/sound/vox/press.ogg rename to sound/vox/press.ogg diff --git a/modular_citadel/sound/vox/primary.ogg b/sound/vox/primary.ogg similarity index 100% rename from modular_citadel/sound/vox/primary.ogg rename to sound/vox/primary.ogg diff --git a/modular_citadel/sound/vox/proceed.ogg b/sound/vox/proceed.ogg similarity index 100% rename from modular_citadel/sound/vox/proceed.ogg rename to sound/vox/proceed.ogg diff --git a/modular_citadel/sound/vox/processing.ogg b/sound/vox/processing.ogg similarity index 100% rename from modular_citadel/sound/vox/processing.ogg rename to sound/vox/processing.ogg diff --git a/modular_citadel/sound/vox/progress.ogg b/sound/vox/progress.ogg similarity index 100% rename from modular_citadel/sound/vox/progress.ogg rename to sound/vox/progress.ogg diff --git a/modular_citadel/sound/vox/proper.ogg b/sound/vox/proper.ogg similarity index 100% rename from modular_citadel/sound/vox/proper.ogg rename to sound/vox/proper.ogg diff --git a/modular_citadel/sound/vox/propulsion.ogg b/sound/vox/propulsion.ogg similarity index 100% rename from modular_citadel/sound/vox/propulsion.ogg rename to sound/vox/propulsion.ogg diff --git a/modular_citadel/sound/vox/prosecute.ogg b/sound/vox/prosecute.ogg similarity index 100% rename from modular_citadel/sound/vox/prosecute.ogg rename to sound/vox/prosecute.ogg diff --git a/modular_citadel/sound/vox/protective.ogg b/sound/vox/protective.ogg similarity index 100% rename from modular_citadel/sound/vox/protective.ogg rename to sound/vox/protective.ogg diff --git a/modular_citadel/sound/vox/push.ogg b/sound/vox/push.ogg similarity index 100% rename from modular_citadel/sound/vox/push.ogg rename to sound/vox/push.ogg diff --git a/modular_citadel/sound/vox/quantum.ogg b/sound/vox/quantum.ogg similarity index 100% rename from modular_citadel/sound/vox/quantum.ogg rename to sound/vox/quantum.ogg diff --git a/modular_citadel/sound/vox/quebec.ogg b/sound/vox/quebec.ogg similarity index 100% rename from modular_citadel/sound/vox/quebec.ogg rename to sound/vox/quebec.ogg diff --git a/modular_citadel/sound/vox/question.ogg b/sound/vox/question.ogg similarity index 100% rename from modular_citadel/sound/vox/question.ogg rename to sound/vox/question.ogg diff --git a/modular_citadel/sound/vox/questioning.ogg b/sound/vox/questioning.ogg similarity index 100% rename from modular_citadel/sound/vox/questioning.ogg rename to sound/vox/questioning.ogg diff --git a/modular_citadel/sound/vox/quick.ogg b/sound/vox/quick.ogg similarity index 100% rename from modular_citadel/sound/vox/quick.ogg rename to sound/vox/quick.ogg diff --git a/modular_citadel/sound/vox/quit.ogg b/sound/vox/quit.ogg similarity index 100% rename from modular_citadel/sound/vox/quit.ogg rename to sound/vox/quit.ogg diff --git a/modular_citadel/sound/vox/radiation.ogg b/sound/vox/radiation.ogg similarity index 100% rename from modular_citadel/sound/vox/radiation.ogg rename to sound/vox/radiation.ogg diff --git a/modular_citadel/sound/vox/radioactive.ogg b/sound/vox/radioactive.ogg similarity index 100% rename from modular_citadel/sound/vox/radioactive.ogg rename to sound/vox/radioactive.ogg diff --git a/modular_citadel/sound/vox/rads.ogg b/sound/vox/rads.ogg similarity index 100% rename from modular_citadel/sound/vox/rads.ogg rename to sound/vox/rads.ogg diff --git a/modular_citadel/sound/vox/rapid.ogg b/sound/vox/rapid.ogg similarity index 100% rename from modular_citadel/sound/vox/rapid.ogg rename to sound/vox/rapid.ogg diff --git a/modular_citadel/sound/vox/reach.ogg b/sound/vox/reach.ogg similarity index 100% rename from modular_citadel/sound/vox/reach.ogg rename to sound/vox/reach.ogg diff --git a/modular_citadel/sound/vox/reached.ogg b/sound/vox/reached.ogg similarity index 100% rename from modular_citadel/sound/vox/reached.ogg rename to sound/vox/reached.ogg diff --git a/modular_citadel/sound/vox/reactor.ogg b/sound/vox/reactor.ogg similarity index 100% rename from modular_citadel/sound/vox/reactor.ogg rename to sound/vox/reactor.ogg diff --git a/modular_citadel/sound/vox/red.ogg b/sound/vox/red.ogg similarity index 100% rename from modular_citadel/sound/vox/red.ogg rename to sound/vox/red.ogg diff --git a/modular_citadel/sound/vox/relay.ogg b/sound/vox/relay.ogg similarity index 100% rename from modular_citadel/sound/vox/relay.ogg rename to sound/vox/relay.ogg diff --git a/modular_citadel/sound/vox/released.ogg b/sound/vox/released.ogg similarity index 100% rename from modular_citadel/sound/vox/released.ogg rename to sound/vox/released.ogg diff --git a/modular_citadel/sound/vox/remaining.ogg b/sound/vox/remaining.ogg similarity index 100% rename from modular_citadel/sound/vox/remaining.ogg rename to sound/vox/remaining.ogg diff --git a/modular_citadel/sound/vox/renegade.ogg b/sound/vox/renegade.ogg similarity index 100% rename from modular_citadel/sound/vox/renegade.ogg rename to sound/vox/renegade.ogg diff --git a/modular_citadel/sound/vox/repair.ogg b/sound/vox/repair.ogg similarity index 100% rename from modular_citadel/sound/vox/repair.ogg rename to sound/vox/repair.ogg diff --git a/modular_citadel/sound/vox/report.ogg b/sound/vox/report.ogg similarity index 100% rename from modular_citadel/sound/vox/report.ogg rename to sound/vox/report.ogg diff --git a/modular_citadel/sound/vox/reports.ogg b/sound/vox/reports.ogg similarity index 100% rename from modular_citadel/sound/vox/reports.ogg rename to sound/vox/reports.ogg diff --git a/modular_citadel/sound/vox/required.ogg b/sound/vox/required.ogg similarity index 100% rename from modular_citadel/sound/vox/required.ogg rename to sound/vox/required.ogg diff --git a/modular_citadel/sound/vox/research.ogg b/sound/vox/research.ogg similarity index 100% rename from modular_citadel/sound/vox/research.ogg rename to sound/vox/research.ogg diff --git a/modular_citadel/sound/vox/reset.ogg b/sound/vox/reset.ogg similarity index 100% rename from modular_citadel/sound/vox/reset.ogg rename to sound/vox/reset.ogg diff --git a/modular_citadel/sound/vox/resevoir.ogg b/sound/vox/resevoir.ogg similarity index 100% rename from modular_citadel/sound/vox/resevoir.ogg rename to sound/vox/resevoir.ogg diff --git a/modular_citadel/sound/vox/resistance.ogg b/sound/vox/resistance.ogg similarity index 100% rename from modular_citadel/sound/vox/resistance.ogg rename to sound/vox/resistance.ogg diff --git a/modular_citadel/sound/vox/returned.ogg b/sound/vox/returned.ogg similarity index 100% rename from modular_citadel/sound/vox/returned.ogg rename to sound/vox/returned.ogg diff --git a/modular_citadel/sound/vox/right.ogg b/sound/vox/right.ogg similarity index 100% rename from modular_citadel/sound/vox/right.ogg rename to sound/vox/right.ogg diff --git a/modular_citadel/sound/vox/rocket.ogg b/sound/vox/rocket.ogg similarity index 100% rename from modular_citadel/sound/vox/rocket.ogg rename to sound/vox/rocket.ogg diff --git a/modular_citadel/sound/vox/roger.ogg b/sound/vox/roger.ogg similarity index 100% rename from modular_citadel/sound/vox/roger.ogg rename to sound/vox/roger.ogg diff --git a/modular_citadel/sound/vox/romeo.ogg b/sound/vox/romeo.ogg similarity index 100% rename from modular_citadel/sound/vox/romeo.ogg rename to sound/vox/romeo.ogg diff --git a/modular_citadel/sound/vox/room.ogg b/sound/vox/room.ogg similarity index 100% rename from modular_citadel/sound/vox/room.ogg rename to sound/vox/room.ogg diff --git a/modular_citadel/sound/vox/round.ogg b/sound/vox/round.ogg similarity index 100% rename from modular_citadel/sound/vox/round.ogg rename to sound/vox/round.ogg diff --git a/modular_citadel/sound/vox/run.ogg b/sound/vox/run.ogg similarity index 100% rename from modular_citadel/sound/vox/run.ogg rename to sound/vox/run.ogg diff --git a/modular_citadel/sound/vox/safe.ogg b/sound/vox/safe.ogg similarity index 100% rename from modular_citadel/sound/vox/safe.ogg rename to sound/vox/safe.ogg diff --git a/modular_citadel/sound/vox/safety.ogg b/sound/vox/safety.ogg similarity index 100% rename from modular_citadel/sound/vox/safety.ogg rename to sound/vox/safety.ogg diff --git a/modular_citadel/sound/vox/sargeant.ogg b/sound/vox/sargeant.ogg similarity index 100% rename from modular_citadel/sound/vox/sargeant.ogg rename to sound/vox/sargeant.ogg diff --git a/modular_citadel/sound/vox/satellite.ogg b/sound/vox/satellite.ogg similarity index 100% rename from modular_citadel/sound/vox/satellite.ogg rename to sound/vox/satellite.ogg diff --git a/modular_citadel/sound/vox/save.ogg b/sound/vox/save.ogg similarity index 100% rename from modular_citadel/sound/vox/save.ogg rename to sound/vox/save.ogg diff --git a/modular_citadel/sound/vox/science.ogg b/sound/vox/science.ogg similarity index 100% rename from modular_citadel/sound/vox/science.ogg rename to sound/vox/science.ogg diff --git a/modular_citadel/sound/vox/scores.ogg b/sound/vox/scores.ogg similarity index 100% rename from modular_citadel/sound/vox/scores.ogg rename to sound/vox/scores.ogg diff --git a/modular_citadel/sound/vox/scream.ogg b/sound/vox/scream.ogg similarity index 100% rename from modular_citadel/sound/vox/scream.ogg rename to sound/vox/scream.ogg diff --git a/modular_citadel/sound/vox/screen.ogg b/sound/vox/screen.ogg similarity index 100% rename from modular_citadel/sound/vox/screen.ogg rename to sound/vox/screen.ogg diff --git a/modular_citadel/sound/vox/search.ogg b/sound/vox/search.ogg similarity index 100% rename from modular_citadel/sound/vox/search.ogg rename to sound/vox/search.ogg diff --git a/modular_citadel/sound/vox/second.ogg b/sound/vox/second.ogg similarity index 100% rename from modular_citadel/sound/vox/second.ogg rename to sound/vox/second.ogg diff --git a/modular_citadel/sound/vox/secondary.ogg b/sound/vox/secondary.ogg similarity index 100% rename from modular_citadel/sound/vox/secondary.ogg rename to sound/vox/secondary.ogg diff --git a/modular_citadel/sound/vox/seconds.ogg b/sound/vox/seconds.ogg similarity index 100% rename from modular_citadel/sound/vox/seconds.ogg rename to sound/vox/seconds.ogg diff --git a/modular_citadel/sound/vox/sector.ogg b/sound/vox/sector.ogg similarity index 100% rename from modular_citadel/sound/vox/sector.ogg rename to sound/vox/sector.ogg diff --git a/modular_citadel/sound/vox/secure.ogg b/sound/vox/secure.ogg similarity index 100% rename from modular_citadel/sound/vox/secure.ogg rename to sound/vox/secure.ogg diff --git a/modular_citadel/sound/vox/secured.ogg b/sound/vox/secured.ogg similarity index 100% rename from modular_citadel/sound/vox/secured.ogg rename to sound/vox/secured.ogg diff --git a/modular_citadel/sound/vox/security.ogg b/sound/vox/security.ogg similarity index 100% rename from modular_citadel/sound/vox/security.ogg rename to sound/vox/security.ogg diff --git a/modular_citadel/sound/vox/select.ogg b/sound/vox/select.ogg similarity index 100% rename from modular_citadel/sound/vox/select.ogg rename to sound/vox/select.ogg diff --git a/modular_citadel/sound/vox/selected.ogg b/sound/vox/selected.ogg similarity index 100% rename from modular_citadel/sound/vox/selected.ogg rename to sound/vox/selected.ogg diff --git a/modular_citadel/sound/vox/service.ogg b/sound/vox/service.ogg similarity index 100% rename from modular_citadel/sound/vox/service.ogg rename to sound/vox/service.ogg diff --git a/modular_citadel/sound/vox/seven.ogg b/sound/vox/seven.ogg similarity index 100% rename from modular_citadel/sound/vox/seven.ogg rename to sound/vox/seven.ogg diff --git a/modular_citadel/sound/vox/seventeen.ogg b/sound/vox/seventeen.ogg similarity index 100% rename from modular_citadel/sound/vox/seventeen.ogg rename to sound/vox/seventeen.ogg diff --git a/modular_citadel/sound/vox/seventy.ogg b/sound/vox/seventy.ogg similarity index 100% rename from modular_citadel/sound/vox/seventy.ogg rename to sound/vox/seventy.ogg diff --git a/modular_citadel/sound/vox/severe.ogg b/sound/vox/severe.ogg similarity index 100% rename from modular_citadel/sound/vox/severe.ogg rename to sound/vox/severe.ogg diff --git a/modular_citadel/sound/vox/sewage.ogg b/sound/vox/sewage.ogg similarity index 100% rename from modular_citadel/sound/vox/sewage.ogg rename to sound/vox/sewage.ogg diff --git a/modular_citadel/sound/vox/sewer.ogg b/sound/vox/sewer.ogg similarity index 100% rename from modular_citadel/sound/vox/sewer.ogg rename to sound/vox/sewer.ogg diff --git a/modular_citadel/sound/vox/shield.ogg b/sound/vox/shield.ogg similarity index 100% rename from modular_citadel/sound/vox/shield.ogg rename to sound/vox/shield.ogg diff --git a/modular_citadel/sound/vox/shipment.ogg b/sound/vox/shipment.ogg similarity index 100% rename from modular_citadel/sound/vox/shipment.ogg rename to sound/vox/shipment.ogg diff --git a/modular_citadel/sound/vox/shock.ogg b/sound/vox/shock.ogg similarity index 100% rename from modular_citadel/sound/vox/shock.ogg rename to sound/vox/shock.ogg diff --git a/modular_citadel/sound/vox/shoot.ogg b/sound/vox/shoot.ogg similarity index 100% rename from modular_citadel/sound/vox/shoot.ogg rename to sound/vox/shoot.ogg diff --git a/modular_citadel/sound/vox/shower.ogg b/sound/vox/shower.ogg similarity index 100% rename from modular_citadel/sound/vox/shower.ogg rename to sound/vox/shower.ogg diff --git a/modular_citadel/sound/vox/shut.ogg b/sound/vox/shut.ogg similarity index 100% rename from modular_citadel/sound/vox/shut.ogg rename to sound/vox/shut.ogg diff --git a/modular_citadel/sound/vox/side.ogg b/sound/vox/side.ogg similarity index 100% rename from modular_citadel/sound/vox/side.ogg rename to sound/vox/side.ogg diff --git a/modular_citadel/sound/vox/sierra.ogg b/sound/vox/sierra.ogg similarity index 100% rename from modular_citadel/sound/vox/sierra.ogg rename to sound/vox/sierra.ogg diff --git a/modular_citadel/sound/vox/sight.ogg b/sound/vox/sight.ogg similarity index 100% rename from modular_citadel/sound/vox/sight.ogg rename to sound/vox/sight.ogg diff --git a/modular_citadel/sound/vox/silo.ogg b/sound/vox/silo.ogg similarity index 100% rename from modular_citadel/sound/vox/silo.ogg rename to sound/vox/silo.ogg diff --git a/modular_citadel/sound/vox/six.ogg b/sound/vox/six.ogg similarity index 100% rename from modular_citadel/sound/vox/six.ogg rename to sound/vox/six.ogg diff --git a/modular_citadel/sound/vox/sixteen.ogg b/sound/vox/sixteen.ogg similarity index 100% rename from modular_citadel/sound/vox/sixteen.ogg rename to sound/vox/sixteen.ogg diff --git a/modular_citadel/sound/vox/sixty.ogg b/sound/vox/sixty.ogg similarity index 100% rename from modular_citadel/sound/vox/sixty.ogg rename to sound/vox/sixty.ogg diff --git a/modular_citadel/sound/vox/slime.ogg b/sound/vox/slime.ogg similarity index 100% rename from modular_citadel/sound/vox/slime.ogg rename to sound/vox/slime.ogg diff --git a/modular_citadel/sound/vox/slow.ogg b/sound/vox/slow.ogg similarity index 100% rename from modular_citadel/sound/vox/slow.ogg rename to sound/vox/slow.ogg diff --git a/modular_citadel/sound/vox/soldier.ogg b/sound/vox/soldier.ogg similarity index 100% rename from modular_citadel/sound/vox/soldier.ogg rename to sound/vox/soldier.ogg diff --git a/modular_citadel/sound/vox/some.ogg b/sound/vox/some.ogg similarity index 100% rename from modular_citadel/sound/vox/some.ogg rename to sound/vox/some.ogg diff --git a/modular_citadel/sound/vox/someone.ogg b/sound/vox/someone.ogg similarity index 100% rename from modular_citadel/sound/vox/someone.ogg rename to sound/vox/someone.ogg diff --git a/modular_citadel/sound/vox/something.ogg b/sound/vox/something.ogg similarity index 100% rename from modular_citadel/sound/vox/something.ogg rename to sound/vox/something.ogg diff --git a/modular_citadel/sound/vox/son.ogg b/sound/vox/son.ogg similarity index 100% rename from modular_citadel/sound/vox/son.ogg rename to sound/vox/son.ogg diff --git a/modular_citadel/sound/vox/sorry.ogg b/sound/vox/sorry.ogg similarity index 100% rename from modular_citadel/sound/vox/sorry.ogg rename to sound/vox/sorry.ogg diff --git a/modular_citadel/sound/vox/south.ogg b/sound/vox/south.ogg similarity index 100% rename from modular_citadel/sound/vox/south.ogg rename to sound/vox/south.ogg diff --git a/modular_citadel/sound/vox/squad.ogg b/sound/vox/squad.ogg similarity index 100% rename from modular_citadel/sound/vox/squad.ogg rename to sound/vox/squad.ogg diff --git a/modular_citadel/sound/vox/square.ogg b/sound/vox/square.ogg similarity index 100% rename from modular_citadel/sound/vox/square.ogg rename to sound/vox/square.ogg diff --git a/modular_citadel/sound/vox/stairway.ogg b/sound/vox/stairway.ogg similarity index 100% rename from modular_citadel/sound/vox/stairway.ogg rename to sound/vox/stairway.ogg diff --git a/modular_citadel/sound/vox/status.ogg b/sound/vox/status.ogg similarity index 100% rename from modular_citadel/sound/vox/status.ogg rename to sound/vox/status.ogg diff --git a/modular_citadel/sound/vox/sterile.ogg b/sound/vox/sterile.ogg similarity index 100% rename from modular_citadel/sound/vox/sterile.ogg rename to sound/vox/sterile.ogg diff --git a/modular_citadel/sound/vox/sterilization.ogg b/sound/vox/sterilization.ogg similarity index 100% rename from modular_citadel/sound/vox/sterilization.ogg rename to sound/vox/sterilization.ogg diff --git a/modular_citadel/sound/vox/stolen.ogg b/sound/vox/stolen.ogg similarity index 100% rename from modular_citadel/sound/vox/stolen.ogg rename to sound/vox/stolen.ogg diff --git a/modular_citadel/sound/vox/storage.ogg b/sound/vox/storage.ogg similarity index 100% rename from modular_citadel/sound/vox/storage.ogg rename to sound/vox/storage.ogg diff --git a/modular_citadel/sound/vox/sub.ogg b/sound/vox/sub.ogg similarity index 100% rename from modular_citadel/sound/vox/sub.ogg rename to sound/vox/sub.ogg diff --git a/modular_citadel/sound/vox/subsurface.ogg b/sound/vox/subsurface.ogg similarity index 100% rename from modular_citadel/sound/vox/subsurface.ogg rename to sound/vox/subsurface.ogg diff --git a/modular_citadel/sound/vox/sudden.ogg b/sound/vox/sudden.ogg similarity index 100% rename from modular_citadel/sound/vox/sudden.ogg rename to sound/vox/sudden.ogg diff --git a/modular_citadel/sound/vox/suit.ogg b/sound/vox/suit.ogg similarity index 100% rename from modular_citadel/sound/vox/suit.ogg rename to sound/vox/suit.ogg diff --git a/modular_citadel/sound/vox/superconducting.ogg b/sound/vox/superconducting.ogg similarity index 100% rename from modular_citadel/sound/vox/superconducting.ogg rename to sound/vox/superconducting.ogg diff --git a/modular_citadel/sound/vox/supercooled.ogg b/sound/vox/supercooled.ogg similarity index 100% rename from modular_citadel/sound/vox/supercooled.ogg rename to sound/vox/supercooled.ogg diff --git a/modular_citadel/sound/vox/supply.ogg b/sound/vox/supply.ogg similarity index 100% rename from modular_citadel/sound/vox/supply.ogg rename to sound/vox/supply.ogg diff --git a/modular_citadel/sound/vox/surface.ogg b/sound/vox/surface.ogg similarity index 100% rename from modular_citadel/sound/vox/surface.ogg rename to sound/vox/surface.ogg diff --git a/modular_citadel/sound/vox/surrender.ogg b/sound/vox/surrender.ogg similarity index 100% rename from modular_citadel/sound/vox/surrender.ogg rename to sound/vox/surrender.ogg diff --git a/modular_citadel/sound/vox/surround.ogg b/sound/vox/surround.ogg similarity index 100% rename from modular_citadel/sound/vox/surround.ogg rename to sound/vox/surround.ogg diff --git a/modular_citadel/sound/vox/surrounded.ogg b/sound/vox/surrounded.ogg similarity index 100% rename from modular_citadel/sound/vox/surrounded.ogg rename to sound/vox/surrounded.ogg diff --git a/modular_citadel/sound/vox/switch.ogg b/sound/vox/switch.ogg similarity index 100% rename from modular_citadel/sound/vox/switch.ogg rename to sound/vox/switch.ogg diff --git a/modular_citadel/sound/vox/system.ogg b/sound/vox/system.ogg similarity index 100% rename from modular_citadel/sound/vox/system.ogg rename to sound/vox/system.ogg diff --git a/modular_citadel/sound/vox/systems.ogg b/sound/vox/systems.ogg similarity index 100% rename from modular_citadel/sound/vox/systems.ogg rename to sound/vox/systems.ogg diff --git a/modular_citadel/sound/vox/tactical.ogg b/sound/vox/tactical.ogg similarity index 100% rename from modular_citadel/sound/vox/tactical.ogg rename to sound/vox/tactical.ogg diff --git a/modular_citadel/sound/vox/take.ogg b/sound/vox/take.ogg similarity index 100% rename from modular_citadel/sound/vox/take.ogg rename to sound/vox/take.ogg diff --git a/modular_citadel/sound/vox/talk.ogg b/sound/vox/talk.ogg similarity index 100% rename from modular_citadel/sound/vox/talk.ogg rename to sound/vox/talk.ogg diff --git a/modular_citadel/sound/vox/tango.ogg b/sound/vox/tango.ogg similarity index 100% rename from modular_citadel/sound/vox/tango.ogg rename to sound/vox/tango.ogg diff --git a/modular_citadel/sound/vox/tank.ogg b/sound/vox/tank.ogg similarity index 100% rename from modular_citadel/sound/vox/tank.ogg rename to sound/vox/tank.ogg diff --git a/modular_citadel/sound/vox/target.ogg b/sound/vox/target.ogg similarity index 100% rename from modular_citadel/sound/vox/target.ogg rename to sound/vox/target.ogg diff --git a/modular_citadel/sound/vox/team.ogg b/sound/vox/team.ogg similarity index 100% rename from modular_citadel/sound/vox/team.ogg rename to sound/vox/team.ogg diff --git a/modular_citadel/sound/vox/temperature.ogg b/sound/vox/temperature.ogg similarity index 100% rename from modular_citadel/sound/vox/temperature.ogg rename to sound/vox/temperature.ogg diff --git a/modular_citadel/sound/vox/temporal.ogg b/sound/vox/temporal.ogg similarity index 100% rename from modular_citadel/sound/vox/temporal.ogg rename to sound/vox/temporal.ogg diff --git a/modular_citadel/sound/vox/ten.ogg b/sound/vox/ten.ogg similarity index 100% rename from modular_citadel/sound/vox/ten.ogg rename to sound/vox/ten.ogg diff --git a/modular_citadel/sound/vox/terminal.ogg b/sound/vox/terminal.ogg similarity index 100% rename from modular_citadel/sound/vox/terminal.ogg rename to sound/vox/terminal.ogg diff --git a/modular_citadel/sound/vox/terminated.ogg b/sound/vox/terminated.ogg similarity index 100% rename from modular_citadel/sound/vox/terminated.ogg rename to sound/vox/terminated.ogg diff --git a/modular_citadel/sound/vox/termination.ogg b/sound/vox/termination.ogg similarity index 100% rename from modular_citadel/sound/vox/termination.ogg rename to sound/vox/termination.ogg diff --git a/modular_citadel/sound/vox/test.ogg b/sound/vox/test.ogg similarity index 100% rename from modular_citadel/sound/vox/test.ogg rename to sound/vox/test.ogg diff --git a/modular_citadel/sound/vox/that.ogg b/sound/vox/that.ogg similarity index 100% rename from modular_citadel/sound/vox/that.ogg rename to sound/vox/that.ogg diff --git a/modular_citadel/sound/vox/the.ogg b/sound/vox/the.ogg similarity index 100% rename from modular_citadel/sound/vox/the.ogg rename to sound/vox/the.ogg diff --git a/modular_citadel/sound/vox/then.ogg b/sound/vox/then.ogg similarity index 100% rename from modular_citadel/sound/vox/then.ogg rename to sound/vox/then.ogg diff --git a/modular_citadel/sound/vox/there.ogg b/sound/vox/there.ogg similarity index 100% rename from modular_citadel/sound/vox/there.ogg rename to sound/vox/there.ogg diff --git a/modular_citadel/sound/vox/third.ogg b/sound/vox/third.ogg similarity index 100% rename from modular_citadel/sound/vox/third.ogg rename to sound/vox/third.ogg diff --git a/modular_citadel/sound/vox/thirteen.ogg b/sound/vox/thirteen.ogg similarity index 100% rename from modular_citadel/sound/vox/thirteen.ogg rename to sound/vox/thirteen.ogg diff --git a/modular_citadel/sound/vox/thirty.ogg b/sound/vox/thirty.ogg similarity index 100% rename from modular_citadel/sound/vox/thirty.ogg rename to sound/vox/thirty.ogg diff --git a/modular_citadel/sound/vox/this.ogg b/sound/vox/this.ogg similarity index 100% rename from modular_citadel/sound/vox/this.ogg rename to sound/vox/this.ogg diff --git a/modular_citadel/sound/vox/those.ogg b/sound/vox/those.ogg similarity index 100% rename from modular_citadel/sound/vox/those.ogg rename to sound/vox/those.ogg diff --git a/modular_citadel/sound/vox/thousand.ogg b/sound/vox/thousand.ogg similarity index 100% rename from modular_citadel/sound/vox/thousand.ogg rename to sound/vox/thousand.ogg diff --git a/modular_citadel/sound/vox/threat.ogg b/sound/vox/threat.ogg similarity index 100% rename from modular_citadel/sound/vox/threat.ogg rename to sound/vox/threat.ogg diff --git a/modular_citadel/sound/vox/three.ogg b/sound/vox/three.ogg similarity index 100% rename from modular_citadel/sound/vox/three.ogg rename to sound/vox/three.ogg diff --git a/modular_citadel/sound/vox/through.ogg b/sound/vox/through.ogg similarity index 100% rename from modular_citadel/sound/vox/through.ogg rename to sound/vox/through.ogg diff --git a/modular_citadel/sound/vox/time.ogg b/sound/vox/time.ogg similarity index 100% rename from modular_citadel/sound/vox/time.ogg rename to sound/vox/time.ogg diff --git a/modular_citadel/sound/vox/to.ogg b/sound/vox/to.ogg similarity index 100% rename from modular_citadel/sound/vox/to.ogg rename to sound/vox/to.ogg diff --git a/modular_citadel/sound/vox/top.ogg b/sound/vox/top.ogg similarity index 100% rename from modular_citadel/sound/vox/top.ogg rename to sound/vox/top.ogg diff --git a/modular_citadel/sound/vox/topside.ogg b/sound/vox/topside.ogg similarity index 100% rename from modular_citadel/sound/vox/topside.ogg rename to sound/vox/topside.ogg diff --git a/modular_citadel/sound/vox/touch.ogg b/sound/vox/touch.ogg similarity index 100% rename from modular_citadel/sound/vox/touch.ogg rename to sound/vox/touch.ogg diff --git a/modular_citadel/sound/vox/towards.ogg b/sound/vox/towards.ogg similarity index 100% rename from modular_citadel/sound/vox/towards.ogg rename to sound/vox/towards.ogg diff --git a/modular_citadel/sound/vox/track.ogg b/sound/vox/track.ogg similarity index 100% rename from modular_citadel/sound/vox/track.ogg rename to sound/vox/track.ogg diff --git a/modular_citadel/sound/vox/train.ogg b/sound/vox/train.ogg similarity index 100% rename from modular_citadel/sound/vox/train.ogg rename to sound/vox/train.ogg diff --git a/modular_citadel/sound/vox/transportation.ogg b/sound/vox/transportation.ogg similarity index 100% rename from modular_citadel/sound/vox/transportation.ogg rename to sound/vox/transportation.ogg diff --git a/modular_citadel/sound/vox/truck.ogg b/sound/vox/truck.ogg similarity index 100% rename from modular_citadel/sound/vox/truck.ogg rename to sound/vox/truck.ogg diff --git a/modular_citadel/sound/vox/tunnel.ogg b/sound/vox/tunnel.ogg similarity index 100% rename from modular_citadel/sound/vox/tunnel.ogg rename to sound/vox/tunnel.ogg diff --git a/modular_citadel/sound/vox/turn.ogg b/sound/vox/turn.ogg similarity index 100% rename from modular_citadel/sound/vox/turn.ogg rename to sound/vox/turn.ogg diff --git a/modular_citadel/sound/vox/turret.ogg b/sound/vox/turret.ogg similarity index 100% rename from modular_citadel/sound/vox/turret.ogg rename to sound/vox/turret.ogg diff --git a/modular_citadel/sound/vox/twelve.ogg b/sound/vox/twelve.ogg similarity index 100% rename from modular_citadel/sound/vox/twelve.ogg rename to sound/vox/twelve.ogg diff --git a/modular_citadel/sound/vox/twenty.ogg b/sound/vox/twenty.ogg similarity index 100% rename from modular_citadel/sound/vox/twenty.ogg rename to sound/vox/twenty.ogg diff --git a/modular_citadel/sound/vox/two.ogg b/sound/vox/two.ogg similarity index 100% rename from modular_citadel/sound/vox/two.ogg rename to sound/vox/two.ogg diff --git a/modular_citadel/sound/vox/unauthorized.ogg b/sound/vox/unauthorized.ogg similarity index 100% rename from modular_citadel/sound/vox/unauthorized.ogg rename to sound/vox/unauthorized.ogg diff --git a/modular_citadel/sound/vox/under.ogg b/sound/vox/under.ogg similarity index 100% rename from modular_citadel/sound/vox/under.ogg rename to sound/vox/under.ogg diff --git a/modular_citadel/sound/vox/uniform.ogg b/sound/vox/uniform.ogg similarity index 100% rename from modular_citadel/sound/vox/uniform.ogg rename to sound/vox/uniform.ogg diff --git a/modular_citadel/sound/vox/unlocked.ogg b/sound/vox/unlocked.ogg similarity index 100% rename from modular_citadel/sound/vox/unlocked.ogg rename to sound/vox/unlocked.ogg diff --git a/modular_citadel/sound/vox/until.ogg b/sound/vox/until.ogg similarity index 100% rename from modular_citadel/sound/vox/until.ogg rename to sound/vox/until.ogg diff --git a/modular_citadel/sound/vox/up.ogg b/sound/vox/up.ogg similarity index 100% rename from modular_citadel/sound/vox/up.ogg rename to sound/vox/up.ogg diff --git a/modular_citadel/sound/vox/upper.ogg b/sound/vox/upper.ogg similarity index 100% rename from modular_citadel/sound/vox/upper.ogg rename to sound/vox/upper.ogg diff --git a/modular_citadel/sound/vox/uranium.ogg b/sound/vox/uranium.ogg similarity index 100% rename from modular_citadel/sound/vox/uranium.ogg rename to sound/vox/uranium.ogg diff --git a/modular_citadel/sound/vox/us.ogg b/sound/vox/us.ogg similarity index 100% rename from modular_citadel/sound/vox/us.ogg rename to sound/vox/us.ogg diff --git a/modular_citadel/sound/vox/usa.ogg b/sound/vox/usa.ogg similarity index 100% rename from modular_citadel/sound/vox/usa.ogg rename to sound/vox/usa.ogg diff --git a/modular_citadel/sound/vox/use.ogg b/sound/vox/use.ogg similarity index 100% rename from modular_citadel/sound/vox/use.ogg rename to sound/vox/use.ogg diff --git a/modular_citadel/sound/vox/used.ogg b/sound/vox/used.ogg similarity index 100% rename from modular_citadel/sound/vox/used.ogg rename to sound/vox/used.ogg diff --git a/modular_citadel/sound/vox/user.ogg b/sound/vox/user.ogg similarity index 100% rename from modular_citadel/sound/vox/user.ogg rename to sound/vox/user.ogg diff --git a/modular_citadel/sound/vox/vacate.ogg b/sound/vox/vacate.ogg similarity index 100% rename from modular_citadel/sound/vox/vacate.ogg rename to sound/vox/vacate.ogg diff --git a/modular_citadel/sound/vox/valid.ogg b/sound/vox/valid.ogg similarity index 100% rename from modular_citadel/sound/vox/valid.ogg rename to sound/vox/valid.ogg diff --git a/modular_citadel/sound/vox/vapor.ogg b/sound/vox/vapor.ogg similarity index 100% rename from modular_citadel/sound/vox/vapor.ogg rename to sound/vox/vapor.ogg diff --git a/modular_citadel/sound/vox/vent.ogg b/sound/vox/vent.ogg similarity index 100% rename from modular_citadel/sound/vox/vent.ogg rename to sound/vox/vent.ogg diff --git a/modular_citadel/sound/vox/ventillation.ogg b/sound/vox/ventillation.ogg similarity index 100% rename from modular_citadel/sound/vox/ventillation.ogg rename to sound/vox/ventillation.ogg diff --git a/modular_citadel/sound/vox/victor.ogg b/sound/vox/victor.ogg similarity index 100% rename from modular_citadel/sound/vox/victor.ogg rename to sound/vox/victor.ogg diff --git a/modular_citadel/sound/vox/violated.ogg b/sound/vox/violated.ogg similarity index 100% rename from modular_citadel/sound/vox/violated.ogg rename to sound/vox/violated.ogg diff --git a/modular_citadel/sound/vox/violation.ogg b/sound/vox/violation.ogg similarity index 100% rename from modular_citadel/sound/vox/violation.ogg rename to sound/vox/violation.ogg diff --git a/modular_citadel/sound/vox/voltage.ogg b/sound/vox/voltage.ogg similarity index 100% rename from modular_citadel/sound/vox/voltage.ogg rename to sound/vox/voltage.ogg diff --git a/modular_citadel/sound/vox/vox_login.ogg b/sound/vox/vox_login.ogg similarity index 100% rename from modular_citadel/sound/vox/vox_login.ogg rename to sound/vox/vox_login.ogg diff --git a/modular_citadel/sound/vox/walk.ogg b/sound/vox/walk.ogg similarity index 100% rename from modular_citadel/sound/vox/walk.ogg rename to sound/vox/walk.ogg diff --git a/modular_citadel/sound/vox/wall.ogg b/sound/vox/wall.ogg similarity index 100% rename from modular_citadel/sound/vox/wall.ogg rename to sound/vox/wall.ogg diff --git a/modular_citadel/sound/vox/want.ogg b/sound/vox/want.ogg similarity index 100% rename from modular_citadel/sound/vox/want.ogg rename to sound/vox/want.ogg diff --git a/modular_citadel/sound/vox/wanted.ogg b/sound/vox/wanted.ogg similarity index 100% rename from modular_citadel/sound/vox/wanted.ogg rename to sound/vox/wanted.ogg diff --git a/modular_citadel/sound/vox/warm.ogg b/sound/vox/warm.ogg similarity index 100% rename from modular_citadel/sound/vox/warm.ogg rename to sound/vox/warm.ogg diff --git a/modular_citadel/sound/vox/warn.ogg b/sound/vox/warn.ogg similarity index 100% rename from modular_citadel/sound/vox/warn.ogg rename to sound/vox/warn.ogg diff --git a/modular_citadel/sound/vox/warning.ogg b/sound/vox/warning.ogg similarity index 100% rename from modular_citadel/sound/vox/warning.ogg rename to sound/vox/warning.ogg diff --git a/modular_citadel/sound/vox/waste.ogg b/sound/vox/waste.ogg similarity index 100% rename from modular_citadel/sound/vox/waste.ogg rename to sound/vox/waste.ogg diff --git a/modular_citadel/sound/vox/water.ogg b/sound/vox/water.ogg similarity index 100% rename from modular_citadel/sound/vox/water.ogg rename to sound/vox/water.ogg diff --git a/modular_citadel/sound/vox/we.ogg b/sound/vox/we.ogg similarity index 100% rename from modular_citadel/sound/vox/we.ogg rename to sound/vox/we.ogg diff --git a/modular_citadel/sound/vox/weapon.ogg b/sound/vox/weapon.ogg similarity index 100% rename from modular_citadel/sound/vox/weapon.ogg rename to sound/vox/weapon.ogg diff --git a/modular_citadel/sound/vox/west.ogg b/sound/vox/west.ogg similarity index 100% rename from modular_citadel/sound/vox/west.ogg rename to sound/vox/west.ogg diff --git a/modular_citadel/sound/vox/whiskey.ogg b/sound/vox/whiskey.ogg similarity index 100% rename from modular_citadel/sound/vox/whiskey.ogg rename to sound/vox/whiskey.ogg diff --git a/modular_citadel/sound/vox/white.ogg b/sound/vox/white.ogg similarity index 100% rename from modular_citadel/sound/vox/white.ogg rename to sound/vox/white.ogg diff --git a/modular_citadel/sound/vox/wilco.ogg b/sound/vox/wilco.ogg similarity index 100% rename from modular_citadel/sound/vox/wilco.ogg rename to sound/vox/wilco.ogg diff --git a/modular_citadel/sound/vox/will.ogg b/sound/vox/will.ogg similarity index 100% rename from modular_citadel/sound/vox/will.ogg rename to sound/vox/will.ogg diff --git a/modular_citadel/sound/vox/with.ogg b/sound/vox/with.ogg similarity index 100% rename from modular_citadel/sound/vox/with.ogg rename to sound/vox/with.ogg diff --git a/modular_citadel/sound/vox/without.ogg b/sound/vox/without.ogg similarity index 100% rename from modular_citadel/sound/vox/without.ogg rename to sound/vox/without.ogg diff --git a/modular_citadel/sound/vox/woop.ogg b/sound/vox/woop.ogg similarity index 100% rename from modular_citadel/sound/vox/woop.ogg rename to sound/vox/woop.ogg diff --git a/modular_citadel/sound/vox/xeno.ogg b/sound/vox/xeno.ogg similarity index 100% rename from modular_citadel/sound/vox/xeno.ogg rename to sound/vox/xeno.ogg diff --git a/modular_citadel/sound/vox/yankee.ogg b/sound/vox/yankee.ogg similarity index 100% rename from modular_citadel/sound/vox/yankee.ogg rename to sound/vox/yankee.ogg diff --git a/modular_citadel/sound/vox/yards.ogg b/sound/vox/yards.ogg similarity index 100% rename from modular_citadel/sound/vox/yards.ogg rename to sound/vox/yards.ogg diff --git a/modular_citadel/sound/vox/year.ogg b/sound/vox/year.ogg similarity index 100% rename from modular_citadel/sound/vox/year.ogg rename to sound/vox/year.ogg diff --git a/modular_citadel/sound/vox/yellow.ogg b/sound/vox/yellow.ogg similarity index 100% rename from modular_citadel/sound/vox/yellow.ogg rename to sound/vox/yellow.ogg diff --git a/modular_citadel/sound/vox/yes.ogg b/sound/vox/yes.ogg similarity index 100% rename from modular_citadel/sound/vox/yes.ogg rename to sound/vox/yes.ogg diff --git a/modular_citadel/sound/vox/you.ogg b/sound/vox/you.ogg similarity index 100% rename from modular_citadel/sound/vox/you.ogg rename to sound/vox/you.ogg diff --git a/modular_citadel/sound/vox/your.ogg b/sound/vox/your.ogg similarity index 100% rename from modular_citadel/sound/vox/your.ogg rename to sound/vox/your.ogg diff --git a/modular_citadel/sound/vox/yourself.ogg b/sound/vox/yourself.ogg similarity index 100% rename from modular_citadel/sound/vox/yourself.ogg rename to sound/vox/yourself.ogg diff --git a/modular_citadel/sound/vox/zero.ogg b/sound/vox/zero.ogg similarity index 100% rename from modular_citadel/sound/vox/zero.ogg rename to sound/vox/zero.ogg diff --git a/modular_citadel/sound/vox/zone.ogg b/sound/vox/zone.ogg similarity index 100% rename from modular_citadel/sound/vox/zone.ogg rename to sound/vox/zone.ogg diff --git a/modular_citadel/sound/vox/zulu.ogg b/sound/vox/zulu.ogg similarity index 100% rename from modular_citadel/sound/vox/zulu.ogg rename to sound/vox/zulu.ogg diff --git a/sound/weapons/gatling.ogg b/sound/weapons/gatling.ogg deleted file mode 100644 index 0f8045560d..0000000000 Binary files a/sound/weapons/gatling.ogg and /dev/null differ diff --git a/sound/weapons/neovgre_laser.ogg b/sound/weapons/neovgre_laser.ogg new file mode 100644 index 0000000000..da97117ae8 Binary files /dev/null and b/sound/weapons/neovgre_laser.ogg differ diff --git a/tgstation.dme b/tgstation.dme index f13e7c4763..06a01ec9e9 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -16,6 +16,7 @@ #include "_maps\_basemap.dm" #include "code\_compile_options.dm" #include "code\world.dm" +#include "code\__DEFINES\__513_compatibility.dm" #include "code\__DEFINES\_globals.dm" #include "code\__DEFINES\_protect.dm" #include "code\__DEFINES\_tick.dm" @@ -47,7 +48,6 @@ #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" -#include "code\__DEFINES\forensics.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\integrated_electronics.dm" #include "code\__DEFINES\interaction_flags.dm" @@ -357,7 +357,6 @@ #include "code\datums\components\empprotection.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\forced_gravity.dm" -#include "code\datums\components\forensics.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\jousting.dm" #include "code\datums\components\knockoff.dm" @@ -370,12 +369,12 @@ #include "code\datums\components\ntnet_interface.dm" #include "code\datums\components\orbiter.dm" #include "code\datums\components\paintable.dm" +#include "code\datums\components\phantomthief.dm" #include "code\datums\components\rad_insulation.dm" #include "code\datums\components\radioactive.dm" #include "code\datums\components\remote_materials.dm" #include "code\datums\components\riding.dm" #include "code\datums\components\rotation.dm" -#include "code\datums\components\signal_redirect.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" @@ -386,7 +385,6 @@ #include "code\datums\components\virtual_reality.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" -#include "code\datums\components\decals\blood.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" @@ -579,6 +577,7 @@ #include "code\game\machinery\autolathe.dm" #include "code\game\machinery\bank_machine.dm" #include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\bloodbankgen.dm" #include "code\game\machinery\buttons.dm" #include "code\game\machinery\cell_charger.dm" #include "code\game\machinery\cloning.dm" @@ -623,6 +622,7 @@ #include "code\game\machinery\syndicatebomb.dm" #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\transformer.dm" +#include "code\game\machinery\turnstile.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\wishgranter.dm" #include "code\game\machinery\camera\camera.dm" @@ -714,6 +714,7 @@ #include "code\game\mecha\combat\gygax.dm" #include "code\game\mecha\combat\honker.dm" #include "code\game\mecha\combat\marauder.dm" +#include "code\game\mecha\combat\neovgre.dm" #include "code\game\mecha\combat\phazon.dm" #include "code\game\mecha\combat\reticence.dm" #include "code\game\mecha\equipment\mecha_equipment.dm" @@ -756,6 +757,7 @@ #include "code\game\objects\effects\decals\misc.dm" #include "code\game\objects\effects\decals\remains.dm" #include "code\game\objects\effects\decals\cleanable\aliens.dm" +#include "code\game\objects\effects\decals\cleanable\gibs.dm" #include "code\game\objects\effects\decals\cleanable\humans.dm" #include "code\game\objects\effects\decals\cleanable\misc.dm" #include "code\game\objects\effects\decals\cleanable\robots.dm" @@ -1038,6 +1040,7 @@ #include "code\game\objects\structures\crates_lockers\closets\bodybag.dm" #include "code\game\objects\structures\crates_lockers\closets\cardboardbox.dm" #include "code\game\objects\structures\crates_lockers\closets\fitness.dm" +#include "code\game\objects\structures\crates_lockers\closets\genpop.dm" #include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" #include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" @@ -1586,6 +1589,11 @@ #include "code\modules\crafting\craft.dm" #include "code\modules\crafting\guncrafting.dm" #include "code\modules\crafting\recipes.dm" +#include "code\modules\crafting\recipes\recipes_clothing.dm" +#include "code\modules\crafting\recipes\recipes_misc.dm" +#include "code\modules\crafting\recipes\recipes_primal.dm" +#include "code\modules\crafting\recipes\recipes_robot.dm" +#include "code\modules\crafting\recipes\recipes_weapon_and_ammo.dm" #include "code\modules\detectivework\detective_work.dm" #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\scanner.dm" @@ -2212,6 +2220,7 @@ #include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" #include "code\modules\mob\living\simple_animal\guardian\types\support.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\banana_spider.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" @@ -2487,7 +2496,6 @@ #include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\megabuster.dm" -#include "code\modules\projectiles\guns\energy\minigun.dm" #include "code\modules\projectiles\guns\energy\mounted.dm" #include "code\modules\projectiles\guns\energy\plasma_cit.dm" #include "code\modules\projectiles\guns\energy\pulse.dm" @@ -2579,6 +2587,7 @@ #include "code\modules\reagents\reagent_containers\dropper.dm" #include "code\modules\reagents\reagent_containers\glass.dm" #include "code\modules\reagents\reagent_containers\hypospray.dm" +#include "code\modules\reagents\reagent_containers\hypovial.dm" #include "code\modules\reagents\reagent_containers\medspray.dm" #include "code\modules\reagents\reagent_containers\patch.dm" #include "code\modules\reagents\reagent_containers\pill.dm" @@ -2704,6 +2713,7 @@ #include "code\modules\ruins\spaceruin_code\crashedship.dm" #include "code\modules\ruins\spaceruin_code\deepstorage.dm" #include "code\modules\ruins\spaceruin_code\DJstation.dm" +#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm" #include "code\modules\ruins\spaceruin_code\listeningstation.dm" #include "code\modules\ruins\spaceruin_code\miracle.dm" #include "code\modules\ruins\spaceruin_code\oldstation.dm" @@ -2764,6 +2774,7 @@ #include "code\modules\spells\spell_types\spacetime_distortion.dm" #include "code\modules\spells\spell_types\summonitem.dm" #include "code\modules\spells\spell_types\taeclowndo.dm" +#include "code\modules\spells\spell_types\telepathy.dm" #include "code\modules\spells\spell_types\the_traps.dm" #include "code\modules\spells\spell_types\touch_attacks.dm" #include "code\modules\spells\spell_types\trigger.dm" @@ -2940,7 +2951,6 @@ #include "modular_citadel\code\controllers\subsystem\job.dm" #include "modular_citadel\code\controllers\subsystem\shuttle.dm" #include "modular_citadel\code\datums\components\material_container.dm" -#include "modular_citadel\code\datums\components\phantomthief.dm" #include "modular_citadel\code\datums\components\souldeath.dm" #include "modular_citadel\code\datums\mood_events\chem_events.dm" #include "modular_citadel\code\datums\mood_events\generic_negative_events.dm" @@ -2950,7 +2960,6 @@ #include "modular_citadel\code\datums\status_effects\chems.dm" #include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\datums\traits\negative.dm" -#include "modular_citadel\code\datums\traits\neutral.dm" #include "modular_citadel\code\datums\wires\airlock.dm" #include "modular_citadel\code\datums\wires\autoylathe.dm" #include "modular_citadel\code\game\area\cit_areas.dm" @@ -2977,7 +2986,6 @@ #include "modular_citadel\code\game\machinery\doors\airlock.dm" #include "modular_citadel\code\game\machinery\doors\airlock_types.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" -#include "modular_citadel\code\game\objects\ids.dm" #include "modular_citadel\code\game\objects\items.dm" #include "modular_citadel\code\game\objects\tools.dm" #include "modular_citadel\code\game\objects\effects\spawner\spawners.dm" @@ -2996,7 +3004,6 @@ #include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" -#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" #include "modular_citadel\code\game\objects\items\storage\firstaid.dm" #include "modular_citadel\code\game\objects\structures\tables_racks.dm" #include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm" @@ -3010,17 +3017,16 @@ #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" +#include "modular_citadel\code\modules\arousal\genitals.dm" +#include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\breasts.dm" #include "modular_citadel\code\modules\arousal\organs\eggsack.dm" -#include "modular_citadel\code\modules\arousal\organs\genitals.dm" -#include "modular_citadel\code\modules\arousal\organs\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\ovipositor.dm" #include "modular_citadel\code\modules\arousal\organs\penis.dm" #include "modular_citadel\code\modules\arousal\organs\testicles.dm" #include "modular_citadel\code\modules\arousal\organs\vagina.dm" #include "modular_citadel\code\modules\arousal\organs\womb.dm" #include "modular_citadel\code\modules\arousal\toys\dildos.dm" -#include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm" #include "modular_citadel\code\modules\cargo\console.dm" #include "modular_citadel\code\modules\client\client_defines.dm" #include "modular_citadel\code\modules\client\client_procs.dm" @@ -3047,7 +3053,6 @@ #include "modular_citadel\code\modules\clothing\neck.dm" #include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm" #include "modular_citadel\code\modules\clothing\head\head.dm" -#include "modular_citadel\code\modules\clothing\spacesuits\cydonian_armor.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" @@ -3058,17 +3063,8 @@ #include "modular_citadel\code\modules\custom_loadout\custom_items.dm" #include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" #include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" -#include "modular_citadel\code\modules\events\blob.dm" -#include "modular_citadel\code\modules\events\wizard\magicarp.dm" #include "modular_citadel\code\modules\food_and_drinks\snacks\meat.dm" #include "modular_citadel\code\modules\integrated_electronics\subtypes\manipulation.dm" -#include "modular_citadel\code\modules\jobs\dresscode_values.dm" -#include "modular_citadel\code\modules\jobs\job_types\captain.dm" -#include "modular_citadel\code\modules\jobs\job_types\cargo_service.dm" -#include "modular_citadel\code\modules\jobs\job_types\engineering.dm" -#include "modular_citadel\code\modules\jobs\job_types\medical.dm" -#include "modular_citadel\code\modules\jobs\job_types\science.dm" -#include "modular_citadel\code\modules\jobs\job_types\security.dm" #include "modular_citadel\code\modules\keybindings\bindings_carbon.dm" #include "modular_citadel\code\modules\keybindings\bindings_human.dm" #include "modular_citadel\code\modules\keybindings\bindings_robot.dm" @@ -3091,13 +3087,10 @@ #include "modular_citadel\code\modules\mob\living\carbon\human\human.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" -#include "modular_citadel\code\modules\mob\living\silicon\ai\vox_sounds.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "modular_citadel\code\modules\mob\living\simple_animal\banana_spider.dm" -#include "modular_citadel\code\modules\mob\living\simple_animal\kiwi.dm" #include "modular_citadel\code\modules\power\lighting.dm" #include "modular_citadel\code\modules\projectiles\gun.dm" #include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm" @@ -3116,7 +3109,6 @@ #include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm" #include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm" #include "modular_citadel\code\modules\projectiles\guns\energy\laser.dm" -#include "modular_citadel\code\modules\projectiles\projectile\energy.dm" #include "modular_citadel\code\modules\projectiles\projectiles\reusable.dm" #include "modular_citadel\code\modules\reagents\chemistry\reagents\astrogen.dm" #include "modular_citadel\code\modules\reagents\chemistry\reagents\eigentstasium.dm" @@ -3129,15 +3121,9 @@ #include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm" #include "modular_citadel\code\modules\reagents\objects\clothes.dm" #include "modular_citadel\code\modules\reagents\objects\items.dm" -#include "modular_citadel\code\modules\reagents\reagent container\hypospraymkii.dm" -#include "modular_citadel\code\modules\reagents\reagent container\hypovial.dm" #include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" #include "modular_citadel\code\modules\recycling\disposal\bin.dm" #include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm" -#include "modular_citadel\code\modules\research\designs\machine_designs.dm" -#include "modular_citadel\code\modules\research\designs\xenobio_designs.dm" -#include "modular_citadel\code\modules\research\techweb\_techweb.dm" -#include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm" #include "modular_citadel\code\modules\vehicles\secway.dm" #include "modular_citadel\interface\skin.dmf" // END_INCLUDE diff --git a/tools/mapmerge2/dmi.py b/tools/mapmerge2/dmi.py index f0a8182c9f..c12964cead 100644 --- a/tools/mapmerge2/dmi.py +++ b/tools/mapmerge2/dmi.py @@ -45,6 +45,8 @@ class Dmi: @classmethod def from_file(cls, fname): image = Image.open(fname) + if image.mode != 'RGBA': + image = image.convert('RGBA') # no metadata = regular image file if 'Description' not in image.info: @@ -250,4 +252,4 @@ if __name__ == '__main__': Dmi.from_file(os.path.join(dirpath, filename)) count += 1 - print(f"Successfully parsed {count} dmi files") + print(f"Successfully parsed {count} dmi files") \ No newline at end of file diff --git a/tools/mapmerge2/dmm.py b/tools/mapmerge2/dmm.py index 8bb1dca353..15aa04c07f 100644 --- a/tools/mapmerge2/dmm.py +++ b/tools/mapmerge2/dmm.py @@ -343,7 +343,7 @@ def _parse(map_raw_text): in_map_block = False in_coord_block = False in_map_string = False - iter_x = 0 + base_x = 0 adjust_y = True curr_num = "" @@ -487,7 +487,7 @@ def _parse(map_raw_text): curr_x = int(curr_num) if curr_x > maxx: maxx = curr_x - iter_x = 0 + base_x = curr_x curr_num = "" reading_coord = "y" elif reading_coord == "y": @@ -521,21 +521,15 @@ def _parse(map_raw_text): adjust_y = False else: curr_y += 1 - if curr_x > maxx: - maxx = curr_x - if iter_x > 1: - curr_x = 1 - iter_x = 0 - + curr_x = base_x else: curr_key = BASE * curr_key + base52_r[char] curr_key_len += 1 if curr_key_len == key_length: - iter_x += 1 - if iter_x > 1: - curr_x += 1 - grid[curr_x, curr_y, curr_z] = duplicate_keys.get(curr_key, curr_key) + if curr_x > maxx: + maxx = curr_x + curr_x += 1 curr_key = 0 curr_key_len = 0 @@ -551,4 +545,4 @@ def _parse(map_raw_text): data = DMM(key_length, Coordinate(maxx, maxy, maxz)) data.dictionary = dictionary data.grid = grid - return data + return data \ No newline at end of file diff --git a/tools/mapmerge2/update_paths.py b/tools/mapmerge2/update_paths.py index 2c316e941d..deab468ecd 100644 --- a/tools/mapmerge2/update_paths.py +++ b/tools/mapmerge2/update_paths.py @@ -173,4 +173,4 @@ if __name__ == "__main__": parser.add_argument("--directory", "-d", help="path to maps directory, defaults to _maps/") parser.add_argument("--inline", "-i", help="treat update source as update string instead of path", action="store_true") parser.add_argument("--verbose", "-v", help="toggle detailed update information", action="store_true") - main(parser.parse_args()) + main(parser.parse_args()) \ No newline at end of file