diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 521c222e9d5..4ed20435923 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -4182,6 +4182,26 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron/dark/corner, /area/engineering/atmos) +"aCt" = ( +/obj/structure/disposalpipe/segment{ + 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 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "aCu" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/hangover, @@ -4394,6 +4414,22 @@ }, /turf/open/floor/iron/grimy, /area/hallway/secondary/service) +"aEM" = ( +/obj/machinery/light/directional/east, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "aEN" = ( /obj/effect/spawner/randomarcade{ dir = 1 @@ -5524,6 +5560,29 @@ }, /turf/open/floor/iron, /area/cargo/qm) +"aNy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "aNC" = ( /obj/effect/landmark/start/prisoner, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -8288,12 +8347,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/ai_monitored/security/armory) -"bly" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "blB" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -11757,17 +11810,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/service/chapel/main) -"bLH" = ( -/obj/machinery/light/directional/north, -/obj/machinery/component_printer, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "bLU" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -12211,6 +12253,13 @@ }, /turf/open/space, /area/space/nearstation) +"bNG" = ( +/obj/structure/sign/poster/official/build{ + pixel_y = -32 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/white, +/area/science/misc_lab) "bNM" = ( /obj/machinery/door/poddoor/preopen{ id = "justicechamber"; @@ -13153,6 +13202,24 @@ }, /turf/open/space, /area/space/nearstation) +"bSd" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/matches{ + pixel_x = -3; + pixel_y = 5 + }, +/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/iron/dark, +/area/service/bar) "bSl" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/purple, @@ -13422,6 +13489,22 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/grimy, /area/ai_monitored/turret_protected/aisat_interior) +"bTz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "bTB" = ( /obj/item/kirbyplants/random, /obj/machinery/turretid{ @@ -15360,6 +15443,10 @@ }, /turf/open/floor/iron, /area/hallway/primary/central/aft) +"ccN" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/science/misc_lab) "ccU" = ( /obj/effect/spawner/randomsnackvend, /obj/machinery/light/directional/west, @@ -18387,6 +18474,12 @@ }, /turf/open/space, /area/space/nearstation) +"crF" = ( +/obj/structure/table/reinforced, +/obj/item/screwdriver, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/open/floor/iron, +/area/science/misc_lab) "crG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -19906,16 +19999,6 @@ }, /turf/open/floor/iron, /area/maintenance/disposal/incinerator) -"cGu" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "cGJ" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Chapel Maintenance"; @@ -26188,77 +26271,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/science/genetics) -"djF" = ( -/turf/closed/wall/r_wall, -/area/science/nanite) -"djG" = ( -/obj/machinery/computer/nanite_cloud_controller, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/science/nanite) -"djH" = ( -/obj/machinery/nanite_programmer, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - 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/iron/dark, -/area/science/nanite) -"djI" = ( -/obj/machinery/computer/nanite_chamber_control, -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/science/nanite) -"djJ" = ( -/obj/machinery/nanite_chamber, -/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/iron/dark, -/area/science/nanite) -"djK" = ( -/turf/closed/wall, -/area/science/nanite) "djL" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -26670,57 +26682,6 @@ }, /turf/open/floor/iron/dark, /area/science/genetics) -"dlt" = ( -/obj/machinery/power/apc/auto_name/west, -/obj/structure/cable, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/science/nanite) -"dlu" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) -"dlv" = ( -/obj/machinery/light/directional/east, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/loading_area{ - 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/iron/dark, -/area/science/nanite) "dlz" = ( /obj/structure/sign/warning/nosmoking, /turf/closed/wall, @@ -26898,70 +26859,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/science/genetics) -"dmF" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/nanite) -"dmG" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/science/nanite) -"dmH" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - 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/iron/dark, -/area/science/nanite) -"dmI" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/science/nanite) -"dmJ" = ( -/obj/item/kirbyplants/random, -/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/iron/dark, -/area/science/nanite) "dmL" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -27783,55 +27680,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/science/genetics) -"dqo" = ( -/obj/structure/table/reinforced, -/obj/item/nanite_scanner{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/nanite_scanner{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/nanite_remote{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/nanite_remote{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/science/nanite) -"dqr" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/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/iron/dark, -/area/science/nanite) "dqu" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -28078,65 +27926,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/science/genetics) -"drM" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/disks_nanite{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/storage/box/disks_nanite{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/machinery/camera{ - c_tag = "Research Division - Nanite Lab"; - dir = 4; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/science/nanite) -"drN" = ( -/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/iron/dark, -/area/science/nanite) -"drO" = ( -/obj/machinery/light/directional/east, -/obj/machinery/status_display/evac/directional/east, -/obj/effect/turf_decal/loading_area, -/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/iron/dark, -/area/science/nanite) "drP" = ( /turf/closed/wall/r_wall, /area/science/mixing) @@ -28493,22 +28282,6 @@ }, /turf/open/floor/iron/dark/telecomms, /area/tcommsat/server) -"dtg" = ( -/obj/effect/turf_decal/stripes/line{ - 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/iron/dark, -/area/science/nanite) "dti" = ( /obj/structure/closet/bombcloset, /obj/effect/turf_decal/stripes/line{ @@ -28815,57 +28588,6 @@ }, /turf/open/floor/carpet, /area/command/bridge) -"duz" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, -/area/science/nanite) -"duD" = ( -/obj/structure/chair/office/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/iron/dark, -/area/science/nanite) -"duE" = ( -/obj/machinery/computer/nanite_chamber_control{ - dir = 8 - }, -/obj/structure/sign/poster/random{ - pixel_x = 32 - }, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/science/nanite) "duF" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -29104,6 +28826,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/science/mixing) +"dwo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "dwt" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -32780,6 +32508,13 @@ heat_capacity = 1e+006 }, /area/maintenance/port/aft) +"dMi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/science/misc_lab) "dMt" = ( /obj/structure/closet/firecloset, /obj/machinery/light/small/directional/south, @@ -33764,23 +33499,6 @@ }, /turf/open/floor/iron, /area/medical/virology) -"dQV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, -/area/science/misc_lab) "dQW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37262,12 +36980,6 @@ }, /turf/open/floor/iron, /area/commons/fitness/recreation) -"ehi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "ehq" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ @@ -38529,20 +38241,6 @@ }, /turf/open/floor/iron/dark, /area/science/xenobiology) -"eAB" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/science/nanite) "eAI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral, @@ -38643,13 +38341,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/hallway/primary/central/aft) -"eCk" = ( -/obj/machinery/status_display/evac/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/engineering/atmos/upper) "eCl" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -40672,13 +40363,6 @@ }, /turf/open/floor/iron, /area/engineering/atmos/upper) -"faO" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "faY" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -41072,6 +40756,13 @@ }, /turf/open/floor/iron, /area/service/bar/atrium) +"ffG" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/south, +/turf/open/floor/iron/white, +/area/science/misc_lab) "ffH" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -41380,27 +41071,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/open/floor/engine, /area/engineering/supermatter/room) -"fkO" = ( -/obj/structure/table/reinforced, -/obj/machinery/camera{ - c_tag = "Bar - Fore"; - dir = 4; - name = "service camera" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/displaycase/forsale/kitchen, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron/dark, -/area/service/bar) "fkP" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/purple, @@ -41711,6 +41381,22 @@ }, /turf/open/floor/iron/grimy, /area/service/theater/abandoned) +"foP" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/mmi, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "fph" = ( /turf/open/floor/engine/vacuum, /area/engineering/atmos/upper) @@ -42076,29 +41762,6 @@ }, /turf/open/floor/iron, /area/engineering/atmos/upper) -"fuF" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Nanite Lab"; - req_access_txt = "47" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/nanite) "fuJ" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/structure/cable, @@ -42874,6 +42537,30 @@ }, /turf/open/floor/iron/dark, /area/engineering/storage/tech) +"fGC" = ( +/obj/machinery/door/airlock/research{ + name = "Research Testing Range"; + req_access_txt = "47" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "fGF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -44251,6 +43938,10 @@ }, /turf/open/floor/iron, /area/security/prison) +"geO" = ( +/obj/machinery/rnd/experimentor, +/turf/open/floor/engine, +/area/science/misc_lab) "geT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -44893,22 +44584,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/secondary/service) -"gpg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Test Range" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "gpk" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/tile/red{ @@ -45165,12 +44840,6 @@ }, /turf/open/floor/engine/co2, /area/engineering/atmos) -"gsi" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/south, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/white, -/area/science/misc_lab) "gsn" = ( /obj/machinery/door/airlock/command{ name = "Chief Medical Officer's Office"; @@ -45346,6 +45015,27 @@ "guL" = ( /turf/closed/wall/r_wall, /area/security/interrogation) +"guN" = ( +/obj/structure/table/reinforced, +/obj/machinery/camera{ + c_tag = "Bar - Fore"; + dir = 4; + name = "service camera" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/displaycase/forsale/kitchen, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/iron/dark, +/area/service/bar) "guW" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/bot, @@ -45385,6 +45075,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"gve" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "gvf" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 @@ -45418,14 +45118,6 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/dark, /area/ai_monitored/command/storage/eva) -"gvD" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/machinery/module_duplicator, -/turf/open/floor/iron/white, -/area/science/misc_lab) "gvH" = ( /obj/structure/mirror/directional/west, /obj/effect/turf_decal/tile/red{ @@ -46043,24 +45735,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central/aft) -"gFZ" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - 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/iron/dark, -/area/science/nanite) "gGK" = ( /obj/machinery/modular_computer/console/preset/id{ dir = 8 @@ -46167,27 +45841,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"gIn" = ( -/obj/structure/table, -/obj/item/paper_bin, -/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 - }, -/obj/machinery/flasher/directional/east{ - id = "hopflash"; - pixel_x = 0; - pixel_y = 26 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/central/fore) "gIw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 5 @@ -46532,10 +46185,6 @@ }, /turf/open/floor/iron/grimy, /area/commons/vacant_room/office) -"gOd" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall, -/area/service/bar) "gOp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -47741,30 +47390,6 @@ }, /turf/open/floor/iron/white, /area/hallway/primary/central/aft) -"hgS" = ( -/obj/machinery/door/airlock/research{ - name = "Circuits Testing Lab"; - req_access_txt = "47" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "hgT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -48354,6 +47979,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/commons/dorms) +"hpL" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/misc_lab) "hpM" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/delivery, @@ -48480,6 +48109,23 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/security/office) +"hrL" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/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/iron/dark, +/area/science/misc_lab) "hrT" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -50028,12 +49674,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/maintenance/port/fore) -"hOV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "hOZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -50708,6 +50348,21 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) +"hWj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics - Testing Room"; + name = "atmospherics camera" + }, +/obj/machinery/electrolyzer, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/engineering/atmos/upper) "hWu" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -52002,22 +51657,6 @@ /obj/machinery/power/apc/auto_name/west, /turf/open/floor/iron, /area/cargo/sorting) -"imL" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "imN" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ @@ -52111,6 +51750,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/command/gateway) +"iod" = ( +/obj/structure/table/reinforced, +/obj/machinery/camera{ + c_tag = "Science - Experimentation Lab"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/iron, +/area/science/misc_lab) "iog" = ( /obj/item/clothing/suit/hazardvest{ desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; @@ -52871,6 +52520,10 @@ }, /turf/open/floor/iron/dark, /area/security/interrogation) +"iyK" = ( +/obj/effect/turf_decal/tile/purple, +/turf/closed/wall/r_wall, +/area/science/misc_lab) "iyX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53571,6 +53224,23 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/engineering/supermatter/room) +"iJw" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "External Waste Ports to Filter" + }, +/turf/open/floor/iron, +/area/engineering/atmos) "iJD" = ( /obj/machinery/holopad, /obj/structure/disposalpipe/segment{ @@ -53654,6 +53324,10 @@ }, /turf/open/floor/iron, /area/cargo/qm) +"iKP" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/service/bar) "iKS" = ( /obj/structure/table/wood, /obj/item/storage/fancy/candle_box{ @@ -53918,18 +53592,6 @@ /obj/machinery/power/apc/auto_name/east, /turf/open/floor/iron, /area/cargo/miningoffice) -"iNP" = ( -/obj/structure/sign/poster/official/build{ - pixel_y = -32 - }, -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "iNS" = ( /obj/structure/chair/office{ dir = 4 @@ -54442,6 +54104,25 @@ }, /turf/open/floor/iron/white, /area/science/research) +"iTT" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/radio/intercom/directional/west, +/obj/item/storage/toolbox/electrical{ + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "iUx" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -54840,8 +54521,10 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/command/heads_quarters/hos) -"jcg" = ( -/obj/structure/table/reinforced, +"jca" = ( +/obj/machinery/light/directional/east, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/loading_area, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -54852,13 +54535,8 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/lighter{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/lighter, /turf/open/floor/iron/dark, -/area/service/bar) +/area/science/misc_lab) "jcj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -55579,20 +55257,6 @@ }, /turf/open/floor/carpet, /area/commons/dorms) -"jmM" = ( -/obj/structure/table/reinforced, -/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/iron/dark, -/area/service/bar) "jmU" = ( /obj/effect/landmark/start/station_engineer, /turf/open/floor/engine, @@ -56103,6 +55767,25 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/hallway/primary/central/aft) +"jvd" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/lighter{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/lighter, +/turf/open/floor/iron/dark, +/area/service/bar) "jvy" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall, @@ -56797,6 +56480,10 @@ }, /turf/open/floor/iron/grimy, /area/command/heads_quarters/captain) +"jER" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/science/misc_lab) "jES" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, @@ -57046,19 +56733,6 @@ /obj/item/pen, /turf/open/floor/iron/grimy, /area/command/bridge) -"jHZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/landmark/xeno_spawn, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "jId" = ( /obj/structure/table/wood, /obj/item/lipstick/random{ @@ -59295,15 +58969,6 @@ }, /turf/open/floor/engine/n2, /area/engineering/atmos) -"kon" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "kot" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall, @@ -60234,6 +59899,20 @@ }, /turf/open/floor/iron, /area/engineering/break_room) +"kzS" = ( +/obj/structure/cable, +/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/iron/dark, +/area/science/misc_lab) "kAa" = ( /obj/structure/table/wood/poker, /obj/item/storage/box/matches{ @@ -62023,6 +61702,10 @@ }, /turf/open/floor/iron, /area/service/bar/atrium) +"kYl" = ( +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white, +/area/science/misc_lab) "kYo" = ( /obj/effect/turf_decal/bot, /obj/machinery/firealarm/directional/north, @@ -63847,6 +63530,29 @@ /obj/structure/reagent_dispensers/peppertank/directional/west, /turf/open/floor/iron/dark, /area/command/heads_quarters/hos) +"luI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Circuits Lab"; + req_access_txt = "47" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "lvk" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ @@ -63896,6 +63602,20 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"lvX" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "lvY" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -65213,6 +64933,22 @@ }, /turf/open/floor/iron, /area/cargo/office) +"lPk" = ( +/obj/machinery/camera{ + c_tag = "Science - Firing Range"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/structure/table/reinforced, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/iron/white, +/area/science/misc_lab) "lPn" = ( /obj/structure/chair/comfy/brown{ buildstackamount = 0; @@ -66631,6 +66367,11 @@ }, /turf/open/floor/plating, /area/service/abandoned_gambling_den) +"mhV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder, +/turf/open/floor/plating, +/area/science/misc_lab) "mhX" = ( /obj/machinery/camera{ c_tag = "Art Gallery"; @@ -67650,6 +67391,12 @@ }, /turf/open/floor/wood, /area/commons/vacant_room/office) +"muj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "muI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown{ @@ -68490,6 +68237,9 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/service/library/abandoned) +"mHE" = ( +/turf/open/floor/engine, +/area/science/misc_lab) "mHH" = ( /obj/effect/decal/cleanable/dirt, /obj/item/kirbyplants/random, @@ -68863,21 +68613,6 @@ }, /turf/open/floor/iron, /area/commons/vacant_room/commissary) -"mLZ" = ( -/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/gun/energy/laser/practice, -/obj/item/gun/energy/laser/practice, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, -/area/science/misc_lab) "mMg" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/green, @@ -69077,18 +68812,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/commons/toilet/restrooms) -"mPh" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/ears/earmuffs, -/obj/item/gun/energy/laser/practice, -/obj/item/gun/energy/laser/practice{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced, -/turf/open/floor/iron/white, -/area/science/misc_lab) "mPo" = ( /obj/machinery/research/explosive_compressor, /obj/effect/turf_decal/bot, @@ -69322,23 +69045,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/command/meeting_room/council) -"mSq" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/door/window/southright{ - name = "Bar Door"; - req_one_access_txt = "25;28" - }, -/turf/open/floor/iron/dark, -/area/service/bar) "mSA" = ( /obj/structure/window/reinforced{ dir = 8 @@ -70532,23 +70238,6 @@ }, /turf/open/floor/iron, /area/maintenance/port) -"ngP" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "External Waste Ports to Filter" - }, -/turf/open/floor/iron, -/area/engineering/atmos) "ngQ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -70850,6 +70539,35 @@ }, /turf/open/floor/iron/dark, /area/command/heads_quarters/hos) +"nku" = ( +/obj/structure/table/reinforced, +/obj/machinery/camera{ + c_tag = "Research Division - Circuits Lab"; + dir = 4; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/multitool{ + pixel_x = -4; + pixel_y = -2 + }, +/obj/item/multitool{ + pixel_x = 4; + pixel_y = 2 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "nkz" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -71492,6 +71210,13 @@ }, /turf/open/floor/iron/dark, /area/service/electronic_marketing_den) +"nuU" = ( +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/engineering/atmos/upper) "nuW" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot_white, @@ -72971,6 +72696,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/engineering/atmos/upper) +"nNa" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/science/misc_lab) "nNm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/filingcabinet/filingcabinet, @@ -73472,37 +73201,6 @@ /obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engineering/gravity_generator) -"nTq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Genetics Lab"; - req_access_txt = "9" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "nTx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73716,18 +73414,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/maintenance/port/fore) -"nUV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/multitool/circuit{ - pixel_x = 7 - }, -/obj/item/multitool/circuit, -/obj/item/multitool/circuit{ - pixel_x = -8 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "nUZ" = ( /obj/machinery/holopad, /obj/structure/cable, @@ -74408,6 +74094,27 @@ "ods" = ( /turf/open/floor/wood, /area/command/heads_quarters/hop) +"odz" = ( +/obj/structure/table, +/obj/item/paper_bin, +/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 + }, +/obj/machinery/flasher/directional/east{ + id = "hopflash"; + pixel_x = 0; + pixel_y = 26 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/central/fore) "odF" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -75093,10 +74800,6 @@ }, /turf/open/floor/iron/white, /area/hallway/primary/central/aft) -"oly" = ( -/obj/machinery/modular_computer/console/preset/civilian, -/turf/open/floor/iron/white, -/area/science/misc_lab) "olC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -75415,6 +75118,24 @@ }, /turf/open/floor/iron/dark, /area/engineering/atmos) +"ooQ" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "ooT" = ( /obj/effect/spawner/randomsnackvend, /obj/effect/turf_decal/tile/red{ @@ -75470,6 +75191,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/cargo/sorting) +"ops" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/controller, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "opA" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -75920,6 +75657,15 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/hallway/primary/central/fore) +"owI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/electrolyzer, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/engineering/atmos/upper) "owY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -76283,6 +76029,11 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/prison) +"oBr" = ( +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white, +/area/science/misc_lab) "oBs" = ( /turf/closed/wall, /area/cargo/qm) @@ -76580,6 +76331,29 @@ }, /turf/open/floor/iron, /area/maintenance/starboard/fore) +"oFz" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/item/multitool/circuit{ + pixel_x = 7 + }, +/obj/item/multitool/circuit{ + pixel_x = -8 + }, +/obj/item/multitool/circuit, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "oFE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral, @@ -78451,6 +78225,20 @@ }, /turf/open/floor/iron, /area/engineering/main) +"pbQ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "pcq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ @@ -78874,6 +78662,21 @@ }, /turf/open/floor/iron, /area/hallway/secondary/command) +"pkr" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/component_printer, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "pkx" = ( /obj/effect/turf_decal/tile/green, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -80788,32 +80591,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/hallway/primary/port) -"pLc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/corner{ - 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 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "pLf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -81095,6 +80872,28 @@ }, /turf/open/floor/iron/dark/corner, /area/maintenance/disposal/incinerator) +"pPE" = ( +/obj/structure/disposalpipe/junction{ + 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 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "pPX" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/landmark/start/hangover, @@ -81242,6 +81041,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/service/abandoned_gambling_den) +"pRL" = ( +/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/iron/dark, +/area/science/misc_lab) "pRW" = ( /obj/machinery/computer/slot_machine, /obj/effect/decal/cleanable/dirt, @@ -82198,25 +82010,6 @@ }, /turf/open/floor/iron, /area/science/research) -"qdJ" = ( -/obj/machinery/nanite_programmer, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/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/iron/dark, -/area/science/nanite) "qdO" = ( /obj/machinery/light/directional/south, /obj/structure/table/reinforced, @@ -83728,15 +83521,6 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/circuit/green, /area/engineering/main) -"qyo" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/science/misc_lab) "qyu" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -83861,15 +83645,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/medical/surgery) -"qzv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/electrolyzer, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/engineering/atmos/upper) "qzE" = ( /turf/open/floor/engine, /area/engineering/supermatter) @@ -84417,10 +84192,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/secondary/entry) -"qGq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/science/misc_lab) "qGs" = ( /obj/machinery/light/directional/west, /obj/machinery/camera{ @@ -84697,6 +84468,12 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/engineering/main) +"qKy" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "qKC" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -85500,22 +85277,6 @@ }, /turf/open/floor/iron, /area/cargo/storage) -"qUc" = ( -/obj/effect/turf_decal/stripes/line{ - 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/iron/dark, -/area/science/nanite) "qUh" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -88538,18 +88299,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/science/research) -"rKf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/controller, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/item/compact_remote, -/obj/item/compact_remote, -/turf/open/floor/iron/white, -/area/science/misc_lab) "rKh" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -88824,6 +88573,17 @@ dir = 1 }, /area/hallway/secondary/entry) +"rMT" = ( +/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/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice, +/turf/open/floor/iron/white, +/area/science/misc_lab) "rMV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -88938,6 +88698,10 @@ }, /turf/open/floor/iron, /area/cargo/storage) +"rOQ" = ( +/obj/structure/table/reinforced, +/turf/open/floor/iron, +/area/science/misc_lab) "rPb" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -89768,19 +89532,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/medical/medbay/central) -"saJ" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "saQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/virology{ @@ -90529,6 +90280,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/secondary/entry) +"sle" = ( +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/engine, +/area/science/misc_lab) "slt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -92592,21 +92349,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/service/library/abandoned) -"sKv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics - Testing Room"; - name = "atmospherics camera" - }, -/obj/machinery/electrolyzer, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/engineering/atmos/upper) "sKy" = ( /obj/structure/table/glass, /obj/item/storage/box/beakers{ @@ -92677,15 +92419,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/medical/virology) -"sKO" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/structure/rack, -/obj/item/integrated_circuit/loaded/speech_relay, -/obj/item/integrated_circuit/loaded/hello_world, -/turf/open/floor/iron/white, -/area/science/misc_lab) "sKP" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -93003,6 +92736,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/maintenance/port/fore) +"sPX" = ( +/obj/item/kirbyplants/random, +/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/iron/dark, +/area/science/misc_lab) "sQk" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/yellow{ @@ -93177,6 +92924,12 @@ }, /turf/open/floor/iron, /area/maintenance/starboard/aft) +"sSW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "sTm" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -93462,6 +93215,26 @@ }, /turf/open/floor/iron, /area/security/office) +"sWs" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/integrated_circuit/loaded/speech_relay, +/obj/item/integrated_circuit/loaded/hello_world, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "sWu" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -93559,6 +93332,21 @@ }, /turf/open/floor/iron, /area/cargo/miningoffice) +"sXf" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "sXh" = ( /obj/structure/transit_tube/horizontal, /obj/effect/turf_decal/tile/neutral{ @@ -95218,13 +95006,6 @@ }, /turf/open/floor/iron, /area/maintenance/starboard/fore) -"tuj" = ( -/obj/structure/chair/office/light{ - dir = 1; - pixel_y = 3 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "tuq" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/red{ @@ -95748,21 +95529,6 @@ }, /turf/open/floor/iron, /area/maintenance/starboard/aft) -"tCD" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/service/bar) "tCG" = ( /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -96790,6 +96556,37 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"tNB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Genetics Lab"; + req_access_txt = "9" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "tNO" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -98469,6 +98266,23 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/engineering/main) +"umc" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/window/southright{ + name = "Bar Door"; + req_one_access_txt = "25;28" + }, +/turf/open/floor/iron/dark, +/area/service/bar) "ume" = ( /obj/machinery/door/window/brigdoor{ dir = 1; @@ -98760,6 +98574,25 @@ }, /turf/open/floor/iron, /area/hallway/primary/central/fore) +"uqk" = ( +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/compact_remote, +/obj/item/compact_remote, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "uqr" = ( /obj/structure/table/wood, /obj/item/newspaper{ @@ -99784,6 +99617,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/grimy, /area/command/heads_quarters/hos) +"uCC" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/structure/rack, +/turf/open/floor/iron, +/area/science/misc_lab) "uCT" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -100183,24 +100023,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"uHW" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/matches{ - pixel_x = -3; - pixel_y = 5 - }, -/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/iron/dark, -/area/service/bar) "uIe" = ( /obj/machinery/door/airlock{ id_tag = "AuxCabinB"; @@ -100256,6 +100078,21 @@ }, /turf/open/floor/iron, /area/command/heads_quarters/ce) +"uIy" = ( +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "uID" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -100327,10 +100164,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) -"uJJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/science/misc_lab) "uJK" = ( /obj/machinery/button/crematorium{ id = "cremawheat"; @@ -100506,6 +100339,20 @@ heat_capacity = 1e+006 }, /area/commons/fitness/recreation) +"uMh" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/door/window/brigdoor{ + dir = 4; + name = "Test Range" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/misc_lab) "uMi" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -101132,6 +100979,10 @@ }, /turf/open/floor/iron, /area/cargo/storage) +"uWD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/science/misc_lab) "uWH" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, @@ -101557,18 +101408,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/command/heads_quarters/captain) -"veb" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "vec" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/tank_holder/emergency_oxygen, @@ -102411,6 +102250,21 @@ }, /turf/open/floor/iron, /area/cargo/miningoffice) +"voj" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/module_duplicator, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "voq" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/purple{ @@ -102872,20 +102726,6 @@ }, /turf/open/floor/iron, /area/service/hydroponics) -"vwU" = ( -/obj/effect/landmark/start/scientist, -/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/iron/dark, -/area/science/nanite) "vxa" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -103761,13 +103601,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible, /turf/open/floor/iron, /area/engineering/supermatter/room) -"vJu" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Nanite Lab Maintenance"; - req_access_txt = "47" - }, -/turf/open/floor/plating, -/area/maintenance/port) "vJB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/morgue{ @@ -104662,6 +104495,13 @@ }, /turf/open/floor/iron, /area/cargo/sorting) +"vUT" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Circuits Lab Maintenance"; + req_access_txt = "47" + }, +/turf/open/floor/plating, +/area/maintenance/port) "vVc" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -105197,28 +105037,6 @@ }, /turf/open/floor/carpet, /area/service/chapel/office) -"wbX" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/plus{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/stock_parts/cell/high/plus, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Research Division - Circuits"; - dir = 4; - name = "science camera"; - network = list("ss13","rd") - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "wcg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/xeno_spawn, @@ -105704,23 +105522,6 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/aisat/exterior) -"wjF" = ( -/obj/structure/chair/office/light{ - dir = 1; - 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/iron/dark, -/area/science/nanite) "wjG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, @@ -107187,6 +106988,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/command/meeting_room/council) +"wEH" = ( +/obj/structure/table/reinforced, +/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/iron/dark, +/area/service/bar) "wEL" = ( /obj/structure/window/reinforced{ dir = 8 @@ -107426,6 +107241,9 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/aisat/exterior) +"wId" = ( +/turf/open/floor/plating, +/area/science/misc_lab) "wIn" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -107640,6 +107458,11 @@ dir = 1 }, /area/engineering/atmos) +"wMH" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/turf/open/floor/iron, +/area/science/misc_lab) "wMU" = ( /obj/machinery/button/flasher{ id = "Cell 5"; @@ -108047,22 +107870,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard) -"wTa" = ( -/obj/machinery/computer/nanite_cloud_controller, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/science/nanite) "wTb" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/tile/neutral{ @@ -108298,26 +108105,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/engineering/storage) -"wVN" = ( -/obj/structure/disposalpipe/segment{ - 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 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "wWd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /obj/effect/turf_decal/tile/yellow{ @@ -108537,6 +108324,23 @@ }, /turf/open/floor/iron, /area/maintenance/solars/port/aft) +"wZp" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "wZs" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, @@ -109496,28 +109300,6 @@ }, /turf/open/floor/iron, /area/service/hydroponics) -"xot" = ( -/obj/structure/disposalpipe/junction{ - 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 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "xox" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -109527,17 +109309,6 @@ }, /turf/open/floor/iron/dark/corner, /area/engineering/atmos) -"xoY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/science/misc_lab) "xpb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -109805,6 +109576,14 @@ }, /turf/open/floor/iron/grimy, /area/service/chapel/office) +"xsp" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "12;47" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/science/misc_lab) "xsP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -111002,6 +110781,14 @@ }, /turf/open/floor/iron, /area/command/heads_quarters/rd) +"xKi" = ( +/obj/structure/cable, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/misc_lab) "xKt" = ( /obj/structure/filingcabinet/employment, /obj/machinery/airalarm/directional/east, @@ -111051,9 +110838,6 @@ /obj/machinery/atmospherics/components/binary/thermomachine/freezer, /turf/open/floor/iron, /area/science/mixing) -"xLa" = ( -/turf/open/floor/iron/white, -/area/science/misc_lab) "xLd" = ( /obj/machinery/holopad, /obj/effect/turf_decal/tile/neutral{ @@ -112142,32 +111926,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/command) -"ybh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - 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 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "ybi" = ( /turf/open/floor/iron/grimy, /area/command/heads_quarters/hos) @@ -112610,6 +112368,21 @@ "yhJ" = ( /turf/open/floor/plating/airless, /area/space/nearstation) +"yhN" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/service/bar) "yhU" = ( /obj/structure/table/wood, /obj/item/taperecorder{ @@ -112801,6 +112574,23 @@ }, /turf/open/floor/iron, /area/command/heads_quarters/cmo) +"ykV" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "ykY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow{ @@ -137534,11 +137324,11 @@ exk swm pfQ tCh +crF +rOQ +gSi map vGv -vGv -vGv -vGv lmF gSi dul @@ -137791,10 +137581,10 @@ ced wXQ moY tCh +iod +qKy +gSi mLI -xKO -xKO -xKO bfJ aST gSi @@ -137990,7 +137780,7 @@ sBH bUP qAf qhK -ngP +iJw glG yjF kPH @@ -138048,11 +137838,11 @@ cMY ceb moY tCh +wMH +nNa +gSi uRm -qGq -ehi -ehi -faO +xKO aST gSi dlg @@ -138305,11 +138095,11 @@ cMY cea kEw tCh +nNa +nNa +gSi mLI xKO -xKO -xKO -ehi mGu gSi dum @@ -138561,12 +138351,12 @@ dcb cMY cea laE -tCh -kon -qyo -qyo -qyo -jHZ +xsp +jER +muj +gSi +mLI +sSW aST gSi yjc @@ -138819,11 +138609,11 @@ cMY deX aiu tCh -nUV -saJ -wbX -mPh -gpg +nNa +dwo +gSi +gve +uMh nGU gSi dun @@ -139076,12 +138866,12 @@ cMY deX joJ tCh -oly -tuj -xLa -xLa -xoY -gsi +mhV +ccN +gSi +lPk +xKi +ffG gSi duo dmu @@ -139333,12 +139123,12 @@ cMY deY oAw tCh -bLH -bly -xLa -uJJ +wId +xKO +gSi +oBr ifR -veb +dMi gSi dup dlg @@ -139590,12 +139380,12 @@ cMY cjp hST tCh -cGu -hOV -hOV -hOV +wId +wId +gSi +kYl oox -iNP +bNG gSi duq dlh @@ -139847,11 +139637,11 @@ cMY deZ joJ tCh -sKO -rKf -gvD -mLZ -dQV +uCC +uWD +iyK +rMT +oox qhk gSi dur @@ -140023,10 +139813,10 @@ wLZ nXp twf awb -sKv -qzv +hWj +owI xpD -eCk +nuU awb ipq fsB @@ -140108,7 +139898,7 @@ tCh tCh gSi sUT -hgS +fGC gSi gSi dus @@ -142674,16 +142464,16 @@ cNd cOM dgt cMY -djF -djF -djF -nTq -djF -djF -djF -djF -djF -djF +gSi +gSi +gSi +tNB +gSi +gSi +gSi +gSi +gSi +gSi cxO oFE caE @@ -142931,16 +142721,16 @@ ddR cNd cNd cMY -djG -dlt -dmG -ybh -dqo -drM -gFZ -duz -wTa -djF +foP +uqk +ops +aNy +oFz +iTT +nku +ooQ +ykV +gSi dzp pxk caE @@ -143188,16 +142978,16 @@ vHZ vHZ vHZ cMY -djH -dlu -dmH -pLc -drN -vwU -dtg -dtg -dtg -vJu +voj +sXf +kzS +aNy +pRL +uIy +bTz +bTz +bTz +vUT cxN wJa dBY @@ -143445,16 +143235,16 @@ cNd cON eAA cMY -djI -wjF -dmI -wVN -eAB -imL -drN -duD -qUc -djF +sWs +pRL +pbQ +aCt +lvX +wZp +mHE +geO +mHE +gSi dzo oks exk @@ -143702,16 +143492,16 @@ ddR cNd cNd cMY -djJ -dlv -dmJ -xot -dqr -drO -djJ -duE -qdJ -djF +pkr +jca +sPX +pPE +hrL +aEM +mHE +sle +mHE +gSi tbn cjq dBZ @@ -143959,16 +143749,16 @@ cNc cMY cMY dhU -djK -djK -dmF -fuF -dmF -djF -djF -djF -djF -djF +tCh +tCh +hpL +luI +hpL +gSi +gSi +gSi +gSi +gSi drP drP drP @@ -148030,7 +147820,7 @@ sKa pTo kcH wpW -gIn +odz wIy oxN lgC @@ -149533,7 +149323,7 @@ aXI hFM wtr unM -fkO +guN stu pqt ofO @@ -149790,7 +149580,7 @@ aXI vWE xXQ hXi -jcg +jvd jOV ofO qUo @@ -150047,7 +149837,7 @@ aXI wrg euO vsR -jmM +wEH jOV bDy gJj @@ -150304,7 +150094,7 @@ aXI kUs iJD mvD -uHW +bSd gbz ofO gJj @@ -150561,7 +150351,7 @@ aXI ude euO unM -tCD +yhN jOV ofO gJj @@ -150818,7 +150608,7 @@ aXI dZu jNP krF -jmM +wEH bBg ofO tuq @@ -151075,7 +150865,7 @@ aXI mvi qMY snN -mSq +umc fqv mMT ofO @@ -151332,7 +151122,7 @@ aXI aXI aXI aXI -gOd +iKP ncV ncV uZJ diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index ae831f5881a..8a59befed37 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -1656,6 +1656,10 @@ /obj/structure/table, /turf/open/floor/iron/showroomfloor, /area/security/warden) +"ahT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall, +/area/maintenance/fore/secondary) "ahU" = ( /obj/structure/closet{ name = "Evidence Closet" @@ -2484,6 +2488,23 @@ /obj/item/trash/can, /turf/open/floor/iron, /area/security/prison) +"akE" = ( +/obj/structure/sign/warning/deathsposal{ + pixel_y = 32 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/bin, +/obj/structure/cable, +/obj/structure/disposalpipe/trunk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "akF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 @@ -3360,6 +3381,12 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/security/courtroom) +"anD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "anE" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -3695,6 +3722,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"aoL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aoM" = ( /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) @@ -3834,6 +3868,29 @@ /obj/machinery/meter/atmos/layer4, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"apw" = ( +/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{ + name = "Atmospherics Maintenance"; + req_access_txt = "12;24" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"apy" = ( +/obj/item/wrench, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "apz" = ( /obj/machinery/hydroponics/soil, /obj/item/shovel/spade, @@ -4011,6 +4068,34 @@ /obj/structure/reagent_dispensers/servingdish, /turf/open/floor/iron, /area/security/prison) +"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 + }, +/obj/machinery/atmospherics/components/binary/pump/on/general/visible/layer4{ + dir = 4; + name = "Air In" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqq" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aqt" = ( /obj/structure/toilet/greyscale{ dir = 8; @@ -7699,14 +7784,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/hallway/primary/central) -"aOB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "aOE" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -7895,20 +7972,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/entry) -"aQx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/science/nanite) -"aQy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/science/nanite) "aQB" = ( /obj/structure/sign/warning/securearea{ pixel_x = 32 @@ -8013,6 +8076,16 @@ icon_state = "damaged2" }, /area/icemoon/surface/outdoors) +"aRs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/flora/rock/pile/icy{ + pixel_x = 6; + pixel_y = 4 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "aRK" = ( /turf/open/floor/iron, /area/command/heads_quarters/ce) @@ -8950,12 +9023,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/primary/starboard) -"baz" = ( -/obj/item/cigbutt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "baC" = ( /obj/docking_port/stationary/random/icemoon{ dir = 8; @@ -9706,6 +9773,16 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +"bfs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "bfv" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload) @@ -10183,6 +10260,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/science/lab) +"bia" = ( +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "bic" = ( /obj/item/radio/intercom/directional/north, /obj/structure/table/glass, @@ -12862,16 +12942,6 @@ /obj/item/clothing/shoes/winterboots, /turf/open/floor/plating, /area/maintenance/starboard) -"bwt" = ( -/obj/structure/table, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/corner{ - dir = 4 - }, -/area/science/misc_lab) "bwv" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -13205,6 +13275,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) +"byw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "byL" = ( /obj/structure/chair/office{ dir = 1 @@ -13215,6 +13292,14 @@ }, /turf/open/floor/iron, /area/security/checkpoint/supply) +"byO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "byP" = ( /obj/structure/sign/warning/securearea{ pixel_y = 32 @@ -13309,6 +13394,13 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors) +"bzr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "bzs" = ( /turf/closed/wall, /area/maintenance/aft) @@ -13379,6 +13471,12 @@ }, /turf/open/floor/iron/dark, /area/science/genetics) +"bzQ" = ( +/obj/item/cigbutt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "bzS" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -13827,6 +13925,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bCf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "bCq" = ( /turf/closed/wall, /area/maintenance/port/aft) @@ -14267,6 +14372,11 @@ }, /turf/open/floor/iron, /area/maintenance/disposal/incinerator) +"bEy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/electrolyzer, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "bEC" = ( /turf/closed/wall/r_wall, /area/science/mixing) @@ -17323,10 +17433,6 @@ }, /turf/open/floor/iron, /area/science/misc_lab) -"cbe" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "cbh" = ( /obj/structure/table, /obj/item/folder/white, @@ -17806,11 +17912,38 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/maintenance/port/aft) +"chm" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "chw" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, /turf/open/floor/carpet, /area/command/heads_quarters/captain) +"chC" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 + }, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/science/misc_lab) "chH" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -18725,6 +18858,12 @@ "cuf" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat/service) +"cuh" = ( +/obj/structure/rack, +/obj/item/wrench, +/obj/item/crowbar/red, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/atmos) "cui" = ( /obj/machinery/atmospherics/components/tank/air, /turf/open/floor/plating, @@ -18747,6 +18886,10 @@ /obj/machinery/recharge_station, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/service) +"cuq" = ( +/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; @@ -18825,6 +18968,10 @@ /obj/machinery/holopad/secure, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/aisat/service) +"cuL" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ai_monitored/turret_protected/aisat/atmos) "cuN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -18835,6 +18982,13 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/aisat/atmos) +"cuO" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ai_monitored/turret_protected/aisat/atmos) "cuQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ @@ -21213,6 +21367,12 @@ /obj/item/reagent_containers/food/drinks/flask/gold, /turf/open/floor/carpet, /area/command/heads_quarters/captain) +"dky" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "dkZ" = ( /obj/machinery/light/small/directional/west, /mob/living/simple_animal/mouse/brown/tom, @@ -21752,12 +21912,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria, /area/service/kitchen) -"dFk" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/bot, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/science/nanite) "dFo" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 8 @@ -22430,9 +22584,6 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors) -"dYq" = ( -/turf/closed/wall, -/area/science/nanite) "dYC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -22762,13 +22913,6 @@ }, /turf/open/floor/iron, /area/commons/dorms) -"eja" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/computer/nanite_chamber_control{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "ejg" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -22993,12 +23137,6 @@ }, /turf/open/floor/iron/dark, /area/medical/virology) -"epI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/science/nanite) "epN" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ dir = 4 @@ -23018,6 +23156,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/ai_monitored/command/nuke_storage) +"epW" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock"; + req_access_txt = "24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engineering/atmos) "eqa" = ( /obj/machinery/atmospherics/components/trinary/mixer{ dir = 8 @@ -23074,6 +23222,10 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron, /area/security/processing) +"esv" = ( +/obj/machinery/module_duplicator, +/turf/open/floor/iron, +/area/science/misc_lab) "esy" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -23099,10 +23251,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2, /area/engineering/atmos) -"eta" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat/atmos) "etg" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/tile/red{ @@ -23301,6 +23449,12 @@ }, /turf/open/floor/iron, /area/engineering/main) +"eAd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "eAh" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/light/directional/east, @@ -23478,6 +23632,15 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, /area/maintenance/port/fore) +"eGA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "eGU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -23723,10 +23886,6 @@ }, /turf/open/floor/engine, /area/engineering/supermatter/room) -"eOa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/closed/wall, -/area/maintenance/fore/secondary) "eOk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23943,6 +24102,13 @@ /obj/machinery/light/small/directional/east, /turf/open/openspace/icemoon, /area/security/execution/transfer) +"eXz" = ( +/obj/effect/turf_decal/bot, +/obj/structure/frame/machine{ + anchored = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "eXP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -24089,11 +24255,6 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/command/nuke_storage) -"faQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/electrolyzer, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "faR" = ( /obj/effect/loot_site_spawner, /turf/open/floor/plating{ @@ -24103,6 +24264,10 @@ "fbm" = ( /turf/open/floor/iron, /area/command/heads_quarters/rd) +"fbx" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/science/research) "fbH" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -24133,6 +24298,12 @@ }, /turf/open/floor/plating, /area/engineering/storage/tech) +"fcy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "fdf" = ( /obj/machinery/power/apc/auto_name/west, /obj/machinery/camera{ @@ -24608,6 +24779,17 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) +"frS" = ( +/obj/structure/table, +/obj/machinery/requests_console/directional/east{ + department = "Circuits Lab"; + departmentType = 2; + name = "Circuits Lab Requests Console"; + receive_ore_updates = 1 + }, +/obj/item/clothing/shoes/wheelys/skishoes, +/turf/open/floor/iron/dark, +/area/science/research) "frW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -25849,6 +26031,16 @@ /obj/item/trash/semki, /turf/open/floor/iron, /area/maintenance/port/fore) +"gaD" = ( +/obj/structure/table, +/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/turf/open/floor/iron/white/corner{ + dir = 4 + }, +/area/science/misc_lab) "gaT" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -26265,15 +26457,6 @@ "gnP" = ( /turf/closed/wall, /area/cargo/storage) -"gnX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/iron, -/area/science/nanite) "gor" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26532,25 +26715,6 @@ }, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) -"gwd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/science/nanite) -"gwm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "gxp" = ( /obj/machinery/light_switch/directional/north, /obj/structure/cable, @@ -26876,6 +27040,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/commons/fitness) +"gHf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/statue/snow/snowman{ + pixel_x = 6 + }, +/obj/item/toy/snowball{ + pixel_x = 16; + pixel_y = 4 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "gHj" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -27029,12 +27206,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/plating, /area/security/prison/safe) -"gLd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "gLf" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -27318,6 +27489,17 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/science/robotics/lab) +"gTG" = ( +/obj/structure/statue/snow/snowman, +/obj/item/toy/snowball{ + pixel_x = -10; + pixel_y = 4 + }, +/obj/item/food/snowcones/pwrgame{ + pixel_x = 12 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "gTH" = ( /obj/structure/rack, /obj/item/clothing/shoes/magboots, @@ -27992,6 +28174,11 @@ }, /turf/open/floor/iron/freezer, /area/maintenance/starboard/fore) +"hrr" = ( +/obj/structure/table, +/obj/item/food/grown/carrot, +/turf/open/floor/iron/dark, +/area/science/research) "hrF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -28245,6 +28432,18 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/iron, /area/engineering/main) +"hze" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/chair/stool/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/components/binary/pump/on/general/visible/layer4{ + dir = 8; + name = "Air Out" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "hzs" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/techstorage/tcomms, @@ -28292,11 +28491,6 @@ }, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) -"hAK" = ( -/obj/structure/table, -/obj/item/storage/box/disks_nanite, -/turf/open/floor/iron/dark, -/area/science/nanite) "hBg" = ( /obj/effect/turf_decal/delivery, /obj/structure/disposalpipe/segment, @@ -29169,9 +29363,6 @@ /obj/structure/grille, /turf/closed/wall/r_wall, /area/engineering/atmos) -"hZk" = ( -/turf/open/floor/iron, -/area/science/nanite) "hZo" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, @@ -29238,11 +29429,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white, /area/science/mixing) -"ibG" = ( -/obj/machinery/nanite_programmer, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "ibP" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -29273,10 +29459,6 @@ }, /turf/open/floor/engine, /area/engineering/supermatter/room) -"icS" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, -/area/science/nanite) "icU" = ( /obj/machinery/status_display/evac/directional/east, /obj/effect/turf_decal/tile/red{ @@ -29548,6 +29730,11 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron/dark, /area/hallway/primary/aft) +"ini" = ( +/obj/effect/turf_decal/loading_area, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/iron/dark, +/area/science/research) "ink" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -29859,6 +30046,10 @@ "iwd" = ( /turf/open/floor/carpet, /area/service/chapel/main) +"iwz" = ( +/obj/structure/flora/tree/dead, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "iwH" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -31125,6 +31316,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/engineering/atmos) +"jiO" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rnd2"; + name = "research lab shutters" + }, +/turf/open/floor/plating, +/area/science/research) "jjv" = ( /turf/open/floor/iron/freezer, /area/commons/toilet/locker) @@ -32090,15 +32289,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/science/mixing) -"jKN" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/science/misc_lab) "jLf" = ( /obj/structure/cable, /turf/closed/wall/r_wall, @@ -32786,6 +32976,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/cargo/storage) +"kfx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "kfV" = ( /obj/structure/sink/kitchen{ pixel_y = 28 @@ -32907,14 +33103,6 @@ }, /turf/open/floor/wood, /area/service/library) -"kja" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Maintenance"; - req_access_txt = "12;24" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "kjD" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/brown{ @@ -33354,14 +33542,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/cargo/qm) -"kvA" = ( -/obj/item/wrench, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "kwf" = ( /turf/open/floor/iron, /area/command/gateway) @@ -33388,6 +33568,15 @@ /obj/structure/closet/wardrobe/mixed, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"kwD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/north, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "kxf" = ( /obj/structure/cable, /mob/living/simple_animal/sloth/paperwork, @@ -33443,15 +33632,6 @@ }, /turf/open/floor/iron/white, /area/science/genetics) -"kxK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/science/misc_lab) "kyo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -33999,6 +34179,10 @@ }, /turf/open/floor/iron, /area/commons/dorms) +"kPz" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "kPF" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -34318,6 +34502,11 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/command/heads_quarters/hos) +"kYW" = ( +/obj/structure/table, +/obj/item/clothing/shoes/wheelys/skishoes, +/turf/open/floor/iron/dark, +/area/science/research) "kZi" = ( /obj/machinery/air_sensor/atmos/nitrogen_tank, /turf/open/floor/engine/n2, @@ -34704,15 +34893,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/engineering/engine_smes) -"llI" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/obj/structure/closet/radiation, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "llU" = ( /obj/structure/table, /obj/item/camera_film, @@ -35618,13 +35798,6 @@ }, /turf/open/floor/plating, /area/engineering/atmos) -"lLp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/science/nanite) "lLw" = ( /obj/effect/landmark/blobstart, /obj/effect/landmark/blobstart, @@ -35639,6 +35812,16 @@ /obj/item/crowbar, /turf/open/floor/iron, /area/command/teleporter) +"lLD" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/security/interrogation) "lMe" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35795,28 +35978,6 @@ }, /turf/open/floor/iron, /area/cargo/sorting) -"lQm" = ( -/obj/machinery/camera{ - c_tag = "Nanite Lab"; - dir = 4; - network = list("ss13","rd") - }, -/obj/machinery/computer/nanite_cloud_controller, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) -"lQq" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/chair/stool/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/binary/pump/on/general/visible/layer4{ - dir = 8; - name = "Air Out" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "lQz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -36216,13 +36377,6 @@ "lYu" = ( /turf/open/floor/iron, /area/commons/locker) -"lZb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "lZm" = ( /obj/machinery/washing_machine, /obj/machinery/light/directional/south, @@ -37199,15 +37353,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"mBm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/science/nanite) "mBy" = ( /obj/structure/urinal/directional/north, /turf/open/floor/iron/freezer, @@ -37369,6 +37514,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/hallway/primary/starboard) +"mFt" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/bot, +/obj/structure/frame/machine{ + anchored = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "mFv" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -37414,14 +37567,6 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/command/nuke_storage) -"mGC" = ( -/obj/machinery/power/apc/auto_name/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/science/nanite) "mGX" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -38110,16 +38255,6 @@ /obj/item/wirecutters, /turf/open/floor/plating, /area/engineering/storage/tech) -"mYX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/atmospherics, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "mYY" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -38304,12 +38439,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, /area/cargo/miningdock) -"nee" = ( -/obj/machinery/light/directional/south, -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "nes" = ( /obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, @@ -38436,11 +38565,6 @@ /obj/item/book/manual/wiki/security_space_law, /turf/open/floor/iron, /area/security/office) -"nhP" = ( -/obj/effect/turf_decal/loading_area, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark, -/area/science/nanite) "nhQ" = ( /turf/open/floor/carpet, /area/service/library) @@ -38457,16 +38581,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/engineering/supermatter/room) -"niE" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Airlock"; - req_access_txt = "24" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engineering/atmos) "njb" = ( /obj/effect/turf_decal/trimline/green/filled/corner, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -39397,6 +39511,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/service/bar) +"nIs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "nIt" = ( /obj/machinery/porta_turret/ai{ dir = 4; @@ -39445,12 +39565,6 @@ /obj/structure/closet/crate/maint, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"nKl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "nKz" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -39952,15 +40066,6 @@ }, /turf/open/floor/iron/dark, /area/engineering/supermatter/room) -"oaD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - c_tag = "Incinerator"; - dir = 4 - }, -/obj/machinery/atmospherics/components/tank/toxins, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "obi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, @@ -40002,6 +40107,15 @@ icon_state = "platingdmg1" }, /area/maintenance/port/fore) +"ocR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Incinerator"; + dir = 4 + }, +/obj/machinery/atmospherics/components/tank/toxins, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "odh" = ( /obj/structure/chair{ dir = 8 @@ -40425,10 +40539,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/security/office) -"oqr" = ( -/obj/machinery/module_duplicator, -/turf/open/floor/iron, -/area/science/misc_lab) "oqA" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -41153,6 +41263,15 @@ }, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) +"oLK" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/machinery/light_switch/directional/north, +/obj/structure/closet/radiation, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "oLZ" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; @@ -41189,12 +41308,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/commons/storage/tools) -"oMN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/science/nanite) "oMZ" = ( /obj/item/radio/intercom/directional/south, /obj/effect/landmark/event_spawn, @@ -41558,13 +41671,6 @@ /obj/structure/cable, /turf/open/floor/iron/freezer, /area/commons/toilet/locker) -"oYU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "oZj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -41778,6 +41884,14 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/command/teleporter) +"peS" = ( +/obj/effect/turf_decal/bot, +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/science/research) "pfQ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/button/crematorium{ @@ -42121,18 +42235,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/security/office) +"pnZ" = ( +/obj/machinery/power/apc/auto_name/west, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/science/research) +"poa" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/science/research) "ppl" = ( /obj/effect/landmark/xeno_spawn, /obj/structure/cable, /turf/open/floor/plating, /area/engineering/storage/tech) -"ppD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "ppE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42562,13 +42682,6 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/command/heads_quarters/hos) -"pAq" = ( -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "pAx" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -42734,11 +42847,6 @@ }, /turf/open/floor/iron/white, /area/medical/virology) -"pDu" = ( -/obj/machinery/computer/nanite_cloud_controller, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "pEc" = ( /obj/structure/extinguisher_cabinet/directional/east, /obj/effect/turf_decal/tile/blue{ @@ -42829,6 +42937,10 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/cargo/office) +"pFJ" = ( +/obj/structure/flora/grass/brown, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "pFO" = ( /obj/machinery/camera{ c_tag = "Holodeck - Fore"; @@ -43078,15 +43190,6 @@ }, /turf/open/floor/plating/icemoon, /area/security/execution/transfer) -"pMx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/north, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "pMA" = ( /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, @@ -43174,6 +43277,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/service/library) +"pOq" = ( +/obj/machinery/camera{ + c_tag = "Circuits Lab"; + dir = 4; + network = list("ss13","rd") + }, +/obj/effect/turf_decal/bot, +/obj/structure/frame/machine{ + anchored = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "pOt" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -43236,10 +43351,6 @@ dir = 4 }, /area/service/chapel/main) -"pPU" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ai_monitored/turret_protected/aisat/atmos) "pQf" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -43813,15 +43924,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) -"qea" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/science/nanite) "qek" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/blue, @@ -43870,15 +43972,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/command/heads_quarters/captain) -"qeQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/science/nanite) "qfA" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -44282,24 +44375,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/cafeteria, /area/service/kitchen) -"qtz" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "qtI" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plating, @@ -44614,12 +44689,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay) -"qGG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/nanite) "qGO" = ( /obj/structure/window/reinforced{ dir = 8 @@ -45388,6 +45457,15 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"rcN" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/bot, +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/science/research) "ren" = ( /obj/machinery/light_switch/directional/west, /obj/machinery/autolathe, @@ -46013,13 +46091,6 @@ /obj/item/assembly/flash/handheld, /turf/open/floor/iron, /area/security/office) -"rxM" = ( -/obj/machinery/ai_slipper{ - uses = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ai_monitored/turret_protected/aisat/atmos) "rxV" = ( /obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ @@ -46586,14 +46657,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/white, /area/medical/medbay/lobby) -"rIN" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/bot, -/obj/machinery/computer/nanite_chamber_control{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "rIW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -46790,6 +46853,15 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/wood, /area/commons/vacant_room/office) +"rOb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "rOc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47053,6 +47125,10 @@ dir = 9 }, /area/science/research) +"rXF" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/iron/dark, +/area/science/research) "rXH" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/tile/red, @@ -47467,10 +47543,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/circuit, /area/ai_monitored/command/nuke_storage) -"sjr" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/iron/dark, -/area/science/nanite) "sjv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 5 @@ -47876,13 +47948,6 @@ }, /turf/open/floor/plating, /area/security/office) -"suU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/science/nanite) "suY" = ( /obj/machinery/vending/cigarette, /turf/open/floor/wood, @@ -48153,12 +48218,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine/vacuum, /area/science/mixing/chamber) -"sDW" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/nanite_chamber, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "sEt" = ( /obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ @@ -48767,6 +48826,12 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) +"sVf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "sVk" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, @@ -49138,16 +49203,6 @@ }, /turf/open/floor/iron, /area/science/xenobiology) -"tgl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron, -/area/science/nanite) "tgF" = ( /obj/structure/table, /obj/item/wrench, @@ -50442,17 +50497,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/security/warden) -"tTk" = ( -/obj/structure/table, -/obj/item/nanite_remote, -/obj/machinery/requests_console/directional/east{ - department = "Nanite Lab"; - departmentType = 2; - name = "Nanite Lab Requests Console"; - receive_ore_updates = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "tTm" = ( /obj/structure/chair{ dir = 8 @@ -50486,16 +50530,6 @@ }, /turf/open/floor/plating, /area/cargo/storage) -"tTU" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation"; - req_access_txt = "63" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/security/interrogation) "tUg" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/blue{ @@ -51028,6 +51062,16 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/command/heads_quarters/captain) +"uhT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/atmospherics, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "uhY" = ( /obj/machinery/conveyor{ dir = 4; @@ -51075,6 +51119,14 @@ }, /turf/open/floor/carpet, /area/command/heads_quarters/captain) +"uji" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/south, +/obj/structure/frame/machine{ + anchored = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "ujx" = ( /obj/structure/cable, /obj/structure/sign/poster/random{ @@ -51796,12 +51848,6 @@ }, /turf/open/floor/iron/cafeteria, /area/command/heads_quarters/rd) -"uzl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/science/nanite) "uzt" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/mug/coco{ @@ -51893,6 +51939,15 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engineering/main) +"uBX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "uBY" = ( /obj/machinery/power/apc/auto_name/north, /obj/structure/cable, @@ -51959,16 +52014,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/carpet, /area/service/library) -"uDL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "uDP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52688,6 +52733,17 @@ dir = 8 }, /area/science/research) +"vdD" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/science/misc_lab) "vdE" = ( /obj/structure/chair/office{ dir = 1 @@ -52742,12 +52798,6 @@ }, /turf/open/floor/iron, /area/command/bridge) -"vfj" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "vfk" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -52998,17 +53048,6 @@ }, /turf/open/floor/plating, /area/maintenance/aft) -"vqd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white/side{ - dir = 9 - }, -/area/science/misc_lab) "vqt" = ( /obj/structure/window/reinforced, /obj/structure/table/wood, @@ -53456,23 +53495,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron, /area/hallway/primary/fore) -"vBX" = ( -/obj/structure/sign/warning/deathsposal{ - pixel_y = 32 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/disposal/bin, -/obj/structure/cable, -/obj/structure/disposalpipe/trunk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "vCa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -53738,6 +53760,16 @@ }, /turf/open/floor/iron/dark, /area/command/gateway) +"vIe" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "vIi" = ( /obj/structure/extinguisher_cabinet/directional/east, /obj/effect/turf_decal/tile/red{ @@ -53760,6 +53792,10 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/service/hydroponics) +"vKo" = ( +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "vKs" = ( /obj/machinery/modular_computer/console/preset/civilian{ dir = 4 @@ -54711,14 +54747,6 @@ /obj/item/assembly/timer, /turf/open/floor/iron, /area/security/office) -"wkN" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd2"; - name = "research lab shutters" - }, -/turf/open/floor/plating, -/area/science/nanite) "wld" = ( /turf/open/floor/iron, /area/commons/fitness) @@ -54795,23 +54823,6 @@ }, /turf/open/floor/iron, /area/commons/fitness) -"wmG" = ( -/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 - }, -/obj/machinery/atmospherics/components/binary/pump/on/general/visible/layer4{ - dir = 4; - name = "Air In" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "wmO" = ( /obj/structure/janitorialcart, /turf/open/floor/iron, @@ -54910,11 +54921,6 @@ /obj/item/trash/cheesie, /turf/open/floor/plating, /area/maintenance/port) -"wpH" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/science/nanite) "wpS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/securearea{ @@ -54948,11 +54954,6 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, /area/commons/storage/emergency/port) -"wqH" = ( -/obj/machinery/nanite_chamber, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "wqZ" = ( /obj/machinery/field/generator, /turf/open/floor/plating, @@ -55551,17 +55552,19 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"wMs" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +"wLA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 10 }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "wME" = ( /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment, @@ -55576,6 +55579,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/science/mixing) +"wMX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/stack/sheet/mineral/snow{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "wNj" = ( /obj/structure/sign/warning/securearea{ pixel_x = -32 @@ -56126,12 +56139,6 @@ icon_state = "panelscorched" }, /area/maintenance/starboard/aft) -"xcf" = ( -/obj/structure/rack, -/obj/item/wrench, -/obj/item/crowbar/red, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat/atmos) "xct" = ( /obj/machinery/holopad, /turf/open/floor/iron, @@ -56215,6 +56222,14 @@ }, /turf/open/floor/iron/white, /area/science/genetics) +"xeS" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/bot, +/obj/structure/frame/machine{ + anchored = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "xfb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56367,6 +56382,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/starboard/aft) +"xje" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/flora/grass/both{ + pixel_x = -4; + pixel_y = -4 + }, +/turf/open/floor/plating/asteroid/snow/standard_air, +/area/science/research) "xju" = ( /obj/structure/chair/office{ dir = 1 @@ -56894,13 +56919,6 @@ /obj/machinery/holopad/secure, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai) -"xwc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/nosmoking{ - pixel_x = -28 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "xwi" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -57200,11 +57218,6 @@ }, /turf/open/floor/iron, /area/commons/storage/primary) -"xEM" = ( -/obj/structure/table, -/obj/item/nanite_scanner, -/turf/open/floor/iron/dark, -/area/science/nanite) "xFn" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -57235,6 +57248,15 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"xGt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/science/misc_lab) "xGS" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/directional/west, @@ -58243,16 +58265,6 @@ /obj/machinery/power/apc/auto_name/east, /turf/open/floor/iron/white, /area/medical/medbay/lobby) -"yiW" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "yjo" = ( /obj/machinery/camera{ c_tag = "Chapel South"; @@ -84422,7 +84434,7 @@ hOb msq jAh dUA -tTU +lLD ajA akp agj @@ -92913,7 +92925,7 @@ anc anc bkV fXZ -vfj +anD vqW baY lXa @@ -93169,9 +93181,9 @@ ahn tFJ anF ahn -eOa -kja -eOa +ahT +apx +ahT baY iAf wld @@ -93426,9 +93438,9 @@ ahn ahn anE ahn -lQq -pAq -wmG +hze +apw +aqp baY eNF wld @@ -93683,9 +93695,9 @@ boP ahn anG ahn -lZb -kvA -wMs +aoL +apy +aqq baY yiO wld @@ -94537,7 +94549,7 @@ nQw puJ pss nxB -niE +epW pjX pjX pjX @@ -95562,11 +95574,11 @@ thh thh tQo bxo -pMx -xwc -oaD -ppD -faQ +kwD +bzr +ocR +bCf +bEy bxo boP boP @@ -95590,10 +95602,10 @@ boP boP pjX ctZ -xcf -eta +cuh +cuq bmL -pPU +cuL cuY cvj mYE @@ -95818,8 +95830,8 @@ gAK gAK gAK tQo -llI -aOB +oLK +byO cjr ods suK @@ -95848,9 +95860,9 @@ boP boP ctZ cui -eta +cuq bmL -rxM +cuO bmL cvP kiC @@ -96076,7 +96088,7 @@ xxZ eaP tQo mXd -oYU +byw cjr bAQ bDX @@ -96332,8 +96344,8 @@ gAK hLx kXW tQo -mYX -oYU +uhT +byw bzB bBg bEu @@ -96590,8 +96602,8 @@ xJc hiM kev bxE -uDL -baz +bfs +bzQ bEL bEL bEL @@ -96846,9 +96858,9 @@ pHc cGN cdO tQo -vBX -gwm -nKl +akE +wLA +nIs bBl bEv bEV @@ -97104,7 +97116,7 @@ gAK gAK tQo cga -qtz +chm mMs bBo qxz @@ -104038,7 +104050,7 @@ pby tJy uWL hFE -bwt +gaD bQZ bTC uTB @@ -104295,7 +104307,7 @@ dov dov wgT dov -jKN +chC bQZ mIV iLm @@ -104551,8 +104563,8 @@ eOr fZt caW nPK -vqd -kxK +vdD +xGt gWT qJG jsw @@ -105036,13 +105048,13 @@ boB qaX jrH sve -dYq -dYq -dYq -wkN -wkN -wkN -dYq +bhA +bhA +bhA +jiO +jiO +jiO +bhA bhA xtW ovK @@ -105064,7 +105076,7 @@ bPN uOi cba gZY -oqr +esv bQZ nlW xIk @@ -105293,13 +105305,13 @@ iEK bpZ uIv bta -mGC -nhP -sDW -eja -hAK -ibG -lQm +pnZ +ini +xeS +peS +hrr +eXz +pOq bEC bEC bGc @@ -105550,13 +105562,13 @@ bng boQ brx bro -aQx -suU -qeQ -tgl -qGG -oMN -wpH +uBX +kfx +dky +dky +gHf +aRs +poa bEC umY uej @@ -105807,13 +105819,13 @@ boA bpZ bqf bBD -gLd -qea -hZk -hZk -hZk -icS -nee +sVf +eGA +pFJ +bia +bia +kPz +mFt pLE nCs gLx @@ -106064,13 +106076,13 @@ bnk bpo bqk bBD -gLd -gwd -hZk -hZk -hZk -icS -dFk +sVf +eAd +iwz +gTG +vKo +kPz +uji pLE ont eeA @@ -106321,13 +106333,13 @@ biW bpZ bth brn -aQy -lLp -mBm -gnX -epI -uzl -cbe +rOb +xje +fcy +fcy +fcy +wMX +fbx pLE kdp dFZ @@ -106578,13 +106590,13 @@ bnl bpq vdl kXt -yiW -sjr -wqH -rIN -xEM -tTk -pDu +vIe +rXF +eXz +rcN +kYW +frS +eXz pLE tZf mqf @@ -106840,8 +106852,8 @@ bpE bpE bpE bpE -dYq -dYq +boB +boB pLE qSi sql diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 73939e16189..c80ee5f72eb 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -5023,6 +5023,15 @@ icon_state = "platingdmg1" }, /area/maintenance/starboard/fore) +"aow" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/machinery/bounty_board/directional/north, +/turf/open/floor/iron/dark, +/area/science/research) "aox" = ( /turf/closed/wall, /area/maintenance/central) @@ -5780,6 +5789,11 @@ /obj/machinery/power/apc/auto_name/north, /turf/open/floor/carpet, /area/medical/psychology) +"aqQ" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating/airless, +/area/space/nearstation) "aqR" = ( /obj/machinery/door/airlock/maintenance{ name = "morgue maintenance"; @@ -11572,6 +11586,9 @@ /obj/structure/cable, /turf/open/floor/iron, /area/hallway/primary/fore) +"aNt" = ( +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "aNu" = ( /turf/closed/wall, /area/medical/morgue) @@ -15445,15 +15462,6 @@ /obj/structure/tank_dispenser, /turf/open/floor/iron/dark, /area/science/mixing) -"aXE" = ( -/obj/machinery/nanite_chamber, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) "aXH" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -15603,23 +15611,6 @@ "aXW" = ( /turf/closed/wall/rust, /area/maintenance/starboard/fore) -"aXX" = ( -/obj/structure/chair/office/light{ - dir = 1; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) "aXY" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -15866,21 +15857,6 @@ icon_state = "panelscorched" }, /area/maintenance/central) -"aYN" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/research) "aYO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/highsecurity{ @@ -15904,58 +15880,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/science/research) -"aYR" = ( -/obj/machinery/computer/nanite_cloud_controller, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) -"aYS" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) -"aYT" = ( -/obj/machinery/nanite_programmer, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) -"aYU" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/research) "aYY" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -16167,21 +16091,6 @@ dir = 1 }, /area/hallway/primary/fore) -"aZt" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/science/research) "aZu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -16482,23 +16391,6 @@ /obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/medical/medbay/central) -"aZX" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/computer/nanite_chamber_control{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) "aZZ" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -16989,17 +16881,6 @@ "bbi" = ( /turf/closed/wall/r_wall, /area/science/mixing/chamber) -"bbj" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/item/storage/box/disks_nanite{ - pixel_y = 4 - }, -/obj/item/hand_labeler, -/turf/open/floor/iron/dark, -/area/science/research) "bbk" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -17162,17 +17043,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/hallway/primary/starboard) -"bbJ" = ( -/obj/machinery/computer/nanite_cloud_controller, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) "bbK" = ( /obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /obj/effect/mapping_helpers/airlock/locked, @@ -17181,17 +17051,6 @@ }, /turf/open/floor/engine, /area/science/mixing/chamber) -"bbL" = ( -/obj/machinery/nanite_chamber, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/research) "bbN" = ( /turf/closed/wall, /area/science/mixing) @@ -18182,23 +18041,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/science/research) -"beE" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark, -/area/science/research) "beI" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/effect/turf_decal/bot, @@ -31610,6 +31452,37 @@ }, /turf/open/floor/plating, /area/security/prison) +"cfs" = ( +/obj/structure/cable, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/stack/sheet/glass/fifty, +/obj/structure/closet/crate/engineering/electrical, +/obj/structure/sign/warning/xeno_mining{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/aft) "cft" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -37018,24 +36891,6 @@ icon_state = "platingdmg3" }, /area/maintenance/port/aft) -"cxk" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/solars/port/aft) "cxl" = ( /obj/structure/sign/warning/nosmoking{ pixel_x = 30 @@ -37803,6 +37658,14 @@ /obj/machinery/power/apc/auto_name/west, /turf/open/floor/iron/dark, /area/security/processing) +"czz" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "czA" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -41006,24 +40869,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/engineering/supermatter/room) -"cYO" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/landmark/start/research_director, -/turf/open/floor/iron/showroomfloor, -/area/command/heads_quarters/rd) "cYR" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -41496,6 +41341,22 @@ /obj/structure/cable, /turf/open/floor/plating, /area/command/heads_quarters/hos) +"dkL" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/camera{ + c_tag = "Toxins Launch Site"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/module_duplicator, +/turf/open/floor/iron/dark, +/area/science/test_area) "dkX" = ( /obj/structure/sign/poster/contraband/random, /turf/closed/wall/rust, @@ -42005,18 +41866,6 @@ /obj/effect/landmark/start/bartender, /turf/open/floor/wood, /area/service/bar) -"dyq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/rebels_unite{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/turf/open/floor/plating/plasma/rust, -/area/maintenance/space_hut/plasmaman) "dyu" = ( /obj/structure/flora/grass/jungle{ icon_state = "bushb1" @@ -42897,6 +42746,24 @@ dir = 1 }, /area/service/chapel/main) +"dWe" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/solars/port/aft) "dWo" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -43363,14 +43230,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/security/prison) -"ehM" = ( -/mob/living/simple_animal/hostile/carp{ - environment_smash = 0; - name = "Tuna"; - real_name = "Tuna" - }, -/turf/open/floor/plating/asteroid/airless, -/area/space/nearstation) "eih" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -43819,6 +43678,23 @@ }, /turf/open/floor/engine, /area/engineering/supermatter) +"erH" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/research_director, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "erO" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -44839,6 +44715,24 @@ /obj/effect/landmark/start/cook, /turf/open/floor/iron/showroomfloor, /area/service/kitchen) +"eML" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Hallway"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/science/research) "eNm" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -46447,6 +46341,23 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/disposal/incinerator) +"fxL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 8 + }, +/obj/item/toy/plush/plasmamanplushie{ + name = "Dianion XV" + }, +/turf/open/floor/plating/plasma/rust, +/area/maintenance/space_hut/plasmaman) "fyi" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -47506,19 +47417,6 @@ /obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/engineering/break_room) -"fRy" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/computer/rdconsole{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/command/heads_quarters/rd) "fSn" = ( /turf/closed/wall/r_wall/rust, /area/medical/psychology) @@ -48952,6 +48850,27 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/service/library) +"gCO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/turf/open/floor/plating/plasma/rust, +/area/maintenance/space_hut/plasmaman) +"gCQ" = ( +/obj/machinery/computer/robotics{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/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/iron/dark, +/area/command/heads_quarters/rd) "gDl" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -49299,6 +49218,11 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/dark, /area/service/chapel/main) +"gOl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/plating/plasma/rust, +/area/maintenance/space_hut/plasmaman) "gOw" = ( /obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, @@ -49993,22 +49917,6 @@ luminosity = 2 }, /area/engineering/storage/tech) -"hdL" = ( -/obj/structure/chair/office/light, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/landmark/start/research_director, -/turf/open/floor/iron/showroomfloor, -/area/command/heads_quarters/rd) "hdT" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -50071,11 +49979,6 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron/dark, /area/engineering/supermatter/room) -"heK" = ( -/obj/effect/turf_decal/sand/plating, -/obj/item/stack/sheet/glass, -/turf/open/floor/plating/airless, -/area/space/nearstation) "hfo" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral{ @@ -50286,6 +50189,16 @@ /obj/structure/sign/departments/custodian, /turf/closed/wall/rust, /area/service/janitor) +"hiG" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/obj/structure/chair/office/light, +/obj/effect/landmark/start/research_director, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "hjs" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -50502,27 +50415,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, /area/engineering/supermatter/room) -"hop" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/item/clipboard, -/obj/item/nanite_remote{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/item/nanite_scanner{ - pixel_x = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron/dark, -/area/science/research) "hoE" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -50653,6 +50545,11 @@ }, /turf/open/floor/iron/dark, /area/science/xenobiology) +"hsn" = ( +/obj/effect/turf_decal/box, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/solars/starboard/aft) "hsu" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/closed/wall/rust, @@ -50765,6 +50662,22 @@ /obj/machinery/bounty_board/directional/north, /turf/open/floor/iron/dark, /area/medical/storage) +"hwx" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/mug/coco, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "hwB" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining/glass{ @@ -52939,6 +52852,12 @@ }, /turf/open/floor/iron/dark, /area/security/office) +"ivb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "ivj" = ( /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, @@ -52983,21 +52902,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/cargo/warehouse) -"iwO" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 9 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/research/explosive_compressor, -/turf/open/floor/iron/showroomfloor, -/area/science/test_area) "iwW" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -54415,6 +54319,19 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/engineering/atmos) +"iYZ" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/item/kirbyplants/potty, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "iZc" = ( /obj/structure/chair/sofa{ color = "#c45c57" @@ -54465,6 +54382,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/starboard) +"jaC" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/computer/rdconsole{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/command/heads_quarters/rd) "jaD" = ( /obj/effect/turf_decal/delivery, /obj/machinery/space_heater, @@ -56164,37 +56095,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark, /area/engineering/supermatter/room) -"jPh" = ( -/obj/structure/cable, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/stack/sheet/glass/fifty, -/obj/structure/closet/crate/engineering/electrical, -/obj/structure/sign/warning/xeno_mining{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/maintenance/solars/starboard/aft) "jPk" = ( /obj/structure/table/glass, /obj/item/storage/box/rxglasses{ @@ -58111,27 +58011,6 @@ }, /turf/open/floor/engine, /area/engineering/supermatter/room) -"kzj" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/computer/nanite_chamber_control, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Nanite Lab"; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron/dark, -/area/science/research) "kzk" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/decal/cleanable/dirt, @@ -60780,6 +60659,23 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/command/heads_quarters/hop) +"lGH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 4 + }, +/obj/item/toy/plush/plasmamanplushie{ + name = "Lithium II" + }, +/turf/open/floor/plating/plasma/rust, +/area/maintenance/space_hut/plasmaman) "lGO" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -64258,6 +64154,16 @@ icon_state = "panelscorched" }, /area/maintenance/disposal/incinerator) +"njW" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "nlh" = ( /obj/structure/frame/machine, /obj/effect/turf_decal/stripes/line{ @@ -65411,20 +65317,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/iron/dark, /area/cargo/warehouse) -"nOe" = ( -/obj/machinery/computer/aifixer{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/command/heads_quarters/rd) "nOQ" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -65572,6 +65464,18 @@ }, /turf/open/floor/engine, /area/engineering/storage/tech) +"nRi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 1 + }, +/turf/open/floor/plating/plasma/rust, +/area/maintenance/space_hut/plasmaman) "nRr" = ( /obj/machinery/power/solar{ id = "aftstarboard"; @@ -68729,6 +68633,26 @@ icon_state = "platingdmg1" }, /area/maintenance/disposal/incinerator) +"pid" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/computer/shuttle/mining/common, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/commons/fitness/recreation) "pie" = ( /obj/machinery/power/port_gen/pacman, /obj/structure/sign/warning/electricshock{ @@ -69113,11 +69037,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) -"pqf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/purple/filled/line, -/turf/open/floor/plating/plasma/rust, -/area/maintenance/space_hut/plasmaman) "pqg" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -70923,6 +70842,11 @@ }, /turf/open/floor/iron/dark, /area/cargo/miningoffice) +"pZk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/electrolyzer, +/turf/open/floor/iron/dark, +/area/maintenance/disposal/incinerator) "pZn" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -72090,23 +72014,6 @@ /obj/machinery/vending/drugs, /turf/open/floor/iron/showroomfloor, /area/medical/surgery) -"qBh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/rebels_unite{ - pixel_x = 32; - pixel_y = 32 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/item/toy/plush/plasmamanplushie{ - name = "Lithium II" - }, -/turf/open/floor/plating/plasma/rust, -/area/maintenance/space_hut/plasmaman) "qCn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -72880,6 +72787,18 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) +"qRl" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark, +/area/science/research) "qRs" = ( /obj/effect/turf_decal/bot, /obj/machinery/conveyor{ @@ -73487,6 +73406,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/disposal/incinerator) +"rhC" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/sheet/glass, +/turf/open/space/basic, +/area/solars/port/aft) "rhG" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral{ @@ -74194,11 +74118,6 @@ }, /turf/open/floor/iron/dark/corner, /area/hallway/primary/port) -"rtX" = ( -/obj/effect/turf_decal/box, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/solars/starboard/aft) "rtZ" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -74244,6 +74163,20 @@ dir = 4 }, /area/service/chapel/main) +"rvF" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/holopad, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/science/research) "rwo" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -75021,6 +74954,26 @@ "rPt" = ( /turf/closed/wall/r_wall/rust, /area/command/heads_quarters/captain) +"rPu" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/showroomfloor, +/area/command/heads_quarters/rd) "rQj" = ( /obj/effect/turf_decal/arrows/white{ dir = 4 @@ -76020,27 +75973,6 @@ icon_state = "platingdmg3" }, /area/maintenance/port/aft) -"smq" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 10 - }, -/obj/effect/landmark/start/research_director, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/showroomfloor, -/area/command/heads_quarters/rd) "sns" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -78220,11 +78152,6 @@ /obj/structure/noticeboard/directional/north, /turf/open/floor/iron/dark, /area/security/office) -"toP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/electrolyzer, -/turf/open/floor/iron/dark, -/area/maintenance/disposal/incinerator) "toV" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/secure_closet/hydroponics, @@ -79461,10 +79388,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/commons/fitness/recreation) -"tMV" = ( -/obj/item/circuitboard/computer/solar_control, -/turf/open/floor/plating/asteroid/airless, -/area/space/nearstation) "tNa" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/delivery, @@ -79478,6 +79401,21 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) +"tNe" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 9 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/research/explosive_compressor, +/turf/open/floor/iron/showroomfloor, +/area/science/test_area) "tNt" = ( /turf/open/floor/plating, /area/maintenance/disposal/incinerator) @@ -79631,19 +79569,6 @@ }, /turf/open/floor/iron, /area/engineering/break_room) -"tOW" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/showroomfloor, -/area/command/heads_quarters/rd) "tPt" = ( /obj/structure/bookcase/random/fiction, /turf/open/floor/wood, @@ -79976,20 +79901,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/open/floor/grass, /area/service/chapel/main) -"tWx" = ( -/obj/machinery/computer/robotics{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/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/iron/dark, -/area/command/heads_quarters/rd) "tXc" = ( /obj/machinery/holopad, /turf/open/floor/iron, @@ -81384,15 +81295,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/cargo/warehouse) -"uBq" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/command/heads_quarters/rd) "uBS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -82477,6 +82379,21 @@ icon_state = "platingdmg3" }, /area/maintenance/starboard/aft) +"vbD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/structure/table, +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_x = 32; + pixel_y = -32 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner, +/obj/item/flashlight/lamp, +/turf/open/floor/plating/plasma/rust, +/area/maintenance/space_hut/plasmaman) "vbO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -82592,11 +82509,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/security/warden) -"vcT" = ( -/obj/structure/lattice/catwalk, -/obj/item/stack/sheet/glass, -/turf/open/space/basic, -/area/solars/port/aft) "vdd" = ( /obj/effect/landmark/event_spawn, /obj/effect/landmark/start/hangover, @@ -83312,22 +83224,6 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) -"vse" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/item/folder, -/obj/item/nanite_scanner{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/nanite_remote, -/obj/machinery/light/directional/east, -/obj/machinery/bounty_board/directional/north, -/turf/open/floor/iron/dark, -/area/science/research) "vsF" = ( /obj/machinery/light/directional/north, /obj/effect/spawner/structure/window/hollow/reinforced/middle{ @@ -83523,22 +83419,6 @@ }, /turf/open/floor/iron/dark, /area/security/office) -"vxi" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/camera{ - c_tag = "Toxins Launch Site"; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/module_duplicator, -/turf/open/floor/iron/dark, -/area/science/test_area) "vxD" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -83671,13 +83551,6 @@ dir = 1 }, /area/maintenance/aft) -"vzj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/plating/plasma/rust, -/area/maintenance/space_hut/plasmaman) "vzr" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -85152,21 +85025,6 @@ }, /turf/open/floor/iron/dark, /area/commons/storage/primary) -"wiR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/tank/internals/plasmaman/belt/full, -/obj/structure/table, -/obj/structure/sign/poster/contraband/rebels_unite{ - pixel_x = 32; - pixel_y = -32 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/item/flashlight/lamp, -/turf/open/floor/plating/plasma/rust, -/area/maintenance/space_hut/plasmaman) "wje" = ( /obj/structure/table/glass, /obj/machinery/computer/med_data/laptop, @@ -85509,6 +85367,12 @@ icon_state = "platingdmg1" }, /area/security/office) +"woi" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/science/research) "woB" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "ceprivate"; @@ -85530,6 +85394,14 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/showroomfloor, /area/medical/medbay/central) +"woH" = ( +/mob/living/simple_animal/hostile/carp{ + environment_smash = 0; + name = "Tuna"; + real_name = "Tuna" + }, +/turf/open/floor/plating/asteroid/airless, +/area/space/nearstation) "woL" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -87098,26 +86970,6 @@ }, /turf/open/floor/iron, /area/maintenance/disposal/incinerator) -"wYW" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/computer/shuttle/mining/common, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/commons/fitness/recreation) "wZx" = ( /obj/machinery/light/small/directional/south, /obj/effect/turf_decal/sand/plating, @@ -87451,6 +87303,10 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/science/test_area) +"xfU" = ( +/obj/item/circuitboard/computer/solar_control, +/turf/open/floor/plating/asteroid/airless, +/area/space/nearstation) "xgo" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -87804,6 +87660,20 @@ }, /turf/open/floor/iron/dark, /area/engineering/atmos) +"xoq" = ( +/obj/machinery/computer/aifixer{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/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/iron/dark, +/area/command/heads_quarters/rd) "xoK" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/delivery, @@ -89359,23 +89229,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/command/heads_quarters/ce) -"xUP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/rebels_unite{ - pixel_x = -32; - pixel_y = -32 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/item/toy/plush/plasmamanplushie{ - name = "Dianion XV" - }, -/turf/open/floor/plating/plasma/rust, -/area/maintenance/space_hut/plasmaman) "xUW" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -89512,6 +89365,18 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/service/bar) +"xYR" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/science/research) "xZt" = ( /obj/structure/chair/stool/directional/north, /obj/structure/cable, @@ -102346,7 +102211,7 @@ tnI oUy aau aeU -heK +aqQ jOe jOe jOe @@ -102862,7 +102727,7 @@ asO cmU cmU foo -vcT +rhC foo foo foo @@ -104337,7 +104202,7 @@ aeu aeU aeU coy -ehM +woH aDS nBm bFI @@ -104662,7 +104527,7 @@ acK cmU aeU aUz -tMV +xfU aeU cnS cuU @@ -105437,7 +105302,7 @@ vIb cnO kuW cuZ -cxk +dWe cnN aeu aeU @@ -107714,7 +107579,7 @@ wrV wrV wrV ich -wYW +pid ney vqR qlh @@ -115736,7 +115601,7 @@ vAc dCE pwM rFl -toP +pZk ute qeZ wvg @@ -127992,12 +127857,12 @@ ifJ rYN aWW aZv -vse -aXE +aow +aXI +aXI aXI -aYR beD -bbj +woi aOi bep aZi @@ -128250,10 +128115,10 @@ iOj vlS rJG rJG -kzj -aXX -aYS -aZt +eML +xYR +xYR +rvF bbl aOi cmg @@ -128508,10 +128373,10 @@ ltR mjr vlS vlS -aYN -aYT -aYS -bbJ +vlS +vlS +njW +bbl aOo bgj aYe @@ -128763,11 +128628,11 @@ aww wtC uNr lov -nOe +iYZ +hwx +xoq vlS -vlS -aYU -beE +njW bbl aOi aRp @@ -129020,12 +128885,12 @@ aWU iOj hea hRI -cYO -tWx +aNt +hiG +gCQ vlS -vlS -aZX -bbL +njW +bbl aOi bep baU @@ -129277,12 +129142,12 @@ baJ iOj pvu xsN -uBq -hdL +ivb +czz eSG vlS rJG -hop +qRl aOr aRB aSJ @@ -129533,8 +129398,8 @@ fsn bcH iOj tGO -smq -tOW +rPu +erH dPy fPK qOj @@ -129792,7 +129657,7 @@ iOj iOj pgF swx -fRy +jaC oAb tJP vlS @@ -129867,7 +129732,7 @@ erS deb aeu ckU -jPh +cfs cGv cGV clb @@ -131920,10 +131785,10 @@ aeu aUz cmU nRr -rtX -rtX -rtX -rtX +hsn +hsn +hsn +hsn kuv nRr nRr @@ -132435,15 +132300,15 @@ aeU cmU nRr nRr -rtX -rtX -rtX +hsn +hsn +hsn kuv nRr nRr nRr -rtX -rtX +hsn +hsn acm aeo acm @@ -132629,7 +132494,7 @@ bbi caT xpL pbn -iwO +tNe xEu xEu gVX @@ -132884,7 +132749,7 @@ cbk aOU kRX qoN -vxi +dkL sln cHQ sLE @@ -132948,7 +132813,7 @@ aeU cmU nRr nRr -rtX +hsn nRr nRr xOh @@ -133464,12 +133329,12 @@ nRr nRr nRr nRr -rtX +hsn xOh kuv xOh -rtX -rtX +hsn +hsn nRr nRr nRr @@ -133981,9 +133846,9 @@ nRr nRr nRr kuv -rtX -rtX -rtX +hsn +hsn +hsn nRr nRr acm @@ -139831,8 +139696,8 @@ aaa aeo aaa pFC -dyq -xUP +nRi +fxL pFC viq aaa @@ -140088,8 +139953,8 @@ aaa aaQ aaa pFC -pqf -vzj +gOl +gCO pFC viq aaa @@ -140345,8 +140210,8 @@ aaa aeo aaa pFC -qBh -wiR +lGH +vbD pFC viq aaa diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 85f3805a5fb..164edfdd93a 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1405,6 +1405,37 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/cargo/sorting) +"ajN" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Entrance"; + req_access_txt = "47" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/research) "ajO" = ( /obj/structure/closet, /obj/item/clothing/gloves/color/fyellow, @@ -4745,16 +4776,6 @@ icon_state = "platingdmg1" }, /area/maintenance/port/fore) -"aLn" = ( -/obj/structure/table, -/obj/machinery/microwave, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/science/nanite) "aLs" = ( /obj/structure/sign/plaques/kiddie{ pixel_y = 32 @@ -6017,21 +6038,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/entry) -"aXh" = ( -/obj/machinery/door/window/northleft{ - name = "Nanite Lab" - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/science/nanite) "aXm" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/disposalpipe/segment{ @@ -7069,6 +7075,21 @@ }, /turf/open/floor/iron, /area/security/brig) +"bih" = ( +/obj/structure/chair/comfy{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/landmark/start/scientist, +/turf/open/floor/iron, +/area/science/research) "bio" = ( /obj/machinery/camera{ c_tag = "AI Chamber - Aft"; @@ -7279,20 +7300,6 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) -"bkv" = ( -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/nanite) "bkB" = ( /obj/item/extinguisher, /turf/open/floor/plating, @@ -7531,14 +7538,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/starboard) -"bmT" = ( -/obj/machinery/nanite_program_hub, -/obj/machinery/requests_console/directional/north{ - department = "Nanite Lab"; - name = "Nanite Lab Requests Console" - }, -/turf/open/floor/circuit/green, -/area/science/nanite) "bmX" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7820,6 +7819,21 @@ }, /turf/open/floor/iron, /area/security/checkpoint/customs) +"bpx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/research) "bpF" = ( /obj/structure/toilet{ pixel_y = 8 @@ -8409,17 +8423,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/medical/storage) -"bwo" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/violet/visible{ - dir = 6 - }, -/obj/machinery/atmospherics/components/binary/thermomachine/heater{ - dir = 8 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "bwN" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, @@ -8853,6 +8856,17 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /turf/open/floor/iron/dark, /area/engineering/atmos) +"bDe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/violet/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/components/binary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "bDt" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -10773,6 +10787,14 @@ /obj/machinery/atmospherics/components/unary/cryo_cell, /turf/open/floor/iron/dark/textured, /area/medical/cryo) +"cah" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/circuit/green/off, +/area/science/research) "car" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -12864,9 +12886,6 @@ }, /turf/open/floor/engine, /area/engineering/supermatter/room) -"ctL" = ( -/turf/closed/wall/r_wall, -/area/science/nanite) "ctU" = ( /obj/machinery/door/airlock/security/glass{ name = "Security Post - Cargo"; @@ -12899,6 +12918,23 @@ }, /turf/open/floor/wood, /area/cargo/qm) +"cui" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/research) "cuj" = ( /obj/machinery/camera{ c_tag = "Supermatter Chamber"; @@ -14225,6 +14261,18 @@ }, /turf/open/floor/iron, /area/security/checkpoint/science) +"cHh" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/reagent_containers/food/drinks/britcup{ + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/science/research) "cHu" = ( /obj/structure/cable, /obj/machinery/camera{ @@ -15500,6 +15548,22 @@ }, /turf/open/space/basic, /area/space) +"cTr" = ( +/obj/structure/chair/comfy{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Science Break Room"; + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron, +/area/science/research) "cTz" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -15524,13 +15588,6 @@ /obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"cTN" = ( -/obj/structure/sign/warning/securearea, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/science/nanite) "cTU" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/north, @@ -16543,6 +16600,17 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/maintenance/fore) +"dhj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron, +/area/science/research) "dhn" = ( /obj/structure/table, /obj/item/poster/random_contraband, @@ -16800,6 +16868,26 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron, /area/science/lab) +"dkc" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1; + sortType = 28 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/research) "dki" = ( /obj/machinery/atmospherics/pipe/smart/simple/supply/visible, /turf/closed/wall/r_wall, @@ -18547,16 +18635,6 @@ }, /turf/open/floor/iron/white, /area/medical/pharmacy) -"dMl" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/science/nanite) "dMw" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/status_display/evac/directional/south, @@ -19113,6 +19191,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/service/bar) +"dWO" = ( +/obj/structure/chair/comfy{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/science/research) "dWU" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, @@ -19614,44 +19703,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/science/mixing) -"efA" = ( -/obj/structure/closet/crate/secure/weapon{ - desc = "A secure clothing crate."; - name = "formal uniform crate"; - req_access_txt = "3" - }, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/under/rank/security/warden/formal, -/obj/item/clothing/suit/security/warden, -/obj/item/clothing/under/rank/security/head_of_security/formal, -/obj/item/clothing/suit/security/hos, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navywarden, -/obj/item/clothing/head/hos/beret/navyhos, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/tile/blue, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/security/office) "efD" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -22019,20 +22070,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"eQK" = ( -/obj/structure/table/glass, -/obj/item/storage/box/disks_nanite{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/storage/box/disks_nanite{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/machinery/light_switch/directional/north, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "eRa" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 10 @@ -22456,6 +22493,17 @@ }, /turf/open/floor/iron/dark, /area/command/bridge) +"eWT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/duct, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/medical/cryo) "eWV" = ( /obj/structure/table, /obj/item/paper/fluff/holodeck/disclaimer, @@ -22758,17 +22806,6 @@ /obj/item/shard, /turf/open/space/basic, /area/space/nearstation) -"fde" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron, -/area/science/nanite) "fdq" = ( /obj/structure/chair/stool/directional/north, /obj/structure/disposalpipe/segment{ @@ -25061,15 +25098,6 @@ }, /turf/open/floor/iron/white, /area/science/mixing) -"fQU" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, -/area/science/nanite) "fRh" = ( /obj/item/radio/intercom/directional/west, /obj/structure/table/glass, @@ -25323,6 +25351,18 @@ /obj/item/pen/invisible, /turf/open/floor/engine/cult, /area/service/library) +"fVN" = ( +/obj/structure/cable, +/obj/machinery/light/directional/north, +/obj/machinery/power/apc/auto_name/north, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/mob/living/simple_animal/pet/dog/corgi/puppy/void{ + dir = 4 + }, +/turf/open/floor/grass, +/area/science/research) "fWg" = ( /obj/structure/chair, /obj/machinery/computer/security/telescreen/interrogation{ @@ -25360,6 +25400,20 @@ }, /turf/open/floor/circuit/green, /area/science/robotics/mechbay) +"fXt" = ( +/obj/structure/cable, +/obj/item/food/cracker, +/obj/item/food/cracker{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/item/trash/boritos{ + desc = "Why does it look like boritos? Nobody would feed unhealthy snacks to pets, right?"; + name = "cracker bag"; + pixel_x = -14 + }, +/turf/open/floor/grass, +/area/science/research) "fXC" = ( /obj/structure/window/reinforced{ dir = 8 @@ -25721,11 +25775,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"gdG" = ( -/obj/machinery/computer/nanite_cloud_controller, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/circuit/green, -/area/science/nanite) "gdY" = ( /obj/machinery/photocopier{ pixel_y = 3 @@ -25912,6 +25961,12 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"ghY" = ( +/mob/living/simple_animal/pet/penguin/baby{ + dir = 8 + }, +/turf/open/floor/grass, +/area/science/research) "gib" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment, @@ -26666,6 +26721,14 @@ }, /turf/open/floor/iron/freezer, /area/security/prison) +"gvE" = ( +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/mob/living/simple_animal/pet/dog/corgi/puppy/slime, +/turf/open/floor/grass, +/area/science/research) "gvH" = ( /obj/structure/lattice/catwalk, /obj/item/barcodescanner, @@ -26915,37 +26978,6 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"gAI" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Nanite Laboratory"; - req_access_txt = "47" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/nanite) "gAP" = ( /obj/structure/sign/departments/cargo, /turf/closed/wall, @@ -27444,6 +27476,10 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/commons/locker) +"gHY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/aft) "gId" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -27584,32 +27620,6 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) -"gLm" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/research{ - name = "Xenobiology Space Bridge"; - req_access_txt = "55" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "biohazard containment door" - }, -/turf/open/floor/iron/white, -/area/science/nanite) "gMj" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, @@ -27856,6 +27866,31 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/engineering/main) +"gTG" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Access"; + req_access_txt = "47" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/science/research) "gTQ" = ( /obj/machinery/light/directional/east, /obj/structure/disposalpipe/segment, @@ -28141,6 +28176,13 @@ /obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/iron/white, /area/medical/abandoned) +"gZq" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/grass, +/area/science/research) "gZM" = ( /obj/structure/sign/warning/pods, /turf/closed/wall/r_wall, @@ -30792,17 +30834,6 @@ }, /turf/open/floor/iron, /area/service/hydroponics) -"hXe" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/camera{ - c_tag = "Science Maintenance Corridor"; - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/science/nanite) "hXg" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -30997,14 +31028,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/command/heads_quarters/captain/private) -"iay" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/obj/machinery/module_duplicator, -/turf/open/floor/iron/white, -/area/science/misc_lab) "iaC" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -31761,18 +31784,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/commons/dorms) -"inN" = ( -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/science/nanite) "inS" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/neutral{ @@ -31799,23 +31810,6 @@ /obj/effect/turf_decal/trimline/brown/warning, /turf/open/floor/iron/white, /area/hallway/primary/central) -"iog" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/science/nanite) "iov" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -31938,6 +31932,18 @@ }, /turf/open/floor/engine/plasma, /area/engineering/atmos) +"iqC" = ( +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron, +/area/science/research) "iqL" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow{ @@ -33344,6 +33350,18 @@ }, /turf/open/floor/iron, /area/service/hydroponics/garden) +"iQR" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/science/research) "iQX" = ( /obj/machinery/porta_turret/ai, /obj/machinery/flasher/directional/north{ @@ -33742,6 +33760,16 @@ "iXC" = ( /turf/open/floor/engine/air, /area/engineering/atmos) +"iXU" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron, +/area/science/research) "iYi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35345,6 +35373,10 @@ }, /turf/open/floor/iron, /area/service/hydroponics) +"jBe" = ( +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/iron/white, +/area/science/research) "jBf" = ( /obj/structure/table/glass, /obj/item/paper_bin{ @@ -35729,6 +35761,19 @@ /obj/structure/cable, /turf/open/floor/iron, /area/hallway/secondary/service) +"jJh" = ( +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/science/research) "jJq" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -38618,6 +38663,21 @@ }, /turf/open/floor/iron, /area/hallway/primary/starboard) +"kId" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/science/research) "kIj" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -39486,6 +39546,12 @@ }, /turf/open/floor/iron, /area/cargo/miningoffice) +"kXQ" = ( +/obj/structure/frame/machine{ + anchored = 1 + }, +/turf/open/floor/circuit/green/off, +/area/science/research) "kYe" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -40809,13 +40875,6 @@ }, /turf/open/floor/iron/white, /area/science/storage) -"lta" = ( -/obj/machinery/computer/nanite_chamber_control{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/circuit/green, -/area/science/nanite) "ltg" = ( /obj/machinery/door/airlock/grunge{ name = "Prison Workshop" @@ -43561,6 +43620,10 @@ /obj/effect/spawner/lootdrop/gross_decal_spawner, /turf/open/floor/iron/white, /area/medical/abandoned) +"mpa" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall, +/area/science/research) "mph" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit, @@ -43951,6 +44014,12 @@ /obj/structure/cable, /turf/open/floor/wood, /area/service/lawoffice) +"mvj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/grass, +/area/science/research) "mvv" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/cobweb, @@ -44288,6 +44357,20 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"mAN" = ( +/obj/machinery/door/window/northleft{ + name = "Petting Zoo" + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/science/research) "mBw" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction{ @@ -44414,6 +44497,13 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron, /area/commons/dorms) +"mCH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/grass, +/area/science/research) "mDk" = ( /obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ @@ -45200,13 +45290,6 @@ /obj/machinery/libraryscanner, /turf/open/floor/wood, /area/service/library) -"mQQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/siding/green{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "mQU" = ( /obj/structure/plasticflaps, /obj/structure/window/reinforced{ @@ -46394,6 +46477,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/command/heads_quarters/hos) +"niR" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/holopad, +/turf/open/floor/iron, +/area/science/research) "niS" = ( /obj/machinery/light/directional/east, /obj/structure/disposalpipe/segment, @@ -46489,11 +46590,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/commons/storage/primary) -"nkS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/science/nanite) "nkV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -46711,31 +46807,6 @@ }, /turf/open/floor/iron/dark, /area/service/chapel/main) -"noS" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Nanite and Xenobiology Access"; - req_access_txt = "47" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/science/research) "noT" = ( /obj/structure/table/glass, /obj/item/food/chips{ @@ -46933,20 +47004,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/starboard) -"nsC" = ( -/obj/machinery/door/window/northright{ - name = "Nanite Lab" - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/science/nanite) "nsG" = ( /obj/machinery/hydroponics/soil, /obj/machinery/camera{ @@ -48008,17 +48065,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/service/chapel/office) -"nIx" = ( -/obj/structure/chair/comfy{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/science/nanite) "nID" = ( /obj/machinery/door/airlock/maintenance{ name = "Genetics Maintenance"; @@ -48113,6 +48159,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/primary/port) +"nJl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/science/research) "nJN" = ( /obj/machinery/power/apc/auto_name/east, /obj/structure/cable, @@ -49152,6 +49205,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/port/fore) +"obj" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/camera{ + c_tag = "Science Maintenance Corridor"; + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/science/research) "obv" = ( /obj/structure/sign/poster/contraband/random{ pixel_x = 32 @@ -49553,6 +49617,44 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"ohR" = ( +/obj/structure/closet/crate/secure/weapon{ + desc = "A secure clothing crate."; + name = "formal uniform crate"; + req_access_txt = "3" + }, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/under/rank/security/warden/formal, +/obj/item/clothing/suit/security/warden, +/obj/item/clothing/under/rank/security/head_of_security/formal, +/obj/item/clothing/suit/security/hos, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navywarden, +/obj/item/clothing/head/hos/beret/navyhos, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/blue, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/security/office) "ohX" = ( /obj/machinery/camera{ c_tag = "Bar - Backroom" @@ -49791,17 +49893,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/hallway/primary/port) -"onG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/medical/cryo) "onR" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical/glass{ @@ -50088,20 +50179,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"orG" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/nanite) "orL" = ( /obj/machinery/biogenerator, /obj/effect/decal/cleanable/dirt, @@ -50732,18 +50809,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white, /area/medical/medbay/central) -"oDK" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/aft) "oDQ" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -51423,15 +51488,6 @@ /obj/structure/cable/multilayer/connected, /turf/open/floor/iron/dark, /area/ai_monitored/aisat/exterior) -"oOD" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/turf_decal/siding/green{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "oOF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -51714,6 +51770,10 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/command/heads_quarters/hos) +"oTI" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/grass, +/area/science/research) "oTJ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -51754,11 +51814,6 @@ dir = 1 }, /area/hallway/primary/central) -"oTY" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/science/nanite) "oUb" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/purple{ @@ -52607,6 +52662,21 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"pgi" = ( +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/science/research) "pgt" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, @@ -54528,16 +54598,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"pPZ" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/green{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "pQi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -54932,6 +54992,10 @@ }, /turf/open/floor/iron, /area/science/robotics/lab) +"pWO" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall/r_wall, +/area/science/research) "pWR" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -54970,6 +55034,20 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark, /area/engineering/storage/tech) +"pXA" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/research) "pXT" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -56663,20 +56741,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/security/office) -"qCP" = ( -/obj/structure/chair/comfy{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/science/nanite) "qCQ" = ( /obj/structure/window/reinforced{ dir = 1; @@ -57228,22 +57292,6 @@ /obj/structure/grille, /turf/closed/wall/r_wall, /area/engineering/atmos) -"qMf" = ( -/obj/structure/chair/comfy{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Science Break Room"; - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron, -/area/science/nanite) "qMr" = ( /turf/closed/wall, /area/service/kitchen/coldroom) @@ -58267,14 +58315,6 @@ icon_state = "platingdmg3" }, /area/solars/port/fore) -"rdZ" = ( -/obj/structure/cable, -/obj/effect/landmark/start/scientist, -/obj/effect/turf_decal/siding/green{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "rec" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -58857,16 +58897,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"rnM" = ( -/obj/machinery/computer/nanite_chamber_control{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Science Nanites Lab"; - dir = 8 - }, -/turf/open/floor/circuit/green, -/area/science/nanite) "rnV" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, @@ -59039,26 +59069,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"rqN" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/sorting/mail{ - dir = 1; - sortType = 28 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/nanite) "rqO" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -59073,6 +59083,17 @@ /obj/structure/cable, /turf/open/floor/iron, /area/security/brig) +"rqT" = ( +/obj/machinery/camera{ + c_tag = "Science Petting Zoo"; + dir = 8 + }, +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/circuit/green/off, +/area/science/research) "rrj" = ( /obj/machinery/door/airlock/maintenance{ name = "Storage Room"; @@ -59237,19 +59258,6 @@ }, /turf/open/floor/iron, /area/engineering/break_room) -"rsu" = ( -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/science/nanite) "rtc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -61185,10 +61193,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/wood, /area/command/heads_quarters/captain/private) -"rYp" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating, -/area/maintenance/aft) "rYC" = ( /turf/open/floor/plating{ icon_state = "platingdmg2" @@ -61323,6 +61327,14 @@ }, /turf/open/floor/iron, /area/hallway/secondary/command) +"sbQ" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/grass, +/area/science/research) "sbW" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -62153,6 +62165,20 @@ "soZ" = ( /turf/open/floor/wood, /area/command/corporate_showroom) +"spa" = ( +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/research) "spg" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/plating, @@ -62183,10 +62209,6 @@ dir = 1 }, /area/engineering/atmos) -"spG" = ( -/obj/structure/sign/warning/biohazard, -/turf/closed/wall/r_wall, -/area/science/nanite) "spT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -62882,6 +62904,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/robotics/mechbay) +"sBX" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron, +/area/science/research) "sCb" = ( /obj/machinery/door/airlock/command{ name = "Command Desk"; @@ -62951,6 +62983,12 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"sDy" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/grass, +/area/science/research) "sDL" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66691,21 +66729,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/command/bridge) -"tOv" = ( -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/science/nanite) "tOw" = ( /obj/structure/sink{ dir = 8; @@ -66955,6 +66978,11 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark, /area/science/storage) +"tSb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/electrolyzer, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "tSf" = ( /obj/structure/closet/secure_closet/courtroom, /obj/machinery/light_switch/directional/north, @@ -67616,23 +67644,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/science/robotics/mechbay) -"ueO" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/nanite) "ueU" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -68660,6 +68671,13 @@ }, /turf/open/floor/iron, /area/commons/locker) +"uuh" = ( +/obj/structure/sign/warning/securearea, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/science/research) "uui" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -68747,6 +68765,32 @@ }, /turf/open/floor/iron, /area/engineering/gravity_generator) +"uvd" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Space Bridge"; + req_access_txt = "55" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "xeno_blastdoor"; + name = "biohazard containment door" + }, +/turf/open/floor/iron/white, +/area/science/research) "uvj" = ( /obj/structure/closet/lasertag/blue, /obj/effect/turf_decal/tile/neutral{ @@ -68894,21 +68938,6 @@ }, /turf/open/floor/iron/dark, /area/science/genetics) -"uxi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/science/nanite) "uxy" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -69213,6 +69242,11 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) +"uDl" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/grass, +/area/science/research) "uDq" = ( /obj/structure/sign/poster/contraband/random{ pixel_x = -32 @@ -69325,18 +69359,6 @@ }, /turf/open/floor/plating, /area/engineering/supermatter/room) -"uFU" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/science/nanite) "uFV" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -69353,10 +69375,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/science/robotics/lab) -"uFZ" = ( -/obj/machinery/nanite_programmer, -/turf/open/floor/circuit/green, -/area/science/nanite) "uGc" = ( /obj/structure/girder, /obj/structure/grille, @@ -69721,6 +69739,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/engineering/main) +"uML" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) "uMZ" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/north, /turf/open/floor/wood, @@ -69746,14 +69772,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white/smooth_large, /area/medical/treatment_center) -"uNj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/aft) "uNx" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/techstorage/security, @@ -69868,6 +69886,19 @@ }, /turf/open/floor/iron/dark, /area/command/gateway) +"uPi" = ( +/obj/machinery/door/window/northright{ + name = "Petting Zoo" + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/science/research) "uPD" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -70581,10 +70612,6 @@ }, /turf/open/floor/iron/white, /area/science/research) -"uZY" = ( -/obj/machinery/nanite_chamber, -/turf/open/floor/circuit/green, -/area/science/nanite) "vaD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71571,21 +71598,6 @@ icon_state = "wood-broken5" }, /area/service/library) -"vqp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/science/nanite) "vqw" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -72848,11 +72860,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /turf/open/floor/iron/white, /area/science/xenobiology) -"vMe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/electrolyzer, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "vMx" = ( /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/stripes/line{ @@ -73210,6 +73217,18 @@ }, /turf/open/floor/iron/white, /area/science/cytology) +"vSv" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/aft) "vSJ" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/camera{ @@ -74015,10 +74034,6 @@ }, /turf/open/floor/iron, /area/security/warden) -"whv" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall, -/area/science/nanite) "whB" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/white, @@ -75416,20 +75431,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/engineering/gravity_generator) -"wHW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/nanite) "wHY" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue{ @@ -76731,6 +76732,14 @@ /obj/effect/landmark/start/research_director, /turf/open/floor/iron/dark, /area/command/heads_quarters/rd) +"xev" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/obj/machinery/module_duplicator, +/turf/open/floor/iron/white, +/area/science/misc_lab) "xeO" = ( /obj/machinery/door/airlock/engineering{ name = "Starboard Quarter Solar Access"; @@ -77236,12 +77245,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/commons/locker) -"xmN" = ( -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "xmT" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -77439,10 +77442,6 @@ /obj/effect/landmark/start/chaplain, /turf/open/floor/iron/dark, /area/service/chapel/main) -"xrs" = ( -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/iron/white, -/area/science/nanite) "xrA" = ( /obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, @@ -78595,30 +78594,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) -"xJV" = ( -/obj/item/nanite_scanner{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/nanite_scanner{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/nanite_remote{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/nanite_remote{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/turf_decal/bot, -/obj/structure/table/glass, -/obj/structure/cable, -/obj/machinery/light/directional/north, -/obj/machinery/power/apc/auto_name/north, -/turf/open/floor/iron/dark, -/area/science/nanite) "xJX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ @@ -79734,6 +79709,20 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"ydr" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/science/research) "ydE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -79776,12 +79765,6 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/solars/port/aft) -"yeh" = ( -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "yej" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -100818,7 +100801,7 @@ bLd css lUJ olq -onG +eWT tqf aiX mRw @@ -103164,8 +103147,8 @@ dqj cEP cFS cGN -oDK -uNj +vSv +uML cJr qqO cLd @@ -103422,7 +103405,7 @@ wEy tfh fTw tay -rYp +gHY diR aQv pfR @@ -108712,7 +108695,7 @@ aaa fwb aaa fNA -efA +ohR ruv gOP nYI @@ -113932,7 +113915,7 @@ yjC lGi eAF xAx -iay +xev nhL oLk kYe @@ -116255,7 +116238,7 @@ cIg cIg cIg dpV -noS +gTG dpV nOc bjK @@ -116511,9 +116494,9 @@ xZW eZf gXs wmS -vqp -rqN -uxi +bpx +dkc +kId gkv uhC fsL @@ -116768,9 +116751,9 @@ dwL cmY ifi ovj -hXe -orG -xrs +obj +pXA +jBe dvY kQY lFg @@ -117022,12 +117005,12 @@ ovj ovj ovj dwL -ctL -ctL -ctL -cTN -gAI -whv +cgo +cgo +cgo +uuh +ajN +mpa nOc dyc bjK @@ -117278,14 +117261,14 @@ myQ xZF gGR nGT -ctL -uFZ -lta -uZY -tOv -ueO -qMf -ctL +cgo +kXQ +cah +kXQ +pgi +cui +cTr +cgo cEz bjK dyc @@ -117535,14 +117518,14 @@ ovj cpJ ten ovj -ctL -xJV -pPZ -xmN -rsu -ueO -fQU -ctL +cgo +fVN +gZq +mCH +jJh +cui +cHh +cgo qfG jTf xaN @@ -117792,14 +117775,14 @@ cos dxh hPn crZ -ctL -bmT -rdZ -nkS -aXh -iog -qCP -ctL +cgo +mvj +fXt +uDl +mAN +niR +bih +cgo vPM ciL sgX @@ -118049,14 +118032,14 @@ cot cnb cra csa -ctL -gdG -mQQ -oTY -nsC -uFU -nIx -ctL +cgo +sbQ +ghY +oTI +uPi +iQR +dWO +cgo dww cFu dyc @@ -118306,14 +118289,14 @@ nbv nbv cou csb -ctL -eQK -oOD -yeh -bkv -wHW -dMl -ctL +cgo +gvE +sDy +nJl +spa +ydr +iXU +cgo dvY dvY dvY @@ -118563,14 +118546,14 @@ mhf nbv rYC csc -ctL -uFZ -rnM -uZY -inN -fde -aLn -ctL +cgo +kXQ +rqT +kXQ +iqC +dhj +sBX +cgo aaa aaa aaa @@ -118821,13 +118804,13 @@ cpK cwG pPA dwL -ctL -ctL -ctL -spG -gLm -spG -ctL +cgo +cgo +cgo +pWO +uvd +pWO +cgo aaa aaa aaa @@ -119578,11 +119561,11 @@ qUk apc qYi nuA -vMe +tSb adk afQ ejw -bwo +bDe oeB bGV uAj diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 066fffbf7e2..adaecc5ce3e 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -1472,10 +1472,6 @@ }, /turf/open/floor/plating, /area/cargo/storage) -"fd" = ( -/obj/structure/sign/departments/nanites, -/turf/closed/wall/r_wall, -/area/construction) "fe" = ( /obj/machinery/computer/cargo{ dir = 8 @@ -2053,11 +2049,9 @@ /turf/open/floor/iron, /area/hallway/primary/central) "kp" = ( -/obj/machinery/computer/rdconsole{ - dir = 1 - }, +/obj/structure/server, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "kQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 8 @@ -2092,7 +2086,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "nq" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -2136,12 +2130,6 @@ /obj/machinery/door/airlock, /turf/open/floor/plating, /area/engineering/atmos) -"qd" = ( -/obj/machinery/airalarm/unlocked{ - pixel_y = 23 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "qQ" = ( /turf/open/floor/engine, /area/cargo/miningoffice) @@ -2164,10 +2152,9 @@ /turf/open/floor/iron, /area/hallway/primary/central) "sr" = ( -/obj/machinery/public_nanite_chamber, -/obj/effect/turf_decal/stripes/box, -/turf/open/floor/iron, -/area/hallway/secondary/entry) +/obj/machinery/door/airlock/shell, +/turf/open/floor/iron/dark, +/area/construction) "sE" = ( /obj/machinery/power/rtg/advanced, /obj/structure/cable, @@ -2178,6 +2165,10 @@ /obj/item/storage/box/shipping, /turf/open/floor/iron, /area/commons/storage/primary) +"tE" = ( +/obj/machinery/door/airlock/research, +/turf/open/floor/iron/dark, +/area/construction) "tG" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland"; @@ -2185,6 +2176,10 @@ }, /turf/open/space/basic, /area/space) +"tV" = ( +/obj/structure/bot, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "uf" = ( /obj/structure/fans/tiny/invisible, /obj/effect/turf_decal/stripes/line{ @@ -2212,14 +2207,25 @@ /turf/open/floor/iron, /area/commons/storage/primary) "uQ" = ( -/obj/machinery/nanite_programmer, /obj/machinery/light/directional/west, +/obj/structure/table, +/obj/item/compact_remote, +/obj/item/compact_remote, +/obj/item/compact_remote{ + pixel_x = -5 + }, +/obj/item/controller{ + pixel_x = 5 + }, +/obj/item/controller{ + pixel_x = 5 + }, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "vm" = ( -/obj/machinery/computer/nanite_cloud_controller, +/mob/living/circuit_drone, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "vv" = ( /obj/machinery/door/airlock, /turf/open/floor/plating, @@ -2272,7 +2278,7 @@ /area/hallway/primary/central) "wU" = ( /turf/closed/wall/r_wall, -/area/science/nanite) +/area/science/misc_lab) "yK" = ( /obj/structure/fans/tiny/invisible, /obj/effect/turf_decal/stripes/line{ @@ -2286,9 +2292,11 @@ /turf/open/floor/iron, /area/engineering/atmos) "AE" = ( -/obj/item/disk/tech_disk/debug, +/obj/machinery/airalarm/unlocked{ + pixel_y = 23 + }, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "AP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 8 @@ -2326,11 +2334,9 @@ /turf/open/floor/iron, /area/cargo/miningoffice) "CT" = ( -/obj/machinery/computer/nanite_chamber_control{ - dir = 8 - }, +/obj/machinery/component_printer, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "CV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/structure/cable, @@ -2338,9 +2344,11 @@ /area/medical/chemistry) "Df" = ( /obj/machinery/light/directional/east, -/mob/living/carbon/human, +/obj/item/integrated_circuit/loaded/hello_world, +/obj/item/integrated_circuit/loaded/speech_relay, +/obj/structure/rack, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "DW" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -2397,7 +2405,7 @@ "Ir" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/science/nanite) +/area/science/misc_lab) "Iy" = ( /obj/structure/closet/secure_closet/research_director{ locked = 0 @@ -2444,13 +2452,13 @@ /turf/open/floor/iron/dark, /area/medical/chemistry) "LH" = ( -/obj/machinery/door/airlock, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, -/area/science/nanite) +/obj/machinery/door/airlock/research, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "LW" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -2471,9 +2479,9 @@ /turf/open/floor/iron, /area/engineering/atmos) "Nb" = ( -/obj/machinery/nanite_chamber, +/obj/machinery/bci_implanter, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "Nc" = ( /obj/machinery/chem_recipe_debug, /turf/open/floor/iron, @@ -2488,9 +2496,13 @@ /turf/open/floor/iron, /area/science) "Ov" = ( -/obj/machinery/nanite_program_hub, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "OU" = ( /obj/item/disk/tech_disk/debug, /turf/open/floor/iron, @@ -2574,7 +2586,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "Vy" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -2605,6 +2617,10 @@ /obj/structure/cable, /turf/open/floor/iron, /area/engineering/gravity_generator) +"WK" = ( +/obj/structure/money_bot, +/turf/open/floor/iron/dark, +/area/science/misc_lab) "WT" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -2634,16 +2650,17 @@ /area/science) "XN" = ( /obj/structure/table, -/obj/item/nanite_remote{ - pixel_x = -4; - pixel_y = 4 +/obj/item/organ/cyberimp/bci{ + pixel_y = 5 }, -/obj/item/nanite_scanner{ - pixel_x = 4; - pixel_y = -4 +/obj/item/organ/cyberimp/bci{ + pixel_y = 5 + }, +/obj/item/organ/cyberimp/bci{ + pixel_y = 5 }, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "XR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 9 @@ -2661,9 +2678,15 @@ /area/commons/storage/primary) "Ym" = ( /obj/structure/table, -/obj/item/storage/box/disks_nanite, +/obj/item/storage/toolbox/electrical, +/obj/item/multitool/circuit{ + pixel_x = -4 + }, +/obj/item/multitool{ + pixel_x = 4 + }, /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) "Yy" = ( /obj/machinery/light/directional/north, /obj/machinery/rnd/production/circuit_imprinter/department, @@ -2677,7 +2700,7 @@ /area/engineering/atmos) "ZP" = ( /turf/open/floor/iron/dark, -/area/science/nanite) +/area/science/misc_lab) (1,1,1) = {" aa @@ -5851,7 +5874,7 @@ eh eh eh rn -sr +eh eh ge aa @@ -6125,11 +6148,11 @@ dn dn dn dL -ef +sr nn ZP ZP -ZP +WK Ir aa aa @@ -6217,7 +6240,7 @@ dn dn dn dL -ef +cN AE kp XN @@ -6309,11 +6332,11 @@ dn dn dn dL -cN -qd +tE ZP ZP ZP +tV Ir aa aa @@ -6401,7 +6424,7 @@ dn dn dn dL -fd +cN ZP Df Nb diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index eaa524601cc..8a40af6c2c0 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -332,16 +332,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) -"abe" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 5 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/hallway/primary/port) "abg" = ( /obj/machinery/door/airlock/external{ name = "Port Docking Bay 1"; @@ -350,16 +340,6 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/hallway/secondary/entry) -"abi" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 9 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/hallway/primary/port) "abj" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -565,10 +545,6 @@ /obj/machinery/duct, /turf/open/floor/iron/freezer, /area/security/prison) -"abP" = ( -/obj/item/assembly/igniter, -/turf/closed/mineral/random/stationside/asteroid, -/area/maintenance/department/medical) "abU" = ( /obj/effect/turf_decal/trimline/green/filled/corner, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -613,16 +589,6 @@ /obj/structure/ladder, /turf/open/floor/iron/dark, /area/ai_monitored/command/nuke_storage) -"ace" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/security/courtroom) "acg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -1673,11 +1639,6 @@ }, /turf/open/floor/iron, /area/security/courtroom) -"afR" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood, -/area/service/library) "afU" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -2556,12 +2517,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/command/gateway) -"ajj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/plating, -/area/commons/vacant_room/commissary) "ajk" = ( /obj/structure/closet/secure_closet/quartermaster, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -2758,25 +2713,6 @@ /obj/structure/closet/wardrobe/mixed, /turf/open/floor/iron/cafeteria, /area/commons/locker) -"ajT" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/effect/landmark/start/hangover, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/hallway/primary/port) "ajU" = ( /obj/structure/railing/corner, /turf/open/floor/glass, @@ -3295,17 +3231,6 @@ }, /turf/open/floor/iron, /area/maintenance/tram/mid) -"alu" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, -/area/science/nanite) "alx" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/stripes/line{ @@ -3734,17 +3659,6 @@ dir = 8 }, /area/service/chapel) -"anf" = ( -/obj/machinery/computer/nanite_chamber_control, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/requests_console/directional/north{ - department = "Nanite Lab"; - name = "Nanite Lab Requests Console" - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "anj" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -4779,11 +4693,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"aqf" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood, -/area/service/library) "aqg" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -4836,13 +4745,6 @@ /obj/machinery/power/apc/auto_name/north, /turf/open/floor/carpet, /area/security/detectives_office) -"aqo" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/hallway/primary/tram/left) "aqp" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -5782,14 +5684,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/service/bar) -"asL" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/north, -/turf/open/floor/iron/dark, -/area/science/nanite) "asM" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -6250,22 +6144,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/command/gateway) -"auc" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/item/storage/box/disks_nanite{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/storage/box/disks_nanite{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/science/nanite) "auf" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -6585,13 +6463,6 @@ /obj/item/stamp/hos, /turf/open/floor/carpet, /area/command/heads_quarters/hos) -"avj" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/hallway/primary/tram/left) "avk" = ( /obj/effect/turf_decal/trimline/white/filled/line{ dir = 1 @@ -6815,29 +6686,11 @@ }, /turf/open/floor/iron, /area/hallway/primary/tram/center) -"avX" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/hallway/primary/tram/center) "avY" = ( /obj/structure/ladder, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/hallway/primary/tram/right) -"awe" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/hallway/primary/tram/right) "awf" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/structure/disposalpipe/segment{ @@ -7149,10 +7002,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/engineering/break_room) -"awX" = ( -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood, -/area/service/lawoffice) "awY" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7710,9 +7559,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/service/kitchen) -"ayQ" = ( -/turf/closed/wall/r_wall, -/area/science/nanite) "ayR" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -7724,6 +7570,15 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/security/detectives_office) +"ayT" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/machinery/electrolyzer, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "ayU" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -8180,16 +8035,6 @@ /obj/item/radio/intercom, /turf/open/floor/iron, /area/security/courtroom) -"aAs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 9 - }, -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/firealarm/directional/north, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/security/courtroom) "aAt" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -8595,15 +8440,6 @@ /obj/effect/turf_decal/trimline/neutral/filled/arrow_ccw, /turf/open/floor/iron, /area/hallway/primary/tram/center) -"aBS" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/lawyer, -/obj/machinery/firealarm/directional/south, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood, -/area/service/lawoffice) "aBU" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/machinery/door/poddoor/shutters{ @@ -8953,13 +8789,6 @@ }, /turf/open/floor/wood, /area/service/library) -"aCU" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/hallway/primary/tram/left) "aDa" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, @@ -9009,23 +8838,6 @@ }, /turf/open/floor/carpet, /area/security/detectives_office) -"aDo" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/hallway/primary/tram/center) -"aDp" = ( -/obj/structure/chair/comfy/beige{ - dir = 8 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/grimy, -/area/hallway/secondary/entry) "aDq" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 @@ -9359,20 +9171,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/hallway/primary/tram/left) -"aEo" = ( -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark, -/area/service/chapel) -"aEp" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/hallway/primary/tram/right) "aEq" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -9496,12 +9294,6 @@ "aEJ" = ( /turf/closed/wall, /area/construction/mining/aux_base) -"aEK" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/neutral/filled/warning, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/hallway/primary/tram/left) "aEL" = ( /obj/effect/turf_decal/trimline/yellow/warning, /obj/effect/turf_decal/trimline/neutral/filled/corner{ @@ -10421,16 +10213,6 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/floor/iron, /area/commons/storage/art) -"aHM" = ( -/obj/structure/table/wood, -/obj/machinery/computer/med_data/laptop, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/firealarm/directional/west, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/medical/psychology) "aHN" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -10621,18 +10403,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/tram/left) -"aIs" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/obj/machinery/light_switch/directional/east, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/science/nanite) "aIu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -10711,6 +10481,11 @@ name = "Holodeck Projector Floor" }, /area/holodeck/rec_center) +"aIK" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/vending/drugs, +/turf/open/floor/iron/dark, +/area/medical/storage) "aIL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -10757,14 +10532,6 @@ name = "Holodeck Projector Floor" }, /area/holodeck/rec_center) -"aIT" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/science/nanite) "aIU" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 10 @@ -12897,6 +12664,15 @@ /obj/item/stack/package_wrap, /turf/open/floor/iron, /area/commons/storage/primary) +"aWS" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/landmark/start/lawyer, +/obj/machinery/firealarm/directional/south, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/wood, +/area/service/lawoffice) "aWV" = ( /obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/iron/grimy, @@ -13286,29 +13062,16 @@ }, /turf/open/floor/plating/airless, /area/mine/explored) -"bap" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/purple/filled/line{ +"bav" = ( +/obj/structure/table/wood, +/obj/machinery/computer/med_data/laptop, +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/obj/item/nanite_scanner{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/nanite_scanner{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/nanite_remote{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/nanite_remote{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) +/obj/machinery/firealarm/directional/west, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/white, +/area/medical/psychology) "baB" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -13357,14 +13120,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hallway/primary/tram/right) -"baY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/science/nanite) "bbb" = ( /obj/machinery/door/airlock/maintenance_hatch{ req_one_access_txt = "12" @@ -13484,6 +13239,20 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit) +"bdd" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/service/bar) "bdh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -14311,10 +14080,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) -"bsR" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/science/nanite) "bsW" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -14338,14 +14103,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/tcommsat/computer) -"btO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd2"; - name = "research lab shutters" - }, -/turf/open/floor/plating, -/area/science/nanite) "btP" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 1 @@ -14365,6 +14122,17 @@ }, /turf/open/floor/iron/dark, /area/service/hydroponics) +"bum" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/service/bar) "bup" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 8 @@ -14587,14 +14355,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/engineering/atmos) -"byG" = ( -/obj/machinery/biogenerator, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 6 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/service/hydroponics/garden) "byJ" = ( /obj/structure/table/glass, /obj/machinery/light/directional/west, @@ -14687,6 +14447,14 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) +"bAL" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/engineering/break_room) "bAS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/robot_debris, @@ -14926,15 +14694,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/commons/storage/art) -"bFL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "bFS" = ( /obj/structure/grille, /obj/effect/decal/cleanable/dirt, @@ -15194,11 +14953,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/commons/storage/tools) -"bKr" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/vending/drugs, -/turf/open/floor/iron/dark, -/area/medical/storage) "bKx" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -15337,23 +15091,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) -"bMh" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/science/research) -"bMz" = ( -/obj/machinery/nanite_programmer, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/circuit/green, -/area/science/nanite) "bMC" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -15550,6 +15287,15 @@ }, /turf/open/floor/iron, /area/hallway/primary/tram/center) +"bQd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Civilian - Library Back Room"; + dir = 5 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/grimy, +/area/service/library) "bQC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -16183,21 +15929,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/iron/dark, /area/science/xenobiology) -"cdt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "cdu" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, @@ -17245,6 +16976,14 @@ }, /turf/open/floor/iron/white, /area/science/research) +"czW" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron, +/area/hallway/primary/tram/center) "cAa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17292,13 +17031,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/maintenance/central/secondary) -"cAT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "cAU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17611,17 +17343,6 @@ /obj/effect/spawner/lootdrop/food_packaging, /turf/open/floor/plating, /area/maintenance/central) -"cII" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/service/bar) "cIN" = ( /obj/structure/rack, /obj/item/stack/sheet/iron/ten, @@ -18330,13 +18051,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/command/heads_quarters/ce) -"cWg" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/obj/machinery/module_duplicator, -/turf/open/floor/iron, -/area/science/misc_lab) "cWr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18543,18 +18257,6 @@ }, /turf/open/floor/iron/dark, /area/science/xenobiology) -"dbl" = ( -/obj/machinery/nanite_chamber, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Science - Nanite Lab"; - dir = 6; - network = list("ss13","science") - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "dbr" = ( /obj/machinery/door/airlock/medical/glass{ name = "Treatment Center"; @@ -18910,6 +18612,10 @@ }, /turf/open/floor/iron, /area/security/checkpoint/medical) +"djm" = ( +/obj/machinery/newscaster/directional/east, +/turf/open/floor/wood, +/area/service/lawoffice) "djI" = ( /obj/machinery/recharge_station, /obj/effect/turf_decal/delivery, @@ -18925,16 +18631,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/central/secondary) -"dkt" = ( -/obj/machinery/computer/atmos_alert{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark, -/area/engineering/engine_smes) "dku" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -20035,13 +19731,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) -"dFo" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark, -/area/science/nanite) "dFv" = ( /obj/effect/spawner/lootdrop/food_packaging, /obj/effect/decal/cleanable/dirt, @@ -21115,6 +20804,16 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"dZf" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/white, +/area/science/lab) "dZO" = ( /obj/machinery/light/directional/west, /obj/machinery/camera/motion{ @@ -21751,15 +21450,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"emO" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/camera{ - c_tag = "Civilian - Library Back Room"; - dir = 5 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/grimy, -/area/service/library) "emS" = ( /obj/machinery/light/small/directional/south, /obj/machinery/button/door/directional/west{ @@ -22345,6 +22035,13 @@ /obj/item/clothing/shoes/sneakers/orange, /turf/open/floor/iron/cafeteria, /area/security/prison) +"ewP" = ( +/obj/effect/spawner/randomcolavend, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/science/breakroom) "ewQ" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -22617,6 +22314,16 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"eCL" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron, +/area/hallway/primary/tram/right) "eCN" = ( /obj/effect/landmark/start/depsec/supply, /obj/structure/chair/office{ @@ -23446,6 +23153,10 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit) +"eWl" = ( +/obj/item/assembly/igniter, +/turf/closed/mineral/random/stationside/asteroid, +/area/mine/explored) "eWn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -23653,13 +23364,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/starboard/secondary) -"fat" = ( -/obj/effect/spawner/randomcolavend, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/science/breakroom) "fay" = ( /obj/machinery/modular_computer/console/preset/engineering{ dir = 4 @@ -23859,6 +23563,14 @@ "ffq" = ( /turf/open/floor/iron, /area/hallway/secondary/command) +"ffr" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/cargo/miningdock) "ffs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -25296,20 +25008,6 @@ }, /turf/open/floor/iron, /area/maintenance/tram/mid) -"fIg" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/directional/west, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/commons/dorms) "fIp" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/oil/slippery, @@ -26481,9 +26179,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron/white, /area/science/research) -"gfd" = ( -/turf/open/floor/circuit/green, -/area/science/nanite) "gfe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /obj/effect/turf_decal/trimline/red/filled/corner{ @@ -26610,6 +26305,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/medical/medbay/central) +"ghR" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/security/courtroom) "ghY" = ( /obj/effect/turf_decal/trimline/yellow/warning, /obj/machinery/light/small/directional/north, @@ -26962,6 +26667,16 @@ }, /turf/open/floor/plating, /area/maintenance/tram/mid) +"gqH" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron/dark, +/area/engineering/engine_smes) "gqQ" = ( /obj/machinery/door/airlock/virology{ name = "Break Room"; @@ -27732,6 +27447,27 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/commons/vacant_room/office) +"gGs" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/engineering/main) +"gGD" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/green/filled/warning{ + dir = 9 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/port) "gGM" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -28616,14 +28352,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/engineering/supermatter/room) -"gXR" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/engineering/break_room) "gYh" = ( /obj/machinery/computer/operating{ dir = 8 @@ -28955,6 +28683,13 @@ /obj/structure/cable, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"hdD" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron, +/area/hallway/primary/tram/left) "hdK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 9 @@ -29758,26 +29493,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/maintenance/disposal/incinerator) -"hqq" = ( -/obj/machinery/door/airlock/research{ - name = "Nanite Laboratory"; - req_one_access_txt = "7" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "hqr" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -30989,19 +30704,6 @@ }, /turf/open/floor/iron, /area/cargo/office) -"hPF" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "hPX" = ( /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt, @@ -31524,17 +31226,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/hallway/primary/port) -"idv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/airalarm/directional/north, -/obj/machinery/light/directional/west, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/engineering/atmos) "idX" = ( /obj/machinery/door/airlock/maintenance_hatch{ req_one_access_txt = "12" @@ -31809,6 +31500,19 @@ }, /turf/open/floor/iron, /area/engineering/main) +"iiG" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/east, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron, +/area/commons/dorms) "iiH" = ( /turf/open/openspace, /area/science/research) @@ -32191,18 +31895,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/grimy, /area/service/chapel/office) -"ist" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/plasteel{ - amount = 15 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/science/robotics/lab) "isF" = ( /obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 1 @@ -32433,18 +32125,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/command/bridge) -"ixu" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Science - Lower Main South"; - dir = 6; - network = list("ss13","science") - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/science/research) "ixB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33302,6 +32982,21 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) +"iLM" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "iLW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ @@ -33940,15 +33635,16 @@ }, /turf/open/floor/iron/dark, /area/medical/psychology) -"iWO" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 +"iWB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 9 }, -/obj/machinery/firealarm/directional/west, -/obj/machinery/electrolyzer, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/firealarm/directional/north, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/dark, +/area/security/courtroom) "iWV" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -34807,13 +34503,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/science/explab) -"jqL" = ( -/obj/machinery/nanite_program_hub, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/circuit/green, -/area/science/nanite) "jqQ" = ( /turf/open/floor/engine, /area/engineering/supermatter/room) @@ -34946,6 +34635,12 @@ }, /turf/open/floor/iron/white, /area/medical/treatment_center) +"jtT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/plating, +/area/commons/vacant_room/commissary) "jtY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria{ @@ -35373,6 +35068,13 @@ "jCF" = ( /turf/open/floor/iron, /area/command/heads_quarters/ce) +"jCN" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron, +/area/hallway/primary/tram/left) "jDb" = ( /obj/structure/table, /obj/item/paper/pamphlet/radstorm, @@ -35780,6 +35482,27 @@ }, /turf/open/floor/iron, /area/service/hydroponics/garden) +"jKG" = ( +/obj/machinery/requests_console/directional/north{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel's Requests Console" + }, +/obj/structure/table/wood, +/obj/item/storage/secure/briefcase{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/silver_ids{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8 + }, +/turf/open/floor/wood, +/area/command/heads_quarters/hop) "jKR" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/trimline/white/line{ @@ -37010,6 +36733,19 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron, /area/science/misc_lab) +"kgy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/requests_console/directional/north{ + department = "Medbay"; + departmentType = 1; + name = "Medbay Requests Console" + }, +/obj/structure/closet/l3closet, +/turf/open/floor/iron/white, +/area/medical/storage) "kgP" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -38081,11 +37817,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/command/teleporter) -"kzT" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/science/nanite) "kzW" = ( /obj/effect/spawner/lootdrop/garbage_spawner, /obj/effect/decal/cleanable/dirt, @@ -38272,13 +38003,6 @@ }, /turf/closed/wall/r_wall, /area/engineering/supermatter) -"kDj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "kDm" = ( /obj/structure/chair/plastic{ dir = 1 @@ -38372,6 +38096,16 @@ }, /turf/open/floor/engine/vacuum, /area/engineering/atmos) +"kEQ" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/commons/lounge) "kFd" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/north, @@ -39258,14 +38992,6 @@ }, /turf/open/floor/engine, /area/engineering/supermatter/room) -"kXA" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/cargo/qm) "kXD" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -41007,6 +40733,13 @@ }, /turf/open/floor/iron, /area/cargo/storage) +"lCz" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron/grimy, +/area/hallway/secondary/entry) "lCG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -41119,6 +40852,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/security/prison) +"lGl" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/electrical, +/obj/item/clothing/head/welding, +/obj/item/clothing/glasses/welding, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/science/robotics/lab) "lGw" = ( /obj/machinery/door/airlock/security{ name = "Permanent Cell 5" @@ -43021,6 +42766,25 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/medical/medbay/central) +"mvS" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/effect/landmark/start/hangover, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/hallway/primary/port) "mvV" = ( /obj/effect/turf_decal/trimline/purple/filled/corner, /obj/effect/landmark/start/geneticist, @@ -44715,6 +44479,14 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/maintenance/port/fore) +"nie" = ( +/obj/machinery/biogenerator, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 6 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron, +/area/service/hydroponics/garden) "niO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 @@ -44728,16 +44500,6 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/aisat_interior) -"nju" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/commons/lounge) "njM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -44761,21 +44523,6 @@ /obj/structure/cable, /turf/open/floor/iron/cafeteria, /area/commons/locker) -"nkz" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "nkC" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -44889,6 +44636,18 @@ }, /turf/open/floor/iron/dark, /area/command/bridge) +"nnC" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Science - Lower Main South"; + dir = 6; + network = list("ss13","science") + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/white, +/area/science/research) "nnQ" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Tunnel Access"; @@ -45066,6 +44825,11 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron, /area/science/lab) +"nrv" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/wood, +/area/service/library) "nrF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, @@ -47389,6 +47153,20 @@ }, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) +"ond" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/light/directional/west, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron, +/area/commons/dorms) "one" = ( /turf/closed/wall/r_wall, /area/engineering/atmos) @@ -48769,6 +48547,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/starboard/central) +"oPN" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 6 + }, +/obj/structure/rack, +/obj/machinery/light/directional/south, +/obj/item/controller, +/obj/item/compact_remote, +/obj/item/integrated_circuit/loaded/hello_world, +/obj/item/integrated_circuit/loaded/speech_relay, +/obj/item/compact_remote, +/turf/open/floor/iron, +/area/science/misc_lab) "oPY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -49056,20 +48847,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/security/brig) -"oUr" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/service/bar) "oUw" = ( /obj/structure/table, /obj/item/stock_parts/scanning_module{ @@ -49634,11 +49411,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/engineering/atmospherics_engine) -"pfi" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/science/nanite) "pfo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 1 @@ -49808,6 +49580,13 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/maintenance/central/secondary) +"pie" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 10 + }, +/obj/machinery/module_duplicator, +/turf/open/floor/iron, +/area/science/misc_lab) "pil" = ( /obj/structure/railing/corner{ dir = 1 @@ -51358,6 +51137,16 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/maintenance/central) +"pNm" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron, +/area/hallway/primary/tram/center) "pNt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51722,6 +51511,13 @@ }, /turf/open/floor/iron, /area/hallway/primary/tram/left) +"pTk" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "pTG" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -51746,10 +51542,6 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"pUB" = ( -/obj/machinery/computer/nanite_cloud_controller, -/turf/open/floor/circuit/green, -/area/science/nanite) "pUM" = ( /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron, @@ -52007,16 +51799,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"qab" = ( -/obj/structure/cable, -/obj/machinery/light_switch/directional/north{ - pixel_x = 12 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/command/heads_quarters/rd) "qan" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -52054,6 +51836,23 @@ /obj/effect/spawner/lootdrop/food_packaging, /turf/open/floor/plating, /area/maintenance/starboard/central) +"qbv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/hallway/secondary/construction/engineering) "qbC" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -52206,6 +52005,24 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"qeq" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/multitool, +/obj/machinery/camera/emp_proof{ + c_tag = "Secure - Telecomms Control Room"; + dir = 6 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/tcommsat/computer) "qes" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/turf_decal/trimline/blue/filled/corner{ @@ -52358,14 +52175,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, /area/mine/explored) -"qiA" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/cargo/miningdock) "qiW" = ( /turf/open/floor/iron, /area/security/processing) @@ -53616,6 +53425,16 @@ }, /turf/open/floor/iron/dark, /area/tcommsat/computer) +"qJo" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/research) "qJp" = ( /obj/effect/decal/cleanable/dirt, /obj/item/chair, @@ -54386,13 +54205,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, /turf/open/floor/iron/white, /area/science/mixing) -"rbD" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "rbI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -55434,26 +55246,6 @@ }, /turf/open/floor/iron, /area/security/office) -"rwO" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/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/iron/dark, -/area/science/nanite) "rwY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 @@ -58876,6 +58668,20 @@ }, /turf/open/floor/iron, /area/hallway/secondary/construction/engineering) +"sPg" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/science/research) "sPj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61359,12 +61165,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/disposal) -"tJq" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "tJC" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -61700,16 +61500,6 @@ }, /turf/open/floor/iron, /area/engineering/atmos) -"tOO" = ( -/obj/machinery/door/airlock/research{ - name = "Nanite Laboratory"; - req_one_access_txt = "7" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/science/nanite) "tOS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -61844,17 +61634,6 @@ }, /turf/open/floor/iron, /area/service/hydroponics/garden) -"tRs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/engineering/main) "tRt" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -62762,19 +62541,6 @@ }, /turf/open/floor/vault, /area/hallway/primary/tram/center) -"uhs" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/east, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/commons/dorms) "uht" = ( /turf/closed/wall, /area/medical/treatment_center) @@ -62812,6 +62578,17 @@ }, /turf/open/floor/iron, /area/maintenance/tram/right) +"uiu" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/west, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron, +/area/engineering/atmos) "uiJ" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -63083,6 +62860,16 @@ /obj/structure/railing, /turf/open/floor/plating, /area/maintenance/tram/right) +"uoz" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron, +/area/hallway/primary/tram/right) "uoJ" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/purple/filled/corner{ @@ -63373,6 +63160,16 @@ }, /turf/open/floor/carpet, /area/service/library) +"utD" = ( +/obj/structure/cable, +/obj/machinery/light_switch/directional/north{ + pixel_x = 12 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/command/heads_quarters/rd) "utP" = ( /obj/structure/fluff/tram_rail/end{ dir = 8 @@ -63734,19 +63531,6 @@ "uEX" = ( /turf/closed/wall, /area/security/checkpoint/escape) -"uFJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/requests_console/directional/north{ - department = "Medbay"; - departmentType = 1; - name = "Medbay Requests Console" - }, -/obj/structure/closet/l3closet, -/turf/open/floor/iron/white, -/area/medical/storage) "uFL" = ( /obj/structure/closet, /obj/effect/decal/cleanable/dirt, @@ -64084,16 +63868,6 @@ /obj/item/clothing/mask/breath, /turf/open/floor/iron, /area/engineering/atmos) -"uLU" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/science/lab) "uLZ" = ( /obj/effect/turf_decal/trimline/red/corner, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -64314,20 +64088,6 @@ "uQe" = ( /turf/open/floor/plating, /area/science/mixing) -"uQm" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/science/nanite) "uQq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -64337,24 +64097,11 @@ }, /turf/open/floor/plating, /area/science/xenobiology) -"uQs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/multitool, -/obj/machinery/camera/emp_proof{ - c_tag = "Secure - Telecomms Control Room"; - dir = 6 - }, +"uQv" = ( +/obj/structure/table/wood, /obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/tcommsat/computer) +/turf/open/floor/wood, +/area/service/library) "uQB" = ( /obj/machinery/door/airlock/medical/glass{ name = "Medical Freezer"; @@ -64412,14 +64159,6 @@ icon_state = "wood-broken3" }, /area/maintenance/central) -"uRy" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/turf/open/floor/iron/dark, -/area/science/nanite) "uRU" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 @@ -64431,6 +64170,28 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/commons/dorms) +"uRZ" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/machinery/camera{ + c_tag = "Civilian - Lounge South"; + dir = 6 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/commons/lounge) "uSn" = ( /obj/machinery/door/airlock/hatch, /obj/effect/decal/cleanable/dirt, @@ -65042,10 +64803,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/starboard/central) -"vfl" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/circuit/green, -/area/science/nanite) "vfo" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 4 @@ -65689,6 +65446,16 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/security/interrogation) +"vqD" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/green/filled/warning{ + dir = 5 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/port) "vrc" = ( /obj/machinery/telecomms/bus/preset_two, /turf/open/floor/iron/dark/telecomms, @@ -65764,19 +65531,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/maintenance/starboard/secondary) -"vux" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/science/nanite) "vuO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, @@ -65812,27 +65566,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/central/secondary) -"vxi" = ( -/obj/machinery/requests_console/directional/north{ - announcementConsole = 1; - department = "Head of Personnel's Desk"; - departmentType = 5; - name = "Head of Personnel's Requests Console" - }, -/obj/structure/table/wood, -/obj/item/storage/secure/briefcase{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/item/storage/box/silver_ids{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = -8 - }, -/turf/open/floor/wood, -/area/command/heads_quarters/hop) "vxz" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/hangover, @@ -66150,20 +65883,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) -"vDR" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/science/research) "vDX" = ( /obj/structure/grille, /obj/effect/decal/cleanable/dirt, @@ -67637,18 +67356,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) -"wdt" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/electrical, -/obj/item/clothing/head/welding, -/obj/item/clothing/glasses/welding, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/science/robotics/lab) "wdJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -67757,23 +67464,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, /area/cargo/miningdock) -"wfD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/hallway/secondary/construction/engineering) "wfN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 9 @@ -68152,6 +67842,12 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron, /area/hallway/secondary/entry) +"wmU" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/neutral/filled/warning, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron, +/area/hallway/primary/tram/left) "wnM" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -68559,6 +68255,13 @@ }, /turf/open/floor/iron/dark, /area/service/hydroponics) +"wuT" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/tram/left) "wuW" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -69750,6 +69453,10 @@ /obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron, /area/tcommsat/computer) +"wOc" = ( +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron/dark, +/area/service/chapel) "wOm" = ( /obj/structure/table, /obj/machinery/light/directional/north, @@ -70641,28 +70348,6 @@ }, /turf/open/floor/plating/airless, /area/mine/explored) -"xib" = ( -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 4 - }, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/machinery/camera{ - c_tag = "Civilian - Lounge South"; - dir = 6 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/commons/lounge) "xif" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -72525,6 +72210,18 @@ }, /turf/open/floor/iron, /area/hallway/primary/tram/right) +"xQT" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/plasteel{ + amount = 15 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/dark, +/area/science/robotics/lab) "xQU" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -72551,19 +72248,6 @@ }, /turf/open/floor/iron/white, /area/medical/virology) -"xRv" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/obj/structure/rack, -/obj/machinery/light/directional/south, -/obj/item/controller, -/obj/item/compact_remote, -/obj/item/integrated_circuit/loaded/hello_world, -/obj/item/integrated_circuit/loaded/speech_relay, -/obj/item/compact_remote, -/turf/open/floor/iron, -/area/science/misc_lab) "xRE" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -72937,6 +72621,14 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"xXj" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/cargo/qm) "xXn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -88974,7 +88666,7 @@ aCa arm aqW awG -emO +bQd aeB bfh jIX @@ -91796,7 +91488,7 @@ fyx ahI lmq aCa -aqf +uQv rBn dQU ahj @@ -91806,7 +91498,7 @@ ufR aeQ dQU jBt -afR +nrv aCa rCB fNa @@ -92548,7 +92240,7 @@ aXi aXi aXi aej -oUr +bdd aLM aej aae @@ -94362,7 +94054,7 @@ aMK ldH aNF aOP -nju +kEQ jAa aQb aQy @@ -95411,7 +95103,7 @@ aOP aOP aOP aOP -xib +uRZ itG arc aUD @@ -98202,7 +97894,7 @@ aam aam aam aej -cII +bum aLM aej cIH @@ -100284,7 +99976,7 @@ awp ann cRi ain -aEo +wOc axc axc axc @@ -100553,7 +100245,7 @@ nSi guA xBP sXN -uQs +qeq tYP pcR tnM @@ -103372,7 +103064,7 @@ awy awy awy aUb -dkt +gqH aln kZF aIG @@ -103633,7 +103325,7 @@ aUb aUb aUb aIG -tRs +gGs iTQ nsJ lAN @@ -105164,7 +104856,7 @@ ahg dCy iiQ afB -wfD +qbv aim iXL ntM @@ -105915,7 +105607,7 @@ aBM aBM aBM aiF -ajj +jtT cuP akO alh @@ -106195,7 +105887,7 @@ afB fxN gcl iXL -gXR +bAL gOs kSp vNq @@ -106720,7 +106412,7 @@ uYT imM viG otN -idv +uiu pJF pVU kIo @@ -112131,7 +111823,7 @@ rzp tWb jbA diU -iWO +ayT jyz jaO eDs @@ -115403,7 +115095,7 @@ aae aae aae sHb -qiA +ffr svb bWH aht @@ -115441,7 +115133,7 @@ adS vkh ifA xaQ -fat +ewP uJg gJC awJ @@ -116481,7 +116173,7 @@ bJd bJd bJd bJd -ixu +nnC vyG fls aRL @@ -119580,7 +119272,7 @@ xVI omI kgw nAo -cWg +pie der mkm czI @@ -119837,7 +119529,7 @@ pft ixB utS vVw -xRv +oPN der der der @@ -155534,7 +155226,7 @@ dDP koi jKC aGt -byG +nie abG yee yee @@ -156037,7 +155729,7 @@ oev aBa erb tjo -aDp +lCz tpy aFB tjo @@ -158084,7 +157776,7 @@ ahu ahu ahu aak -ajT +mvS akz alV iZU @@ -158869,7 +158561,7 @@ azw axV axV aEX -aCU +jCN aEx anG iSC @@ -159607,7 +159299,7 @@ aae aae aak aak -abe +vqD act adf adK @@ -159655,7 +159347,7 @@ wBq sXx sXx vkV -uhs +iiG kGg uRU aOb @@ -159888,7 +159580,7 @@ aGY auf aGY aGY -aqo +wuT auY awK axX @@ -161954,7 +161646,7 @@ qbg axX aBH bxq -aEK +wmU aJV aJV pwy @@ -162177,7 +161869,7 @@ aae aae aak aak -abi +gGD acv adl adM @@ -162225,7 +161917,7 @@ kqJ qhf qhf kqJ -fIg +ond iiX dGK aOb @@ -162973,7 +162665,7 @@ ptd aZQ aZQ ara -avj +hdD aEn axZ aYE @@ -163462,7 +163154,7 @@ aae aae aae aFF -aAs +iWB epC bTH wQD @@ -163475,7 +163167,7 @@ aFF api doY aep -aBS +aWS abW ahu ahu @@ -164760,7 +164452,7 @@ aFF aJc aBE ahv -awX +djm abW aae aae @@ -165004,7 +164696,7 @@ aae ccM ccM aFF -ace +ghR aSe jiB oXV @@ -167628,7 +167320,7 @@ gkW xZF bsl ofE -uFJ +kgy tOs oeG rIE @@ -168403,7 +168095,7 @@ mJp nEg mhz ozN -bKr +aIK snA aae aae @@ -169149,7 +168841,7 @@ iBv ibO ayf aFa -aDo +pNm iUK avn avn @@ -170200,7 +169892,7 @@ aIk uYR uht uht -kDj +pTk dJz xCV jyn @@ -171446,7 +171138,7 @@ vGu iEx jgJ vGu -vxi +jKG dUE vGR qWH @@ -172244,7 +171936,7 @@ nbz nbz aHr eLP -cdt +iLM uht uht qch @@ -173253,7 +172945,7 @@ bhS aLX xyy atB -avX +czW aEy ayn uZH @@ -173787,7 +173479,7 @@ rKf kdk vKS eVQ -aHM +bav adD hVT aez @@ -176633,7 +176325,7 @@ agq lbM jwN sYs -agq +aae aae aae aae @@ -176890,7 +176582,7 @@ jOR wEN fwP fwP -agq +aae aae aae aae @@ -177135,7 +176827,7 @@ aae aae aae aae -agq +aae lbM agq xCz @@ -177146,8 +176838,8 @@ fwP jOR aEg lAc -agq -agq +aae +aae aae aae aae @@ -177383,7 +177075,7 @@ aBM aae aae dyg -ist +xQT hHc ooo cVj @@ -177403,8 +177095,8 @@ wWv jOR aEg hYK -abP -agq +eWl +aae aae aae aae @@ -177652,16 +177344,16 @@ aae lbM tAu sYs -agq -agq +aae +aae wEN oWE lbM jOR -agq -agq -agq -agq +aae +aae +aae +aae aae aae aae @@ -177908,14 +177600,14 @@ dyg aae lbM lbM -ayQ -ayQ -ayQ -ayQ -ayQ -ayQ -ayQ -ayQ +aae +aae +aae +aae +aae +aae +aae +aae aae aae aae @@ -178154,7 +177846,7 @@ wbP akA bdB gIt -wdt +lGl tuP aPX kvX @@ -178165,14 +177857,14 @@ dyg aae aae aae -ayQ -bap -auc -alu -bMz -vfl -pUB -ayQ +aae +aae +aae +aae +aae +aae +aae +aae aae aae aae @@ -178422,14 +178114,14 @@ dyg aae aae aae -ayQ -anf -dFo -cAT -vux -uQm -gfd -ayQ +aae +aae +aae +aae +aae +aae +aae +aae aae aae aae @@ -178679,14 +178371,14 @@ dyg der der der -ayQ -dbl -kzT -cAT -rwO -vux -jqL -ayQ +der +aae +aae +aae +aae +aae +aae +aae aae aae aae @@ -178936,14 +178628,14 @@ dyg bwc dCn pto -ayQ -asL -bsR -hPF -baY -bFL -uRy -ayQ +der +aae +aae +aae +aae +aae +aae +aae aae aae aae @@ -179193,13 +178885,13 @@ dyg lSU wtF jhg -ayQ -aIs -rbD -nkz -pfi -tJq -aIT +der +aae +aae +aae +aae +aae +aae lQG lQG lQG @@ -179408,7 +179100,7 @@ gJG okm jZN bSv -kXA +xXj ari scx tEA @@ -179421,7 +179113,7 @@ vfE uEE oDL atP -awe +eCL aEE ayw hlI @@ -179450,13 +179142,13 @@ dyg der jFq der -ayQ -ayQ -btO -hqq -tOO -btO -ayQ +der +der +der +der +der +der +der lQG dGu dGu @@ -179710,8 +179402,8 @@ ydX eaF eaF eaF -vDR -bMh +sPg +qJo fgV czV lQG @@ -180733,7 +180425,7 @@ yju hIG jrL vmv -qab +utD lev lev lev @@ -182008,7 +181700,7 @@ ojc ngB buy kvg -uLU +dZf vLU kkY ply @@ -183541,7 +183233,7 @@ aAS ayA ayA aFi -aEp +uoz aGb aod dCt diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 6495c88136e..855e4d72427 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -38,8 +38,6 @@ #define GLAND_HUD "17" #define SENTIENT_DISEASE_HUD "18" #define AI_DETECT_HUD "19" -#define NANITE_HUD "20" -#define DIAG_NANITE_FULL_HUD "21" /// Displays launchpads' targeting reticle #define DIAG_LAUNCHPAD_HUD "22" //for antag huds. these are used at the /mob level diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index e256f65ab54..e3ab85a2a13 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -1107,49 +1107,6 @@ ///(customer, container) venue signal sent when a venue sells an item. source is the thing sold, which can be a datum, so we send container for location checks #define COMSIG_ITEM_SOLD_TO_CUSTOMER "item_sold_to_customer" -//Nanites - -///() returns TRUE if nanites are found -#define COMSIG_HAS_NANITES "has_nanites" -///() returns TRUE if nanites have stealth -#define COMSIG_NANITE_IS_STEALTHY "nanite_is_stealthy" -///() deletes the nanite component -#define COMSIG_NANITE_DELETE "nanite_delete" -///(list/nanite_programs) - makes the input list a copy the nanites' program list -#define COMSIG_NANITE_GET_PROGRAMS "nanite_get_programs" -///(amount) Returns nanite amount -#define COMSIG_NANITE_GET_VOLUME "nanite_get_volume" -///(amount) Sets current nanite volume to the given amount -#define COMSIG_NANITE_SET_VOLUME "nanite_set_volume" -///(amount) Adjusts nanite volume by the given amount -#define COMSIG_NANITE_ADJUST_VOLUME "nanite_adjust" -///(amount) Sets maximum nanite volume to the given amount -#define COMSIG_NANITE_SET_MAX_VOLUME "nanite_set_max_volume" -///(amount(0-100)) Sets cloud ID to the given amount -#define COMSIG_NANITE_SET_CLOUD "nanite_set_cloud" -///(method) Modify cloud sync status. Method can be toggle, enable or disable -#define COMSIG_NANITE_SET_CLOUD_SYNC "nanite_set_cloud_sync" -///(amount) Sets safety threshold to the given amount -#define COMSIG_NANITE_SET_SAFETY "nanite_set_safety" -///(amount) Sets regeneration rate to the given amount -#define COMSIG_NANITE_SET_REGEN "nanite_set_regen" -///(code(1-9999)) Called when sending a nanite signal to a mob. -#define COMSIG_NANITE_SIGNAL "nanite_signal" -///(comm_code(1-9999), comm_message) Called when sending a nanite comm signal to a mob. -#define COMSIG_NANITE_COMM_SIGNAL "nanite_comm_signal" -///(mob/user, full_scan) - sends to chat a scan of the nanites to the user, returns TRUE if nanites are detected -#define COMSIG_NANITE_SCAN "nanite_scan" -///(list/data, scan_level) - adds nanite data to the given data list - made for ui_data procs -#define COMSIG_NANITE_UI_DATA "nanite_ui_data" -///(datum/nanite_program/new_program, datum/nanite_program/source_program) Called when adding a program to a nanite component -#define COMSIG_NANITE_ADD_PROGRAM "nanite_add_program" - ///Installation successful - #define COMPONENT_PROGRAM_INSTALLED (1<<0) - ///Installation failed, but there are still nanites - #define COMPONENT_PROGRAM_NOT_INSTALLED (1<<1) -///(datum/component/nanites, full_overwrite, copy_activation) Called to sync the target's nanites to a given nanite component -#define COMSIG_NANITE_SYNC "nanite_sync" - // /datum/component/storage signals ///() - returns bool. diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 863c65f05ce..755f30e908a 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -14,7 +14,6 @@ #define INVESTIGATE_HALLUCINATIONS "hallucinations" #define INVESTIGATE_RADIATION "radiation" #define INVESTIGATE_EXONET "exonet" -#define INVESTIGATE_NANITES "nanites" #define INVESTIGATE_PRESENTS "presents" #define INVESTIGATE_HYPERTORUS "hypertorus" #define INVESTIGATE_ACCESSCHANGES "id_card_changes" diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 0958d7472ce..6e47918df52 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -41,7 +41,6 @@ #define BIOGENERATOR (1<<4) //Uses biomass #define LIMBGROWER (1<<5) //Uses synthetic flesh #define SMELTER (1<<6) //uses various minerals -#define NANITE_COMPILER (1<<7) //Prints nanite disks /// Protolathes for offstation roles. More limited tech tree. #define AWAY_LATHE (1<<8) /// Imprinters for offstation roles. More limited tech tree. diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 50fa8e13b8e..6cc07276f5b 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -485,7 +485,6 @@ GLOBAL_LIST_INIT(pda_styles, sortList(list(MONO, VT, ORBITRON, SHARE))) #define VOMIT_TOXIC 1 #define VOMIT_PURPLE 2 -#define VOMIT_NANITE 3 //chem grenades defines #define GRENADE_EMPTY 1 diff --git a/code/__DEFINES/nanites.dm b/code/__DEFINES/nanites.dm deleted file mode 100644 index abd2327dd52..00000000000 --- a/code/__DEFINES/nanites.dm +++ /dev/null @@ -1,53 +0,0 @@ -#define NANITE_SYNC_DELAY 300 - -#define NANITE_SHOCK_IMMUNE 1 -#define NANITE_EMP_IMMUNE 2 - -#define NANITE_PROGRAM_LIMIT 20 - - -#define NANITE_BASE_RESEARCH 3.5 - -#define NANITE_CLOUD_TOGGLE 1 -#define NANITE_CLOUD_DISABLE 2 -#define NANITE_CLOUD_ENABLE 3 - -//Nanite excess thresholds -#define NANITE_EXCESS_MINOR 25 -#define NANITE_EXCESS_VOMIT 100 -#define NANITE_EXCESS_BURST 350 - -///Nanite Protocol types -#define NANITE_PROTOCOL_REPLICATION "nanite_replication" -#define NANITE_PROTOCOL_STORAGE "nanite_storage" - -///Nanite extra settings types: used to help uis know what type an extra setting is -#define NESTYPE_TEXT "text" -#define NESTYPE_NUMBER "number" -#define NESTYPE_TYPE "type" -#define NESTYPE_BOOLEAN "boolean" - -///Nanite Extra Settings - Note that these will also be the names displayed in the UI -#define NES_SENT_CODE "Sent Code" -#define NES_DELAY "Delay" -#define NES_MODE "Mode" -#define NES_COMM_CODE "Comm Code" -#define NES_RELAY_CHANNEL "Relay Channel" -#define NES_HEALTH_PERCENT "Health Percent" -#define NES_DIRECTION "Direction" -#define NES_NANITE_PERCENT "Nanite Percent" -#define NES_DAMAGE_TYPE "Damage Type" -#define NES_DAMAGE "Damage" -#define NES_SENTENCE "Sentence" -#define NES_MESSAGE "Message" -#define NES_DIRECTIVE "Directive" -#define NES_INCLUSIVE_MODE "Inclusive Mode" -#define NES_RACE "Race" -#define NES_HALLUCINATION_TYPE "Hallucination Type" -#define NES_HALLUCINATION_DETAIL "Hallucination Detail" -#define NES_MOOD_MESSAGE "Mood Message" -#define NES_PROGRAM_OVERWRITE "Program Overwrite" -#define NES_CLOUD_OVERWRITE "Cloud Overwrite" -#define NES_SCAN_TYPE "Scan Type" -#define NES_BUTTON_NAME "Button Name" -#define NES_ICON "Icon" diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm index d8db678bc29..a43053e262c 100644 --- a/code/__DEFINES/research.dm +++ b/code/__DEFINES/research.dm @@ -22,14 +22,12 @@ //! Techweb names for new point types. Can be used to define specific point values for specific types of research (science, security, engineering, etc.) #define TECHWEB_POINT_TYPE_GENERIC "General Research" -#define TECHWEB_POINT_TYPE_NANITES "Nanite Research" #define TECHWEB_POINT_TYPE_DEFAULT TECHWEB_POINT_TYPE_GENERIC //! Associative names for techweb point values, see: [all_nodes][code/modules/research/techweb/all_nodes.dm] #define TECHWEB_POINT_TYPE_LIST_ASSOCIATIVE_NAMES list(\ TECHWEB_POINT_TYPE_GENERIC = "General Research",\ - TECHWEB_POINT_TYPE_NANITES = "Nanite Research"\ ) /// Amount of cash you can get from a maxcap diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 4c740d88bb5..c499c088f23 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -293,8 +293,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_PERMANENTLY_ONFIRE "permanently_onfire" /// Galactic Common Sign Language #define TRAIT_SIGN_LANG "sign_language" -/// The mob's nanites are sending a monitoring signal visible on diag HUD -#define TRAIT_NANITE_MONITORING "nanite_monitoring" /// nobody can use martial arts on this mob #define TRAIT_MARTIAL_ARTS_IMMUNE "martial_arts_immune" /// You've been cursed with a living duffelbag, and can't have more added @@ -598,7 +596,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define GENETICS_SPELL "genetics_spell" #define EYES_COVERED "eyes_covered" #define HYPNOCHAIR_TRAIT "hypnochair" -#define NANITES_TRAIT "nanites" #define FLASHLIGHT_EYES "flashlight_eyes" #define IMPURE_OCULINE "impure_oculine" #define BLINDFOLD_TRAIT "blindfolded" diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 5669eba92aa..1ccd4a338e0 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -39,7 +39,6 @@ GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs GLOBAL_LIST_EMPTY(bots_list) GLOBAL_LIST_EMPTY(aiEyes) GLOBAL_LIST_EMPTY(suit_sensors_list) //all people with suit sensors on -GLOBAL_LIST_EMPTY(nanite_sensors_list) //app people with nanite monitoring program /// All alive mobs with clients. GLOBAL_LIST_EMPTY(alive_player_list) diff --git a/code/controllers/subsystem/processing/nanites.dm b/code/controllers/subsystem/processing/nanites.dm deleted file mode 100644 index b8109a904af..00000000000 --- a/code/controllers/subsystem/processing/nanites.dm +++ /dev/null @@ -1,22 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(nanites) - name = "Nanites" - flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT - wait = 1 SECONDS - - var/list/datum/nanite_cloud_backup/cloud_backups = list() - var/list/mob/living/nanite_monitored_mobs = list() - var/list/datum/nanite_program/relay/nanite_relays = list() - var/neural_network_count = 0 - -/datum/controller/subsystem/processing/nanites/proc/check_hardware(datum/nanite_cloud_backup/backup) - if(QDELETED(backup.storage) || (backup.storage.machine_stat & (NOPOWER|BROKEN))) - return FALSE - return TRUE - -/datum/controller/subsystem/processing/nanites/proc/get_cloud_backup(cloud_id, force = FALSE) - for(var/I in cloud_backups) - var/datum/nanite_cloud_backup/backup = I - if(!force && !check_hardware(backup)) - return - if(backup.cloud_id == cloud_id) - return backup diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm deleted file mode 100644 index 4004e1b0a12..00000000000 --- a/code/datums/components/nanites.dm +++ /dev/null @@ -1,479 +0,0 @@ -#define HARMONIC_REGEN_BOOST 0.1 - -/datum/component/nanites - dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS - - var/mob/living/host_mob - var/nanite_volume = 100 //amount of nanites in the system, used as fuel for nanite programs - var/max_nanites = 500 //maximum amount of nanites in the system - var/regen_rate = 0.5 //nanites generated per second - var/safety_threshold = 50 //how low nanites will get before they stop processing/triggering - var/cloud_id = 0 //0 if not connected to the cloud, 1-100 to set a determined cloud backup to draw from - var/cloud_active = TRUE //if false, won't sync to the cloud - var/next_sync = 0 - var/list/datum/nanite_program/programs = list() - var/max_programs = NANITE_PROGRAM_LIMIT - - var/list/datum/nanite_program/protocol/protocols = list() ///Separate list of protocol programs, to avoid looping through the whole programs list when cheking for conflicts - var/start_time = 0 ///Timestamp to when the nanites were first inserted in the host - var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans - var/diagnostics = FALSE //if TRUE, displays program list when scanned by nanite scanners - -/datum/component/nanites/Initialize(amount = 100, cloud = 0) - if(!isliving(parent) && !istype(parent, /datum/nanite_cloud_backup)) - return COMPONENT_INCOMPATIBLE - - nanite_volume = amount - cloud_id = cloud - - //Nanites without hosts are non-interactive through normal means - if(isliving(parent)) - host_mob = parent - - if(!(host_mob.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD))) //Shouldn't happen, but this avoids HUD runtimes in case a silicon gets them somehow. - return COMPONENT_INCOMPATIBLE - - start_time = world.time - - host_mob.hud_set_nanite_indicator() - START_PROCESSING(SSnanites, src) - - if(cloud_id && cloud_active) - cloud_sync() - -/datum/component/nanites/RegisterWithParent() - RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites) - RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY, .proc/check_stealth) - RegisterSignal(parent, COMSIG_NANITE_DELETE, .proc/delete_nanites) - RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data) - RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs) - RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, .proc/set_volume) - RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, .proc/adjust_nanites) - RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, .proc/set_max_volume) - RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, .proc/set_cloud) - RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC, .proc/set_cloud_sync) - RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, .proc/set_safety) - RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, .proc/set_regen) - RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, .proc/add_program) - RegisterSignal(parent, COMSIG_NANITE_SCAN, .proc/nanite_scan) - RegisterSignal(parent, COMSIG_NANITE_SYNC, .proc/sync) - - if(isliving(parent)) - RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp) - RegisterSignal(parent, COMSIG_LIVING_DEATH, .proc/on_death) - RegisterSignal(parent, COMSIG_MOB_ALLOWED, .proc/check_access) - RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_shock) - RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, .proc/on_minor_shock) - RegisterSignal(parent, COMSIG_SPECIES_GAIN, .proc/check_viable_biotype) - RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal) - RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL, .proc/receive_comm_signal) - -/datum/component/nanites/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_HAS_NANITES, - COMSIG_NANITE_IS_STEALTHY, - COMSIG_NANITE_DELETE, - COMSIG_NANITE_UI_DATA, - COMSIG_NANITE_GET_PROGRAMS, - COMSIG_NANITE_SET_VOLUME, - COMSIG_NANITE_ADJUST_VOLUME, - COMSIG_NANITE_SET_MAX_VOLUME, - COMSIG_NANITE_SET_CLOUD, - COMSIG_NANITE_SET_CLOUD_SYNC, - COMSIG_NANITE_SET_SAFETY, - COMSIG_NANITE_SET_REGEN, - COMSIG_NANITE_ADD_PROGRAM, - COMSIG_NANITE_SCAN, - COMSIG_NANITE_SYNC, - COMSIG_ATOM_EMP_ACT, - COMSIG_LIVING_DEATH, - COMSIG_MOB_ALLOWED, - COMSIG_LIVING_ELECTROCUTE_ACT, - COMSIG_LIVING_MINOR_SHOCK, - COMSIG_MOVABLE_HEAR, - COMSIG_SPECIES_GAIN, - COMSIG_NANITE_SIGNAL, - COMSIG_NANITE_COMM_SIGNAL)) - -/datum/component/nanites/Destroy() - STOP_PROCESSING(SSnanites, src) - QDEL_LIST(programs) - if(host_mob) - set_nanite_bar(TRUE) - host_mob.hud_set_nanite_indicator() - host_mob = null - return ..() - -/datum/component/nanites/InheritComponent(datum/component/nanites/new_nanites, i_am_original, amount, cloud) - if(new_nanites) - adjust_nanites(null, new_nanites.nanite_volume) - else - adjust_nanites(null, amount) //just add to the nanite volume - -/datum/component/nanites/process(delta_time) - if(!IS_IN_STASIS(host_mob)) - adjust_nanites(null, (regen_rate + (SSresearch.science_tech.researched_nodes["nanite_harmonic"] ? HARMONIC_REGEN_BOOST : 0)) * delta_time) - add_research() - for(var/X in programs) - var/datum/nanite_program/NP = X - NP.on_process() - if(cloud_id && cloud_active && world.time > next_sync) - cloud_sync() - next_sync = world.time + NANITE_SYNC_DELAY - set_nanite_bar() - -///Deletes nanites! -/datum/component/nanites/proc/delete_nanites() - SIGNAL_HANDLER - - qdel(src) - -///Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status) -/datum/component/nanites/proc/sync(datum/signal_source, datum/component/nanites/source, full_overwrite = TRUE, copy_activation = FALSE) - SIGNAL_HANDLER - - var/list/programs_to_remove = programs.Copy() - var/list/programs_to_add = source.programs.Copy() - for(var/X in programs) - var/datum/nanite_program/NP = X - for(var/Y in programs_to_add) - var/datum/nanite_program/SNP = Y - if(NP.type == SNP.type) - programs_to_remove -= NP - programs_to_add -= SNP - SNP.copy_programming(NP, copy_activation) - break - if(full_overwrite) - for(var/X in programs_to_remove) - qdel(X) - for(var/X in programs_to_add) - var/datum/nanite_program/SNP = X - add_program(null, SNP.copy()) - -///Syncs the nanites to their assigned cloud copy, if it is available. If it is not, there is a small chance of a software error instead. -/datum/component/nanites/proc/cloud_sync() - if(cloud_id) - var/datum/nanite_cloud_backup/backup = SSnanites.get_cloud_backup(cloud_id) - if(backup) - var/datum/component/nanites/cloud_copy = backup.nanites - if(cloud_copy) - sync(null, cloud_copy) - return - //Without cloud syncing nanites can accumulate errors and/or defects - if(prob(8) && programs.len) - var/datum/nanite_program/NP = pick(programs) - NP.software_error() - -///Adds a nanite program, replacing existing unique programs of the same type. A source program can be specified to copy its programming onto the new one. -/datum/component/nanites/proc/add_program(datum/source, datum/nanite_program/new_program, datum/nanite_program/source_program) - SIGNAL_HANDLER - - for(var/X in programs) - var/datum/nanite_program/NP = X - if(NP.unique && NP.type == new_program.type) - qdel(NP) - if(programs.len >= max_programs) - return COMPONENT_PROGRAM_NOT_INSTALLED - if(source_program) - source_program.copy_programming(new_program) - programs += new_program - new_program.on_add(src) - return COMPONENT_PROGRAM_INSTALLED - -/datum/component/nanites/proc/consume_nanites(amount, force = FALSE) - if(!force && safety_threshold && (nanite_volume - amount < safety_threshold)) - return FALSE - adjust_nanites(null, -amount) - return (nanite_volume > 0) - -///Modifies the current nanite volume, then checks if the nanites are depleted or exceeding the maximum amount -/datum/component/nanites/proc/adjust_nanites(datum/source, amount) - SIGNAL_HANDLER - - nanite_volume += amount - if(nanite_volume > max_nanites) - reject_excess_nanites() - if(nanite_volume <= 0) //oops we ran out - qdel(src) - -/** - * Handles how nanites leave the host's body if they find out that they're currently exceeding the maximum supported amount - * - * IC explanation: - * Normally nanites simply discard excess volume by slowing replication or 'sweating' it out in imperceptible amounts, - * but if there is a large excess volume, likely due to a programming change that leaves them unable to support their current volume, - * the nanites attempt to leave the host as fast as necessary to prevent nanite poisoning. This can range from minor oozing to nanites - * rapidly bursting out from every possible pathway, causing temporary inconvenience to the host. - */ -/datum/component/nanites/proc/reject_excess_nanites() - var/excess = nanite_volume - max_nanites - nanite_volume = max_nanites - - switch(excess) - if(0 to NANITE_EXCESS_MINOR) //Minor excess amount, the extra nanites are quietly expelled without visible effects - return - if((NANITE_EXCESS_MINOR + 0.1) to NANITE_EXCESS_VOMIT) //Enough nanites getting rejected at once to be visible to the naked eye - host_mob.visible_message(span_warning("A grainy grey slurry starts oozing out of [host_mob]."), span_warning("A grainy grey slurry starts oozing out of your skin."), null, 4); - if((NANITE_EXCESS_VOMIT + 0.1) to NANITE_EXCESS_BURST) //Nanites getting rejected in massive amounts, but still enough to make a semi-orderly exit through vomit - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - host_mob.visible_message(span_warning("[host_mob] vomits a grainy grey slurry!"), span_warning("You suddenly vomit a metallic-tasting grainy grey slurry!"), null); - C.vomit(0, FALSE, TRUE, FLOOR(excess / 100, 1), FALSE, VOMIT_NANITE, FALSE, TRUE, 0) - else - host_mob.visible_message(span_warning("A metallic grey slurry bursts out of [host_mob]'s skin!"), span_userdanger("A metallic grey slurry violently bursts out of your skin!"), null); - if(isturf(host_mob.drop_location())) - var/turf/T = host_mob.drop_location() - T.add_vomit_floor(host_mob, VOMIT_NANITE, 0) - if((NANITE_EXCESS_BURST + 0.1) to INFINITY) //Way too many nanites, they just leave through the closest exit before they harm/poison the host - host_mob.visible_message(span_warning("A torrent of metallic grey slurry violently bursts out of [host_mob]'s face and floods out of [host_mob.p_their()] skin!"), - span_userdanger("A torrent of metallic grey slurry violently bursts out of your eyes, ears, and mouth, and floods out of your skin!")); - - host_mob.blind_eyes(15) //nanites coming out of your eyes - host_mob.Paralyze(120) - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS) - if(ears) - ears.adjustEarDamage(0, 30) //nanites coming out of your ears - C.vomit(0, FALSE, TRUE, 2, FALSE, VOMIT_NANITE, FALSE, TRUE, 0) //nanites coming out of your mouth - - //nanites everywhere - if(isturf(host_mob.drop_location())) - var/turf/T = host_mob.drop_location() - T.add_vomit_floor(host_mob, VOMIT_NANITE, 0) - for(var/turf/adjacent_turf in oview(host_mob, 1)) - if(adjacent_turf.density || !adjacent_turf.Adjacent(T)) - continue - adjacent_turf.add_vomit_floor(host_mob, VOMIT_NANITE, 0) - -///Updates the nanite volume bar visible in diagnostic HUDs -/datum/component/nanites/proc/set_nanite_bar(remove = FALSE) - var/image/holder = host_mob.hud_list[DIAG_NANITE_FULL_HUD] - var/icon/I = icon(host_mob.icon, host_mob.icon_state, host_mob.dir) - holder.pixel_y = I.Height() - world.icon_size - holder.icon_state = null - if(remove || stealth) - return //bye icon - var/nanite_percent = (nanite_volume / max_nanites) * 100 - nanite_percent = clamp(CEILING(nanite_percent, 10), 10, 100) - holder.icon_state = "nanites[nanite_percent]" - -/datum/component/nanites/proc/on_emp(datum/source, severity) - SIGNAL_HANDLER - - nanite_volume *= (rand(60, 90) * 0.01) //Lose 10-40% of nanites - adjust_nanites(null, -(rand(5, 50))) //Lose 5-50 flat nanite volume - if(prob(40/severity)) - cloud_id = 0 - for(var/X in programs) - var/datum/nanite_program/NP = X - NP.on_emp(severity) - - -/datum/component/nanites/proc/on_shock(datum/source, shock_damage, siemens_coeff = 1, flags = NONE) - SIGNAL_HANDLER - - if(flags & SHOCK_ILLUSION || shock_damage < 1) - return - - if(!HAS_TRAIT_NOT_FROM(host_mob, TRAIT_SHOCKIMMUNE, "nanites"))//Another shock protection must protect nanites too, but nanites protect only host - nanite_volume *= (rand(45, 80) * 0.01) //Lose 20-55% of nanites - adjust_nanites(null, -(rand(5, 50))) //Lose 5-50 flat nanite volume - for(var/X in programs) - var/datum/nanite_program/NP = X - NP.on_shock(shock_damage) - -/datum/component/nanites/proc/on_minor_shock(datum/source) - SIGNAL_HANDLER - - adjust_nanites(null, -(rand(5, 15))) //Lose 5-15 flat nanite volume - for(var/X in programs) - var/datum/nanite_program/NP = X - NP.on_minor_shock() - -/datum/component/nanites/proc/check_stealth(datum/source) - SIGNAL_HANDLER - - return stealth - -/datum/component/nanites/proc/on_death(datum/source, gibbed) - SIGNAL_HANDLER - - for(var/X in programs) - var/datum/nanite_program/NP = X - NP.on_death(gibbed) - -/datum/component/nanites/proc/receive_signal(datum/source, code, source = "an unidentified source") - SIGNAL_HANDLER - - for(var/X in programs) - var/datum/nanite_program/NP = X - NP.receive_signal(code, source) - -/datum/component/nanites/proc/receive_comm_signal(datum/source, comm_code, comm_message, comm_source = "an unidentified source") - SIGNAL_HANDLER - - for(var/X in programs) - if(istype(X, /datum/nanite_program/comm)) - var/datum/nanite_program/comm/NP = X - NP.receive_comm_signal(comm_code, comm_message, comm_source) - -/datum/component/nanites/proc/check_viable_biotype() - SIGNAL_HANDLER - - if(!(host_mob.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD))) - qdel(src) //bodytype no longer sustains nanites - -/datum/component/nanites/proc/check_access(datum/source, obj/O) - SIGNAL_HANDLER - - for(var/datum/nanite_program/access/access_program in programs) - if(access_program.activated) - return O.check_access_list(access_program.access) - else - return FALSE - return FALSE - -/datum/component/nanites/proc/set_volume(datum/source, amount) - SIGNAL_HANDLER - - nanite_volume = clamp(amount, 0, max_nanites) - -/datum/component/nanites/proc/set_max_volume(datum/source, amount) - SIGNAL_HANDLER - - max_nanites = max(1, amount) - -/datum/component/nanites/proc/set_cloud(datum/source, amount) - SIGNAL_HANDLER - - cloud_id = clamp(amount, 0, 100) - -/datum/component/nanites/proc/set_cloud_sync(datum/source, method) - SIGNAL_HANDLER - - switch(method) - if(NANITE_CLOUD_TOGGLE) - cloud_active = !cloud_active - if(NANITE_CLOUD_DISABLE) - cloud_active = FALSE - if(NANITE_CLOUD_ENABLE) - cloud_active = TRUE - -/datum/component/nanites/proc/set_safety(datum/source, amount) - SIGNAL_HANDLER - - safety_threshold = clamp(amount, 0, max_nanites) - -/datum/component/nanites/proc/set_regen(datum/source, amount) - SIGNAL_HANDLER - - regen_rate = amount - -/datum/component/nanites/proc/confirm_nanites() - SIGNAL_HANDLER - - return TRUE //yup i exist - -/datum/component/nanites/proc/get_programs(datum/source, list/nanite_programs) - SIGNAL_HANDLER - - nanite_programs |= programs - -/datum/component/nanites/proc/add_research() - var/research_value = NANITE_BASE_RESEARCH - if(!ishuman(host_mob)) - if(!iscarbon(host_mob)) - research_value *= 0.4 - else - research_value *= 0.8 - if(!host_mob.client) - research_value *= 0.5 - if(host_mob.stat == DEAD) - research_value *= 0.75 - SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_NANITES = research_value)) - -/datum/component/nanites/proc/nanite_scan(datum/source, mob/user, full_scan) - SIGNAL_HANDLER - - if(!full_scan) - if(!stealth) - to_chat(user, span_notice("Nanites Detected")) - to_chat(user, span_notice("Saturation: [nanite_volume]/[max_nanites]")) - return TRUE - else - to_chat(user, span_info("NANITES DETECTED")) - to_chat(user, span_info("================")) - to_chat(user, span_info("Saturation: [nanite_volume]/[max_nanites]")) - to_chat(user, span_info("Safety Threshold: [safety_threshold]")) - to_chat(user, span_info("Cloud ID: [cloud_id ? cloud_id : "None"]")) - to_chat(user, span_info("Cloud Sync: [cloud_active ? "Active" : "Disabled"]")) - to_chat(user, span_info("================")) - to_chat(user, span_info("Program List:")) - if(!diagnostics) - to_chat(user, span_alert("Nanite debugging disabled.")) - else - for(var/X in programs) - var/datum/nanite_program/NP = X - to_chat(user, span_info("[NP.name] | [NP.activated ? "Active" : "Inactive"]")) - return TRUE - -/datum/component/nanites/proc/nanite_ui_data(datum/source, list/data, scan_level) - SIGNAL_HANDLER - - data["has_nanites"] = TRUE - data["nanite_volume"] = nanite_volume - data["regen_rate"] = regen_rate + (SSresearch.science_tech.researched_nodes["nanite_harmonic"] ? HARMONIC_REGEN_BOOST : 0) - data["safety_threshold"] = safety_threshold - data["cloud_id"] = cloud_id - data["cloud_active"] = cloud_active - var/list/mob_programs = list() - var/id = 1 - for(var/X in programs) - var/datum/nanite_program/P = X - var/list/mob_program = list() - mob_program["name"] = P.name - mob_program["desc"] = P.desc - mob_program["id"] = id - - if(scan_level >= 2) - mob_program["activated"] = P.activated - mob_program["use_rate"] = P.use_rate - mob_program["can_trigger"] = P.can_trigger - mob_program["trigger_cost"] = P.trigger_cost - mob_program["trigger_cooldown"] = P.trigger_cooldown / 10 - - if(scan_level >= 3) - mob_program["timer_restart"] = P.timer_restart / 10 - mob_program["timer_shutdown"] = P.timer_shutdown / 10 - mob_program["timer_trigger"] = P.timer_trigger / 10 - mob_program["timer_trigger_delay"] = P.timer_trigger_delay / 10 - var/list/extra_settings = P.get_extra_settings_frontend() - mob_program["extra_settings"] = extra_settings - if(LAZYLEN(extra_settings)) - mob_program["has_extra_settings"] = TRUE - else - mob_program["has_extra_settings"] = FALSE - - if(scan_level >= 4) - mob_program["activation_code"] = P.activation_code - mob_program["deactivation_code"] = P.deactivation_code - mob_program["kill_code"] = P.kill_code - mob_program["trigger_code"] = P.trigger_code - var/list/rules = list() - var/rule_id = 1 - for(var/Z in P.rules) - var/datum/nanite_rule/nanite_rule = Z - var/list/rule = list() - rule["display"] = nanite_rule.display() - rule["program_id"] = id - rule["id"] = rule_id - rules += list(rule) - rule_id++ - mob_program["rules"] = rules - if(LAZYLEN(rules)) - mob_program["has_rules"] = TRUE - id++ - mob_programs += list(mob_program) - data["mob_programs"] = mob_programs - -#undef HARMONIC_REGEN_BOOST diff --git a/code/datums/diseases/advance/symptoms/nanites.dm b/code/datums/diseases/advance/symptoms/nanites.dm deleted file mode 100644 index 1ca11b28e27..00000000000 --- a/code/datums/diseases/advance/symptoms/nanites.dm +++ /dev/null @@ -1,71 +0,0 @@ -/datum/symptom/nano_boost - name = "Nano-symbiosis" - desc = "The virus reacts to nanites in the host's bloodstream by enhancing their replication cycle." - stealth = 0 - resistance = 2 - stage_speed = 2 - transmittable = -1 - level = 7 - severity = 0 - symptom_delay_min = 1 - symptom_delay_max = 1 - var/reverse_boost = FALSE - threshold_descs = list( - "Transmission 5" = "Increases the virus' growth rate while nanites are present.", - "Stage Speed 7" = "Increases the replication boost." - ) - -/datum/symptom/nano_boost/Start(datum/disease/advance/A) - . = ..() - if(!.) - return - if(A.totalTransmittable() >= 5) //reverse boost - reverse_boost = TRUE - if(A.totalStageSpeed() >= 7) //more nanites - power = 2 - -/datum/symptom/nano_boost/Activate(datum/disease/advance/A) - . = ..() - if(!.) - return - var/mob/living/carbon/M = A.affected_mob - SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, 0.5 * power) - if(reverse_boost && SEND_SIGNAL(M, COMSIG_HAS_NANITES)) - if(prob(A.stage_prob)) - A.stage = min(A.stage + 1,A.max_stages) - -/datum/symptom/nano_destroy - name = "Silicolysis" - desc = "The virus reacts to nanites in the host's bloodstream by attacking and consuming them." - stealth = 0 - resistance = 4 - stage_speed = -1 - transmittable = 1 - level = 7 - severity = 0 - symptom_delay_min = 1 - symptom_delay_max = 1 - var/reverse_boost = FALSE - threshold_descs = list( - "Stage Speed 5" = "Increases the virus' growth rate while nanites are present.", - "Resistance 7" = "Severely increases the rate at which the nanites are destroyed." - ) - -/datum/symptom/nano_destroy/Start(datum/disease/advance/A) - . = ..() - if(!.) - return - if(A.totalStageSpeed() >= 5) //reverse boost - reverse_boost = TRUE - if(A.totalResistance() >= 7) //more nanites - power = 3 - -/datum/symptom/nano_destroy/Activate(datum/disease/advance/A) - . = ..() - if(!.) - return - var/mob/living/carbon/M = A.affected_mob - SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, -0.4 * power) - if(reverse_boost && SEND_SIGNAL(M, COMSIG_HAS_NANITES)) - if(prob(A.stage_prob)) - A.stage = min(A.stage + 1,A.max_stages) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index cb6774ee6b6..b9e02d4a074 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -279,13 +279,6 @@ description = "THEY'RE CUTTING ME OPEN!!\n" mood_change = -8 -/datum/mood_event/nanite_sadness - description = "+++++++HAPPINESS SUPPRESSION+++++++\n" - mood_change = -7 - -/datum/mood_event/nanite_sadness/add_effects(message) - description = "+++++++[message]+++++++\n" - /datum/mood_event/bald description = "I need something to cover my head...\n" mood_change = -3 diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 5be193843ed..ef8db10eefa 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -186,13 +186,6 @@ description = "What a peculiar emblem. It makes me feel hopeful for my future.\n" mood_change = 10 -/datum/mood_event/nanite_happiness - description = "+++++++HAPPINESS ENHANCEMENT+++++++\n" - mood_change = 7 - -/datum/mood_event/nanite_happiness/add_effects(message) - description = "+++++++[message]+++++++\n" - /datum/mood_event/area description = "" //Fill this out in the area mood_change = 0 diff --git a/code/game/area/space_station_13_areas.dm b/code/game/area/space_station_13_areas.dm index 967bcb5255b..307ddf61fe0 100644 --- a/code/game/area/space_station_13_areas.dm +++ b/code/game/area/space_station_13_areas.dm @@ -1413,10 +1413,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "abandoned_sci" sound_environment = SOUND_AREA_SMALL_ENCLOSED -/area/science/nanite - name = "Nanite Lab" - icon_state = "nanite" - // Telecommunications Satellite /area/tcommsat diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 50b0770604b..5da00a215bd 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -18,7 +18,7 @@ /datum/atom_hud/data /datum/atom_hud/data/human/medical - hud_icons = list(STATUS_HUD, HEALTH_HUD, NANITE_HUD) + hud_icons = list(STATUS_HUD, HEALTH_HUD) /datum/atom_hud/data/human/medical/basic @@ -47,7 +47,7 @@ hud_icons = list(ID_HUD) /datum/atom_hud/data/human/security/advanced - hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD, NANITE_HUD) + hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD) /datum/atom_hud/data/human/fan_hud hud_icons = list(FAN_HUD) @@ -55,10 +55,10 @@ /datum/atom_hud/data/diagnostic /datum/atom_hud/data/diagnostic/basic - hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD, DIAG_LAUNCHPAD_HUD) + hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_LAUNCHPAD_HUD) /datum/atom_hud/data/diagnostic/advanced - hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD, DIAG_LAUNCHPAD_HUD, DIAG_PATH_HUD) + hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_LAUNCHPAD_HUD, DIAG_PATH_HUD) /datum/atom_hud/data/bot_path hud_icons = list(DIAG_PATH_HUD) @@ -300,14 +300,6 @@ Security HUDs! Basic mode shows only the job. Diagnostic HUDs! ************************************************/ -/mob/living/proc/hud_set_nanite_indicator() - var/image/holder = hud_list[NANITE_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - world.icon_size - holder.icon_state = null - if(HAS_TRAIT(src, TRAIT_NANITE_MONITORING)) - holder.icon_state = "nanite_ping" - //For Diag health and cell bars! /proc/RoundDiagBar(value) switch(value * 100) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 4ad557c379f..8978260532e 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -189,9 +189,9 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) return data_by_z["[z]"] var/list/results = list() - for(var/tracked_mob in GLOB.suit_sensors_list | GLOB.nanite_sensors_list) + for(var/tracked_mob in GLOB.suit_sensors_list) if(!tracked_mob) - stack_trace("Null entry in suit sensors or nanite sensors list.") + stack_trace("Null entry in suit sensors list.") continue var/mob/living/tracked_living_mob = tracked_mob @@ -208,31 +208,25 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) if(pos.z != z && (!is_station_level(pos.z) || !is_station_level(z))) continue - var/sensor_mode + var/mob/living/carbon/human/tracked_human = tracked_living_mob - // Set sensor level based on whether we're in the nanites list or the suit sensor list. - if(tracked_living_mob in GLOB.nanite_sensors_list) - sensor_mode = SENSOR_COORDS - else - var/mob/living/carbon/human/tracked_human = tracked_living_mob + // Check their humanity. + if(!ishuman(tracked_human)) + stack_trace("Non-human mob is in suit_sensors_list: [tracked_living_mob] ([tracked_living_mob.type])") + continue - // Check their humanity. - if(!ishuman(tracked_human)) - stack_trace("Non-human mob is in suit_sensors_list: [tracked_living_mob] ([tracked_living_mob.type])") - continue + // Check they have a uniform + var/obj/item/clothing/under/uniform = tracked_human.w_uniform + if (!istype(uniform)) + stack_trace("Human without a suit sensors compatible uniform is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform?.type])") + continue - // Check they have a uniform - var/obj/item/clothing/under/uniform = tracked_human.w_uniform - if (!istype(uniform)) - stack_trace("Human without a suit sensors compatible uniform is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform?.type])") - continue + // Check if their uniform is in a compatible mode. + if((uniform.has_sensor <= NO_SENSORS) || !uniform.sensor_mode) + stack_trace("Human without active suit sensors is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform.type])") + continue - // Check if their uniform is in a compatible mode. - if((uniform.has_sensor <= NO_SENSORS) || !uniform.sensor_mode) - stack_trace("Human without active suit sensors is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform.type])") - continue - - sensor_mode = uniform.sensor_mode + var/sensor_mode = uniform.sensor_mode // The entry for this human var/list/entry = list( diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm index 9fd3f0d8519..c052f69fe77 100644 --- a/code/game/machinery/scan_gate.dm +++ b/code/game/machinery/scan_gate.dm @@ -1,6 +1,5 @@ #define SCANGATE_NONE "Off" #define SCANGATE_MINDSHIELD "Mindshield" -#define SCANGATE_NANITES "Nanites" #define SCANGATE_DISEASE "Disease" #define SCANGATE_GUNS "Guns" #define SCANGATE_WANTED "Wanted" @@ -36,8 +35,6 @@ var/scangate_mode = SCANGATE_NONE ///Is searching for a disease, what severity is enough to trigger the gate? var/disease_threshold = DISEASE_SEVERITY_MINOR - ///If scanning for a nanite strain, what cloud is it looking for? - var/nanite_cloud = 1 ///If scanning for a specific species, what species is it looking for? var/detect_species = SCANGATE_HUMAN ///Flips all scan results for inverse scanning. Signals if scan returns false. @@ -134,14 +131,6 @@ if(SCANGATE_MINDSHIELD) if(HAS_TRAIT(M, TRAIT_MINDSHIELD)) beep = TRUE - if(SCANGATE_NANITES) - if(SEND_SIGNAL(M, COMSIG_HAS_NANITES)) - if(nanite_cloud) - var/datum/component/nanites/nanites = M.GetComponent(/datum/component/nanites) - if(nanites && nanites.cloud_id == nanite_cloud) - beep = TRUE - else - beep = TRUE if(SCANGATE_DISEASE) if(iscarbon(M)) var/mob/living/carbon/C = M @@ -227,7 +216,6 @@ data["locked"] = locked data["scan_mode"] = scangate_mode data["reverse"] = reverse - data["nanite_cloud"] = nanite_cloud data["disease_threshold"] = disease_threshold data["target_species"] = detect_species data["target_nutrition"] = detect_nutrition @@ -254,10 +242,6 @@ var/new_threshold = params["new_threshold"] disease_threshold = new_threshold . = TRUE - if("set_nanite_cloud") - var/new_cloud = text2num(params["new_cloud"]) - nanite_cloud = clamp(round(new_cloud, 1), 1, 100) - . = TRUE //Some species are not scannable, like abductors (too unknown), androids (too artificial) or skeletons (too magic) if("set_target_species") var/new_species = params["new_species"] @@ -279,7 +263,6 @@ #undef SCANGATE_NONE #undef SCANGATE_MINDSHIELD -#undef SCANGATE_NANITES #undef SCANGATE_DISEASE #undef SCANGATE_GUNS #undef SCANGATE_WANTED diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 9e52d8279dc..9bf1f1ed282 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -489,11 +489,6 @@ /obj/item/circuitboard/computer/teleporter, /obj/item/circuitboard/machine/destructive_analyzer, /obj/item/circuitboard/computer/rdconsole, - /obj/item/circuitboard/computer/nanite_chamber_control, - /obj/item/circuitboard/computer/nanite_cloud_controller, - /obj/item/circuitboard/machine/nanite_chamber, - /obj/item/circuitboard/machine/nanite_programmer, - /obj/item/circuitboard/machine/nanite_program_hub, /obj/item/circuitboard/computer/scan_consolenew, /obj/item/circuitboard/machine/dnascanner ) diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 6c01db3872d..b37d5c7d87c 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -364,16 +364,6 @@ greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/computer/mecha -/obj/item/circuitboard/computer/nanite_chamber_control - name = "Nanite Chamber Control (Computer Board)" - greyscale_colors = CIRCUIT_COLOR_SCIENCE - build_path = /obj/machinery/computer/nanite_chamber_control - -/obj/item/circuitboard/computer/nanite_cloud_controller - name = "Nanite Cloud Control (Computer Board)" - greyscale_colors = CIRCUIT_COLOR_SCIENCE - build_path = /obj/machinery/computer/nanite_cloud_controller - /obj/item/circuitboard/computer/rdconsole name = "R&D Console (Computer Board)" greyscale_colors = CIRCUIT_COLOR_SCIENCE diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 9a8c25187b3..a43f6bd92fe 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -885,32 +885,6 @@ /obj/item/stock_parts/manipulator = 1) needs_anchored = FALSE -/obj/item/circuitboard/machine/nanite_chamber - name = "Nanite Chamber (Machine Board)" - greyscale_colors = CIRCUIT_COLOR_SCIENCE - build_path = /obj/machinery/nanite_chamber - req_components = list( - /obj/item/stock_parts/scanning_module = 2, - /obj/item/stock_parts/micro_laser = 2, - /obj/item/stock_parts/manipulator = 1) - -/obj/item/circuitboard/machine/nanite_program_hub - name = "Nanite Program Hub (Machine Board)" - greyscale_colors = CIRCUIT_COLOR_SCIENCE - build_path = /obj/machinery/nanite_program_hub - req_components = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/stock_parts/manipulator = 1) - -/obj/item/circuitboard/machine/nanite_programmer - name = "Nanite Programmer (Machine Board)" - greyscale_colors = CIRCUIT_COLOR_SCIENCE - build_path = /obj/machinery/nanite_programmer - req_components = list( - /obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/micro_laser = 2, - /obj/item/stock_parts/scanning_module = 1) - /obj/item/circuitboard/machine/processor/slime name = "Slime Processor (Machine Board)" greyscale_colors = CIRCUIT_COLOR_SCIENCE @@ -921,27 +895,6 @@ greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/rnd/production/protolathe/department/science -/obj/item/circuitboard/machine/public_nanite_chamber - name = "Public Nanite Chamber (Machine Board)" - greyscale_colors = CIRCUIT_COLOR_SCIENCE - build_path = /obj/machinery/public_nanite_chamber - var/cloud_id = 1 - req_components = list( - /obj/item/stock_parts/micro_laser = 2, - /obj/item/stock_parts/manipulator = 1) - -/obj/item/circuitboard/machine/public_nanite_chamber/multitool_act(mob/living/user) - . = ..() - var/new_cloud = input("Set the public nanite chamber's Cloud ID (1-100).", "Cloud ID", cloud_id) as num|null - if(!new_cloud || (loc != user)) - to_chat(user, span_warning("You must hold the circuitboard to change its Cloud ID!")) - return - cloud_id = clamp(round(new_cloud, 1), 1, 100) - -/obj/item/circuitboard/machine/public_nanite_chamber/examine(mob/user) - . = ..() - . += "Cloud ID is currently set to [cloud_id]." - /obj/item/circuitboard/machine/quantumpad name = "Quantum Pad (Machine Board)" greyscale_colors = CIRCUIT_COLOR_SCIENCE diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 5b76faea2f2..183022b1712 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -6,7 +6,6 @@ T-RAY HEALTH ANALYZER GAS ANALYZER SLIME SCANNER -NANITE SCANNER GENE SCANNER */ @@ -412,7 +411,6 @@ GENE SCANNER render_list += "Detected cybernetic modifications:\n" render_list += "[cyberimp_detect]\n" - SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE) to_chat(user, jointext(render_list, ""), trailing_newline = FALSE) // we handled the last
so we don't need handholding /proc/chemscan(mob/living/user, mob/living/M) @@ -778,35 +776,6 @@ GENE SCANNER \n[span_notice("Progress in core mutation: [T.applied] / [SLIME_EXTRACT_CROSSING_REQUIRED]")]" to_chat(user, to_render + "\n========================") - -/obj/item/nanite_scanner - name = "nanite scanner" - icon = 'icons/obj/device.dmi' - icon_state = "nanite_scanner" - inhand_icon_state = "electronic" - worn_icon_state = "electronic" - lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - desc = "A hand-held body scanner able to detect nanites and their programming." - flags_1 = CONDUCT_1 - item_flags = NOBLUDGEON - slot_flags = ITEM_SLOT_BELT - throwforce = 3 - w_class = WEIGHT_CLASS_TINY - throw_speed = 3 - throw_range = 7 - custom_materials = list(/datum/material/iron=200) - -/obj/item/nanite_scanner/attack(mob/living/M, mob/living/carbon/human/user) - user.visible_message(span_notice("[user] analyzes [M]'s nanites."), \ - span_notice("You analyze [M]'s nanites.")) - - add_fingerprint(user) - - var/response = SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, TRUE) - if(!response) - to_chat(user, span_info("No nanites detected in the subject.")) - /obj/item/sequence_scanner name = "genetic sequence scanner" icon = 'icons/obj/device.dmi' diff --git a/code/game/objects/items/implants/implant_deathrattle.dm b/code/game/objects/items/implants/implant_deathrattle.dm index dd41812cb5c..a7afe701c2a 100644 --- a/code/game/objects/items/implants/implant_deathrattle.dm +++ b/code/game/objects/items/implants/implant_deathrattle.dm @@ -68,7 +68,7 @@ if(implant.imp_in == owner || !implant.imp_in) continue - // Deliberately the same message framing as nanite message + ghost deathrattle + // Deliberately the same message framing as ghost deathrattle var/mob/living/recipient = implant.imp_in to_chat(recipient, "You hear a strange, robotic voice in your head... \"[span_robot("[name] has died at [area].")]\"") recipient.playsound_local(get_turf(recipient), sound, vol = 75, vary = FALSE, pressure_affected = FALSE, use_reverb = FALSE) diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 072dc87cbd1..53b65285c80 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -100,8 +100,6 @@ var/turf/here = get_turf(src) var/turf/there = get_turf(H) if(here && there && (there.z == here.z || (is_station_level(here.z) && is_station_level(there.z)))) // Device and target should be on the same level or different levels of the same station - if (H in GLOB.nanite_sensors_list) - return TRUE if (istype(H.w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/U = H.w_uniform if(U.has_sensor && (U.sensor_mode >= SENSOR_COORDS || ignore_suit_sensor_level)) // Suit sensors must be on maximum or a contractor pinpointer diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 1faabc352f4..3dd39d019a7 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -105,14 +105,6 @@ for(var/i in 1 to 7) new /obj/item/disk/data(src) -/obj/item/storage/box/disks_nanite - name = "nanite program disks box" - illustration = "disk_kit" - -/obj/item/storage/box/disks_nanite/PopulateContents() - for(var/i in 1 to 7) - new /obj/item/disk/nanite_program(src) - // Ordinary survival box /obj/item/storage/box/survival name = "survival box" diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm index 0483fd5f579..222c2dc2733 100644 --- a/code/game/objects/structures/signs/signs_departments.dm +++ b/code/game/objects/structures/signs/signs_departments.dm @@ -77,13 +77,6 @@ icon_state = "xenobio" is_editable = TRUE -/obj/structure/sign/departments/nanites - name = "\improper Nanite Lab sign" - sign_change_name = "Department - Science: Nanites" - desc = "A sign labelling an area where testing and development of nanites is performed." - icon_state = "nanites" - is_editable = TRUE - ///////SERVICE /obj/structure/sign/departments/botany diff --git a/code/game/turfs/open/floor/plating/asteroid.dm b/code/game/turfs/open/floor/plating/asteroid.dm index 10fc2bda648..6b9bc4ff1e1 100644 --- a/code/game/turfs/open/floor/plating/asteroid.dm +++ b/code/game/turfs/open/floor/plating/asteroid.dm @@ -214,3 +214,7 @@ /turf/open/floor/plating/asteroid/snow/atmosphere initial_gas_mix = FROZEN_ATMOS planetary_atmos = FALSE + +/turf/open/floor/plating/asteroid/snow/standard_air + initial_gas_mix = OPENTURF_DEFAULT_ATMOS + planetary_atmos = FALSE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index f51dd30bbf3..01d33e4f330 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -586,10 +586,6 @@ GLOBAL_LIST_EMPTY(station_turfs) V.icon_state = "vomitpurp_[pick(1,4)]" else if (toxvomit == VOMIT_TOXIC) V.icon_state = "vomittox_[pick(1,4)]" - else if (toxvomit == VOMIT_NANITE) - V.name = "metallic slurry" - V.desc = "A puddle of metallic slurry that looks vaguely like very fine sand. It almost seems like it's moving..." - V.icon_state = "vomitnanite_[pick(1,4)]" if (purge_ratio && iscarbon(M)) clear_reagents_to_vomit_pool(M, V, purge_ratio) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index ee1a3e97325..9bd7304a622 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -10,7 +10,7 @@ if(!holder) return - var/list/investigates = list(INVESTIGATE_RESEARCH, INVESTIGATE_EXONET, INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS, INVESTIGATE_RADIATION, INVESTIGATE_NANITES, INVESTIGATE_PRESENTS, INVESTIGATE_HYPERTORUS, INVESTIGATE_ACCESSCHANGES) + var/list/investigates = list(INVESTIGATE_RESEARCH, INVESTIGATE_EXONET, INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS, INVESTIGATE_RADIATION, INVESTIGATE_PRESENTS, INVESTIGATE_HYPERTORUS, INVESTIGATE_ACCESSCHANGES) var/list/logs_present = list("notes, memos, watchlist") var/list/logs_missing = list("---") diff --git a/code/modules/antagonists/disease/disease_abilities.dm b/code/modules/antagonists/disease/disease_abilities.dm index 527969b9b34..21459ce28ce 100644 --- a/code/modules/antagonists/disease/disease_abilities.dm +++ b/code/modules/antagonists/disease/disease_abilities.dm @@ -23,8 +23,6 @@ new /datum/disease_ability/symptom/powerful/narcolepsy, new /datum/disease_ability/symptom/medium/fever, new /datum/disease_ability/symptom/medium/chills, new /datum/disease_ability/symptom/medium/headache, -new /datum/disease_ability/symptom/medium/nano_boost, -new /datum/disease_ability/symptom/medium/nano_destroy, new /datum/disease_ability/symptom/medium/viraladaptation, new /datum/disease_ability/symptom/medium/viralevolution, new /datum/disease_ability/symptom/medium/disfiguration, @@ -362,12 +360,6 @@ new /datum/disease_ability/symptom/powerful/youth /datum/disease_ability/symptom/medium/headache symptoms = list(/datum/symptom/headache) -/datum/disease_ability/symptom/medium/nano_boost - symptoms = list(/datum/symptom/nano_boost) - -/datum/disease_ability/symptom/medium/nano_destroy - symptoms = list(/datum/symptom/nano_destroy) - /datum/disease_ability/symptom/medium/viraladaptation symptoms = list(/datum/symptom/viraladaptation) short_desc = "Cause your infection to become more resistant to detection and eradication." diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index aed8644a728..52df098bfd1 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -282,7 +282,7 @@ if(new_stat == DEAD) return - // Someone we've eaten has spontaneously revived; maybe nanites, maybe a changeling + // Someone we've eaten has spontaneously revived; maybe regen coma, maybe a changeling victim.forceMove(get_turf(src)) victim.exit_blood_effect() victim.visible_message(span_warning("[victim] falls out of the air, covered in blood, with a confused look on their face.")) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 5fe2c1c8b04..ae9f0da5472 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -128,10 +128,6 @@ Des: Removes all infected images from the alien. new_xeno.real_name = real_name if(mind) mind.transfer_to(new_xeno) - var/datum/component/nanites/nanites = GetComponent(/datum/component/nanites) - if(nanites) - new_xeno.AddComponent(/datum/component/nanites, nanites.nanite_volume) - SEND_SIGNAL(new_xeno, COMSIG_NANITE_SYNC, nanites) qdel(src) /mob/living/carbon/alien/can_hold_items(obj/item/I) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 3bddf261130..e4e68a0e566 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -2,7 +2,7 @@ blood_volume = BLOOD_VOLUME_NORMAL gender = MALE pressure_resistance = 15 - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD) has_limbs = 1 held_items = list(null, null) num_legs = 0 //Populated on init through list/bodyparts diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index f32122e7336..f96ad786f29 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -5,7 +5,7 @@ icon = 'icons/mob/human.dmi' icon_state = "human_basic" appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE - hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD, NANITE_HUD, DIAG_NANITE_FULL_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,FAN_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,FAN_HUD) hud_type = /datum/hud/human pressure_resistance = 25 can_buckle = TRUE 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 b02137ca51d..2455a6c3dc4 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -240,14 +240,6 @@ spare.domutcheck() spare.Move(get_step(H.loc, pick(NORTH,SOUTH,EAST,WEST))) - - var/datum/component/nanites/owner_nanites = H.GetComponent(/datum/component/nanites) - if(owner_nanites) - //copying over nanite programs/cloud sync with 50% saturation in host and spare - owner_nanites.nanite_volume *= 0.5 - spare.AddComponent(/datum/component/nanites, owner_nanites.nanite_volume) - SEND_SIGNAL(spare, COMSIG_NANITE_SYNC, owner_nanites, TRUE, TRUE) //The trues are to copy activation as well - H.blood_volume *= 0.45 H.notransform = 0 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index baee489db08..68a60f2e013 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -2,7 +2,7 @@ see_invisible = SEE_INVISIBLE_LIVING sight = 0 see_in_dark = 2 - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD) pressure_resistance = 10 hud_type = /datum/hud/living diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index dfc87f87121..46f017044eb 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -175,7 +175,6 @@ var/list/babies = list() var/new_nutrition = round(nutrition * 0.9) var/new_powerlevel = round(powerlevel / 4) - var/datum/component/nanites/original_nanites = GetComponent(/datum/component/nanites) var/turf/drop_loc = drop_location() for(var/i=1,i<=4,i++) @@ -198,10 +197,6 @@ M.mutation_chance = clamp(mutation_chance+(rand(5,-5)),0,100) SSblackbox.record_feedback("tally", "slime_babies_born", 1, M.colour) - if(original_nanites) - M.AddComponent(/datum/component/nanites, original_nanites.nanite_volume*0.25) - SEND_SIGNAL(M, COMSIG_NANITE_SYNC, original_nanites, TRUE, TRUE) //The trues are to copy activation as well - var/mob/living/simple_animal/slime/new_slime = pick(babies) new_slime.set_combat_mode(TRUE) if(src.mind) diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index f7abfc7a63f..4b14a611527 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -243,8 +243,6 @@ if(!humanoid || !istype(humanoid)) return FALSE if(..()) - if (humanoid in GLOB.nanite_sensors_list) - return TRUE if (istype(humanoid.w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/uniform = humanoid.w_uniform if(uniform.has_sensor && uniform.sensor_mode >= SENSOR_COORDS) // Suit sensors must be on maximum diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index ac6172b62c2..effbeb88c47 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -27,7 +27,7 @@ other types of metals and chemistry for reagents). var/desc = "Desc" /// The ID of the design. Used for quick reference. Alphanumeric, lower-case, no symbols var/id = DESIGN_ID_IGNORE - /// Bitflags indicating what machines this design is compatable with. ([IMPRINTER]|[AWAY_IMPRINTER]|[PROTOLATHE]|[AWAY_LATHE]|[AUTOLATHE]|[MECHFAB]|[BIOGENERATOR]|[LIMBGROWER]|[SMELTER]|[NANITE_COMPILER]) + /// Bitflags indicating what machines this design is compatable with. ([IMPRINTER]|[AWAY_IMPRINTER]|[PROTOLATHE]|[AWAY_LATHE]|[AUTOLATHE]|[MECHFAB]|[BIOGENERATOR]|[LIMBGROWER]|[SMELTER]) var/build_type = null /// List of materials required to create one unit of the product. Format is (typepath or caregory) -> amount var/list/materials = list() diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 94d8224da8e..3d1d0b998fa 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -275,22 +275,6 @@ category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING -/datum/design/board/nanite_chamber_control - name = "Computer Design (Nanite Chamber Control)" - desc = "Allows for the construction of circuit boards used to build a new nanite chamber control console." - id = "nanite_chamber_control" - build_path = /obj/item/circuitboard/computer/nanite_chamber_control - category = list("Computer Boards") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/board/nanite_cloud_control - name = "Computer Design (Nanite Cloud Control)" - desc = "Allows for the construction of circuit boards used to build a new nanite cloud control console." - id = "nanite_cloud_control" - build_path = /obj/item/circuitboard/computer/nanite_cloud_controller - category = list("Computer Boards") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - /datum/design/board/advanced_camera name = "Computer Design (Advanced Camera Console)" desc = "Allows for the construction of circuit boards used to build advanced camera consoles." diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm index 7706a3053d6..7cb94cfda0e 100644 --- a/code/modules/research/designs/electronics_designs.dm +++ b/code/modules/research/designs/electronics_designs.dm @@ -33,40 +33,6 @@ category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE -/////////////////////////////////// -//////////Nanite Devices/////////// -/////////////////////////////////// -/datum/design/nanite_remote - name = "Nanite Remote" - desc = "Allows for the construction of a nanite remote." - id = "nanite_remote" - build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/glass = 500, /datum/material/iron = 500) - build_path = /obj/item/nanite_remote - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/nanite_comm_remote - name = "Nanite Communication Remote" - desc = "Allows for the construction of a nanite communication remote." - id = "nanite_comm_remote" - build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/glass = 500, /datum/material/iron = 500) - build_path = /obj/item/nanite_remote/comm - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/nanite_scanner - name = "Nanite Scanner" - desc = "Allows for the construction of a nanite scanner." - id = "nanite_scanner" - build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/glass = 500, /datum/material/iron = 500) - build_path = /obj/item/nanite_scanner - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - - //////////////////////////////////////// //////////Disk Construction Disks/////// //////////////////////////////////////// @@ -99,13 +65,3 @@ build_path = /obj/item/disk/tech_disk category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/nanite_disk - name = "Nanite Program Disk" - desc = "Stores nanite programs." - id = "nanite_disk" - build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = 300, /datum/material/glass = 100) - build_path = /obj/item/disk/nanite_program - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index a1a81a566ea..742809a2a43 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -298,38 +298,6 @@ category = list("Research Machinery") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE -/datum/design/board/nanite_chamber - name = "Machine Design (Nanite Chamber Board)" - desc = "The circuit board for a Nanite Chamber." - id = "nanite_chamber" - build_path = /obj/item/circuitboard/machine/nanite_chamber - category = list("Research Machinery") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/board/public_nanite_chamber - name = "Machine Design (Public Nanite Chamber Board)" - desc = "The circuit board for a Public Nanite Chamber." - id = "public_nanite_chamber" - build_path = /obj/item/circuitboard/machine/public_nanite_chamber - category = list("Research Machinery") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/board/nanite_programmer - name = "Machine Design (Nanite Programmer Board)" - desc = "The circuit board for a Nanite Programmer." - id = "nanite_programmer" - build_path = /obj/item/circuitboard/machine/nanite_programmer - category = list("Research Machinery") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/board/nanite_program_hub - name = "Machine Design (Nanite Program Hub Board)" - desc = "The circuit board for a Nanite Program Hub." - id = "nanite_program_hub" - build_path = /obj/item/circuitboard/machine/nanite_program_hub - category = list("Research Machinery") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - /datum/design/board/dnascanner name = "Machine Design (DNA Scanner)" desc = "The circuit board for a DNA Scanner." diff --git a/code/modules/research/designs/nanite_designs.dm b/code/modules/research/designs/nanite_designs.dm deleted file mode 100644 index d1e61c86b09..00000000000 --- a/code/modules/research/designs/nanite_designs.dm +++ /dev/null @@ -1,573 +0,0 @@ -/datum/design/nanites - name = "None" - desc = "Warn a coder if you see this." - id = "default_nanites" - build_type = NANITE_COMPILER - construction_time = 50 - category = list() - research_icon = 'icons/obj/device.dmi' - research_icon_state = "nanite_program" - var/program_type = /datum/nanite_program - -////////////////////UTILITY NANITES////////////////////////////////////// - -/datum/design/nanites/metabolic_synthesis - name = "Metabolic Synthesis" - desc = "The nanites use the metabolic cycle of the host to speed up their replication rate, using their extra nutrition as fuel." - id = "metabolic_nanites" - program_type = /datum/nanite_program/metabolic_synthesis - category = list("Utility Nanites") - -/datum/design/nanites/viral - name = "Viral Replica" - desc = "The nanites constantly send encrypted signals attempting to forcefully copy their own programming into other nanite clusters." - id = "viral_nanites" - program_type = /datum/nanite_program/viral - category = list("Utility Nanites") - -/datum/design/nanites/monitoring - name = "Monitoring" - desc = "The nanites monitor the host's vitals and location, sending them to the suit sensor network." - id = "monitoring_nanites" - program_type = /datum/nanite_program/monitoring - category = list("Utility Nanites") - -/datum/design/nanites/self_scan - name = "Host Scan" - desc = "The nanites display a detailed readout of a body scan to the host." - id = "selfscan_nanites" - program_type = /datum/nanite_program/self_scan - category = list("Utility Nanites") - -/datum/design/nanites/dermal_button - name = "Dermal Button" - desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites." - id = "dermal_button_nanites" - program_type = /datum/nanite_program/dermal_button - category = list("Utility Nanites") - -/datum/design/nanites/stealth - name = "Stealth" - desc = "The nanites hide their activity and programming from superficial scans." - id = "stealth_nanites" - program_type = /datum/nanite_program/stealth - category = list("Utility Nanites") - -/datum/design/nanites/nanite_debugging - name = "Nanite Debugging" - desc = "Enables various high-cost diagnostics in the nanites, making them able to communicate their program list to portable scanners. \ - Doing so uses some power, slightly decreasing their replication speed." - id = "debugging_nanites" - program_type = /datum/nanite_program/nanite_debugging - category = list("Utility Nanites") - -/datum/design/nanites/access - name = "Subdermal ID" - desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access." - id = "access_nanites" - program_type = /datum/nanite_program/access - category = list("Utility Nanites") - -/datum/design/nanites/relay - name = "Relay" - desc = "The nanites receive and relay long-range nanite signals." - id = "relay_nanites" - program_type = /datum/nanite_program/relay - category = list("Utility Nanites") - -/datum/design/nanites/repeater - name = "Signal Repeater" - desc = "When triggered, sends another signal to the nanites, optionally with a delay." - id = "repeater_nanites" - program_type = /datum/nanite_program/sensor/repeat - category = list("Utility Nanites") - -/datum/design/nanites/relay_repeater - name = "Relay Signal Repeater" - desc = "When triggered, sends another signal to a relay channel, optionally with a delay." - id = "relay_repeater_nanites" - program_type = /datum/nanite_program/sensor/relay_repeat - category = list("Utility Nanites") - -/datum/design/nanites/emp - name = "Electromagnetic Resonance" - desc = "The nanites cause an electromagnetic pulse around the host when triggered. Will corrupt other nanite programs!" - id = "emp_nanites" - program_type = /datum/nanite_program/emp - category = list("Utility Nanites") - -/datum/design/nanites/spreading - name = "Infective Exo-Locomotion" - desc = "The nanites gain the ability to survive for brief periods outside of the human body, as well as the ability to start new colonies without an integration process; \ - resulting in an extremely infective strain of nanites." - id = "spreading_nanites" - program_type = /datum/nanite_program/spreading - category = list("Utility Nanites") - -/datum/design/nanites/nanite_sting - name = "Nanite Sting" - desc = "When triggered, projects a nearly invisible spike of nanites that attempts to infect a nearby non-host with a copy of the host's nanites cluster." - id = "nanite_sting_nanites" - program_type = /datum/nanite_program/nanite_sting - category = list("Utility Nanites") - -/datum/design/nanites/mitosis - name = "Mitosis" - desc = "The nanites gain the ability to self-replicate, using bluespace to power the process, instead of drawing from a template. This rapidly speeds up the replication rate,\ - but it causes occasional software errors due to faulty copies." - id = "mitosis_nanites" - program_type = /datum/nanite_program/mitosis - category = list("Utility Nanites") - -////////////////////MEDICAL NANITES////////////////////////////////////// -/datum/design/nanites/regenerative - name = "Accelerated Regeneration" - desc = "The nanites boost the host's natural regeneration, increasing their healing speed." - id = "regenerative_nanites" - program_type = /datum/nanite_program/regenerative - category = list("Medical Nanites") - -/datum/design/nanites/regenerative_advanced - name = "Bio-Reconstruction" - desc = "The nanites manually repair and replace organic cells, acting much faster than normal regeneration. \ - However, this program cannot detect the difference between harmed and unharmed, causing it to consume nanites even if it has no effect." - id = "regenerative_plus_nanites" - program_type = /datum/nanite_program/regenerative_advanced - category = list("Medical Nanites") - -/datum/design/nanites/temperature - name = "Temperature Adjustment" - desc = "The nanites adjust the host's internal temperature to an ideal level." - id = "temperature_nanites" - program_type = /datum/nanite_program/temperature - category = list("Medical Nanites") - -/datum/design/nanites/purging - name = "Blood Purification" - desc = "The nanites purge toxins and chemicals from the host's bloodstream." - id = "purging_nanites" - program_type = /datum/nanite_program/purging - category = list("Medical Nanites") - -/datum/design/nanites/purging_advanced - name = "Selective Blood Purification" - desc = "The nanites purge toxins and dangerous chemicals from the host's bloodstream, while ignoring beneficial chemicals. \ - The added processing power required to analyze the chemicals severely increases the nanite consumption rate." - id = "purging_plus_nanites" - program_type = /datum/nanite_program/purging_advanced - category = list("Medical Nanites") - -/datum/design/nanites/brain_heal - name = "Neural Regeneration" - desc = "The nanites fix neural connections in the host's brain, reversing brain damage and minor traumas." - id = "brainheal_nanites" - program_type = /datum/nanite_program/brain_heal - category = list("Medical Nanites") - -/datum/design/nanites/brain_heal_advanced - name = "Neural Reimaging" - desc = "The nanites are able to backup and restore the host's neural connections, potentially replacing entire chunks of missing or damaged brain matter." - id = "brainheal_plus_nanites" - program_type = /datum/nanite_program/brain_heal_advanced - category = list("Medical Nanites") - -/datum/design/nanites/blood_restoring - name = "Blood Regeneration" - desc = "The nanites stimulate and boost blood cell production in the host." - id = "bloodheal_nanites" - program_type = /datum/nanite_program/blood_restoring - category = list("Medical Nanites") - -/datum/design/nanites/repairing - name = "Mechanical Repair" - desc = "The nanites fix damage in the host's mechanical limbs." - id = "repairing_nanites" - program_type = /datum/nanite_program/repairing - category = list("Medical Nanites") - -/datum/design/nanites/defib - name = "Defibrillation" - desc = "The nanites, when triggered, send a defibrillating shock to the host's heart." - id = "defib_nanites" - program_type = /datum/nanite_program/defib - category = list("Medical Nanites") - - -////////////////////AUGMENTATION NANITES////////////////////////////////////// - -/datum/design/nanites/nervous - name = "Nerve Support" - desc = "The nanites act as a secondary nervous system, reducing the amount of time the host is stunned." - id = "nervous_nanites" - program_type = /datum/nanite_program/nervous - category = list("Augmentation Nanites") - -/datum/design/nanites/hardening - name = "Dermal Hardening" - desc = "The nanites form a mesh under the host's skin, protecting them from melee and bullet impacts." - id = "hardening_nanites" - program_type = /datum/nanite_program/hardening - category = list("Augmentation Nanites") - -/datum/design/nanites/refractive - name = "Dermal Refractive Surface" - desc = "The nanites form a membrane above the host's skin, reducing the effect of laser and energy impacts." - id = "refractive_nanites" - program_type = /datum/nanite_program/refractive - category = list("Augmentation Nanites") - -/datum/design/nanites/coagulating - name = "Vein Repressurization" - desc = "The nanites re-route circulating blood away from open wounds, dramatically reducing bleeding rate." - id = "coagulating_nanites" - program_type = /datum/nanite_program/coagulating - category = list("Augmentation Nanites") - -/datum/design/nanites/conductive - name = "Electric Conduction" - desc = "The nanites act as a grounding rod for electric shocks, protecting the host. Shocks can still damage the nanites themselves." - id = "conductive_nanites" - program_type = /datum/nanite_program/conductive - category = list("Augmentation Nanites") - -/datum/design/nanites/mindshield - name = "Mental Barrier" - desc = "The nanites form a protective membrane around the host's brain, shielding them from abnormal influences while they're active." - id = "mindshield_nanites" - program_type = /datum/nanite_program/mindshield - category = list("Augmentation Nanites") - -////////////////////DEFECTIVE NANITES////////////////////////////////////// - -/datum/design/nanites/glitch - name = "Glitch" - desc = "A heavy software corruption that causes nanites to gradually break down." - id = "glitch_nanites" - program_type = /datum/nanite_program/glitch - category = list("Defective Nanites") - -/datum/design/nanites/necrotic - name = "Necrosis" - desc = "The nanites attack internal tissues indiscriminately, causing widespread damage." - id = "necrotic_nanites" - program_type = /datum/nanite_program/necrotic - category = list("Defective Nanites") - -/datum/design/nanites/toxic - name = "Toxin Buildup" - desc = "The nanites cause a slow but constant toxin buildup inside the host." - id = "toxic_nanites" - program_type = /datum/nanite_program/toxic - category = list("Defective Nanites") - -/datum/design/nanites/suffocating - name = "Hypoxemia" - desc = "The nanites prevent the host's blood from absorbing oxygen efficiently." - id = "suffocating_nanites" - program_type = /datum/nanite_program/suffocating - category = list("Defective Nanites") - -/datum/design/nanites/brain_misfire - name = "Brain Misfire" - desc = "The nanites interfere with neural pathways, causing minor psychological disturbances." - id = "brainmisfire_nanites" - program_type = /datum/nanite_program/brain_misfire - category = list("Defective Nanites") - -/datum/design/nanites/skin_decay - name = "Dermalysis" - desc = "The nanites attack skin cells, causing irritation, rashes, and minor damage." - id = "skindecay_nanites" - program_type = /datum/nanite_program/skin_decay - category = list("Defective Nanites") - -/datum/design/nanites/nerve_decay - name = "Nerve Decay" - desc = "The nanites attack the host's nerves, causing lack of coordination and short bursts of paralysis." - id = "nervedecay_nanites" - program_type = /datum/nanite_program/nerve_decay - category = list("Defective Nanites") - -/datum/design/nanites/brain_decay - name = "Brain-Eating Nanites" - desc = "Damages brain cells, gradually decreasing the host's cognitive functions." - id = "braindecay_nanites" - program_type = /datum/nanite_program/brain_decay - category = list("Defective Nanites") - -////////////////////WEAPONIZED NANITES///////////////////////////////////// - -/datum/design/nanites/flesh_eating - name = "Cellular Breakdown" - desc = "The nanites destroy cellular structures in the host's body, causing brute damage." - id = "flesheating_nanites" - program_type = /datum/nanite_program/flesh_eating - category = list("Weaponized Nanites") - -/datum/design/nanites/poison - name = "Poisoning" - desc = "The nanites deliver poisonous chemicals to the host's internal organs, causing toxin damage and vomiting." - id = "poison_nanites" - program_type = /datum/nanite_program/poison - category = list("Weaponized Nanites") - -/datum/design/nanites/memory_leak - name = "Memory Leak" - desc = "This program invades the memory space used by other programs, causing frequent corruptions and errors." - id = "memleak_nanites" - program_type = /datum/nanite_program/memory_leak - category = list("Weaponized Nanites") - -/datum/design/nanites/aggressive_replication - name = "Aggressive Replication" - desc = "Nanites will consume organic matter to improve their replication rate, damaging the host." - id = "aggressive_nanites" - program_type = /datum/nanite_program/aggressive_replication - category = list("Weaponized Nanites") - -/datum/design/nanites/meltdown - name = "Meltdown" - desc = "Causes an internal meltdown inside the nanites, causing internal burns inside the host as well as rapidly destroying the nanite population.\ - Sets the nanites' safety threshold to 0 when activated." - id = "meltdown_nanites" - program_type = /datum/nanite_program/meltdown - category = list("Weaponized Nanites") - -/datum/design/nanites/cryo - name = "Cryogenic Treatment" - desc = "The nanites rapidly skin heat through the host's skin, lowering their temperature." - id = "cryo_nanites" - program_type = /datum/nanite_program/cryo - category = list("Weaponized Nanites") - -/datum/design/nanites/pyro - name = "Sub-Dermal Combustion" - desc = "The nanites cause buildup of flammable fluids under the host's skin, then ignites them." - id = "pyro_nanites" - program_type = /datum/nanite_program/pyro - category = list("Weaponized Nanites") - -/datum/design/nanites/heart_stop - name = "Heart-Stopper" - desc = "Stops the host's heart when triggered; restarts it if triggered again." - id = "heartstop_nanites" - program_type = /datum/nanite_program/heart_stop - category = list("Weaponized Nanites") - -/datum/design/nanites/explosive - name = "Chain Detonation" - desc = "Blows up all the nanites inside the host in a chain reaction when triggered." - id = "explosive_nanites" - program_type = /datum/nanite_program/explosive - category = list("Weaponized Nanites") - -/datum/design/nanites/mind_control - name = "Mind Control" - desc = "The nanites imprint an absolute directive onto the host's brain while they're active." - id = "mindcontrol_nanites" - program_type = /datum/nanite_program/comm/mind_control - category = list("Weaponized Nanites") - -////////////////////SUPPRESSION NANITES////////////////////////////////////// - -/datum/design/nanites/shock - name = "Electric Shock" - desc = "The nanites shock the host when triggered. Destroys a large amount of nanites!" - id = "shock_nanites" - program_type = /datum/nanite_program/shocking - category = list("Suppression Nanites") - -/datum/design/nanites/stun - name = "Neural Shock" - desc = "The nanites pulse the host's nerves when triggered, inapacitating them for a short period." - id = "stun_nanites" - program_type = /datum/nanite_program/stun - category = list("Suppression Nanites") - -/datum/design/nanites/sleepy - name = "Sleep Induction" - desc = "The nanites cause rapid narcolepsy when triggered." - id = "sleep_nanites" - program_type = /datum/nanite_program/sleepy - category = list("Suppression Nanites") - -/datum/design/nanites/paralyzing - name = "Paralysis" - desc = "The nanites actively suppress nervous pulses, effectively paralyzing the host." - id = "paralyzing_nanites" - program_type = /datum/nanite_program/paralyzing - category = list("Suppression Nanites") - -/datum/design/nanites/fake_death - name = "Death Simulation" - desc = "The nanites induce a death-like coma into the host, able to fool most medical scans." - id = "fakedeath_nanites" - program_type = /datum/nanite_program/fake_death - category = list("Suppression Nanites") - -/datum/design/nanites/pacifying - name = "Pacification" - desc = "The nanites suppress the aggression center of the brain, preventing the host from causing direct harm to others." - id = "pacifying_nanites" - program_type = /datum/nanite_program/pacifying - category = list("Suppression Nanites") - -/datum/design/nanites/blinding - name = "Blindness" - desc = "The nanites suppress the host's ocular nerves, blinding them while they're active." - id = "blinding_nanites" - program_type = /datum/nanite_program/blinding - category = list("Suppression Nanites") - -/datum/design/nanites/mute - name = "Mute" - desc = "The nanites suppress the host's speech, making them mute while they're active." - id = "mute_nanites" - program_type = /datum/nanite_program/mute - category = list("Suppression Nanites") - -/datum/design/nanites/voice - name = "Skull Echo" - desc = "The nanites echo a synthesized message inside the host's skull." - id = "voice_nanites" - program_type = /datum/nanite_program/comm/voice - category = list("Suppression Nanites") - -/datum/design/nanites/speech - name = "Forced Speech" - desc = "The nanites force the host to say a pre-programmed sentence when triggered." - id = "speech_nanites" - program_type = /datum/nanite_program/comm/speech - category = list("Suppression Nanites") - -/datum/design/nanites/hallucination - name = "Hallucination" - desc = "The nanites make the host see and hear things that aren't real." - id = "hallucination_nanites" - program_type = /datum/nanite_program/comm/hallucination - category = list("Suppression Nanites") - -/datum/design/nanites/good_mood - name = "Happiness Enhancer" - desc = "The nanites synthesize serotonin inside the host's brain, creating an artificial sense of happiness." - id = "good_mood_nanites" - program_type = /datum/nanite_program/good_mood - category = list("Suppression Nanites") - -/datum/design/nanites/bad_mood - name = "Happiness Suppressor" - desc = "The nanites suppress the production of serotonin inside the host's brain, creating an artificial state of depression." - id = "bad_mood_nanites" - program_type = /datum/nanite_program/bad_mood - category = list("Suppression Nanites") - -////////////////////SENSOR NANITES////////////////////////////////////// - -/datum/design/nanites/sensor_health - name = "Health Sensor" - desc = "The nanites receive a signal when the host's health is above/below a certain percentage." - id = "sensor_health_nanites" - program_type = /datum/nanite_program/sensor/health - category = list("Sensor Nanites") - -/datum/design/nanites/sensor_damage - name = "Damage Sensor" - desc = "The nanites receive a signal when a host's specific damage type is above/below a target value." - id = "sensor_damage_nanites" - program_type = /datum/nanite_program/sensor/damage - category = list("Sensor Nanites") - -/datum/design/nanites/sensor_crit - name = "Critical Health Sensor" - desc = "The nanites receive a signal when the host first reaches critical health." - id = "sensor_crit_nanites" - program_type = /datum/nanite_program/sensor/crit - category = list("Sensor Nanites") - -/datum/design/nanites/sensor_death - name = "Death Sensor" - desc = "The nanites receive a signal when they detect the host is dead." - id = "sensor_death_nanites" - program_type = /datum/nanite_program/sensor/death - category = list("Sensor Nanites") - -/datum/design/nanites/sensor_voice - name = "Voice Sensor" - desc = "Sends a signal when the nanites hear a determined word or sentence." - id = "sensor_voice_nanites" - program_type = /datum/nanite_program/sensor/voice - category = list("Sensor Nanites") - -/datum/design/nanites/sensor_nanite_volume - name = "Nanite Volume Sensor" - desc = "The nanites receive a signal when the nanite supply is above/below a certain percentage." - id = "sensor_nanite_volume" - program_type = /datum/nanite_program/sensor/nanite_volume - category = list("Sensor Nanites") - -/datum/design/nanites/sensor_species - name = "Species Sensor" - desc = "When triggered, the nanites scan the host to determine their species and output a signal depending on the conditions set in the settings." - id = "sensor_species_nanites" - program_type = /datum/nanite_program/sensor/species - category = list("Sensor Nanites") - -////////////////////NANITE PROTOCOLS////////////////////////////////////// -//Note about the category name: The UI cuts the last 8 characters from the category name to remove the " Nanites" in the other categories -//Because of this, Protocols was getting cut down to "P", so i had to add some padding -/datum/design/nanites/kickstart - name = "Kickstart Protocol" - desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation." - id = "kickstart_nanites" - program_type = /datum/nanite_program/protocol/kickstart - category = list("Protocols_Nanites") - -/datum/design/nanites/factory - name = "Factory Protocol" - desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time. The factory decays if the protocol is not active." - id = "factory_nanites" - program_type = /datum/nanite_program/protocol/factory - category = list("Protocols_Nanites") - -/datum/design/nanites/pyramid - name = "Pyramid Protocol" - desc = "Replication Protocol: the nanites implement an alternate cooperative replication protocol that is more efficient as long as the saturation level is above 80%." - id = "pyramid_nanites" - program_type = /datum/nanite_program/protocol/pyramid - category = list("Protocols_Nanites") - -/datum/design/nanites/offline - name = "Eclipse Protocol" - desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly." - id = "offline_nanites" - program_type = /datum/nanite_program/protocol/offline - category = list("Protocols_Nanites") - -/datum/design/nanites/hive - name = "Hive Protocol" - desc = "Storage Protocol: the nanites use a more efficient grid arrangment for volume storage, increasing maximum volume in a host." - id = "hive_nanites" - program_type = /datum/nanite_program/protocol/hive - category = list("Protocols_Nanites") - -/datum/design/nanites/zip - name = "Zip Protocol" - desc = "Storage Protocol: the nanites are disassembled and compacted when unused, greatly increasing the maximum volume while in a host. However, the process slows down the replication rate slightly." - id = "zip_nanites" - program_type = /datum/nanite_program/protocol/zip - category = list("Protocols_Nanites") - -/datum/design/nanites/free_range - name = "Free-range Protocol" - desc = "Storage Protocol: the nanites discard their default storage protocols in favour of a cheaper and more organic approach. Reduces maximum volume, but increases the replication rate." - id = "free_range_nanites" - program_type = /datum/nanite_program/protocol/free_range - category = list("Protocols_Nanites") - -/datum/design/nanites/unsafe_storage - name = "S.L.O. Protocol" - desc = "Storage Protocol: 'S.L.O.P.', or Storage Level Override Protocol, completely disables the safety measures normally present in nanites,\ - allowing them to reach much higher saturation levels, but at the risk of causing internal damage to the host." - id = "unsafe_storage_nanites" - program_type = /datum/nanite_program/protocol/unsafe_storage - category = list("Protocols_Nanites") diff --git a/code/modules/research/nanites/extra_settings/_extra_setting.dm b/code/modules/research/nanites/extra_settings/_extra_setting.dm deleted file mode 100644 index b3bef77eb40..00000000000 --- a/code/modules/research/nanites/extra_settings/_extra_setting.dm +++ /dev/null @@ -1,20 +0,0 @@ -/datum/nanite_extra_setting - var/setting_type - var/value - -/datum/nanite_extra_setting/proc/get_value() - return value - -/datum/nanite_extra_setting/proc/set_value(value) - src.value = value - -/datum/nanite_extra_setting/proc/get_copy() - return - -//I made the choice to send the name as part of the parameter instead of storing it directly on -//this datum as a way of avoiding duplication of data between the containing assoc list -//and this datum. -//Also make sure to double wrap the list when implementing this as -//+= is interpreted as a combine on lists, so the outer list gets unwrapped -/datum/nanite_extra_setting/proc/get_frontend_list(name) - return diff --git a/code/modules/research/nanites/extra_settings/boolean.dm b/code/modules/research/nanites/extra_settings/boolean.dm deleted file mode 100644 index 7d66eb988ea..00000000000 --- a/code/modules/research/nanites/extra_settings/boolean.dm +++ /dev/null @@ -1,27 +0,0 @@ -/datum/nanite_extra_setting/boolean - setting_type = NESTYPE_BOOLEAN - var/true_text - var/false_text - -/datum/nanite_extra_setting/boolean/New(initial, true_text, false_text) - value = initial - src.true_text = true_text - src.false_text = false_text - -/datum/nanite_extra_setting/boolean/set_value(value) - if(isnull(value)) - src.value = !src.value - return - . = ..() - -/datum/nanite_extra_setting/boolean/get_copy() - return new /datum/nanite_extra_setting/boolean(value, true_text, false_text) - -/datum/nanite_extra_setting/boolean/get_frontend_list(name) - return list(list( - "name" = name, - "type" = setting_type, - "value" = value, - "true_text" = true_text, - "false_text" = false_text - )) diff --git a/code/modules/research/nanites/extra_settings/number.dm b/code/modules/research/nanites/extra_settings/number.dm deleted file mode 100644 index 75489635f55..00000000000 --- a/code/modules/research/nanites/extra_settings/number.dm +++ /dev/null @@ -1,32 +0,0 @@ -/datum/nanite_extra_setting/number - setting_type = NESTYPE_NUMBER - var/min - var/max - var/unit = "" - -/datum/nanite_extra_setting/number/New(initial, min, max, unit) - value = initial - src.min = min - src.max = max - if(unit) - src.unit = unit - -/datum/nanite_extra_setting/number/set_value(value) - if(istext(value)) - value = text2num(value) - if(!value || !isnum(value)) - return - src.value = clamp(value, min, max) - -/datum/nanite_extra_setting/number/get_copy() - return new /datum/nanite_extra_setting/number(value, min, max, unit) - -/datum/nanite_extra_setting/number/get_frontend_list(name) - return list(list( - "name" = name, - "type" = setting_type, - "value" = value, - "min" = min, - "max" = max, - "unit" = unit - )) diff --git a/code/modules/research/nanites/extra_settings/text.dm b/code/modules/research/nanites/extra_settings/text.dm deleted file mode 100644 index d3cad27bcf5..00000000000 --- a/code/modules/research/nanites/extra_settings/text.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/nanite_extra_setting/text - setting_type = NESTYPE_TEXT - -/datum/nanite_extra_setting/text/New(initial) - value = initial - -/datum/nanite_extra_setting/text/set_value(value) - src.value = trim(value) - -/datum/nanite_extra_setting/text/get_copy() - return new /datum/nanite_extra_setting/text(value) - -/datum/nanite_extra_setting/text/get_value() - return html_encode(value) - -/datum/nanite_extra_setting/text/get_frontend_list(name) - return list(list( - "name" = name, - "type" = setting_type, - "value" = value - )) diff --git a/code/modules/research/nanites/extra_settings/type.dm b/code/modules/research/nanites/extra_settings/type.dm deleted file mode 100644 index 2085ba510c4..00000000000 --- a/code/modules/research/nanites/extra_settings/type.dm +++ /dev/null @@ -1,18 +0,0 @@ -/datum/nanite_extra_setting/type - setting_type = NESTYPE_TYPE - var/list/types - -/datum/nanite_extra_setting/type/New(initial, types) - value = initial - src.types = types - -/datum/nanite_extra_setting/type/get_copy() - return new /datum/nanite_extra_setting/type(value, types) - -/datum/nanite_extra_setting/type/get_frontend_list(name) - return list(list( - "name" = name, - "type" = setting_type, - "value" = value, - "types" = types - )) diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm deleted file mode 100644 index c35f4705000..00000000000 --- a/code/modules/research/nanites/nanite_chamber.dm +++ /dev/null @@ -1,213 +0,0 @@ -/obj/machinery/nanite_chamber - name = "nanite chamber" - desc = "A device that can scan, reprogram, and inject nanites." - circuit = /obj/item/circuitboard/machine/nanite_chamber - icon = 'icons/obj/machines/nanite_chamber.dmi' - icon_state = "nanite_chamber" - base_icon_state = "nanite_chamber" - layer = ABOVE_WINDOW_LAYER - use_power = IDLE_POWER_USE - anchored = TRUE - density = TRUE - obj_flags = NO_BUILD // Becomes undense when the door is open - idle_power_usage = 50 - active_power_usage = 300 - - var/locked = FALSE - var/breakout_time = 1200 - var/scan_level - var/busy = FALSE - var/busy_icon_state - var/busy_message - var/message_cooldown = 0 - -/obj/machinery/nanite_chamber/Initialize() - . = ..() - occupant_typecache = GLOB.typecache_living - -/obj/machinery/nanite_chamber/RefreshParts() - scan_level = 0 - for(var/obj/item/stock_parts/scanning_module/P in component_parts) - scan_level += P.rating - -/obj/machinery/nanite_chamber/examine(mob/user) - . = ..() - if(in_range(user, src) || isobserver(user)) - . += span_notice("The status display reads: Scanning module has been upgraded to level [scan_level].") - -/obj/machinery/nanite_chamber/proc/set_busy(status, message, working_icon) - busy = status - busy_message = message - busy_icon_state = working_icon - update_appearance() - -/obj/machinery/nanite_chamber/proc/set_safety(threshold) - if(!occupant) - return - SEND_SIGNAL(occupant, COMSIG_NANITE_SET_SAFETY, threshold) - -/obj/machinery/nanite_chamber/proc/set_cloud(cloud_id) - if(!occupant) - return - SEND_SIGNAL(occupant, COMSIG_NANITE_SET_CLOUD, cloud_id) - -/obj/machinery/nanite_chamber/proc/inject_nanites() - if(machine_stat & (NOPOWER|BROKEN)) - return - if((machine_stat & MAINT) || panel_open) - return - if(!occupant || busy) - return - - var/locked_state = locked - locked = TRUE - - //TODO OMINOUS MACHINE SOUNDS - set_busy(TRUE, "Initializing injection protocol...", "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Injecting...", "[initial(icon_state)]_active"),70) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110) - addtimer(CALLBACK(src, .proc/complete_injection, locked_state),130) - -/obj/machinery/nanite_chamber/proc/complete_injection(locked_state) - //TODO MACHINE DING - locked = locked_state - set_busy(FALSE) - if(!occupant) - return - occupant.AddComponent(/datum/component/nanites, 100) - -/obj/machinery/nanite_chamber/proc/remove_nanites(datum/nanite_program/NP) - if(machine_stat & (NOPOWER|BROKEN)) - return - if((machine_stat & MAINT) || panel_open) - return - if(!occupant || busy) - return - - var/locked_state = locked - locked = TRUE - - //TODO OMINOUS MACHINE SOUNDS - set_busy(TRUE, "Initializing cleanup protocol...", "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110) - addtimer(CALLBACK(src, .proc/complete_removal, locked_state),130) - -/obj/machinery/nanite_chamber/proc/complete_removal(locked_state) - //TODO MACHINE DING - locked = locked_state - set_busy(FALSE) - if(!occupant) - return - SEND_SIGNAL(occupant, COMSIG_NANITE_DELETE) - -/obj/machinery/nanite_chamber/update_icon_state() - //running and someone in there - if(occupant) - icon_state = busy ? busy_icon_state : "[base_icon_state]_occupied" - return ..() - //running - icon_state = "[base_icon_state][state_open ? "_open" : null]" - return ..() - -/obj/machinery/nanite_chamber/update_overlays() - . = ..() - - if((machine_stat & MAINT) || panel_open) - . += "maint" - return - - if(machine_stat & (NOPOWER|BROKEN)) - return - - if(busy || locked) - . += "red" - if(locked) - . += "bolted" - return - - . += "green" - -/obj/machinery/nanite_chamber/proc/toggle_open(mob/user) - if(panel_open) - to_chat(user, span_notice("Close the maintenance panel first.")) - return - - if(state_open) - close_machine() - return - - else if(locked) - to_chat(user, span_notice("The bolts are locked down, securing the door shut.")) - return - - open_machine() - -/obj/machinery/nanite_chamber/container_resist_act(mob/living/user) - if(!locked) - open_machine() - return - if(busy) - return - user.changeNext_move(CLICK_CD_BREAKOUT) - user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message(span_notice("You see [user] kicking against the door of [src]!"), \ - span_notice("You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)"), \ - span_hear("You hear a metallic creaking from [src].")) - if(do_after(user,(breakout_time), target = src)) - if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked || busy) - return - locked = FALSE - user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ - span_notice("You successfully break out of [src]!")) - open_machine() - -/obj/machinery/nanite_chamber/close_machine(mob/living/carbon/user) - if(!state_open) - return FALSE - - ..(user) - return TRUE - -/obj/machinery/nanite_chamber/open_machine() - if(state_open) - return FALSE - - ..() - - return TRUE - -/obj/machinery/nanite_chamber/relaymove(mob/living/user, direction) - if(user.stat || locked) - if(message_cooldown <= world.time) - message_cooldown = world.time + 50 - to_chat(user, span_warning("[src]'s door won't budge!")) - return - open_machine() - -/obj/machinery/nanite_chamber/attackby(obj/item/I, mob/user, params) - if(!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, I))//sent icon_state is irrelevant... - update_appearance()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed - return - - if(default_pry_open(I)) - return - - if(default_deconstruction_crowbar(I)) - return - - return ..() - -/obj/machinery/nanite_chamber/interact(mob/user) - toggle_open(user) - -/obj/machinery/nanite_chamber/MouseDrop_T(mob/target, mob/user) - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || !Adjacent(target) || !user.Adjacent(target) || !iscarbon(target)) - return - if(close_machine(target)) - log_combat(user, target, "inserted", null, "into [src].") - add_fingerprint(user) diff --git a/code/modules/research/nanites/nanite_chamber_computer.dm b/code/modules/research/nanites/nanite_chamber_computer.dm deleted file mode 100644 index c18364de1a2..00000000000 --- a/code/modules/research/nanites/nanite_chamber_computer.dm +++ /dev/null @@ -1,108 +0,0 @@ -/obj/machinery/computer/nanite_chamber_control - name = "nanite chamber control console" - desc = "Controls a connected nanite chamber. Can inoculate nanites, load programs, and analyze existing nanite swarms." - var/obj/machinery/nanite_chamber/chamber - icon_screen = "nanite_chamber_control" - circuit = /obj/item/circuitboard/computer/nanite_chamber_control - -/obj/machinery/computer/nanite_chamber_control/Initialize() - . = ..() - find_chamber() - -/obj/machinery/computer/nanite_chamber_control/proc/find_chamber() - for(var/direction in GLOB.cardinals) - var/C = locate(/obj/machinery/nanite_chamber, get_step(src, direction)) - if(C) - var/obj/machinery/nanite_chamber/NC = C - set_connected_chamber(NC) - -/obj/machinery/computer/nanite_chamber_control/interact() - if(!chamber) - find_chamber() - ..() - -/obj/machinery/computer/nanite_chamber_control/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NaniteChamberControl", name) - ui.open() - -/obj/machinery/computer/nanite_chamber_control/ui_data() - var/list/data = list() - - if(!chamber) - data["status_msg"] = "No chamber detected." - return data - - if(!chamber.occupant) - data["status_msg"] = "No occupant detected." - return data - - var/mob/living/L = chamber.occupant - - if(!(L.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD))) - data["status_msg"] = "Occupant not compatible with nanites." - return data - - if(chamber.busy) - data["status_msg"] = chamber.busy_message - return data - - data["status_msg"] = null - data["scan_level"] = chamber.scan_level - data["locked"] = chamber.locked - data["occupant_name"] = chamber.occupant.name - - SEND_SIGNAL(L, COMSIG_NANITE_UI_DATA, data, chamber.scan_level) - - return data - -/obj/machinery/computer/nanite_chamber_control/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("toggle_lock") - chamber.locked = !chamber.locked - chamber.update_appearance() - . = TRUE - if("set_safety") - var/threshold = text2num(params["value"]) - if(!isnull(threshold)) - chamber.set_safety(clamp(round(threshold, 1),0,500)) - playsound(src, "terminal_type", 25, FALSE) - chamber.occupant.investigate_log("'s nanites' safety threshold was set to [threshold] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) - . = TRUE - if("set_cloud") - var/cloud_id = text2num(params["value"]) - if(!isnull(cloud_id)) - chamber.set_cloud(clamp(round(cloud_id, 1),0,100)) - playsound(src, "terminal_type", 25, FALSE) - chamber.occupant.investigate_log("'s nanites' cloud id was set to [cloud_id] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) - . = TRUE - if("connect_chamber") - find_chamber() - . = TRUE - if("remove_nanites") - playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE) - chamber.remove_nanites() - log_combat(usr, chamber.occupant, "cleared nanites from", null, "via [src]") - chamber.occupant.investigate_log("'s nanites were cleared by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) - . = TRUE - if("nanite_injection") - playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE) - chamber.inject_nanites() - log_combat(usr, chamber.occupant, "injected", null, "with nanites via [src]") - chamber.occupant.investigate_log("was injected with nanites by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) - . = TRUE - -/obj/machinery/computer/nanite_chamber_control/proc/set_connected_chamber(new_chamber) - if(chamber) - UnregisterSignal(chamber, COMSIG_PARENT_QDELETING) - chamber = new_chamber - if(chamber) - RegisterSignal(chamber, COMSIG_PARENT_QDELETING, .proc/react_to_chamber_del) - -/obj/machinery/computer/nanite_chamber_control/proc/react_to_chamber_del(datum/source) - SIGNAL_HANDLER - set_connected_chamber(null) diff --git a/code/modules/research/nanites/nanite_cloud_controller.dm b/code/modules/research/nanites/nanite_cloud_controller.dm deleted file mode 100644 index fcfe181c607..00000000000 --- a/code/modules/research/nanites/nanite_cloud_controller.dm +++ /dev/null @@ -1,261 +0,0 @@ -/obj/machinery/computer/nanite_cloud_controller - name = "nanite cloud controller" - desc = "Stores and controls nanite cloud backups." - icon = 'icons/obj/machines/research.dmi' - icon_state = "nanite_cloud_controller" - circuit = /obj/item/circuitboard/computer/nanite_cloud_controller - icon_screen = "nanite_cloud_controller_screen" - icon_keyboard = null - - var/obj/item/disk/nanite_program/disk - var/list/datum/nanite_cloud_backup/cloud_backups = list() - var/current_view = 0 //0 is the main menu, any other number is the page of the backup with that ID - var/new_backup_id = 1 - -/obj/machinery/computer/nanite_cloud_controller/Destroy() - QDEL_LIST(cloud_backups) //rip backups - eject() - return ..() - -/obj/machinery/computer/nanite_cloud_controller/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/disk/nanite_program)) - var/obj/item/disk/nanite_program/N = I - if (user.transferItemToLoc(N, src)) - to_chat(user, span_notice("You insert [N] into [src].")) - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - if(disk) - eject(user) - disk = N - else - ..() - -/obj/machinery/computer/nanite_cloud_controller/AltClick(mob/user) - if(disk && user.canUseTopic(src, !issilicon(user))) - to_chat(user, span_notice("You take out [disk] from [src].")) - eject(user) - return - -/obj/machinery/computer/nanite_cloud_controller/proc/eject(mob/living/user) - if(!disk) - return - if(!istype(user) || !Adjacent(user) ||!user.put_in_active_hand(disk)) - disk.forceMove(drop_location()) - disk = null - -/obj/machinery/computer/nanite_cloud_controller/proc/get_backup(cloud_id) - for(var/I in cloud_backups) - var/datum/nanite_cloud_backup/backup = I - if(backup.cloud_id == cloud_id) - return backup - -/obj/machinery/computer/nanite_cloud_controller/proc/generate_backup(cloud_id, mob/user) - if(SSnanites.get_cloud_backup(cloud_id, TRUE)) - to_chat(user, span_warning("Cloud ID already registered.")) - return - - var/datum/nanite_cloud_backup/backup = new(src) - var/datum/component/nanites/cloud_copy = backup.AddComponent(/datum/component/nanites) - backup.cloud_id = cloud_id - backup.nanites = cloud_copy - investigate_log("[key_name(user)] created a new nanite cloud backup with id #[cloud_id]", INVESTIGATE_NANITES) - -/obj/machinery/computer/nanite_cloud_controller/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NaniteCloudControl", name) - ui.open() - -/obj/machinery/computer/nanite_cloud_controller/ui_data() - var/list/data = list() - - if(disk) - data["has_disk"] = TRUE - var/list/disk_data = list() - var/datum/nanite_program/P = disk.program - if(P) - data["has_program"] = TRUE - disk_data["name"] = P.name - disk_data["desc"] = P.desc - disk_data["use_rate"] = P.use_rate - disk_data["can_trigger"] = P.can_trigger - disk_data["trigger_cost"] = P.trigger_cost - disk_data["trigger_cooldown"] = P.trigger_cooldown / 10 - - disk_data["activated"] = P.activated - disk_data["activation_code"] = P.activation_code - disk_data["deactivation_code"] = P.deactivation_code - disk_data["kill_code"] = P.kill_code - disk_data["trigger_code"] = P.trigger_code - disk_data["timer_restart"] = P.timer_restart / 10 - disk_data["timer_shutdown"] = P.timer_shutdown / 10 - disk_data["timer_trigger"] = P.timer_trigger / 10 - disk_data["timer_trigger_delay"] = P.timer_trigger_delay / 10 - - var/list/extra_settings = P.get_extra_settings_frontend() - disk_data["extra_settings"] = extra_settings - if(LAZYLEN(extra_settings)) - disk_data["has_extra_settings"] = TRUE - if(istype(P, /datum/nanite_program/sensor)) - var/datum/nanite_program/sensor/sensor = P - if(sensor.can_rule) - disk_data["can_rule"] = TRUE - data["disk"] = disk_data - else - data["has_disk"] = FALSE - - data["new_backup_id"] = new_backup_id - - data["current_view"] = current_view - if(current_view) - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - var/datum/component/nanites/nanites = backup.nanites - data["cloud_backup"] = TRUE - var/list/cloud_programs = list() - var/id = 1 - for(var/datum/nanite_program/P in nanites.programs) - var/list/cloud_program = list() - cloud_program["name"] = P.name - cloud_program["desc"] = P.desc - cloud_program["id"] = id - cloud_program["use_rate"] = P.use_rate - cloud_program["can_trigger"] = P.can_trigger - cloud_program["trigger_cost"] = P.trigger_cost - cloud_program["trigger_cooldown"] = P.trigger_cooldown / 10 - cloud_program["activated"] = P.activated - cloud_program["timer_restart"] = P.timer_restart / 10 - cloud_program["timer_shutdown"] = P.timer_shutdown / 10 - cloud_program["timer_trigger"] = P.timer_trigger / 10 - cloud_program["timer_trigger_delay"] = P.timer_trigger_delay / 10 - - cloud_program["activation_code"] = P.activation_code - cloud_program["deactivation_code"] = P.deactivation_code - cloud_program["kill_code"] = P.kill_code - cloud_program["trigger_code"] = P.trigger_code - var/list/rules = list() - var/rule_id = 1 - for(var/X in P.rules) - var/datum/nanite_rule/nanite_rule = X - var/list/rule = list() - rule["display"] = nanite_rule.display() - rule["program_id"] = id - rule["id"] = rule_id - rules += list(rule) - rule_id++ - cloud_program["rules"] = rules - if(LAZYLEN(rules)) - cloud_program["has_rules"] = TRUE - cloud_program["all_rules_required"] = P.all_rules_required - - var/list/extra_settings = P.get_extra_settings_frontend() - cloud_program["extra_settings"] = extra_settings - if(LAZYLEN(extra_settings)) - cloud_program["has_extra_settings"] = TRUE - id++ - cloud_programs += list(cloud_program) - data["cloud_programs"] = cloud_programs - else - var/list/backup_list = list() - for(var/X in cloud_backups) - var/datum/nanite_cloud_backup/backup = X - var/list/cloud_backup = list() - cloud_backup["cloud_id"] = backup.cloud_id - backup_list += list(cloud_backup) - data["cloud_backups"] = backup_list - return data - -/obj/machinery/computer/nanite_cloud_controller/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("eject") - eject(usr) - . = TRUE - if("set_view") - current_view = text2num(params["view"]) - . = TRUE - if("update_new_backup_value") - var/backup_value = text2num(params["value"]) - new_backup_id = backup_value - if("create_backup") - var/cloud_id = new_backup_id - if(!isnull(cloud_id)) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - cloud_id = clamp(round(cloud_id, 1),1,100) - generate_backup(cloud_id, usr) - . = TRUE - if("delete_backup") - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - qdel(backup) - investigate_log("[key_name(usr)] deleted the nanite cloud backup #[current_view]", INVESTIGATE_NANITES) - . = TRUE - if("upload_program") - if(disk?.program) - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - var/datum/component/nanites/nanites = backup.nanites - nanites.add_program(null, disk.program.copy()) - investigate_log("[key_name(usr)] uploaded program [disk.program.name] to cloud #[current_view]", INVESTIGATE_NANITES) - . = TRUE - if("remove_program") - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - var/datum/component/nanites/nanites = backup.nanites - var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] - investigate_log("[key_name(usr)] deleted program [P.name] from cloud #[current_view]", INVESTIGATE_NANITES) - qdel(P) - . = TRUE - if("add_rule") - if(disk && disk.program && istype(disk.program, /datum/nanite_program/sensor)) - var/datum/nanite_program/sensor/rule_template = disk.program - if(!rule_template.can_rule) - return - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) - var/datum/component/nanites/nanites = backup.nanites - var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] - var/datum/nanite_rule/rule = rule_template.make_rule(P) - - investigate_log("[key_name(usr)] added rule [rule.display()] to program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES) - . = TRUE - if("remove_rule") - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) - var/datum/component/nanites/nanites = backup.nanites - var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] - var/datum/nanite_rule/rule = P.rules[text2num(params["rule_id"])] - rule.remove() - - investigate_log("[key_name(usr)] removed rule [rule.display()] from program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES) - . = TRUE - if("toggle_rule_logic") - var/datum/nanite_cloud_backup/backup = get_backup(current_view) - if(backup) - playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - var/datum/component/nanites/nanites = backup.nanites - var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] - P.all_rules_required = !P.all_rules_required - investigate_log("[key_name(usr)] edited rule logic for program [P.name] into [P.all_rules_required ? "All" : "Any"] in cloud #[current_view]", INVESTIGATE_NANITES) - . = TRUE - -/datum/nanite_cloud_backup - var/cloud_id = 0 - var/datum/component/nanites/nanites - var/obj/machinery/computer/nanite_cloud_controller/storage - -/datum/nanite_cloud_backup/New(obj/machinery/computer/nanite_cloud_controller/_storage) - storage = _storage - storage.cloud_backups += src - SSnanites.cloud_backups += src - -/datum/nanite_cloud_backup/Destroy() - storage.cloud_backups -= src - SSnanites.cloud_backups -= src - return ..() diff --git a/code/modules/research/nanites/nanite_hijacker.dm b/code/modules/research/nanites/nanite_hijacker.dm deleted file mode 100644 index 8b137891791..00000000000 --- a/code/modules/research/nanites/nanite_hijacker.dm +++ /dev/null @@ -1 +0,0 @@ - diff --git a/code/modules/research/nanites/nanite_misc_items.dm b/code/modules/research/nanites/nanite_misc_items.dm deleted file mode 100644 index 6837543d111..00000000000 --- a/code/modules/research/nanites/nanite_misc_items.dm +++ /dev/null @@ -1,9 +0,0 @@ -/obj/item/nanite_injector - name = "nanite injector (FOR TESTING)" - desc = "Injects nanites into the user." - w_class = WEIGHT_CLASS_SMALL - icon = 'icons/obj/device.dmi' - icon_state = "nanite_remote" - -/obj/item/nanite_injector/attack_self(mob/user) - user.AddComponent(/datum/component/nanites, 150) diff --git a/code/modules/research/nanites/nanite_program_hub.dm b/code/modules/research/nanites/nanite_program_hub.dm deleted file mode 100644 index 3039dea9704..00000000000 --- a/code/modules/research/nanites/nanite_program_hub.dm +++ /dev/null @@ -1,149 +0,0 @@ -/obj/machinery/nanite_program_hub - name = "nanite program hub" - desc = "Compiles nanite programs from the techweb servers and downloads them into disks." - icon = 'icons/obj/machines/research.dmi' - icon_state = "nanite_program_hub" - use_power = IDLE_POWER_USE - anchored = TRUE - density = TRUE - circuit = /obj/item/circuitboard/machine/nanite_program_hub - - var/obj/item/disk/nanite_program/disk - var/datum/techweb/linked_techweb - var/current_category = "Main" - var/detail_view = TRUE - var/categories = list( - list(name = "Utility Nanites"), - list(name = "Medical Nanites"), - list(name = "Sensor Nanites"), - list(name = "Augmentation Nanites"), - list(name = "Suppression Nanites"), - list(name = "Weaponized Nanites"), - list(name = "Protocols"), - ) - -/obj/machinery/nanite_program_hub/Initialize() - . = ..() - linked_techweb = SSresearch.science_tech - -/obj/machinery/nanite_program_hub/update_overlays() - . = ..() - if((machine_stat & (NOPOWER|MAINT|BROKEN)) || panel_open) - return - . += mutable_appearance(icon, "nanite_program_hub_on") - . += emissive_appearance(icon, "nanite_program_hub_on") - -/obj/machinery/nanite_program_hub/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/disk/nanite_program)) - var/obj/item/disk/nanite_program/N = I - if(user.transferItemToLoc(N, src)) - to_chat(user, span_notice("You insert [N] into [src].")) - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - if(disk) - eject(user) - disk = N - else - ..() - -/obj/machinery/nanite_program_hub/screwdriver_act(mob/living/user, obj/item/I) - if(..()) - return TRUE - - return default_deconstruction_screwdriver(user, "nanite_program_hub_t", "nanite_program_hub", I) - -/obj/machinery/nanite_program_hub/crowbar_act(mob/living/user, obj/item/I) - if(..()) - return TRUE - - return default_deconstruction_crowbar(I) - -/obj/machinery/nanite_program_hub/proc/eject(mob/living/user) - if(!disk) - return - if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk)) - disk.forceMove(drop_location()) - disk = null - -/obj/machinery/nanite_program_hub/AltClick(mob/user) - if(disk && user.canUseTopic(src, !issilicon(user))) - to_chat(user, span_notice("You take out [disk] from [src].")) - eject(user) - return - -/obj/machinery/nanite_program_hub/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NaniteProgramHub", name) - ui.open() - -/obj/machinery/nanite_program_hub/ui_data() - var/list/data = list() - if(disk) - data["has_disk"] = TRUE - var/list/disk_data = list() - var/datum/nanite_program/P = disk.program - if(P) - data["has_program"] = TRUE - disk_data["name"] = P.name - disk_data["desc"] = P.desc - data["disk"] = disk_data - else - data["has_disk"] = FALSE - - data["detail_view"] = detail_view - - return data - -/obj/machinery/nanite_program_hub/ui_static_data(mob/user) - var/list/data = list() - data["programs"] = list() - for(var/i in linked_techweb.researched_designs) - var/datum/design/nanites/D = SSresearch.techweb_design_by_id(i) - if(!istype(D)) - continue - var/cat_name = D.category[1] //just put them in the first category fuck it - if(isnull(data["programs"][cat_name])) - data["programs"][cat_name] = list() - var/list/program_design = list() - program_design["id"] = D.id - program_design["name"] = D.name - program_design["desc"] = D.desc - data["programs"][cat_name] += list(program_design) - - if(!length(data["programs"])) - data["programs"] = null - - return data - -/obj/machinery/nanite_program_hub/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("eject") - eject(usr) - . = TRUE - if("download") - if(!disk) - return - var/datum/design/nanites/downloaded = linked_techweb.isDesignResearchedID(params["program_id"]) //check if it's a valid design - if(!istype(downloaded)) - return - if(disk.program) - qdel(disk.program) - disk.program = new downloaded.program_type - disk.name = "[initial(disk.name)] \[[disk.program.name]\]" - playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE) - . = TRUE - if("refresh") - update_static_data(usr) - . = TRUE - if("toggle_details") - detail_view = !detail_view - . = TRUE - if("clear") - if(disk?.program) - qdel(disk.program) - disk.program = null - disk.name = initial(disk.name) - . = TRUE diff --git a/code/modules/research/nanites/nanite_programmer.dm b/code/modules/research/nanites/nanite_programmer.dm deleted file mode 100644 index f06c21aa79f..00000000000 --- a/code/modules/research/nanites/nanite_programmer.dm +++ /dev/null @@ -1,175 +0,0 @@ -/obj/machinery/nanite_programmer - name = "nanite programmer" - desc = "A device that can edit nanite program disks to adjust their functionality." - var/obj/item/disk/nanite_program/disk - var/datum/nanite_program/program - icon = 'icons/obj/machines/research.dmi' - icon_state = "nanite_programmer" - use_power = IDLE_POWER_USE - anchored = TRUE - density = TRUE - circuit = /obj/item/circuitboard/machine/nanite_programmer - -/obj/machinery/nanite_programmer/Initialize() - . = ..() - become_hearing_sensitive(trait_source = ROUNDSTART_TRAIT) - -/obj/machinery/nanite_programmer/update_overlays() - . = ..() - if((machine_stat & (NOPOWER|MAINT|BROKEN)) || panel_open) - return - . += mutable_appearance(icon, "nanite_programmer_on") - . += emissive_appearance(icon, "nanite_programmer_on") - -/obj/machinery/nanite_programmer/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/disk/nanite_program)) - var/obj/item/disk/nanite_program/N = I - if(user.transferItemToLoc(N, src)) - to_chat(user, span_notice("You insert [N] into [src]")) - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - if(disk) - eject(user) - disk = N - program = N.program - else - ..() - -/obj/machinery/nanite_programmer/screwdriver_act(mob/living/user, obj/item/I) - if(..()) - return TRUE - - return default_deconstruction_screwdriver(user, "nanite_programmer_t", "nanite_programmer", I) - -/obj/machinery/nanite_programmer/crowbar_act(mob/living/user, obj/item/I) - if(..()) - return TRUE - - return default_deconstruction_crowbar(I) - -/obj/machinery/nanite_programmer/proc/eject(mob/living/user) - if(!disk) - return - if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk)) - disk.forceMove(drop_location()) - disk = null - program = null - -/obj/machinery/nanite_programmer/AltClick(mob/user) - if(disk && user.canUseTopic(src, !issilicon(user))) - to_chat(user, span_notice("You take out [disk] from [src].")) - eject(user) - return - -/obj/machinery/nanite_programmer/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NaniteProgrammer", name) - ui.open() - -/obj/machinery/nanite_programmer/ui_data() - var/list/data = list() - data["has_disk"] = istype(disk) - data["has_program"] = istype(program) - if(program) - data["name"] = program.name - data["desc"] = program.desc - data["use_rate"] = program.use_rate - data["can_trigger"] = program.can_trigger - data["trigger_cost"] = program.trigger_cost - data["trigger_cooldown"] = program.trigger_cooldown / 10 - - data["activated"] = program.activated - data["activation_code"] = program.activation_code - data["deactivation_code"] = program.deactivation_code - data["kill_code"] = program.kill_code - data["trigger_code"] = program.trigger_code - data["timer_restart"] = program.timer_restart / 10 - data["timer_shutdown"] = program.timer_shutdown / 10 - data["timer_trigger"] = program.timer_trigger / 10 - data["timer_trigger_delay"] = program.timer_trigger_delay / 10 - - var/list/extra_settings = program.get_extra_settings_frontend() - data["extra_settings"] = extra_settings - if(LAZYLEN(extra_settings)) - data["has_extra_settings"] = TRUE - - return data - -/obj/machinery/nanite_programmer/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("eject") - eject(usr) - . = TRUE - if("toggle_active") - playsound(src, "terminal_type", 25, FALSE) - program.activated = !program.activated //we don't use the activation procs since we aren't in a mob - investigate_log("[key_name(usr)] edited [program.name]'s initial activation status into [program.activated ? "Activated" : "Deactivated"]", INVESTIGATE_NANITES) - . = TRUE - if("set_code") - var/new_code = text2num(params["code"]) - playsound(src, "terminal_type", 25, FALSE) - var/target_code = params["target_code"] - switch(target_code) - if("activation") - program.activation_code = clamp(round(new_code, 1),0,9999) - investigate_log("[key_name(usr)] edited [program.name]'s activation code into [program.activation_code]", INVESTIGATE_NANITES) - if("deactivation") - program.deactivation_code = clamp(round(new_code, 1),0,9999) - investigate_log("[key_name(usr)] edited [program.name]'s deactivation code into [program.deactivation_code]", INVESTIGATE_NANITES) - if("kill") - program.kill_code = clamp(round(new_code, 1),0,9999) - investigate_log("[key_name(usr)] edited [program.name]'s kill code into [program.kill_code]", INVESTIGATE_NANITES) - if("trigger") - program.trigger_code = clamp(round(new_code, 1),0,9999) - investigate_log("[key_name(usr)] edited [program.name]'s trigger code into [program.trigger_code]", INVESTIGATE_NANITES) - . = TRUE - if("set_extra_setting") - program.set_extra_setting(params["target_setting"], params["value"]) - investigate_log("[key_name(usr)] edited [program.name]'s extra setting '[params["target_setting"]]' into [params["value"]]", INVESTIGATE_NANITES) - playsound(src, "terminal_type", 25, FALSE) - . = TRUE - if("set_restart_timer") - var/timer = text2num(params["delay"]) - if(!isnull(timer)) - playsound(src, "terminal_type", 25, FALSE) - timer = clamp(round(timer, 1), 0, 3600) - timer *= 10 //convert to deciseconds - program.timer_restart = timer - investigate_log("[key_name(usr)] edited [program.name]'s restart timer into [timer/10] s", INVESTIGATE_NANITES) - . = TRUE - if("set_shutdown_timer") - var/timer = text2num(params["delay"]) - if(!isnull(timer)) - playsound(src, "terminal_type", 25, FALSE) - timer = clamp(round(timer, 1), 0, 3600) - timer *= 10 //convert to deciseconds - program.timer_shutdown = timer - investigate_log("[key_name(usr)] edited [program.name]'s shutdown timer into [timer/10] s", INVESTIGATE_NANITES) - . = TRUE - if("set_trigger_timer") - var/timer = text2num(params["delay"]) - if(!isnull(timer)) - playsound(src, "terminal_type", 25, FALSE) - timer = clamp(round(timer, 1), 0, 3600) - timer *= 10 //convert to deciseconds - program.timer_trigger = timer - investigate_log("[key_name(usr)] edited [program.name]'s trigger timer into [timer/10] s", INVESTIGATE_NANITES) - . = TRUE - if("set_timer_trigger_delay") - var/timer = text2num(params["delay"]) - if(!isnull(timer)) - playsound(src, "terminal_type", 25, FALSE) - timer = clamp(round(timer, 1), 0, 3600) - timer *= 10 //convert to deciseconds - program.timer_trigger_delay = timer - investigate_log("[key_name(usr)] edited [program.name]'s trigger delay timer into [timer/10] s", INVESTIGATE_NANITES) - . = TRUE - -/obj/machinery/nanite_programmer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods = list()) - . = ..() - var/static/regex/when = regex("(?:^\\W*when|when\\W*$)", "i") //starts or ends with when - if(findtext(raw_message, when) && !istype(speaker, /obj/machinery/nanite_programmer)) - say("When you code it!!") diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm deleted file mode 100644 index 0b26b4e79f0..00000000000 --- a/code/modules/research/nanites/nanite_programs.dm +++ /dev/null @@ -1,335 +0,0 @@ -/datum/nanite_program - var/name = "Generic Nanite Program" - var/desc = "Warn a coder if you can read this." - - var/datum/component/nanites/nanites - var/mob/living/host_mob - - var/use_rate = 0 //Amount of nanites used while active - var/unique = TRUE //If there can be more than one copy in the same nanites - var/can_trigger = FALSE //If the nanites have a trigger function (used for the programming UI) - var/trigger_cost = 0 //Amount of nanites required to trigger - var/trigger_cooldown = 50 //Deciseconds required between each trigger activation - var/next_trigger = 0 //World time required for the next trigger activation - - var/program_flags = NONE - var/passive_enabled = FALSE //If the nanites have an on/off-style effect, it's tracked by this var - - var/list/rogue_types = list(/datum/nanite_program/glitch) //What this can turn into if it glitches. - //As a rule of thumb, these should be: - //A: simpler - //B: negative - //C: affecting the same parts of the body, roughly - //B is mostly a consequence of A: it's always going to be simpler to cause damage than to repair it, so a software bug will not randomly make the flesh eating - //nanites learn how to repair cells. - //Given enough glitch-swapping you'll end up with stuff like necrotic or toxic nanites, which are very simple as they just try to eat what's in front of them - //or just lie around polluting the blood - - - //The following vars are customizable - var/activated = TRUE //If FALSE, the program won't process, disables passive effects, can't trigger and doesn't consume nanites - - var/timer_restart = 0 //When deactivated, the program will wait X deciseconds before self-reactivating. Also works if the program begins deactivated. - var/timer_shutdown = 0 //When activated, the program will wait X deciseconds before self-deactivating. Also works if the program begins activated. - var/timer_trigger = 0 //[Trigger only] While active, the program will attempt to trigger once every x deciseconds. - var/timer_trigger_delay = 0 //[Trigger only] While active, the program will delay trigger signals by X deciseconds. - - //Indicates the next world.time tick where these timers will act - var/timer_restart_next = 0 - var/timer_shutdown_next = 0 - var/timer_trigger_next = 0 - var/timer_trigger_delay_next = 0 - - //Signal codes, these handle remote input to the nanites. If set to 0 they'll ignore signals. - var/activation_code = 0 //Code that activates the program [1-9999] - var/deactivation_code = 0 //Code that deactivates the program [1-9999] - var/kill_code = 0 //Code that permanently removes the program [1-9999] - var/trigger_code = 0 //Code that triggers the program (if available) [1-9999] - - //Extra settings - ///Don't ever override this or I will come to your house and stand menacingly behind a bush - VAR_FINAL/list/extra_settings = list() - - //Rules - //Rules that automatically manage if the program's active without requiring separate sensor programs - var/list/datum/nanite_rule/rules = list() - var/all_rules_required = TRUE //Whether all rules are required for positive condition or any of specified - -/datum/nanite_program/New() - . = ..() - register_extra_settings() - -/datum/nanite_program/Destroy() - extra_settings = null - if(host_mob) - if(activated) - deactivate() - if(passive_enabled) - disable_passive_effect() - on_mob_remove() - if(nanites) - nanites.programs -= src - for(var/datum/nanite_rule/rule as anything in rules) - rule.remove() - rules.Cut() - return ..() - -/datum/nanite_program/proc/copy() - var/datum/nanite_program/new_program = new type() - copy_programming(new_program, TRUE) - - return new_program - -/datum/nanite_program/proc/copy_programming(datum/nanite_program/target, copy_activated = TRUE) - if(copy_activated) - target.activated = activated - target.timer_restart = timer_restart - target.timer_shutdown = timer_shutdown - target.timer_trigger = timer_trigger - target.timer_trigger_delay = timer_trigger_delay - target.activation_code = activation_code - target.deactivation_code = deactivation_code - target.kill_code = kill_code - target.trigger_code = trigger_code - - target.rules = list() - for(var/R in rules) - var/datum/nanite_rule/rule = R - rule.copy_to(target) - target.all_rules_required = all_rules_required - - if(istype(target,src)) - copy_extra_settings_to(target) - -/// Register extra settings by overriding this. -/// -/// `extra_settings[name] = new typepath()` for each extra setting. -/datum/nanite_program/proc/register_extra_settings() - return - -///You can override this if you need to have special behavior after setting certain settings. -/datum/nanite_program/proc/set_extra_setting(setting, value) - var/datum/nanite_extra_setting/ES = extra_settings[setting] - return ES.set_value(value) - -///You probably shouldn't be overriding this one, but I'm not a cop. -/datum/nanite_program/proc/get_extra_setting_value(setting) - var/datum/nanite_extra_setting/ES = extra_settings[setting] - return ES.get_value() - -///Used for getting information about the extra settings to the frontend -/datum/nanite_program/proc/get_extra_settings_frontend() - var/list/out = list() - for(var/name in extra_settings) - var/datum/nanite_extra_setting/ES = extra_settings[name] - out += ES.get_frontend_list(name) - return out - -///Copy of the list instead of direct reference for obvious reasons -/datum/nanite_program/proc/copy_extra_settings_to(datum/nanite_program/target) - var/list/copy_list = list() - for(var/ns_name in extra_settings) - var/datum/nanite_extra_setting/extra_setting = extra_settings[ns_name] - copy_list[ns_name] = extra_setting.get_copy() - target.extra_settings = copy_list - -/datum/nanite_program/proc/on_add(datum/component/nanites/_nanites) - nanites = _nanites - if(nanites.host_mob) - on_mob_add() - -/datum/nanite_program/proc/on_mob_add() - host_mob = nanites.host_mob - if(activated) //apply activation effects depending on initial status; starts the restart and shutdown timers - activate() - else - deactivate() - -/datum/nanite_program/proc/on_mob_remove() - return - -/datum/nanite_program/proc/toggle() - if(!activated) - activate() - else - deactivate() - -/datum/nanite_program/proc/activate() - activated = TRUE - if(timer_shutdown) - timer_shutdown_next = world.time + timer_shutdown - -/datum/nanite_program/proc/deactivate() - if(passive_enabled) - disable_passive_effect() - activated = FALSE - if(timer_restart) - timer_restart_next = world.time + timer_restart - -/datum/nanite_program/proc/on_process() - if(!activated) - if(timer_restart_next && world.time > timer_restart_next) - activate() - timer_restart_next = 0 - return - - if(timer_shutdown_next && world.time > timer_shutdown_next) - deactivate() - timer_shutdown_next = 0 - return - - if(timer_trigger && world.time > timer_trigger_next) - trigger() - timer_trigger_next = world.time + timer_trigger - return - - if(timer_trigger_delay_next && world.time > timer_trigger_delay_next) - trigger(delayed = TRUE) - timer_trigger_delay_next = 0 - return - - if(check_conditions() && consume_nanites(use_rate)) - if(!passive_enabled) - enable_passive_effect() - active_effect() - else - if(passive_enabled) - disable_passive_effect() - -//If false, disables active, passive effects, and triggers without consuming nanites -//Can be used to avoid consuming nanites for nothing -/datum/nanite_program/proc/check_conditions() - if (!LAZYLEN(rules)) - return TRUE - for(var/R in rules) - var/datum/nanite_rule/rule = R - if(!all_rules_required && rule.check_rule()) - return TRUE - if(all_rules_required && !rule.check_rule()) - return FALSE - return all_rules_required ? TRUE : FALSE - -//Constantly procs as long as the program is active -/datum/nanite_program/proc/active_effect() - return - -//Procs once when the program activates -/datum/nanite_program/proc/enable_passive_effect() - passive_enabled = TRUE - -//Procs once when the program deactivates -/datum/nanite_program/proc/disable_passive_effect() - passive_enabled = FALSE - -//Checks conditions then fires the nanite trigger effect -/datum/nanite_program/proc/trigger(delayed = FALSE, comm_message) - if(!can_trigger) - return - if(!activated) - return - if(timer_trigger_delay && !delayed) - timer_trigger_delay_next = world.time + timer_trigger_delay - return - if(world.time < next_trigger) - return - if(!check_conditions()) - return - if(!consume_nanites(trigger_cost)) - return - next_trigger = world.time + trigger_cooldown - on_trigger(comm_message) - -//Nanite trigger effect, requires can_trigger to be used -/datum/nanite_program/proc/on_trigger(comm_message) - return - -/datum/nanite_program/proc/consume_nanites(amount, force = FALSE) - return nanites.consume_nanites(amount, force) - -/datum/nanite_program/proc/on_emp(severity) - if(program_flags & NANITE_EMP_IMMUNE) - return - if(prob(80 / severity)) - host_mob.investigate_log("[src] nanite program received a software error due to emp.", INVESTIGATE_NANITES) - software_error() - -/datum/nanite_program/proc/on_shock(shock_damage) - if(!(program_flags & NANITE_SHOCK_IMMUNE)) - if(prob(10)) - host_mob.investigate_log("[src] nanite program received a software error due to shock.", INVESTIGATE_NANITES) - software_error() - else if(prob(33)) - host_mob.investigate_log("[src] nanite program was deleted due to shock.", INVESTIGATE_NANITES) - qdel(src) - -/datum/nanite_program/proc/on_minor_shock() - if(!(program_flags & NANITE_SHOCK_IMMUNE)) - if(prob(10)) - host_mob.investigate_log("[src] nanite program received a software error due to minor shock.", INVESTIGATE_NANITES) - software_error() - -/datum/nanite_program/proc/on_death() - return - -/datum/nanite_program/proc/software_error(type) - if(!type) - type = rand(1,5) - switch(type) - if(1) - host_mob.investigate_log("[src] nanite program was deleted by software error.", INVESTIGATE_NANITES) - qdel(src) //kill switch - return - if(2) //deprogram codes - host_mob.investigate_log("[src] nanite program was de-programmed by software error.", INVESTIGATE_NANITES) - activation_code = 0 - deactivation_code = 0 - kill_code = 0 - trigger_code = 0 - if(3) - host_mob.investigate_log("[src] nanite program was toggled by software error.", INVESTIGATE_NANITES) - toggle() //enable/disable - if(4) - if(can_trigger) - host_mob.investigate_log("[src] nanite program was triggered by software error.", INVESTIGATE_NANITES) - trigger() - if(5) //Program is scrambled and does something different - var/rogue_type = pick(rogue_types) - var/datum/nanite_program/rogue = new rogue_type - host_mob.investigate_log("[src] nanite program was converted into [rogue.name] by software error.", INVESTIGATE_NANITES) - nanites.add_program(null, rogue, src) - qdel(src) - -/datum/nanite_program/proc/receive_signal(code, source) - if(activation_code && code == activation_code && !activated) - activate() - host_mob.investigate_log("'s [name] nanite program was activated by [source] with code [code].", INVESTIGATE_NANITES) - else if(deactivation_code && code == deactivation_code && activated) - deactivate() - host_mob.investigate_log("'s [name] nanite program was deactivated by [source] with code [code].", INVESTIGATE_NANITES) - if(can_trigger && trigger_code && code == trigger_code) - trigger() - host_mob.investigate_log("'s [name] nanite program was triggered by [source] with code [code].", INVESTIGATE_NANITES) - if(kill_code && code == kill_code) - host_mob.investigate_log("'s [name] nanite program was deleted by [source] with code [code].", INVESTIGATE_NANITES) - qdel(src) - -///A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once. -/datum/nanite_program/protocol - name = "Nanite Protocol" - var/protocol_class = NONE - -/datum/nanite_program/protocol/check_conditions() - . = ..() - for(var/protocol in nanites.protocols) - var/datum/nanite_program/protocol/P = protocol - if(P != src && P.activated && P.protocol_class == protocol_class) - return FALSE - -/datum/nanite_program/protocol/on_add(datum/component/nanites/_nanites) - ..() - nanites.protocols += src - -/datum/nanite_program/protocol/Destroy() - if(nanites) - nanites.protocols -= src - return ..() diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm deleted file mode 100644 index 5987105a08e..00000000000 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ /dev/null @@ -1,111 +0,0 @@ -//Programs that buff the host in generally passive ways. - -/datum/nanite_program/nervous - name = "Nerve Support" - desc = "The nanites act as a secondary nervous system, reducing the amount of time the host is stunned." - use_rate = 1.5 - rogue_types = list(/datum/nanite_program/nerve_decay) - -/datum/nanite_program/nervous/enable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.stun_mod *= 0.5 - -/datum/nanite_program/nervous/disable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.stun_mod *= 2 - -/datum/nanite_program/hardening - name = "Dermal Hardening" - desc = "The nanites form a mesh under the host's skin, protecting them from melee and bullet impacts." - use_rate = 0.5 - rogue_types = list(/datum/nanite_program/skin_decay) - -//TODO on_hit effect that turns skin grey for a moment - -/datum/nanite_program/hardening/enable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.armor.melee += 25 - H.physiology.armor.bullet += 20 - -/datum/nanite_program/hardening/disable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.armor.melee -= 25 - H.physiology.armor.bullet -= 20 - -/datum/nanite_program/refractive - name = "Dermal Refractive Surface" - desc = "The nanites form a membrane above the host's skin, reducing the effect of laser and energy impacts." - use_rate = 0.50 - rogue_types = list(/datum/nanite_program/skin_decay) - -/datum/nanite_program/refractive/enable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.armor.laser += 25 - H.physiology.armor.energy += 20 - -/datum/nanite_program/refractive/disable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.armor.laser -= 25 - H.physiology.armor.energy -= 20 - -/datum/nanite_program/coagulating - name = "Vein Repressurization" - desc = "The nanites re-route circulating blood away from open wounds, dramatically reducing bleeding rate." - use_rate = 0.20 - rogue_types = list(/datum/nanite_program/suffocating) - -/datum/nanite_program/coagulating/enable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.bleed_mod *= 0.5 - -/datum/nanite_program/coagulating/disable_passive_effect() - . = ..() - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - H.physiology.bleed_mod *= 2 - -/datum/nanite_program/conductive - name = "Electric Conduction" - desc = "The nanites act as a grounding rod for electric shocks, protecting the host. Shocks can still damage the nanites themselves." - use_rate = 0.20 - program_flags = NANITE_SHOCK_IMMUNE - rogue_types = list(/datum/nanite_program/nerve_decay) - -/datum/nanite_program/conductive/enable_passive_effect() - . = ..() - ADD_TRAIT(host_mob, TRAIT_SHOCKIMMUNE, NANITES_TRAIT) - -/datum/nanite_program/conductive/disable_passive_effect() - . = ..() - REMOVE_TRAIT(host_mob, TRAIT_SHOCKIMMUNE, NANITES_TRAIT) - -/datum/nanite_program/mindshield - name = "Mental Barrier" - desc = "The nanites form a protective membrane around the host's brain, shielding them from abnormal influences while they're active." - use_rate = 0.40 - rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) - -/datum/nanite_program/mindshield/enable_passive_effect() - . = ..() - if(!host_mob.mind.has_antag_datum(/datum/antagonist/rev, TRUE)) //won't work if on a rev, to avoid having implanted revs. - ADD_TRAIT(host_mob, TRAIT_MINDSHIELD, NANITES_TRAIT) - host_mob.sec_hud_set_implants() - -/datum/nanite_program/mindshield/disable_passive_effect() - . = ..() - REMOVE_TRAIT(host_mob, TRAIT_MINDSHIELD, NANITES_TRAIT) - host_mob.sec_hud_set_implants() diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm deleted file mode 100644 index 6356026121a..00000000000 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ /dev/null @@ -1,230 +0,0 @@ -//Programs that heal the host in some way. - -/datum/nanite_program/regenerative - name = "Accelerated Regeneration" - desc = "The nanites boost the host's natural regeneration, increasing their healing speed. Will not consume nanites while the host is unharmed." - use_rate = 0.5 - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/regenerative/check_conditions() - if(!host_mob.getBruteLoss() && !host_mob.getFireLoss()) - return FALSE - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) - if(!parts.len) - return FALSE - return ..() - -/datum/nanite_program/regenerative/active_effect() - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) - if(!parts.len) - return - for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(0.5/parts.len, 0.5/parts.len, null, BODYPART_ORGANIC)) - host_mob.update_damage_overlays() - else - host_mob.adjustBruteLoss(-0.5, TRUE) - host_mob.adjustFireLoss(-0.5, TRUE) - -/datum/nanite_program/temperature - name = "Temperature Adjustment" - desc = "The nanites adjust the host's internal temperature to an ideal level. Will not consume nanites while the host is at a normal body temperature." - use_rate = 3.5 - rogue_types = list(/datum/nanite_program/skin_decay) - -/datum/nanite_program/temperature/check_conditions() - if(host_mob.bodytemperature > (host_mob.get_body_temp_normal(apply_change=FALSE) - 30) && host_mob.bodytemperature < (host_mob.get_body_temp_normal(apply_change=FALSE) + 30)) - return FALSE - return ..() - -/datum/nanite_program/temperature/active_effect() - var/target_temp = host_mob.get_body_temp_normal(apply_change=FALSE) - if(host_mob.bodytemperature > target_temp) - host_mob.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, target_temp) - else if(host_mob.bodytemperature < (target_temp + 1)) - host_mob.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, target_temp) - -/datum/nanite_program/purging - name = "Blood Purification" - desc = "The nanites purge toxins and chemicals from the host's bloodstream. Consumes nanites even if it has no effect." - use_rate = 1 - rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic) - -/datum/nanite_program/purging/check_conditions() - . = ..() - if(!. || !host_mob.reagents) - return FALSE // No trying to purge simple mobs - -/datum/nanite_program/purging/active_effect() - host_mob.adjustToxLoss(-1) - for(var/datum/reagent/R in host_mob.reagents.reagent_list) - host_mob.reagents.remove_reagent(R.type,1) - -/datum/nanite_program/brain_heal - name = "Neural Regeneration" - desc = "The nanites fix neural connections in the host's brain, reversing brain damage and minor traumas. Will not consume nanites while it would not have an effect." - use_rate = 1.5 - rogue_types = list(/datum/nanite_program/brain_decay) - -/datum/nanite_program/brain_heal/check_conditions() - if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN) > 0) - return ..() - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - if ( C.has_trauma_type( resilience = TRAUMA_RESILIENCE_BASIC) ) - return ..() - return FALSE - -/datum/nanite_program/brain_heal/active_effect() - host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1) - if(iscarbon(host_mob) && prob(10)) - var/mob/living/carbon/C = host_mob - C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) - -/datum/nanite_program/blood_restoring - name = "Blood Regeneration" - desc = "The nanites stimulate and boost blood cell production in the host. Will not consume nanites while the host has a safe blood level." - use_rate = 1 - rogue_types = list(/datum/nanite_program/suffocating) - -/datum/nanite_program/blood_restoring/check_conditions() - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - if(C.blood_volume >= BLOOD_VOLUME_SAFE) - return FALSE - else - return FALSE - return ..() - -/datum/nanite_program/blood_restoring/active_effect() - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - C.blood_volume += 2 - -/datum/nanite_program/repairing - name = "Mechanical Repair" - desc = "The nanites fix damage in the host's mechanical limbs. Will not consume nanites while the host's mechanical limbs are undamaged, or while the host has no mechanical limbs." - use_rate = 0.5 - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/repairing/check_conditions() - if(!host_mob.getBruteLoss() && !host_mob.getFireLoss()) - return FALSE - - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = BODYPART_ROBOTIC) - if(!parts.len) - return FALSE - else - if(!(host_mob.mob_biotypes & MOB_ROBOTIC)) - return FALSE - return ..() - -/datum/nanite_program/repairing/active_effect(mob/living/M) - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = BODYPART_ROBOTIC) - if(!parts.len) - return - var/update = FALSE - for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(1/parts.len, 1/parts.len, null, BODYPART_ROBOTIC)) //much faster than organic healing - update = TRUE - if(update) - host_mob.update_damage_overlays() - else - host_mob.adjustBruteLoss(-1, TRUE) - host_mob.adjustFireLoss(-1, TRUE) - -/datum/nanite_program/purging_advanced - name = "Selective Blood Purification" - desc = "The nanites purge toxins and dangerous chemicals from the host's bloodstream, while ignoring beneficial chemicals. \ - The added processing power required to analyze the chemicals severely increases the nanite consumption rate. Consumes nanites even if it has no effect." - use_rate = 2 - rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic) - -/datum/nanite_program/purging_advanced/check_conditions() - . = ..() - if(!. || !host_mob.reagents) - return FALSE - -/datum/nanite_program/purging_advanced/active_effect() - host_mob.adjustToxLoss(-1) - for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list) - host_mob.reagents.remove_reagent(R.type,1) - -/datum/nanite_program/regenerative_advanced - name = "Bio-Reconstruction" - desc = "The nanites manually repair and replace organic cells, acting much faster than normal regeneration. \ - However, this program cannot detect the difference between harmed and unharmed, causing it to consume nanites even if it has no effect." - use_rate = 5.5 - rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic) - -/datum/nanite_program/regenerative_advanced/active_effect() - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) - if(!parts.len) - return - var/update = FALSE - for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(2/parts.len, 2/parts.len, null, BODYPART_ORGANIC)) - update = TRUE - if(update) - host_mob.update_damage_overlays() - else - host_mob.adjustBruteLoss(-2, TRUE) - host_mob.adjustFireLoss(-2, TRUE) - -/datum/nanite_program/brain_heal_advanced - name = "Neural Reimaging" - desc = "The nanites are able to backup and restore the host's neural connections, potentially replacing entire chunks of missing or damaged brain matter. Consumes nanites even if it has no effect." - use_rate = 3 - rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) - -/datum/nanite_program/brain_heal_advanced/active_effect() - host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2) - if(iscarbon(host_mob) && prob(10)) - var/mob/living/carbon/C = host_mob - C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_LOBOTOMY) - -/datum/nanite_program/defib - name = "Defibrillation" - desc = "The nanites shock the host's heart when triggered, bringing them back to life if the body can sustain it." - can_trigger = TRUE - trigger_cost = 25 - trigger_cooldown = 120 - rogue_types = list(/datum/nanite_program/shocking) - -/datum/nanite_program/defib/on_trigger(comm_message) - host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!") - addtimer(CALLBACK(src, .proc/zap), 50) - -/datum/nanite_program/defib/proc/check_revivable() - if(!iscarbon(host_mob)) //nonstandard biology - return FALSE - var/mob/living/carbon/C = host_mob - if(C.get_ghost()) - return FALSE - return C.can_defib() == DEFIB_POSSIBLE - -/datum/nanite_program/defib/proc/zap() - var/mob/living/carbon/C = host_mob - playsound(C, 'sound/machines/defib_charge.ogg', 50, FALSE) - sleep(30) - playsound(C, 'sound/machines/defib_zap.ogg', 50, FALSE) - if(check_revivable()) - playsound(C, 'sound/machines/defib_success.ogg', 50, FALSE) - C.set_heartattack(FALSE) - C.revive(full_heal = FALSE, admin_revive = FALSE) - C.emote("gasp") - C.Jitter(100) - SEND_SIGNAL(C, COMSIG_LIVING_MINOR_SHOCK) - log_game("[C] has been successfully defibrillated by nanites.") - else - playsound(C, 'sound/machines/defib_failed.ogg', 50, FALSE) - diff --git a/code/modules/research/nanites/nanite_programs/protocols.dm b/code/modules/research/nanites/nanite_programs/protocols.dm deleted file mode 100644 index c0198f67a74..00000000000 --- a/code/modules/research/nanites/nanite_programs/protocols.dm +++ /dev/null @@ -1,277 +0,0 @@ -//Replication Protocols -/datum/nanite_program/protocol/kickstart - name = "Kickstart Protocol" - desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation, \ - resulting in an additional 420 nanite volume being produced during the first two minutes." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_REPLICATION - var/boost_duration = 1200 - -/datum/nanite_program/protocol/kickstart/check_conditions() - if(!(world.time < nanites.start_time + boost_duration)) - return FALSE - return ..() - -/datum/nanite_program/protocol/kickstart/active_effect() - nanites.adjust_nanites(null, 3.5) - -/datum/nanite_program/protocol/factory - name = "Factory Protocol" - desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time, \ - granting a maximum of 2 additional nanite production after roughly 17 minutes. \ - The factory decays if the protocol is not active, or if the nanites are disrupted by shocks or EMPs." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_REPLICATION - var/factory_efficiency = 0 - var/max_efficiency = 1000 //Goes up to 2 bonus regen per tick after 16 minutes and 40 seconds - -/datum/nanite_program/protocol/factory/on_process() - if(!activated || !check_conditions()) - factory_efficiency = max(0, factory_efficiency - 5) - ..() - -/datum/nanite_program/protocol/factory/on_emp(severity) - ..() - factory_efficiency = max(0, factory_efficiency - 300) - -/datum/nanite_program/protocol/factory/on_shock(shock_damage) - ..() - factory_efficiency = max(0, factory_efficiency - 200) - -/datum/nanite_program/protocol/factory/on_minor_shock() - ..() - factory_efficiency = max(0, factory_efficiency - 100) - -/datum/nanite_program/protocol/factory/active_effect() - factory_efficiency = min(factory_efficiency + 1, max_efficiency) - nanites.adjust_nanites(null, round(0.002 * factory_efficiency, 0.1)) - -/datum/nanite_program/protocol/pyramid - name = "Pyramid Protocol" - desc = "Replication Protocol: the nanites implement an alternate cooperative replication protocol that is active as long as the nanite saturation level is above 80%, \ - resulting in an additional volume production of 1.2 per second." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_REPLICATION - var/boost = 1.2 - -/datum/nanite_program/protocol/pyramid/check_conditions() - if((nanites.nanite_volume / nanites.max_nanites) < 0.8) - return FALSE - - return ..() - -/datum/nanite_program/protocol/pyramid/active_effect() - nanites.adjust_nanites(null, boost) - -/datum/nanite_program/protocol/offline - name = "Eclipse Protocol" - desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_REPLICATION - var/boost = 3 - - -/datum/nanite_program/protocol/offline/check_conditions() - if(nanites.host_mob.stat == CONSCIOUS) - return FALSE - return ..() - - -/datum/nanite_program/protocol/offline/active_effect() - nanites.adjust_nanites(null, boost) - -/datum/nanite_program/protocol/hive - name = "Hive Protocol" - desc = "Storage Protocol: the nanites use a more efficient grid arrangment for volume storage, increasing maximum volume to 750." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_STORAGE - var/extra_volume = 250 - -/datum/nanite_program/protocol/hive/enable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites + extra_volume) - -/datum/nanite_program/protocol/hive/disable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites - extra_volume) - -/datum/nanite_program/protocol/zip - name = "Zip Protocol" - desc = "Storage Protocol: the nanites are disassembled and compacted when unused, increasing the maximum volume to 1000. However, the process slows down their replication rate slightly." - use_rate = 0.2 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_STORAGE - var/extra_volume = 500 - -/datum/nanite_program/protocol/zip/enable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites + extra_volume) - -/datum/nanite_program/protocol/zip/disable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites - extra_volume) - -/datum/nanite_program/protocol/free_range - name = "Free-range Protocol" - desc = "Storage Protocol: the nanites discard their default storage protocols in favour of a cheaper and more organic approach. Reduces maximum volume to 250, but increases the replication rate by 0.5." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_STORAGE - var/boost = 0.5 - var/extra_volume = -250 - -/datum/nanite_program/protocol/free_range/enable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites + extra_volume) - -/datum/nanite_program/protocol/free_range/disable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites - extra_volume) - -/datum/nanite_program/protocol/free_range/active_effect() - nanites.adjust_nanites(null, boost) - -/datum/nanite_program/protocol/unsafe_storage - name = "S.L.O. Protocol" - desc = "Storage Protocol: 'S.L.O.P.', or Storage Level Override Protocol, completely disables the safety measures normally present in nanites, \ - allowing them to reach a whopping maximum volume level of 2000, but at the risk of causing damage to the host at nanite concentrations above the standard limit of 500." - use_rate = 0 - rogue_types = list(/datum/nanite_program/necrotic) - protocol_class = NANITE_PROTOCOL_STORAGE - var/extra_volume = 1500 - var/next_warning = 0 - var/min_warning_cooldown = 120 - var/max_warning_cooldown = 350 - var/volume_warnings_stage_1 = list("You feel a dull pain in your abdomen.", - "You feel a tickling sensation in your abdomen.") - var/volume_warnings_stage_2 = list("You feel a dull pain in your stomach.", - "You feel a dull pain when breathing.", - "Your stomach grumbles.", - "You feel a tickling sensation in your throat.", - "You feel a tickling sensation in your lungs.", - "You feel a tickling sensation in your stomach.", - "Your lungs feel stiff.") - var/volume_warnings_stage_3 = list("You feel a dull pain in your chest.", - "You hear a faint buzzing coming from nowhere.", - "You hear a faint buzzing inside your head.", - "Your head aches.") - var/volume_warnings_stage_4 = list("You feel a dull pain in your ears.", - "You feel a dull pain behind your eyes.", - "You hear a loud, echoing buzz inside your ears.", - "You feel dizzy.", - "You feel an itch coming from behind your eyes.", - "Your eardrums itch.", - "You see tiny grey motes drifting in your field of view.") - var/volume_warnings_stage_5 = list("You feel sick.", - "You feel a dull pain from every part of your body.", - "You feel nauseous.") - var/volume_warnings_stage_6 = list("Your skin itches and burns.", - "Your muscles ache.", - "You feel tired.", - "You feel something skittering under your skin.",) - -/datum/nanite_program/protocol/unsafe_storage/enable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites + extra_volume) - -/datum/nanite_program/protocol/unsafe_storage/disable_passive_effect() - . = ..() - nanites.set_max_volume(null, nanites.max_nanites - extra_volume) - -/datum/nanite_program/protocol/unsafe_storage/active_effect() - if(!iscarbon(host_mob)) - if(prob(10)) - host_mob.adjustBruteLoss(((max(nanites.nanite_volume - 450, 0) / 450) ** 2 ) * 0.5) // 0.5 -> 2 -> 4.5 -> 8 damage per successful tick - return - - var/mob/living/carbon/C = host_mob - - if(nanites.nanite_volume < 500) - return - - var/current_stage = 0 - if(nanites.nanite_volume > 500) //Liver is the main hub of nanite replication and the first to be threatened by excess volume - if(prob(10)) - var/obj/item/organ/liver/liver = C.getorganslot(ORGAN_SLOT_LIVER) - if(liver) - liver.applyOrganDamage(0.6) - current_stage++ - if(nanites.nanite_volume > 750) //Extra volume spills out in other central organs - if(prob(10)) - var/obj/item/organ/stomach/stomach = C.getorganslot(ORGAN_SLOT_STOMACH) - if(stomach) - stomach.applyOrganDamage(0.75) - if(prob(10)) - var/obj/item/organ/lungs/lungs = C.getorganslot(ORGAN_SLOT_LUNGS) - if(lungs) - lungs.applyOrganDamage(0.75) - current_stage++ - if(nanites.nanite_volume > 1000) //Extra volume spills out in more critical organs - if(prob(10)) - var/obj/item/organ/heart/heart = C.getorganslot(ORGAN_SLOT_HEART) - if(heart) - heart.applyOrganDamage(0.75) - if(prob(10)) - var/obj/item/organ/brain/brain = C.getorganslot(ORGAN_SLOT_BRAIN) - if(brain) - brain.applyOrganDamage(0.75) - current_stage++ - if(nanites.nanite_volume > 1250) //Excess nanites start invading smaller organs for more space, including sensory organs - if(prob(13)) - var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES) - if(eyes) - eyes.applyOrganDamage(0.75) - if(prob(13)) - var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS) - if(ears) - ears.applyOrganDamage(0.75) - current_stage++ - if(nanites.nanite_volume > 1500) //Nanites start spilling into the bloodstream, causing toxicity - if(prob(15)) - C.adjustToxLoss(0.5, TRUE, forced = TRUE) //Not healthy for slimepeople either - current_stage++ - if(nanites.nanite_volume > 1750) //Nanites have almost reached their physical limit, and the pressure itself starts causing tissue damage - if(prob(15)) - C.adjustBruteLoss(0.75, TRUE) - current_stage++ - - volume_warning(current_stage) - -/datum/nanite_program/protocol/unsafe_storage/proc/volume_warning(tier) - if(world.time < next_warning) - return - - var/list/main_warnings - var/list/extra_warnings - - switch(tier) - if(1) - main_warnings = volume_warnings_stage_1 - extra_warnings = null - if(2) - main_warnings = volume_warnings_stage_2 - extra_warnings = volume_warnings_stage_1 - if(3) - main_warnings = volume_warnings_stage_3 - extra_warnings = volume_warnings_stage_1 + volume_warnings_stage_2 - if(4) - main_warnings = volume_warnings_stage_4 - extra_warnings = volume_warnings_stage_1 + volume_warnings_stage_2 + volume_warnings_stage_3 - if(5) - main_warnings = volume_warnings_stage_5 - extra_warnings = volume_warnings_stage_1 + volume_warnings_stage_2 + volume_warnings_stage_3 + volume_warnings_stage_4 - if(6) - main_warnings = volume_warnings_stage_6 - extra_warnings = volume_warnings_stage_1 + volume_warnings_stage_2 + volume_warnings_stage_3 + volume_warnings_stage_4 + volume_warnings_stage_5 - - if(prob(35)) - to_chat(host_mob, span_warning("[pick(main_warnings)]")) - next_warning = world.time + rand(min_warning_cooldown, max_warning_cooldown) - else if(islist(extra_warnings)) - to_chat(host_mob, span_warning("[pick(extra_warnings)]")) - next_warning = world.time + rand(min_warning_cooldown, max_warning_cooldown) diff --git a/code/modules/research/nanites/nanite_programs/rogue.dm b/code/modules/research/nanites/nanite_programs/rogue.dm deleted file mode 100644 index c9e5efa9419..00000000000 --- a/code/modules/research/nanites/nanite_programs/rogue.dm +++ /dev/null @@ -1,119 +0,0 @@ -//Programs generated through degradation of other complex programs. -//They generally cause minor damage or annoyance. - -//Last stop of the error train -/datum/nanite_program/glitch - name = "Glitch" - desc = "A heavy software corruption that causes nanites to gradually break down." - use_rate = 1.5 - unique = FALSE - rogue_types = list() - -//Generic body-affecting programs will decay into this -/datum/nanite_program/necrotic - name = "Necrosis" - desc = "The nanites attack internal tissues indiscriminately, causing widespread damage." - use_rate = 0.75 - unique = FALSE - rogue_types = list(/datum/nanite_program/glitch) - -/datum/nanite_program/necrotic/active_effect() - host_mob.adjustBruteLoss(0.75, TRUE) - if(prob(1)) - to_chat(host_mob, span_warning("You feel a mild ache from somewhere inside you.")) - -//Programs that don't directly interact with the body will decay into this -/datum/nanite_program/toxic - name = "Toxin Buildup" - desc = "The nanites cause a slow but constant toxin buildup inside the host." - use_rate = 0.25 - unique = FALSE - rogue_types = list(/datum/nanite_program/glitch) - -/datum/nanite_program/toxic/active_effect() - host_mob.adjustToxLoss(0.5) - if(prob(1)) - to_chat(host_mob, span_warning("You feel a bit sick.")) - -//Generic blood-affecting programs will decay into this -/datum/nanite_program/suffocating - name = "Hypoxemia" - desc = "The nanites prevent the host's blood from absorbing oxygen efficiently." - use_rate = 0.75 - unique = FALSE - rogue_types = list(/datum/nanite_program/glitch) - -/datum/nanite_program/suffocating/active_effect() - host_mob.adjustOxyLoss(3, 0) - if(prob(1)) - to_chat(host_mob, span_warning("You feel short of breath.")) - -//Generic brain-affecting programs will decay into this -/datum/nanite_program/brain_decay - name = "Neuro-Necrosis" - desc = "The nanites seek and attack brain cells, causing extensive neural damage to the host." - use_rate = 0.75 - unique = FALSE - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/brain_decay/active_effect() - if(prob(4)) - host_mob.hallucination = min(15, host_mob.hallucination) - host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1) - -//Generic brain-affecting programs can also decay into this -/datum/nanite_program/brain_misfire - name = "Brain Misfire" - desc = "The nanites interfere with neural pathways, causing minor psychological disturbances." - use_rate = 0.50 - unique = FALSE - rogue_types = list(/datum/nanite_program/brain_decay) - -/datum/nanite_program/brain_misfire/active_effect() - if(prob(10)) - switch(rand(1,4)) - if(1) - host_mob.hallucination += 15 - if(2) - host_mob.add_confusion(10) - if(3) - host_mob.drowsyness += 10 - if(4) - host_mob.slurring += 10 - -//Generic skin-affecting programs will decay into this -/datum/nanite_program/skin_decay - name = "Dermalysis" - desc = "The nanites attack skin cells, causing irritation, rashes, and minor damage." - use_rate = 0.25 - unique = FALSE - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/skin_decay/active_effect() - host_mob.adjustBruteLoss(0.25) - if(prob(5)) //itching - var/picked_bodypart = pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - var/obj/item/bodypart/bodypart = host_mob.get_bodypart(picked_bodypart) - var/can_scratch = !host_mob.incapacitated() && get_location_accessible(host_mob, picked_bodypart) - - host_mob.visible_message("[can_scratch ? span_warning("[host_mob] scratches [host_mob.p_their()] [bodypart.name].") : ""]",\ - span_warning("Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]")) - -//Generic nerve-affecting programs will decay into this -/datum/nanite_program/nerve_decay - name = "Nerve Decay" - desc = "The nanites attack the host's nerves, causing lack of coordination and short bursts of paralysis." - use_rate = 1 - unique = FALSE - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/nerve_decay/active_effect() - if(prob(5)) - to_chat(host_mob, span_warning("You feel unbalanced!")) - host_mob.add_confusion(10) - else if(prob(4)) - to_chat(host_mob, span_warning("You can't feel your hands!")) - host_mob.drop_all_held_items() - else if(prob(4)) - to_chat(host_mob, span_warning("You can't feel your legs!")) - host_mob.Paralyze(30) diff --git a/code/modules/research/nanites/nanite_programs/sensor.dm b/code/modules/research/nanites/nanite_programs/sensor.dm deleted file mode 100644 index 458c32b00b2..00000000000 --- a/code/modules/research/nanites/nanite_programs/sensor.dm +++ /dev/null @@ -1,314 +0,0 @@ -/datum/nanite_program/sensor - name = "Sensor Nanites" - desc = "These nanites send a signal code when a certain condition is met." - unique = FALSE - var/can_rule = FALSE - -/datum/nanite_program/sensor/register_extra_settings() - extra_settings[NES_SENT_CODE] = new /datum/nanite_extra_setting/number(0, 1, 9999) - -/datum/nanite_program/sensor/proc/check_event() - return FALSE - -/datum/nanite_program/sensor/proc/send_code() - if(activated) - var/datum/nanite_extra_setting/ES = extra_settings[NES_SENT_CODE] - SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, ES.value, "a [name] program") - -/datum/nanite_program/sensor/active_effect() - if(check_event()) - send_code() - -/datum/nanite_program/sensor/proc/make_rule(datum/nanite_program/target) - return - -/datum/nanite_program/sensor/repeat - name = "Signal Repeater" - desc = "When triggered, sends another signal to the nanites, optionally with a delay." - can_trigger = TRUE - trigger_cost = 0 - trigger_cooldown = 10 - var/spent = FALSE - -/datum/nanite_program/sensor/repeat/register_extra_settings() - . = ..() - extra_settings[NES_DELAY] = new /datum/nanite_extra_setting/number(0, 0, 3600, "s") - -/datum/nanite_program/sensor/repeat/on_trigger(comm_message) - var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY] - addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10) - -/datum/nanite_program/sensor/relay_repeat - name = "Relay Signal Repeater" - desc = "When triggered, sends another signal to a relay channel, optionally with a delay." - can_trigger = TRUE - trigger_cost = 0 - trigger_cooldown = 10 - var/spent = FALSE - -/datum/nanite_program/sensor/relay_repeat/register_extra_settings() - . = ..() - extra_settings[NES_RELAY_CHANNEL] = new /datum/nanite_extra_setting/number(1, 1, 9999) - extra_settings[NES_DELAY] = new /datum/nanite_extra_setting/number(0, 0, 3600, "s") - -/datum/nanite_program/sensor/relay_repeat/on_trigger(comm_message) - var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY] - addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10) - -/datum/nanite_program/sensor/relay_repeat/send_code() - var/datum/nanite_extra_setting/relay = extra_settings[NES_RELAY_CHANNEL] - if(activated && relay.get_value()) - for(var/X in SSnanites.nanite_relays) - var/datum/nanite_program/relay/N = X - var/datum/nanite_extra_setting/code = extra_settings[NES_SENT_CODE] - N.relay_signal(code.get_value(), relay.get_value(), "a [name] program") - -/datum/nanite_program/sensor/health - name = "Health Sensor" - desc = "The nanites receive a signal when the host's health is above/below a target percentage." - can_rule = TRUE - var/spent = FALSE - -/datum/nanite_program/sensor/health/register_extra_settings() - . = ..() - extra_settings[NES_HEALTH_PERCENT] = new /datum/nanite_extra_setting/number(50, -99, 100, "%") - extra_settings[NES_DIRECTION] = new /datum/nanite_extra_setting/boolean(TRUE, "Above", "Below") - -/datum/nanite_program/sensor/health/check_event() - var/health_percent = host_mob.health / host_mob.maxHealth * 100 - var/datum/nanite_extra_setting/percent = extra_settings[NES_HEALTH_PERCENT] - var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION] - var/detected = FALSE - if(direction.get_value()) - if(health_percent >= percent.get_value()) - detected = TRUE - else - if(health_percent < percent.get_value()) - detected = TRUE - - if(detected) - if(!spent) - spent = TRUE - return TRUE - return FALSE - else - spent = FALSE - return FALSE - -/datum/nanite_program/sensor/health/make_rule(datum/nanite_program/target) - var/datum/nanite_rule/health/rule = new(target) - var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION] - var/datum/nanite_extra_setting/percent = extra_settings[NES_HEALTH_PERCENT] - rule.above = direction.get_value() - rule.threshold = percent.get_value() - return rule - -/datum/nanite_program/sensor/crit - name = "Critical Health Sensor" - desc = "The nanites receive a signal when the host first reaches critical health." - can_rule = TRUE - var/spent = FALSE - -/datum/nanite_program/sensor/crit/check_event() - if(HAS_TRAIT(host_mob, TRAIT_CRITICAL_CONDITION)) - if(spent) - return FALSE - spent = TRUE - return TRUE - spent = FALSE - return FALSE - - -/datum/nanite_program/sensor/crit/make_rule(datum/nanite_program/target) - var/datum/nanite_rule/crit/rule = new(target) - return rule - -/datum/nanite_program/sensor/death - name = "Death Sensor" - desc = "The nanites receive a signal when they detect the host is dead." - can_rule = TRUE - var/spent = FALSE - -/datum/nanite_program/sensor/death/on_death() - send_code() - -/datum/nanite_program/sensor/death/make_rule(datum/nanite_program/target) - var/datum/nanite_rule/death/rule = new(target) - return rule - -/datum/nanite_program/sensor/nanite_volume - name = "Nanite Volume Sensor" - desc = "The nanites receive a signal when the nanite supply is above/below a certain percentage." - can_rule = TRUE - var/spent = FALSE - -/datum/nanite_program/sensor/nanite_volume/register_extra_settings() - . = ..() - extra_settings[NES_NANITE_PERCENT] = new /datum/nanite_extra_setting/number(50, -99, 100, "%") - extra_settings[NES_DIRECTION] = new /datum/nanite_extra_setting/boolean(TRUE, "Above", "Below") - -/datum/nanite_program/sensor/nanite_volume/check_event() - var/nanite_percent = (nanites.nanite_volume - nanites.safety_threshold)/(nanites.max_nanites - nanites.safety_threshold)*100 - var/datum/nanite_extra_setting/percent = extra_settings[NES_NANITE_PERCENT] - var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION] - var/detected = FALSE - if(direction.get_value()) - if(nanite_percent >= percent.get_value()) - detected = TRUE - else - if(nanite_percent < percent.get_value()) - detected = TRUE - - if(detected) - if(!spent) - spent = TRUE - return TRUE - return FALSE - else - spent = FALSE - return FALSE - -/datum/nanite_program/sensor/nanite_volume/make_rule(datum/nanite_program/target) - var/datum/nanite_rule/nanites/rule = new(target) - var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION] - var/datum/nanite_extra_setting/percent = extra_settings[NES_NANITE_PERCENT] - rule.above = direction.get_value() - rule.threshold = percent.get_value() - return rule - -/datum/nanite_program/sensor/damage - name = "Damage Sensor" - desc = "The nanites receive a signal when a host's specific damage type is above/below a target value." - can_rule = TRUE - var/spent = FALSE - -/datum/nanite_program/sensor/damage/register_extra_settings() - . = ..() - extra_settings[NES_DAMAGE_TYPE] = new /datum/nanite_extra_setting/type(BRUTE, list(BRUTE, BURN, TOX, OXY, CLONE)) - extra_settings[NES_DAMAGE] = new /datum/nanite_extra_setting/number(50, 0, 500) - extra_settings[NES_DIRECTION] = new /datum/nanite_extra_setting/boolean(TRUE, "Above", "Below") - -/datum/nanite_program/sensor/damage/check_event() - var/reached_threshold = FALSE - var/datum/nanite_extra_setting/type = extra_settings[NES_DAMAGE_TYPE] - var/datum/nanite_extra_setting/damage = extra_settings[NES_DAMAGE] - var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION] - var/check_above = direction.get_value() - var/damage_amt = 0 - switch(type.get_value()) - if(BRUTE) - damage_amt = host_mob.getBruteLoss() - if(BURN) - damage_amt = host_mob.getFireLoss() - if(TOX) - damage_amt = host_mob.getToxLoss() - if(OXY) - damage_amt = host_mob.getOxyLoss() - if(CLONE) - damage_amt = host_mob.getCloneLoss() - - if(check_above) - if(damage_amt >= damage.get_value()) - reached_threshold = TRUE - else - if(damage_amt < damage.get_value()) - reached_threshold = TRUE - - if(reached_threshold) - if(!spent) - spent = TRUE - return TRUE - return FALSE - else - spent = FALSE - return FALSE - -/datum/nanite_program/sensor/damage/make_rule(datum/nanite_program/target) - var/datum/nanite_rule/damage/rule = new(target) - var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION] - var/datum/nanite_extra_setting/damage_type = extra_settings[NES_DAMAGE_TYPE] - var/datum/nanite_extra_setting/damage = extra_settings[NES_DAMAGE] - rule.above = direction.get_value() - rule.threshold = damage.get_value() - rule.damage_type = damage_type.get_value() - return rule - -/datum/nanite_program/sensor/voice - name = "Voice Sensor" - desc = "The nanites receive a signal when they detect a specific, preprogrammed word or phrase being said." - -/datum/nanite_program/sensor/voice/register_extra_settings() - . = ..() - extra_settings[NES_SENTENCE] = new /datum/nanite_extra_setting/text("") - extra_settings[NES_INCLUSIVE_MODE] = new /datum/nanite_extra_setting/boolean(TRUE, "Inclusive", "Exclusive") - -/datum/nanite_program/sensor/voice/on_mob_add() - . = ..() - RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear) - -/datum/nanite_program/sensor/voice/on_mob_remove() - UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR) - -/datum/nanite_program/sensor/voice/proc/on_hear(datum/source, list/hearing_args) - SIGNAL_HANDLER - var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE] - var/datum/nanite_extra_setting/inclusive = extra_settings[NES_INCLUSIVE_MODE] - if(!sentence.get_value()) - return - if(inclusive.get_value()) - if(findtext(hearing_args[HEARING_RAW_MESSAGE], sentence.get_value())) - send_code() - else - if(lowertext(hearing_args[HEARING_RAW_MESSAGE]) == lowertext(sentence.get_value())) - send_code() - -/datum/nanite_program/sensor/species - name = "Species Sensor" - desc = "When triggered, the nanites scan the host to determine their species and receive a signal depending on the conditions set in the settings." - can_trigger = TRUE - trigger_cost = 0 - trigger_cooldown = 5 - - var/list/static/allowed_species = list( - "Human" = /datum/species/human, - "Lizard" = /datum/species/lizard, - "Moth" = /datum/species/moth, - "Ethereal" = /datum/species/ethereal, - "Pod" = /datum/species/pod, - "Fly" = /datum/species/fly, - "Felinid" = /datum/species/human/felinid, - "Jelly" = /datum/species/jelly, - ) - -/datum/nanite_program/sensor/species/register_extra_settings() - . = ..() - var/list/species_types = list() - for(var/name in allowed_species) - species_types += name - species_types += "Other" - extra_settings[NES_RACE] = new /datum/nanite_extra_setting/type("Human", species_types) - extra_settings[NES_MODE] = new /datum/nanite_extra_setting/boolean(TRUE, "Is", "Is Not") - -/datum/nanite_program/sensor/species/on_trigger(comm_message) - var/datum/nanite_extra_setting/species_type = extra_settings[NES_RACE] - var/species = allowed_species[species_type.get_value()] - var/species_match = FALSE - - if(species) - if(is_species(host_mob, species)) - species_match = TRUE - else //this is the check for the "Other" option - species_match = TRUE - for(var/name in allowed_species) - var/species_other = allowed_species[name] - if(is_species(host_mob, species_other)) - species_match = FALSE - break - - var/datum/nanite_extra_setting/mode = extra_settings[NES_MODE] - if(mode.get_value()) - if(species_match) - send_code() - else - if(!species_match) - send_code() diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm deleted file mode 100644 index aa8643eafdc..00000000000 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ /dev/null @@ -1,309 +0,0 @@ -//Programs that are generally useful for population control and non-harmful suppression. - -/datum/nanite_program/sleepy - name = "Sleep Induction" - desc = "The nanites induce rapid narcolepsy when triggered." - can_trigger = TRUE - trigger_cost = 15 - trigger_cooldown = 1200 - rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) - -/datum/nanite_program/sleepy/on_trigger(comm_message) - to_chat(host_mob, span_warning("You start to feel very sleepy...")) - host_mob.drowsyness += 20 - addtimer(CALLBACK(host_mob, /mob/living.proc/Sleeping, 200), rand(60,200)) - -/datum/nanite_program/paralyzing - name = "Paralysis" - desc = "The nanites force muscle contraction, effectively paralyzing the host." - use_rate = 3 - rogue_types = list(/datum/nanite_program/nerve_decay) - -/datum/nanite_program/paralyzing/active_effect() - host_mob.Stun(40) - -/datum/nanite_program/paralyzing/enable_passive_effect() - . = ..() - to_chat(host_mob, span_warning("Your muscles seize! You can't move!")) - -/datum/nanite_program/paralyzing/disable_passive_effect() - . = ..() - to_chat(host_mob, span_notice("Your muscles relax, and you can move again.")) - -/datum/nanite_program/shocking - name = "Electric Shock" - desc = "The nanites shock the host when triggered. Destroys a large amount of nanites!" - can_trigger = TRUE - trigger_cost = 10 - trigger_cooldown = 300 - program_flags = NANITE_SHOCK_IMMUNE - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/shocking/on_trigger(comm_message) - host_mob.electrocute_act(rand(5,10), "shock nanites", 1, SHOCK_NOGLOVES) - -/datum/nanite_program/stun - name = "Neural Shock" - desc = "The nanites pulse the host's nerves when triggered, inapacitating them for a short period." - can_trigger = TRUE - trigger_cost = 4 - trigger_cooldown = 300 - rogue_types = list(/datum/nanite_program/shocking, /datum/nanite_program/nerve_decay) - -/datum/nanite_program/stun/on_trigger(comm_message) - playsound(host_mob, "sparks", 75, TRUE, -1, SHORT_RANGE_SOUND_EXTRARANGE) - host_mob.Paralyze(80) - -/datum/nanite_program/pacifying - name = "Pacification" - desc = "The nanites suppress the aggression center of the brain, preventing the host from causing direct harm to others." - use_rate = 1 - rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) - -/datum/nanite_program/pacifying/enable_passive_effect() - . = ..() - ADD_TRAIT(host_mob, TRAIT_PACIFISM, NANITES_TRAIT) - -/datum/nanite_program/pacifying/disable_passive_effect() - . = ..() - REMOVE_TRAIT(host_mob, TRAIT_PACIFISM, NANITES_TRAIT) - -/datum/nanite_program/blinding - name = "Blindness" - desc = "The nanites suppress the host's ocular nerves, blinding them while they're active." - use_rate = 1.5 - rogue_types = list(/datum/nanite_program/nerve_decay) - -/datum/nanite_program/blinding/enable_passive_effect() - . = ..() - host_mob.become_blind(NANITES_TRAIT) - -/datum/nanite_program/blinding/disable_passive_effect() - . = ..() - host_mob.cure_blind(NANITES_TRAIT) - -/datum/nanite_program/mute - name = "Mute" - desc = "The nanites suppress the host's speech, making them mute while they're active." - use_rate = 0.75 - rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) - -/datum/nanite_program/mute/enable_passive_effect() - . = ..() - ADD_TRAIT(host_mob, TRAIT_MUTE, NANITES_TRAIT) - -/datum/nanite_program/mute/disable_passive_effect() - . = ..() - REMOVE_TRAIT(host_mob, TRAIT_MUTE, NANITES_TRAIT) - -/datum/nanite_program/fake_death - name = "Death Simulation" - desc = "The nanites induce a death-like coma into the host, able to fool most medical scans." - use_rate = 3.5 - rogue_types = list(/datum/nanite_program/nerve_decay, /datum/nanite_program/necrotic, /datum/nanite_program/brain_decay) - -/datum/nanite_program/fake_death/enable_passive_effect() - . = ..() - host_mob.emote("deathgasp") - host_mob.fakedeath("nanites") - -/datum/nanite_program/fake_death/disable_passive_effect() - . = ..() - host_mob.cure_fakedeath("nanites") - -//Can receive transmissions from a nanite communication remote for customized messages -/datum/nanite_program/comm - can_trigger = TRUE - var/comm_message = "" - -/datum/nanite_program/comm/register_extra_settings() - extra_settings[NES_COMM_CODE] = new /datum/nanite_extra_setting/number(0, 0, 9999) - -/datum/nanite_program/comm/proc/receive_comm_signal(signal_comm_code, comm_message, comm_source) - var/datum/nanite_extra_setting/comm_code = extra_settings[NES_COMM_CODE] - if(!activated || !comm_code.get_value()) - return - if(signal_comm_code == comm_code.get_value()) - host_mob.investigate_log("'s [name] nanite program was messaged by [comm_source] with comm code [signal_comm_code] and message '[comm_message]'.", INVESTIGATE_NANITES) - trigger(FALSE, comm_message) - -/datum/nanite_program/comm/speech - name = "Forced Speech" - desc = "The nanites force the host to say a pre-programmed sentence when triggered." - unique = FALSE - trigger_cost = 3 - trigger_cooldown = 20 - rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) - var/static/list/blacklist = list( - "*surrender", - "*collapse", - "*faint", - ) - -/datum/nanite_program/comm/speech/register_extra_settings() - . = ..() - extra_settings[NES_SENTENCE] = new /datum/nanite_extra_setting/text("") - -/datum/nanite_program/comm/speech/on_trigger(comm_message) - var/sent_message = comm_message - if(!comm_message) - var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE] - sent_message = sentence.get_value() - if(sent_message in blacklist) - return - if(host_mob.stat == DEAD) - return - to_chat(host_mob, span_warning("You feel compelled to speak...")) - host_mob.say(sent_message, forced = "nanite speech") - -/datum/nanite_program/comm/voice - name = "Skull Echo" - desc = "The nanites echo a synthesized message inside the host's skull." - unique = FALSE - trigger_cost = 1 - trigger_cooldown = 20 - rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) - -/datum/nanite_program/comm/voice/register_extra_settings() - . = ..() - extra_settings[NES_MESSAGE] = new /datum/nanite_extra_setting/text("") - -/datum/nanite_program/comm/voice/on_trigger(comm_message) - var/sent_message = comm_message - if(!comm_message) - var/datum/nanite_extra_setting/message_setting = extra_settings[NES_MESSAGE] - sent_message = message_setting.get_value() - if(host_mob.stat == DEAD) - return - to_chat(host_mob, "You hear a strange, robotic voice in your head... \"[span_robot("[html_encode(sent_message)]")]\"") - -/datum/nanite_program/comm/hallucination - name = "Hallucination" - desc = "The nanites make the host hallucinate something when triggered." - trigger_cost = 4 - trigger_cooldown = 80 - unique = FALSE - rogue_types = list(/datum/nanite_program/brain_misfire) - -/datum/nanite_program/comm/hallucination/register_extra_settings() - . = ..() - var/list/options = list( - "Message", - "Battle", - "Sound", - "Weird Sound", - "Station Message", - "Health", - "Alert", - "Fire", - "Shock", - "Plasma Flood", - "Random" - ) - extra_settings[NES_HALLUCINATION_TYPE] = new /datum/nanite_extra_setting/type("Message", options) - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/text("") - -/datum/nanite_program/comm/hallucination/on_trigger(comm_message) - var/datum/nanite_extra_setting/hal_setting = extra_settings[NES_HALLUCINATION_TYPE] - var/hal_type = hal_setting.get_value() - var/datum/nanite_extra_setting/hal_detail_setting = extra_settings[NES_HALLUCINATION_DETAIL] - var/hal_details = hal_detail_setting.get_value() - if(comm_message && (hal_type != "Message")) //Triggered via comm remote, but not set to a message hallucination - return - var/sent_message = comm_message //Comm remotes can send custom hallucination messages for the chat hallucination - if(!sent_message) - sent_message = hal_details - - if(!iscarbon(host_mob)) - return - var/mob/living/carbon/C = host_mob - if(hal_details == "random") - hal_details = null - if(hal_type == "Random") - C.hallucination += 15 - else - switch(hal_type) - if("Message") - new /datum/hallucination/chat(C, TRUE, null, sent_message) - if("Battle") - new /datum/hallucination/battle(C, TRUE, hal_details) - if("Sound") - new /datum/hallucination/sounds(C, TRUE, hal_details) - if("Weird Sound") - new /datum/hallucination/weird_sounds(C, TRUE, hal_details) - if("Station Message") - new /datum/hallucination/stationmessage(C, TRUE, hal_details) - if("Health") - switch(hal_details) - if("critical") - hal_details = SCREWYHUD_CRIT - if("dead") - hal_details = SCREWYHUD_DEAD - if("healthy") - hal_details = SCREWYHUD_HEALTHY - new /datum/hallucination/hudscrew(C, TRUE, hal_details) - if("Alert") - new /datum/hallucination/fake_alert(C, TRUE, hal_details) - if("Fire") - new /datum/hallucination/fire(C, TRUE) - if("Shock") - new /datum/hallucination/shock(C, TRUE) - if("Plasma Flood") - new /datum/hallucination/fake_flood(C, TRUE) - -/datum/nanite_program/comm/hallucination/set_extra_setting(setting, value) - . = ..() - if(setting == NES_HALLUCINATION_TYPE) - switch(value) - if("Message") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/text("") - if("Battle") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","laser","disabler","esword","gun","stunprod","harmbaton","bomb")) - if("Sound") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","airlock","airlock pry","console","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack")) - if("Weird Sound") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","phone","hallelujah","highlander","laughter","hyperspace","game over","creepy","tesla")) - if("Station Message") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","ratvar","shuttle dock","blob alert","malf ai","meteors","supermatter")) - if("Health") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","critical","dead","healthy")) - if("Alert") - extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","gravity","fire","locked","hacked","temphot","tempcold","pressure")) - else - extra_settings.Remove(NES_HALLUCINATION_DETAIL) - -/datum/nanite_program/good_mood - name = "Happiness Enhancer" - desc = "The nanites synthesize serotonin inside the host's brain, creating an artificial sense of happiness." - use_rate = 0.1 - rogue_types = list(/datum/nanite_program/brain_decay) - -/datum/nanite_program/good_mood/register_extra_settings() - . = ..() - extra_settings[NES_MOOD_MESSAGE] = new /datum/nanite_extra_setting/text("HAPPINESS ENHANCEMENT") - -/datum/nanite_program/good_mood/enable_passive_effect() - . = ..() - SEND_SIGNAL(host_mob, COMSIG_ADD_MOOD_EVENT, "nanite_happy", /datum/mood_event/nanite_happiness, get_extra_setting_value(NES_MOOD_MESSAGE)) - -/datum/nanite_program/good_mood/disable_passive_effect() - . = ..() - SEND_SIGNAL(host_mob, COMSIG_CLEAR_MOOD_EVENT, "nanite_happy") - -/datum/nanite_program/bad_mood - name = "Happiness Suppressor" - desc = "The nanites suppress the production of serotonin inside the host's brain, creating an artificial state of depression." - use_rate = 0.1 - rogue_types = list(/datum/nanite_program/brain_decay) - -/datum/nanite_program/bad_mood/register_extra_settings() - . = ..() - extra_settings[NES_MOOD_MESSAGE] = new /datum/nanite_extra_setting/text("HAPPINESS SUPPRESSION") - -/datum/nanite_program/bad_mood/enable_passive_effect() - . = ..() - SEND_SIGNAL(host_mob, COMSIG_ADD_MOOD_EVENT, "nanite_sadness", /datum/mood_event/nanite_sadness, get_extra_setting_value(NES_MOOD_MESSAGE)) - -/datum/nanite_program/bad_mood/disable_passive_effect() - . = ..() - SEND_SIGNAL(host_mob, COMSIG_CLEAR_MOOD_EVENT, "nanite_sadness") diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm deleted file mode 100644 index 19ef4c9cce3..00000000000 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ /dev/null @@ -1,311 +0,0 @@ -//Programs that interact with other programs or nanites directly, or have other special purposes. -/datum/nanite_program/viral - name = "Viral Replica" - desc = "The nanites constantly send encrypted signals attempting to forcefully copy their own programming into other nanite clusters, also overriding or disabling their cloud sync." - use_rate = 0.5 - rogue_types = list(/datum/nanite_program/toxic) - var/pulse_cooldown = 0 - -/datum/nanite_program/viral/register_extra_settings() - extra_settings[NES_PROGRAM_OVERWRITE] = new /datum/nanite_extra_setting/type("Add To", list("Overwrite", "Add To", "Ignore")) - extra_settings[NES_CLOUD_OVERWRITE] = new /datum/nanite_extra_setting/number(0, 0, 100) - -/datum/nanite_program/viral/active_effect() - if(world.time < pulse_cooldown) - return - var/datum/nanite_extra_setting/program = extra_settings[NES_PROGRAM_OVERWRITE] - var/datum/nanite_extra_setting/cloud = extra_settings[NES_CLOUD_OVERWRITE] - for(var/mob/M in orange(host_mob, 5)) - if(SEND_SIGNAL(M, COMSIG_NANITE_IS_STEALTHY)) - continue - switch(program.get_value()) - if("Overwrite") - SEND_SIGNAL(M, COMSIG_NANITE_SYNC, nanites, TRUE) - if("Add To") - SEND_SIGNAL(M, COMSIG_NANITE_SYNC, nanites, FALSE) - SEND_SIGNAL(M, COMSIG_NANITE_SET_CLOUD, cloud.get_value()) - pulse_cooldown = world.time + 75 - -/datum/nanite_program/monitoring - name = "Monitoring" - desc = "The nanites monitor the host's vitals and location, sending them to the suit sensor network." - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/monitoring/enable_passive_effect() - . = ..() - ADD_TRAIT(host_mob, TRAIT_NANITE_MONITORING, NANITES_TRAIT) //Shows up in diagnostic and medical HUDs as a small blinking icon - if(ishuman(host_mob)) - GLOB.nanite_sensors_list |= host_mob - host_mob.hud_set_nanite_indicator() - -/datum/nanite_program/monitoring/disable_passive_effect() - . = ..() - REMOVE_TRAIT(host_mob, TRAIT_NANITE_MONITORING, "nanites") - if(ishuman(host_mob)) - GLOB.nanite_sensors_list -= host_mob - - host_mob.hud_set_nanite_indicator() - -/datum/nanite_program/self_scan - name = "Host Scan" - desc = "The nanites display a detailed readout of a body scan to the host." - unique = FALSE - can_trigger = TRUE - trigger_cost = 3 - trigger_cooldown = 50 - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/self_scan/register_extra_settings() - extra_settings[NES_SCAN_TYPE] = new /datum/nanite_extra_setting/type("Medical", list("Medical", "Chemical", "Wound", "Nanite")) - -/datum/nanite_program/self_scan/on_trigger(comm_message) - if(host_mob.stat == DEAD) - return - var/datum/nanite_extra_setting/NS = extra_settings[NES_SCAN_TYPE] - switch(NS.get_value()) - if("Medical") - healthscan(host_mob, host_mob) - if("Chemical") - chemscan(host_mob, host_mob) - if("Wound") - woundscan(host_mob, host_mob) - if("Nanite") - SEND_SIGNAL(host_mob, COMSIG_NANITE_SCAN, host_mob, TRUE) - -/datum/nanite_program/stealth - name = "Stealth" - desc = "The nanites mask their activity from superficial scans, becoming undetectable by HUDs and non-specialized scanners." - rogue_types = list(/datum/nanite_program/toxic) - use_rate = 0.2 - -/datum/nanite_program/stealth/enable_passive_effect() - . = ..() - nanites.stealth = TRUE - -/datum/nanite_program/stealth/disable_passive_effect() - . = ..() - nanites.stealth = FALSE - -/datum/nanite_program/nanite_debugging - name = "Nanite Debugging" - desc = "Enables various high-cost diagnostics in the nanites, making them able to communicate their program list to portable scanners. \ - Doing so uses some power, slightly decreasing their replication speed." - rogue_types = list(/datum/nanite_program/toxic) - use_rate = 0.1 - -/datum/nanite_program/nanite_debugging/enable_passive_effect() - . = ..() - nanites.diagnostics = TRUE - -/datum/nanite_program/nanite_debugging/disable_passive_effect() - . = ..() - nanites.diagnostics = FALSE - -/datum/nanite_program/relay - name = "Relay" - desc = "The nanites receive and relay long-range nanite signals." - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/relay/register_extra_settings() - extra_settings[NES_RELAY_CHANNEL] = new /datum/nanite_extra_setting/number(1, 1, 9999) - -/datum/nanite_program/relay/enable_passive_effect() - . = ..() - SSnanites.nanite_relays |= src - -/datum/nanite_program/relay/disable_passive_effect() - . = ..() - SSnanites.nanite_relays -= src - -/datum/nanite_program/relay/proc/relay_signal(code, relay_code, source) - if(!activated) - return - if(!host_mob) - return - var/datum/nanite_extra_setting/NS = extra_settings[NES_RELAY_CHANNEL] - if(relay_code != NS.get_value()) - return - SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, code, source) - -/datum/nanite_program/relay/proc/relay_comm_signal(comm_code, relay_code, comm_message) - if(!activated) - return - if(!host_mob) - return - var/datum/nanite_extra_setting/NS = extra_settings[NES_RELAY_CHANNEL] - if(relay_code != NS.get_value()) - return - SEND_SIGNAL(host_mob, COMSIG_NANITE_COMM_SIGNAL, comm_code, comm_message) - -/datum/nanite_program/metabolic_synthesis - name = "Metabolic Synthesis" - desc = "The nanites use the metabolic cycle of the host to speed up their replication rate, using their extra nutrition as fuel." - use_rate = -0.5 //generates nanites - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/metabolic_synthesis/check_conditions() - if(!iscarbon(host_mob)) - return FALSE - var/mob/living/carbon/C = host_mob - if(C.nutrition <= NUTRITION_LEVEL_WELL_FED) - return FALSE - return ..() - -/datum/nanite_program/metabolic_synthesis/active_effect() - host_mob.adjust_nutrition(-0.5) - -/datum/nanite_program/access - name = "Subdermal ID" - desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access." - can_trigger = TRUE - trigger_cost = 3 - trigger_cooldown = 30 - rogue_types = list(/datum/nanite_program/skin_decay) - var/access = list() - -//Syncs the nanites with the cumulative current mob's access level. Can potentially wipe existing access. -/datum/nanite_program/access/on_trigger(comm_message) - var/list/potential_items = list() - - potential_items += host_mob.get_active_held_item() - potential_items += host_mob.get_inactive_held_item() - potential_items += host_mob.pulling - - if(ishuman(host_mob)) - var/mob/living/carbon/human/H = host_mob - potential_items += H.wear_id - else if(isanimal(host_mob)) - var/mob/living/simple_animal/A = host_mob - potential_items += A.access_card - - var/list/new_access = list() - for(var/obj/item/I in potential_items) - new_access += I.GetAccess() - - access = new_access - -/datum/nanite_program/spreading - name = "Infective Exo-Locomotion" - desc = "The nanites gain the ability to survive for brief periods outside of the human body, as well as the ability to start new colonies without an integration process; \ - resulting in an extremely infective strain of nanites." - use_rate = 1.50 - rogue_types = list(/datum/nanite_program/aggressive_replication, /datum/nanite_program/necrotic) - var/spread_cooldown = 0 - -/datum/nanite_program/spreading/active_effect() - if(world.time < spread_cooldown) - return - spread_cooldown = world.time + 50 - var/list/mob/living/target_hosts = list() - for(var/mob/living/L in oview(5, host_mob)) - if(!prob(25)) - continue - if(!(L.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD))) - continue - target_hosts += L - if(!target_hosts.len) - return - var/mob/living/infectee = pick(target_hosts) - if(prob(100 - (infectee.get_permeability_protection() * 100))) - //this will potentially take over existing nanites! - infectee.AddComponent(/datum/component/nanites, 10) - SEND_SIGNAL(infectee, COMSIG_NANITE_SYNC, nanites) - SEND_SIGNAL(infectee, COMSIG_NANITE_SET_CLOUD, nanites.cloud_id) - infectee.investigate_log("was infected by spreading nanites with cloud ID [nanites.cloud_id] by [key_name(host_mob)] at [AREACOORD(infectee)].", INVESTIGATE_NANITES) - -/datum/nanite_program/nanite_sting - name = "Nanite Sting" - desc = "When triggered, projects a nearly invisible spike of nanites that attempts to infect a nearby non-host with a copy of the host's nanites cluster." - can_trigger = TRUE - trigger_cost = 5 - trigger_cooldown = 100 - rogue_types = list(/datum/nanite_program/glitch, /datum/nanite_program/toxic) - -/datum/nanite_program/nanite_sting/on_trigger(comm_message) - var/list/mob/living/target_hosts = list() - for(var/mob/living/L in oview(1, host_mob)) - if(!(L.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD)) || SEND_SIGNAL(L, COMSIG_HAS_NANITES) || !L.Adjacent(host_mob)) - continue - target_hosts += L - if(!target_hosts.len) - consume_nanites(-5) - return - var/mob/living/infectee = pick(target_hosts) - if(prob(100 - (infectee.get_permeability_protection() * 100))) - //unlike with Infective Exo-Locomotion, this can't take over existing nanites, because Nanite Sting only targets non-hosts. - infectee.AddComponent(/datum/component/nanites, 5) - SEND_SIGNAL(infectee, COMSIG_NANITE_SYNC, nanites) - SEND_SIGNAL(infectee, COMSIG_NANITE_SET_CLOUD, nanites.cloud_id) - infectee.investigate_log("was infected by a nanite cluster with cloud ID [nanites.cloud_id] by [key_name(host_mob)] at [AREACOORD(infectee)].", INVESTIGATE_NANITES) - to_chat(infectee, span_warning("You feel a tiny prick.")) - -/datum/nanite_program/mitosis - name = "Mitosis" - desc = "The nanites gain the ability to self-replicate, using bluespace to power the process. Becomes more effective the more nanites are already in the host; \ - For every 50 nanite volume in the host, the production rate is increased by 0.5. The replication has also a chance to corrupt the nanite programming \ - due to copy faults - constant cloud sync is highly recommended." - use_rate = 0 - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/mitosis/active_effect() - var/rep_rate = round(nanites.nanite_volume / 50, 1) //0.5 per 50 nanite volume - rep_rate *= 0.5 - nanites.adjust_nanites(null, rep_rate) - if(prob(rep_rate)) - var/datum/nanite_program/fault = pick(nanites.programs) - if(fault == src) - return - fault.software_error() - host_mob.investigate_log("[fault] nanite program received a software error due to Mitosis program.", INVESTIGATE_NANITES) - -/datum/nanite_program/dermal_button - name = "Dermal Button" - desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites." - unique = FALSE - var/datum/action/innate/nanite_button/button - -/datum/nanite_program/dermal_button/register_extra_settings() - extra_settings[NES_SENT_CODE] = new /datum/nanite_extra_setting/number(1, 1, 9999) - extra_settings[NES_BUTTON_NAME] = new /datum/nanite_extra_setting/text("Button") - extra_settings[NES_ICON] = new /datum/nanite_extra_setting/type("power", list("blank","one","two","three","four","five","plus","minus","exclamation","question","cross","info","heart","skull","brain","brain_damage","injection","blood","shield","reaction","network","power","radioactive","electricity","magnetism","scan","repair","id","wireless","say","sleep","bomb")) - -/datum/nanite_program/dermal_button/enable_passive_effect() - . = ..() - var/datum/nanite_extra_setting/bn_name = extra_settings[NES_BUTTON_NAME] - var/datum/nanite_extra_setting/bn_icon = extra_settings[NES_ICON] - if(!button) - button = new(src, bn_name.get_value(), bn_icon.get_value()) - button.target = host_mob - button.Grant(host_mob) - -/datum/nanite_program/dermal_button/disable_passive_effect() - . = ..() - if(button) - button.Remove(host_mob) - -/datum/nanite_program/dermal_button/on_mob_remove() - . = ..() - QDEL_NULL(button) - -/datum/nanite_program/dermal_button/proc/press() - if(activated) - host_mob.visible_message(span_notice("[host_mob] presses a button on [host_mob.p_their()] forearm."), - span_notice("You press the nanite button on your forearm."), null, 2) - var/datum/nanite_extra_setting/sent_code = extra_settings[NES_SENT_CODE] - SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code.get_value(), "a [name] program") - -/datum/action/innate/nanite_button - name = "Button" - icon_icon = 'icons/mob/actions/actions_items.dmi' - check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS - button_icon_state = "nanite_power" - var/datum/nanite_program/dermal_button/program - -/datum/action/innate/nanite_button/New(datum/nanite_program/dermal_button/_program, _name, _icon) - ..() - program = _program - name = _name - button_icon_state = "nanite_[_icon]" - -/datum/action/innate/nanite_button/Activate() - program.press() diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm deleted file mode 100644 index 84b70a65f01..00000000000 --- a/code/modules/research/nanites/nanite_programs/weapon.dm +++ /dev/null @@ -1,186 +0,0 @@ -//Programs specifically engineered to cause harm to either the user or its surroundings (as opposed to ones that only do it due to broken programming) -//Very dangerous! - -/datum/nanite_program/flesh_eating - name = "Cellular Breakdown" - desc = "The nanites destroy cellular structures in the host's body, causing brute damage." - use_rate = 1.5 - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/flesh_eating/active_effect() - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - C.take_bodypart_damage(1, 0, 0) - else - host_mob.adjustBruteLoss(1, TRUE) - if(prob(3)) - to_chat(host_mob, span_warning("You feel a stab of pain from somewhere inside you.")) - -/datum/nanite_program/poison - name = "Poisoning" - desc = "The nanites deliver poisonous chemicals to the host's internal organs, causing toxin damage and vomiting." - use_rate = 1.5 - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/poison/active_effect() - host_mob.adjustToxLoss(1) - if(prob(2)) - to_chat(host_mob, span_warning("You feel nauseous.")) - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - C.vomit(20) - -/datum/nanite_program/memory_leak - name = "Memory Leak" - desc = "This program invades the memory space used by other programs, causing frequent corruptions and errors." - use_rate = 0 - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/memory_leak/active_effect() - if(prob(6)) - var/datum/nanite_program/target = pick(nanites.programs) - if(target == src) - return - target.software_error() - host_mob.investigate_log("[target] nanite program received a software error due to Memory Leak program.", INVESTIGATE_NANITES) - -/datum/nanite_program/aggressive_replication - name = "Aggressive Replication" - desc = "Nanites will consume organic matter to improve their replication rate, damaging the host. The efficiency increases with the volume of nanites, requiring 200 to break even, \ - and scaling linearly for a net positive of 0.1 production rate per 20 nanite volume beyond that." - use_rate = 1 - rogue_types = list(/datum/nanite_program/necrotic) - -/datum/nanite_program/aggressive_replication/active_effect() - var/extra_regen = round(nanites.nanite_volume / 200, 0.1) - nanites.adjust_nanites(null, extra_regen) - host_mob.adjustBruteLoss(extra_regen / 2, TRUE) - -/datum/nanite_program/meltdown - name = "Meltdown" - desc = "Causes an internal meltdown inside the nanites, causing internal burns inside the host as well as rapidly destroying the nanite population.\ - Sets the nanites' safety threshold to 0 when activated." - use_rate = 10 - rogue_types = list(/datum/nanite_program/glitch) - -/datum/nanite_program/meltdown/active_effect() - host_mob.adjustFireLoss(3.5) - -/datum/nanite_program/meltdown/enable_passive_effect() - . = ..() - to_chat(host_mob, span_userdanger("Your blood is burning!")) - nanites.safety_threshold = 0 - -/datum/nanite_program/meltdown/disable_passive_effect() - . = ..() - to_chat(host_mob, span_warning("Your blood cools down, and the pain gradually fades.")) - -/datum/nanite_program/explosive - name = "Chain Detonation" - desc = "Detonates all the nanites inside the host in a chain reaction when triggered." - can_trigger = TRUE - trigger_cost = 25 //plus every idle nanite left afterwards - trigger_cooldown = 100 //Just to avoid double-triggering - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/explosive/on_trigger(comm_message) - host_mob.visible_message(span_warning("[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow..."),\ - span_userdanger("You start emitting a high-pitched buzzing, and your skin begins to glow...")) - addtimer(CALLBACK(src, .proc/boom), clamp((nanites.nanite_volume * 0.35), 25, 150)) - -/datum/nanite_program/explosive/proc/boom() - dyn_explosion(host_mob, nanites.nanite_volume / 50) - qdel(nanites) - -//TODO make it defuse if triggered again - -/datum/nanite_program/heart_stop - name = "Heart-Stopper" - desc = "Stops the host's heart when triggered; restarts it if triggered again." - can_trigger = TRUE - trigger_cost = 12 - trigger_cooldown = 10 - rogue_types = list(/datum/nanite_program/nerve_decay) - -/datum/nanite_program/heart_stop/on_trigger(comm_message) - if(iscarbon(host_mob)) - var/mob/living/carbon/C = host_mob - var/obj/item/organ/heart/heart = C.getorganslot(ORGAN_SLOT_HEART) - if(heart) - if(heart.beating) - heart.Stop() - else - heart.Restart() - -/datum/nanite_program/emp - name = "Electromagnetic Resonance" - desc = "The nanites cause an electromagnetic pulse around the host when triggered. Will corrupt other nanite programs!" - can_trigger = TRUE - trigger_cost = 10 - trigger_cooldown = 50 - program_flags = NANITE_EMP_IMMUNE - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/emp/on_trigger(comm_message) - empulse(host_mob, 1, 2) - -/datum/nanite_program/pyro - name = "Sub-Dermal Combustion" - desc = "The nanites cause buildup of flammable fluids under the host's skin, then ignites them." - use_rate = 4 - rogue_types = list(/datum/nanite_program/skin_decay, /datum/nanite_program/cryo) - -/datum/nanite_program/pyro/check_conditions() - if(host_mob.fire_stacks >= 10 && host_mob.on_fire) - return FALSE - return ..() - -/datum/nanite_program/pyro/active_effect() - host_mob.adjust_fire_stacks(1) - host_mob.IgniteMob() - -/datum/nanite_program/cryo - name = "Cryogenic Treatment" - desc = "The nanites rapidly sink heat through the host's skin, lowering their temperature." - use_rate = 1 - rogue_types = list(/datum/nanite_program/skin_decay, /datum/nanite_program/pyro) - -/datum/nanite_program/cryo/check_conditions() - if(host_mob.bodytemperature <= 70) - return FALSE - return ..() - -/datum/nanite_program/cryo/active_effect() - host_mob.adjust_bodytemperature(-rand(15,25), 50) - -/datum/nanite_program/comm/mind_control - name = "Mind Control" - desc = "The nanites imprint an absolute directive onto the host's brain for one minute when triggered." - trigger_cost = 30 - trigger_cooldown = 1800 - rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) - -/datum/nanite_program/comm/mind_control/register_extra_settings() - . = ..() - extra_settings[NES_DIRECTIVE] = new /datum/nanite_extra_setting/text("...") - -/datum/nanite_program/comm/mind_control/on_trigger(comm_message) - if(host_mob.stat == DEAD) - return - var/sent_directive = comm_message - if(!comm_message) - var/datum/nanite_extra_setting/ES = extra_settings[NES_DIRECTIVE] - sent_directive = ES.get_value() - brainwash(host_mob, sent_directive) - log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[sent_directive]'.") - host_mob.log_message("has been brainwashed with the objective '[sent_directive]' triggered by a mind control nanite program.", LOG_ATTACK) - addtimer(CALLBACK(src, .proc/end_brainwashing), 600) - -/datum/nanite_program/comm/mind_control/proc/end_brainwashing() - if(host_mob.mind && host_mob.mind.has_antag_datum(/datum/antagonist/brainwashed)) - host_mob.mind.remove_antag_datum(/datum/antagonist/brainwashed) - log_game("[key_name(host_mob)] is no longer brainwashed by nanites.") - -/datum/nanite_program/comm/mind_control/disable_passive_effect() - . = ..() - end_brainwashing() diff --git a/code/modules/research/nanites/nanite_remote.dm b/code/modules/research/nanites/nanite_remote.dm deleted file mode 100644 index cc7389520f0..00000000000 --- a/code/modules/research/nanites/nanite_remote.dm +++ /dev/null @@ -1,236 +0,0 @@ -#define REMOTE_MODE_OFF "Off" -#define REMOTE_MODE_SELF "Local" -#define REMOTE_MODE_TARGET "Targeted" -#define REMOTE_MODE_AOE "Area" -#define REMOTE_MODE_RELAY "Relay" - -/obj/item/nanite_remote - name = "nanite remote control" - desc = "A device that can remotely control active nanites through wireless signals." - w_class = WEIGHT_CLASS_SMALL - req_access = list(ACCESS_ROBOTICS) - icon = 'icons/obj/device.dmi' - icon_state = "nanite_remote" - item_flags = NOBLUDGEON - var/locked = FALSE //Can be locked, so it can be given to users with a set code and mode - var/mode = REMOTE_MODE_OFF - var/list/saved_settings = list() - var/last_id = 0 - var/code = 0 - var/relay_code = 0 - var/current_program_name = "Program" - -/obj/item/nanite_remote/examine(mob/user) - . = ..() - if(locked) - . += span_notice("Alt-click to unlock.") - -/obj/item/nanite_remote/AltClick(mob/user) - . = ..() - if(!user.canUseTopic(src, BE_CLOSE)) - return - if(locked) - if(allowed(user)) - to_chat(user, span_notice("You unlock [src].")) - locked = FALSE - update_appearance() - else - to_chat(user, span_warning("Access denied.")) - -/obj/item/nanite_remote/emag_act(mob/user) - if(obj_flags & EMAGGED) - return - to_chat(user, span_warning("You override [src]'s ID lock.")) - obj_flags |= EMAGGED - if(locked) - locked = FALSE - update_appearance() - -/obj/item/nanite_remote/update_overlays() - . = ..() - if(obj_flags & EMAGGED) - . += "nanite_remote_emagged" - if(locked) - . += "nanite_remote_locked" - -/obj/item/nanite_remote/afterattack(atom/target, mob/user, etc) - switch(mode) - if(REMOTE_MODE_OFF) - return - if(REMOTE_MODE_SELF) - to_chat(user, span_notice("You activate [src], signaling the nanites in your bloodstream.")) - signal_mob(user, code, key_name(user)) - if(REMOTE_MODE_TARGET) - if(isliving(target) && (get_dist(target, get_turf(src)) <= 7)) - to_chat(user, span_notice("You activate [src], signaling the nanites inside [target].")) - signal_mob(target, code, key_name(user)) - if(REMOTE_MODE_AOE) - to_chat(user, span_notice("You activate [src], signaling the nanites inside every host around you.")) - for(var/mob/living/L in view(user, 7)) - signal_mob(L, code, key_name(user)) - if(REMOTE_MODE_RELAY) - to_chat(user, span_notice("You activate [src], signaling all connected relay nanites.")) - signal_relay(code, relay_code, key_name(user)) - -/obj/item/nanite_remote/proc/signal_mob(mob/living/M, code, source) - SEND_SIGNAL(M, COMSIG_NANITE_SIGNAL, code, source) - -/obj/item/nanite_remote/proc/signal_relay(code, relay_code, source) - for(var/X in SSnanites.nanite_relays) - var/datum/nanite_program/relay/N = X - N.relay_signal(code, relay_code, source) - -/obj/item/nanite_remote/ui_state(mob/user) - return GLOB.hands_state - -/obj/item/nanite_remote/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NaniteRemote", name) - ui.open() - -/obj/item/nanite_remote/ui_data() - var/list/data = list() - data["code"] = code - data["relay_code"] = relay_code - data["mode"] = mode - data["locked"] = locked - data["saved_settings"] = saved_settings - data["program_name"] = current_program_name - return data - -/obj/item/nanite_remote/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("set_code") - if(locked) - return - var/new_code = text2num(params["code"]) - if(!isnull(new_code)) - new_code = clamp(round(new_code, 1),0,9999) - code = new_code - . = TRUE - if("set_relay_code") - if(locked) - return - var/new_code = text2num(params["code"]) - if(!isnull(new_code)) - new_code = clamp(round(new_code, 1),0,9999) - relay_code = new_code - . = TRUE - if("update_name") - current_program_name = params["name"] - . = TRUE - if("save") - if(locked) - return - var/new_save = list() - new_save["id"] = last_id + 1 - last_id++ - new_save["name"] = current_program_name - new_save["code"] = code - new_save["mode"] = mode - new_save["relay_code"] = relay_code - - saved_settings += list(new_save) - . = TRUE - if("load") - var/code_id = params["save_id"] - var/list/setting - for(var/list/X in saved_settings) - if(X["id"] == text2num(code_id)) - setting = X - break - if(setting) - code = setting["code"] - mode = setting["mode"] - relay_code = setting["relay_code"] - . = TRUE - if("remove_save") - if(locked) - return - var/code_id = params["save_id"] - for(var/list/setting in saved_settings) - if(setting["id"] == text2num(code_id)) - saved_settings -= list(setting) - break - . = TRUE - if("select_mode") - if(locked) - return - mode = params["mode"] - . = TRUE - if("lock") - if(!(obj_flags & EMAGGED)) - locked = TRUE - update_appearance() - . = TRUE - - -/obj/item/nanite_remote/comm - name = "nanite communication remote" - desc = "A device that can send text messages to specific programs." - icon_state = "nanite_comm_remote" - var/comm_message = "" - -/obj/item/nanite_remote/comm/afterattack(atom/target, mob/user, etc) - switch(mode) - if(REMOTE_MODE_OFF) - return - if(REMOTE_MODE_SELF) - to_chat(user, span_notice("You activate [src], signaling the nanites in your bloodstream.")) - signal_mob(user, code, key_name(user)) - if(REMOTE_MODE_TARGET) - if(isliving(target) && (get_dist(target, get_turf(src)) <= 7)) - to_chat(user, span_notice("You activate [src], signaling the nanites inside [target].")) - signal_mob(target, code, key_name(user)) - if(REMOTE_MODE_AOE) - to_chat(user, span_notice("You activate [src], signaling the nanites inside every host around you.")) - for(var/mob/living/L in view(user, 7)) - signal_mob(L, code, key_name(user)) - if(REMOTE_MODE_RELAY) - to_chat(user, span_notice("You activate [src], signaling all connected relay nanites.")) - signal_relay(code, relay_code, key_name(user)) - -/obj/item/nanite_remote/comm/signal_mob(mob/living/M, code, source) - SEND_SIGNAL(M, COMSIG_NANITE_COMM_SIGNAL, code, comm_message, source) - -/obj/item/nanite_remote/comm/signal_relay(code, relay_code, source) - for(var/X in SSnanites.nanite_relays) - var/datum/nanite_program/relay/N = X - N.relay_comm_signal(code, relay_code, comm_message) - -/obj/item/nanite_remote/comm/ui_data() - var/list/data = list() - data["comms"] = TRUE - data["code"] = code - data["relay_code"] = relay_code - data["message"] = comm_message - data["mode"] = mode - data["locked"] = locked - data["saved_settings"] = saved_settings - data["program_name"] = current_program_name - - return data - -/obj/item/nanite_remote/comm/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("set_message") - if(locked) - return - var/new_message = html_encode(params["value"]) - if(!new_message) - return - comm_message = new_message - . = TRUE - -#undef REMOTE_MODE_OFF -#undef REMOTE_MODE_SELF -#undef REMOTE_MODE_TARGET -#undef REMOTE_MODE_AOE -#undef REMOTE_MODE_RELAY diff --git a/code/modules/research/nanites/program_disks.dm b/code/modules/research/nanites/program_disks.dm deleted file mode 100644 index 02f6d7cc280..00000000000 --- a/code/modules/research/nanites/program_disks.dm +++ /dev/null @@ -1,133 +0,0 @@ -//Names are intentionally all the same - track your nanites, or use a hand labeler -//This also means that you can give flesh melting nanites to your victims if you feel like it - -/obj/item/disk/nanite_program - name = "nanite program disk" - desc = "A disk capable of storing nanite programs. Can be customized using a Nanite Programming Console." - var/program_type - var/datum/nanite_program/program - -/obj/item/disk/nanite_program/Initialize() - . = ..() - if(program_type) - program = new program_type - -/obj/item/disk/nanite_program/aggressive_replication - program_type = /datum/nanite_program/aggressive_replication - -/obj/item/disk/nanite_program/metabolic_synthesis - program_type = /datum/nanite_program/metabolic_synthesis - -/obj/item/disk/nanite_program/viral - program_type = /datum/nanite_program/viral - -/obj/item/disk/nanite_program/meltdown - program_type = /datum/nanite_program/meltdown - -/obj/item/disk/nanite_program/monitoring - program_type = /datum/nanite_program/monitoring - -/obj/item/disk/nanite_program/relay - program_type = /datum/nanite_program/relay - -/obj/item/disk/nanite_program/emp - program_type = /datum/nanite_program/emp - -/obj/item/disk/nanite_program/spreading - program_type = /datum/nanite_program/spreading - -/obj/item/disk/nanite_program/regenerative - program_type = /datum/nanite_program/regenerative - -/obj/item/disk/nanite_program/regenerative_advanced - program_type = /datum/nanite_program/regenerative_advanced - -/obj/item/disk/nanite_program/temperature - program_type = /datum/nanite_program/temperature - -/obj/item/disk/nanite_program/purging - program_type = /datum/nanite_program/purging - -/obj/item/disk/nanite_program/purging_advanced - program_type = /datum/nanite_program/purging_advanced - -/obj/item/disk/nanite_program/brain_heal - program_type = /datum/nanite_program/brain_heal - -/obj/item/disk/nanite_program/brain_heal_advanced - program_type = /datum/nanite_program/brain_heal_advanced - -/obj/item/disk/nanite_program/blood_restoring - program_type = /datum/nanite_program/blood_restoring - -/obj/item/disk/nanite_program/repairing - program_type = /datum/nanite_program/repairing - -/obj/item/disk/nanite_program/nervous - program_type = /datum/nanite_program/nervous - -/obj/item/disk/nanite_program/hardening - program_type = /datum/nanite_program/hardening - -/obj/item/disk/nanite_program/coagulating - program_type = /datum/nanite_program/coagulating - -/obj/item/disk/nanite_program/necrotic - program_type = /datum/nanite_program/necrotic - -/obj/item/disk/nanite_program/brain_decay - program_type = /datum/nanite_program/brain_decay - -/obj/item/disk/nanite_program/pyro - program_type = /datum/nanite_program/pyro - -/obj/item/disk/nanite_program/cryo - program_type = /datum/nanite_program/cryo - -/obj/item/disk/nanite_program/toxic - program_type = /datum/nanite_program/toxic - -/obj/item/disk/nanite_program/suffocating - program_type = /datum/nanite_program/suffocating - -/obj/item/disk/nanite_program/heart_stop - program_type = /datum/nanite_program/heart_stop - -/obj/item/disk/nanite_program/explosive - program_type = /datum/nanite_program/explosive - -/obj/item/disk/nanite_program/shock - program_type = /datum/nanite_program/shocking - -/obj/item/disk/nanite_program/sleepy - program_type = /datum/nanite_program/sleepy - -/obj/item/disk/nanite_program/paralyzing - program_type = /datum/nanite_program/paralyzing - -/obj/item/disk/nanite_program/fake_death - program_type = /datum/nanite_program/fake_death - -/obj/item/disk/nanite_program/pacifying - program_type = /datum/nanite_program/pacifying - -/obj/item/disk/nanite_program/glitch - program_type = /datum/nanite_program/glitch - -/obj/item/disk/nanite_program/brain_misfire - program_type = /datum/nanite_program/pacifying - -/obj/item/disk/nanite_program/skin_decay - program_type = /datum/nanite_program/pacifying - -/obj/item/disk/nanite_program/nerve_decay - program_type = /datum/nanite_program/pacifying - -/obj/item/disk/nanite_program/refractive - program_type = /datum/nanite_program/refractive - -/obj/item/disk/nanite_program/conductive - program_type = /datum/nanite_program/pacifying - -/obj/item/disk/nanite_program/stun - program_type = /datum/nanite_program/stun diff --git a/code/modules/research/nanites/public_chamber.dm b/code/modules/research/nanites/public_chamber.dm deleted file mode 100644 index 6194f4fa336..00000000000 --- a/code/modules/research/nanites/public_chamber.dm +++ /dev/null @@ -1,206 +0,0 @@ -/obj/machinery/public_nanite_chamber - name = "public nanite chamber" - desc = "A device that can rapidly implant cloud-synced nanites without an external operator." - circuit = /obj/item/circuitboard/machine/public_nanite_chamber - icon = 'icons/obj/machines/nanite_chamber.dmi' - icon_state = "nanite_chamber" - base_icon_state = "nanite_chamber" - layer = ABOVE_WINDOW_LAYER - use_power = IDLE_POWER_USE - anchored = TRUE - density = TRUE - obj_flags = NO_BUILD // Becomes undense when the door is open - idle_power_usage = 50 - active_power_usage = 300 - - var/cloud_id = 1 - var/locked = FALSE - var/breakout_time = 1200 - var/busy = FALSE - var/busy_icon_state - var/message_cooldown = 0 - -/obj/machinery/public_nanite_chamber/Initialize() - . = ..() - occupant_typecache = GLOB.typecache_living - -/obj/machinery/public_nanite_chamber/RefreshParts() - var/obj/item/circuitboard/machine/public_nanite_chamber/board = circuit - if(board) - cloud_id = board.cloud_id - -/obj/machinery/public_nanite_chamber/proc/set_busy(status, working_icon) - busy = status - busy_icon_state = working_icon - update_appearance() - -/obj/machinery/public_nanite_chamber/proc/inject_nanites(mob/living/attacker) - if(machine_stat & (NOPOWER|BROKEN)) - return - if((machine_stat & MAINT) || panel_open) - return - if(!occupant || busy) - return - - var/locked_state = locked - locked = TRUE - - //TODO OMINOUS MACHINE SOUNDS - set_busy(TRUE, "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),60) - addtimer(CALLBACK(src, .proc/complete_injection, locked_state, attacker),80) - -/obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state, mob/living/attacker) - //TODO MACHINE DING - locked = locked_state - set_busy(FALSE) - if(!occupant) - return - if(attacker) - occupant.investigate_log("was injected with nanites with cloud ID [cloud_id] by [key_name(attacker)] using [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) - log_combat(attacker, occupant, "injected", null, "with nanites via [src]") - occupant.AddComponent(/datum/component/nanites, 75, cloud_id) - -/obj/machinery/public_nanite_chamber/proc/change_cloud(mob/living/attacker) - if(machine_stat & (NOPOWER|BROKEN)) - return - if((machine_stat & MAINT) || panel_open) - return - if(!occupant || busy) - return - - var/locked_state = locked - locked = TRUE - - set_busy(TRUE, "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),40) - addtimer(CALLBACK(src, .proc/complete_cloud_change, locked_state, attacker),60) - -/obj/machinery/public_nanite_chamber/proc/complete_cloud_change(locked_state, mob/living/attacker) - locked = locked_state - set_busy(FALSE) - if(!occupant) - return - if(attacker) - occupant.investigate_log("had their nanite cloud ID changed into [cloud_id] by [key_name(attacker)] using [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) - SEND_SIGNAL(occupant, COMSIG_NANITE_SET_CLOUD, cloud_id) - -/obj/machinery/public_nanite_chamber/update_icon_state() - //running and someone in there - if(occupant) - icon_state = busy ? busy_icon_state : "[base_icon_state]_occupied" - return ..() - //running - icon_state = "[base_icon_state][state_open ? "_open" : null]" - return ..() - -/obj/machinery/public_nanite_chamber/update_overlays() - . = ..() - if((machine_stat & MAINT) || panel_open) - . += "maint" - return - if(machine_stat & (NOPOWER|BROKEN)) - return - - if(busy || locked) - . += "red" - if(locked) - . += "bolted" - return - . += "green" - -/obj/machinery/public_nanite_chamber/proc/toggle_open(mob/user) - if(panel_open) - to_chat(user, span_notice("Close the maintenance panel first.")) - return - - if(state_open) - close_machine(null, user) - return - - else if(locked) - to_chat(user, span_notice("The bolts are locked down, securing the door shut.")) - return - - open_machine() - -/obj/machinery/public_nanite_chamber/container_resist_act(mob/living/user) - if(!locked) - open_machine() - return - if(busy) - return - user.changeNext_move(CLICK_CD_BREAKOUT) - user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message(span_notice("You see [user] kicking against the door of [src]!"), \ - span_notice("You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)"), \ - span_hear("You hear a metallic creaking from [src].")) - if(do_after(user,(breakout_time), target = src)) - if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked || busy) - return - locked = FALSE - user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ - span_notice("You successfully break out of [src]!")) - open_machine() - -/obj/machinery/public_nanite_chamber/close_machine(mob/living/carbon/user, mob/living/attacker) - if(!state_open) - return FALSE - - ..() - - . = TRUE - - addtimer(CALLBACK(src, .proc/try_inject_nanites, attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts - -/obj/machinery/public_nanite_chamber/proc/try_inject_nanites(mob/living/attacker) - if(occupant) - var/mob/living/L = occupant - if(SEND_SIGNAL(L, COMSIG_HAS_NANITES)) - var/datum/component/nanites/nanites = L.GetComponent(/datum/component/nanites) - if(nanites && nanites.cloud_id != cloud_id) - change_cloud(attacker) - return - if(L.mob_biotypes & (MOB_ORGANIC | MOB_UNDEAD)) - inject_nanites(attacker) - -/obj/machinery/public_nanite_chamber/open_machine() - if(state_open) - return FALSE - - ..() - - return TRUE - -/obj/machinery/public_nanite_chamber/relaymove(mob/living/user, direction) - if(user.stat || locked) - if(message_cooldown <= world.time) - message_cooldown = world.time + 50 - to_chat(user, span_warning("[src]'s door won't budge!")) - return - open_machine() - -/obj/machinery/public_nanite_chamber/attackby(obj/item/I, mob/user, params) - if(!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, I))//sent icon_state is irrelevant... - update_appearance()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed - return - - if(default_pry_open(I)) - return - - if(default_deconstruction_crowbar(I)) - return - - return ..() - -/obj/machinery/public_nanite_chamber/interact(mob/user) - toggle_open(user) - -/obj/machinery/public_nanite_chamber/MouseDrop_T(mob/target, mob/user) - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || !Adjacent(target) || !user.Adjacent(target) || !iscarbon(target)) - return - if(close_machine(target, user)) - log_combat(user, target, "inserted", null, "into [src].") - add_fingerprint(user) diff --git a/code/modules/research/nanites/rules.dm b/code/modules/research/nanites/rules.dm deleted file mode 100644 index 7eb793cd832..00000000000 --- a/code/modules/research/nanites/rules.dm +++ /dev/null @@ -1,150 +0,0 @@ -/datum/nanite_rule - var/name = "Generic Condition" - var/desc = "When triggered, the program is active" - var/datum/nanite_program/program - -/datum/nanite_rule/New(datum/nanite_program/new_program) - program = new_program - if(LAZYLEN(new_program.rules) <= 5) //Avoid infinite stacking rules - new_program.rules += src - else - qdel(src) - -/datum/nanite_rule/proc/remove() - program.rules -= src - program = null - qdel(src) - -/datum/nanite_rule/proc/check_rule() - return TRUE - -/datum/nanite_rule/proc/display() - return name - -/datum/nanite_rule/proc/copy_to(datum/nanite_program/new_program) - new type(new_program) - -/datum/nanite_rule/health - name = "Health" - desc = "Checks the host's health status." - - var/threshold = 50 - var/above = TRUE - -/datum/nanite_rule/health/check_rule() - var/health_percent = program.host_mob.health / program.host_mob.maxHealth * 100 - if(above) - if(health_percent >= threshold) - return TRUE - else - if(health_percent < threshold) - return TRUE - return FALSE - -/datum/nanite_rule/health/display() - return "[name] [above ? ">" : "<"] [threshold]%" - -/datum/nanite_rule/health/copy_to(datum/nanite_program/new_program) - var/datum/nanite_rule/health/rule = new(new_program) - rule.above = above - rule.threshold = threshold - -//TODO allow inversion -/datum/nanite_rule/crit - name = "Crit" - desc = "Checks if the host is in critical condition." - -/datum/nanite_rule/crit/check_rule() - return HAS_TRAIT(program.host_mob, TRAIT_CRITICAL_CONDITION) - - -/datum/nanite_rule/death - name = "Death" - desc = "Checks if the host is dead." - -/datum/nanite_rule/death/check_rule() - if(program.host_mob.stat == DEAD || HAS_TRAIT(program.host_mob, TRAIT_FAKEDEATH)) - return TRUE - return FALSE - -/datum/nanite_rule/cloud_sync - name = "Cloud Sync" - desc = "Checks if the nanites have cloud sync enabled or disabled." - var/check_type = "Enabled" - -/datum/nanite_rule/cloud_sync/check_rule() - if(check_type == "Enabled") - return program.nanites.cloud_active - else - return !program.nanites.cloud_active - -/datum/nanite_rule/cloud_sync/copy_to(datum/nanite_program/new_program) - var/datum/nanite_rule/cloud_sync/rule = new(new_program) - rule.check_type = check_type - -/datum/nanite_rule/cloud_sync/display() - return "[name]:[check_type]" - -/datum/nanite_rule/nanites - name = "Nanite Volume" - desc = "Checks the host's nanite volume." - - var/threshold = 50 - var/above = TRUE - -/datum/nanite_rule/nanites/check_rule() - var/nanite_percent = (program.nanites.nanite_volume - program.nanites.safety_threshold)/(program.nanites.max_nanites - program.nanites.safety_threshold)*100 - if(above) - if(nanite_percent >= threshold) - return TRUE - else - if(nanite_percent < threshold) - return TRUE - return FALSE - -/datum/nanite_rule/nanites/copy_to(datum/nanite_program/new_program) - var/datum/nanite_rule/nanites/rule = new(new_program) - rule.above = above - rule.threshold = threshold - -/datum/nanite_rule/nanites/display() - return "[name] [above ? ">" : "<"] [threshold]%" - -/datum/nanite_rule/damage - name = "Damage" - desc = "Checks the host's damage." - - var/threshold = 50 - var/above = TRUE - var/damage_type = BRUTE - -/datum/nanite_rule/damage/check_rule() - var/damage_amt = 0 - switch(damage_type) - if(BRUTE) - damage_amt = program.host_mob.getBruteLoss() - if(BURN) - damage_amt = program.host_mob.getFireLoss() - if(TOX) - damage_amt = program.host_mob.getToxLoss() - if(OXY) - damage_amt = program.host_mob.getOxyLoss() - if(CLONE) - damage_amt = program.host_mob.getCloneLoss() - - if(above) - if(damage_amt >= threshold) - return TRUE - else - if(damage_amt < threshold) - return TRUE - return FALSE - -/datum/nanite_rule/damage/copy_to(datum/nanite_program/new_program) - var/datum/nanite_rule/damage/rule = new(new_program) - rule.above = above - rule.threshold = threshold - rule.damage_type = damage_type - -/datum/nanite_rule/damage/display() - return "[damage_type] [above ? ">" : "<"] [threshold]" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 1ff47f3f5c3..62d9dba92db 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1689,188 +1689,6 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) -/////////////////////////Nanites///////////////////////// -/datum/techweb_node/nanite_base - id = "nanite_base" - display_name = "Basic Nanite Programming" - description = "The basics of nanite construction and programming." - prereq_ids = list("datatheory") - design_ids = list( - "access_nanites", - "debugging_nanites", - "monitoring_nanites", - "nanite_chamber", - "nanite_chamber_control", - "nanite_cloud_control", - "nanite_comm_remote", - "nanite_disk", - "nanite_program_hub", - "nanite_programmer", - "nanite_remote", - "nanite_scanner", - "public_nanite_chamber", - "relay_nanites", - "relay_repeater_nanites", - "repairing_nanites", - "repeater_nanites", - "sensor_nanite_volume", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) - -/datum/techweb_node/nanite_smart - id = "nanite_smart" - display_name = "Smart Nanite Programming" - description = "Nanite programs that require nanites to perform complex actions, act independently, roam or seek targets." - prereq_ids = list("nanite_base","robotics") - design_ids = list( - "memleak_nanites", - "metabolic_nanites", - "purging_nanites", - "sensor_voice_nanites", - "stealth_nanites", - "voice_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500, TECHWEB_POINT_TYPE_NANITES = 500) - -/datum/techweb_node/nanite_mesh - id = "nanite_mesh" - display_name = "Mesh Nanite Programming" - description = "Nanite programs that require static structures and membranes." - prereq_ids = list("nanite_base","engineering") - design_ids = list( - "conductive_nanites", - "cryo_nanites", - "dermal_button_nanites", - "emp_nanites", - "hardening_nanites", - "refractive_nanites", - "shock_nanites", - "temperature_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500, TECHWEB_POINT_TYPE_NANITES = 500) - -/datum/techweb_node/nanite_bio - id = "nanite_bio" - display_name = "Biological Nanite Programming" - description = "Nanite programs that require complex biological interaction." - prereq_ids = list("nanite_base","biotech") - design_ids = list( - "bloodheal_nanites", - "coagulating_nanites", - "flesheating_nanites", - "poison_nanites", - "regenerative_nanites", - "sensor_crit_nanites", - "sensor_damage_nanites", - "sensor_death_nanites", - "sensor_health_nanites", - "sensor_species_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500, TECHWEB_POINT_TYPE_NANITES = 500) - -/datum/techweb_node/nanite_neural - id = "nanite_neural" - display_name = "Neural Nanite Programming" - description = "Nanite programs affecting nerves and brain matter." - prereq_ids = list("nanite_bio") - design_ids = list( - "bad_mood_nanites", - "brainheal_nanites", - "good_mood_nanites", - "nervous_nanites", - "paralyzing_nanites", - "selfscan_nanites", - "stun_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000, TECHWEB_POINT_TYPE_NANITES = 1000) - -/datum/techweb_node/nanite_synaptic - id = "nanite_synaptic" - display_name = "Synaptic Nanite Programming" - description = "Nanite programs affecting mind and thoughts." - prereq_ids = list("nanite_neural","neural_programming") - design_ids = list( - "blinding_nanites", - "hallucination_nanites", - "mindshield_nanites", - "mute_nanites", - "pacifying_nanites", - "sleep_nanites", - "speech_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000, TECHWEB_POINT_TYPE_NANITES = 1000) - -/datum/techweb_node/nanite_harmonic - id = "nanite_harmonic" - display_name = "Harmonic Nanite Programming" - description = "Nanite programs that require seamless integration between nanites and biology. Passively increases nanite regeneration rate for all clouds upon researching." - prereq_ids = list("nanite_bio","nanite_smart","nanite_mesh") - design_ids = list( - "aggressive_nanites", - "brainheal_plus_nanites", - "defib_nanites", - "fakedeath_nanites", - "purging_plus_nanites", - "regenerative_plus_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000, TECHWEB_POINT_TYPE_NANITES = 3000) - -/datum/techweb_node/nanite_combat - id = "nanite_military" - display_name = "Military Nanite Programming" - description = "Nanite programs that perform military-grade functions." - prereq_ids = list("nanite_harmonic", "syndicate_basic") - design_ids = list( - "explosive_nanites", - "meltdown_nanites", - "nanite_sting_nanites", - "pyro_nanites", - "viral_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500, TECHWEB_POINT_TYPE_NANITES = 2500) - -/datum/techweb_node/nanite_hazard - id = "nanite_hazard" - display_name = "Hazard Nanite Programs" - description = "Extremely advanced Nanite programs with the potential of being extremely dangerous." - prereq_ids = list("nanite_harmonic", "alientech") - design_ids = list( - "mindcontrol_nanites", - "mitosis_nanites", - "spreading_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000, TECHWEB_POINT_TYPE_NANITES = 4000) - -/datum/techweb_node/nanite_replication_protocols - id = "nanite_replication_protocols" - display_name = "Nanite Replication Protocols" - description = "Protocols that overwrite the default nanite replication routine to achieve more efficiency in certain circumstances." - prereq_ids = list("nanite_smart") - design_ids = list( - "factory_nanites", - "kickstart_nanites", - "offline_nanites", - "pyramid_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000, TECHWEB_POINT_TYPE_NANITES = 2500) - hidden = TRUE - experimental = TRUE - -/datum/techweb_node/nanite_storage_protocols - id = "nanite_storage_protocols" - display_name = "Nanite Storage Protocols" - description = "Protocols that overwrite the default nanite storage routine to achieve more efficiency or greater capacity." - prereq_ids = list("nanite_smart") - design_ids = list( - "free_range_nanites", - "hive_nanites", - "unsafe_storage_nanites", - "zip_nanites", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000, TECHWEB_POINT_TYPE_NANITES = 2500) - hidden = TRUE - experimental = TRUE - ////////////////////////Alien technology//////////////////////// /datum/techweb_node/alientech //AYYYYYYYYLMAOO tech id = "alientech" diff --git a/code/modules/unit_tests/designs.dm b/code/modules/unit_tests/designs.dm index 7ef6658959e..2867eeee369 100644 --- a/code/modules/unit_tests/designs.dm +++ b/code/modules/unit_tests/designs.dm @@ -3,11 +3,10 @@ /datum/unit_test/designs/Run() //Can't use allocate because of bug with certain datums var/datum/design/default_design = new /datum/design() - var/datum/design/nanites/default_design_nanites = new /datum/design/nanites() var/datum/design/surgery/default_design_surgery = new /datum/design/surgery() for(var/path in subtypesof(/datum/design)) - if (ispath(path, /datum/design/nanites) || ispath(path, /datum/design/surgery)) //We are checking nanites and surgery design separatly later since they work differently + if (ispath(path, /datum/design/surgery)) //We are checking surgery design separatly later since they work differently continue var/datum/design/current_design = new path //Create an instance of each design if (current_design.id == DESIGN_ID_IGNORE) //Don't check designs with ignore ID @@ -20,11 +19,6 @@ else if (!isnull(current_design.build_path) || !isnull(current_design.build_path)) // //Design requires no materials but creates stuff Fail("Design [current_design.type] requires NO materials but has build_path or make_reagents set") - for(var/path in subtypesof(/datum/design/nanites)) - var/datum/design/nanites/current_design = new path //Create an instance of each design - if (isnull(current_design.program_type) || current_design.program_type == default_design_nanites.program_type) //Check if the Nanite design provides a program - Fail("Nanite Design [current_design.type] does not have have any program_type set") - for(var/path in subtypesof(/datum/design/surgery)) var/datum/design/surgery/current_design = new path //Create an instance of each design if (isnull(current_design.id) || current_design.id == default_design_surgery.id) //Check if ID was not set diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm index a97b6dad692..74af8daa69a 100644 --- a/code/modules/wiremod/shell/brain_computer_interface.dm +++ b/code/modules/wiremod/shell/brain_computer_interface.dm @@ -133,13 +133,13 @@ /obj/item/circuit_component/bci_action/proc/update_action() bci_action.name = button_name.input_value - bci_action.button_icon_state = "nanite_[replacetextEx(lowertext(current_option), " ", "_")]" + bci_action.button_icon_state = "bci_[replacetextEx(lowertext(current_option), " ", "_")]" /datum/action/innate/bci_action name = "Action" icon_icon = 'icons/mob/actions/actions_items.dmi' check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "nanite_power" + button_icon_state = "bci_power" var/obj/item/circuit_component/bci_action/circuit_component @@ -317,9 +317,9 @@ name = "brain-computer interface manipulation chamber" desc = "A machine that, when given a brain-computer interface, will implant it into an occupant. Otherwise, will remove any brain-computer interfaces they already have." circuit = /obj/item/circuitboard/machine/bci_implanter - icon = 'icons/obj/machines/nanite_chamber.dmi' - icon_state = "nanite_chamber" - base_icon_state = "nanite_chamber" + icon = 'icons/obj/machines/bci_implanter.dmi' + icon_state = "bci_implanter" + base_icon_state = "bci_implanter" layer = ABOVE_WINDOW_LAYER use_power = IDLE_POWER_USE anchored = TRUE diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index 9242e1f02ae..5e947b4c8a2 100644 Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 08c63adc04f..366d8ae2a38 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index b25bb95c1c3..effab4e60a7 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 535232587d4..c3c2c6a7028 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 303035439b8..191b6ca5ccc 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/machines/nanite_chamber.dmi b/icons/obj/machines/bci_implanter.dmi similarity index 96% rename from icons/obj/machines/nanite_chamber.dmi rename to icons/obj/machines/bci_implanter.dmi index f42dcd48485..2b76bfb508a 100644 Binary files a/icons/obj/machines/nanite_chamber.dmi and b/icons/obj/machines/bci_implanter.dmi differ diff --git a/icons/obj/machines/research.dmi b/icons/obj/machines/research.dmi index d7ba433ce3e..dc7f0c24e79 100644 Binary files a/icons/obj/machines/research.dmi and b/icons/obj/machines/research.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index b3443c0119c..9d62d4cc580 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 69f25391090..5349d33e721 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/strings/cas_white.txt b/strings/cas_white.txt index 9429f88bcc2..644ffdf21cf 100644 --- a/strings/cas_white.txt +++ b/strings/cas_white.txt @@ -304,7 +304,7 @@ The vomitgoose. Ziptie hogtying. Defeating a changeling by sticking your hand down its pants. A crateful of fresh organs. -The primal, nerve-slapping sex that nanites are having inside you. +The primal, nerve-slapping sex that nanites were having inside you. Calling a shuttle because I broke a toenail. Chunks of dead flyperson. Curse of the Barnyard. diff --git a/strings/locations.json b/strings/locations.json index 27bba0ba6c1..0696718e198 100644 --- a/strings/locations.json +++ b/strings/locations.json @@ -58,7 +58,6 @@ "Mining Office", "Morgue", "Morgue Maintenance", - "Nanite Lab", "Primary Tool Storage", "Prison Wing", "Prisoner Education Chamber", diff --git a/tgstation.dme b/tgstation.dme index d0b9246fe11..bdbb450267e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -101,7 +101,6 @@ #include "code\__DEFINES\move_force.dm" #include "code\__DEFINES\movement.dm" #include "code\__DEFINES\movespeed_modification.dm" -#include "code\__DEFINES\nanites.dm" #include "code\__DEFINES\networks.dm" #include "code\__DEFINES\nitrile.dm" #include "code\__DEFINES\obj_flags.dm" @@ -386,7 +385,6 @@ #include "code\controllers\subsystem\processing\fields.dm" #include "code\controllers\subsystem\processing\fluids.dm" #include "code\controllers\subsystem\processing\instruments.dm" -#include "code\controllers\subsystem\processing\nanites.dm" #include "code\controllers\subsystem\processing\networks.dm" #include "code\controllers\subsystem\processing\obj.dm" #include "code\controllers\subsystem\processing\processing.dm" @@ -544,7 +542,6 @@ #include "code\datums\components\mirage_border.dm" #include "code\datums\components\mirv.dm" #include "code\datums\components\mood.dm" -#include "code\datums\components\nanites.dm" #include "code\datums\components\ntnet_interface.dm" #include "code\datums\components\omen.dm" #include "code\datums\components\orbiter.dm" @@ -674,7 +671,6 @@ #include "code\datums\diseases\advance\symptoms\headache.dm" #include "code\datums\diseases\advance\symptoms\heal.dm" #include "code\datums\diseases\advance\symptoms\itching.dm" -#include "code\datums\diseases\advance\symptoms\nanites.dm" #include "code\datums\diseases\advance\symptoms\narcolepsy.dm" #include "code\datums\diseases\advance\symptoms\oxygen.dm" #include "code\datums\diseases\advance\symptoms\sensory.dm" @@ -3288,7 +3284,6 @@ #include "code\modules\research\designs\medical_designs.dm" #include "code\modules\research\designs\mining_designs.dm" #include "code\modules\research\designs\misc_designs.dm" -#include "code\modules\research\designs\nanite_designs.dm" #include "code\modules\research\designs\power_designs.dm" #include "code\modules\research\designs\smelting_designs.dm" #include "code\modules\research\designs\stock_parts_designs.dm" @@ -3303,30 +3298,6 @@ #include "code\modules\research\machinery\departmental_techfab.dm" #include "code\modules\research\machinery\protolathe.dm" #include "code\modules\research\machinery\techfab.dm" -#include "code\modules\research\nanites\nanite_chamber.dm" -#include "code\modules\research\nanites\nanite_chamber_computer.dm" -#include "code\modules\research\nanites\nanite_cloud_controller.dm" -#include "code\modules\research\nanites\nanite_misc_items.dm" -#include "code\modules\research\nanites\nanite_program_hub.dm" -#include "code\modules\research\nanites\nanite_programmer.dm" -#include "code\modules\research\nanites\nanite_programs.dm" -#include "code\modules\research\nanites\nanite_remote.dm" -#include "code\modules\research\nanites\program_disks.dm" -#include "code\modules\research\nanites\public_chamber.dm" -#include "code\modules\research\nanites\rules.dm" -#include "code\modules\research\nanites\extra_settings\_extra_setting.dm" -#include "code\modules\research\nanites\extra_settings\boolean.dm" -#include "code\modules\research\nanites\extra_settings\number.dm" -#include "code\modules\research\nanites\extra_settings\text.dm" -#include "code\modules\research\nanites\extra_settings\type.dm" -#include "code\modules\research\nanites\nanite_programs\buffing.dm" -#include "code\modules\research\nanites\nanite_programs\healing.dm" -#include "code\modules\research\nanites\nanite_programs\protocols.dm" -#include "code\modules\research\nanites\nanite_programs\rogue.dm" -#include "code\modules\research\nanites\nanite_programs\sensor.dm" -#include "code\modules\research\nanites\nanite_programs\suppression.dm" -#include "code\modules\research\nanites\nanite_programs\utility.dm" -#include "code\modules\research\nanites\nanite_programs\weapon.dm" #include "code\modules\research\techweb\__techweb_helpers.dm" #include "code\modules\research\techweb\_techweb.dm" #include "code\modules\research\techweb\_techweb_node.dm" diff --git a/tgui/packages/tgui/interfaces/NaniteChamberControl.js b/tgui/packages/tgui/interfaces/NaniteChamberControl.js deleted file mode 100644 index 28e62f15d5d..00000000000 --- a/tgui/packages/tgui/interfaces/NaniteChamberControl.js +++ /dev/null @@ -1,277 +0,0 @@ -import { useBackend } from '../backend'; -import { Box, Button, Collapsible, Grid, LabeledList, NoticeBox, NumberInput, Section } from '../components'; -import { Window } from '../layouts'; - -export const NaniteChamberControl = (props, context) => { - return ( - - - - - - ); -}; - -export const NaniteChamberControlContent = (props, context) => { - const { act, data } = useBackend(context); - const { - status_msg, - locked, - occupant_name, - has_nanites, - nanite_volume, - regen_rate, - safety_threshold, - cloud_id, - scan_level, - } = data; - - if (status_msg) { - return ( - - {status_msg} - - ); - } - - const mob_programs = data.mob_programs || []; - - return ( -
act('toggle_lock')} /> - )}> - {!has_nanites ? ( - <> - - No Nanites Detected - -
- ); -}; diff --git a/tgui/packages/tgui/interfaces/NaniteCloudControl.js b/tgui/packages/tgui/interfaces/NaniteCloudControl.js deleted file mode 100644 index e679c36e40c..00000000000 --- a/tgui/packages/tgui/interfaces/NaniteCloudControl.js +++ /dev/null @@ -1,333 +0,0 @@ -import { useBackend } from '../backend'; -import { Box, Button, Collapsible, Grid, LabeledList, NoticeBox, NumberInput, Section } from '../components'; -import { Window } from '../layouts'; - -export const NaniteDiskBox = (props, context) => { - const { data } = useBackend(context); - const { - has_disk, - has_program, - disk, - } = data; - if (!has_disk) { - return ( - - No disk inserted - - ); - } - if (!has_program) { - return ( - - Inserted disk has no program - - ); - } - return ( - - ); -}; - -export const NaniteInfoBox = (props, context) => { - const { program } = props; - const { - name, - desc, - activated, - use_rate, - can_trigger, - trigger_cost, - trigger_cooldown, - activation_code, - deactivation_code, - kill_code, - trigger_code, - timer_restart, - timer_shutdown, - timer_trigger, - timer_trigger_delay, - } = program; - const extra_settings = program.extra_settings || []; - return ( -
- {activated ? 'Activated' : 'Deactivated'} - - )}> - - - {desc} - - - - - {use_rate} - - {!!can_trigger && ( - <> - - {trigger_cost} - - - {trigger_cooldown} - - - )} - - - - - -
- - - {activation_code} - - - {deactivation_code} - - - {kill_code} - - {!!can_trigger && ( - - {trigger_code} - - )} - -
-
- -
- - - {timer_restart} s - - - {timer_shutdown} s - - {!!can_trigger && ( - <> - - {timer_trigger} s - - - {timer_trigger_delay} s - - - )} - -
-
-
-
- - {extra_settings.map(setting => { - const naniteTypesDisplayMap = { - number: <>{setting.value}{setting.unit}, - text: setting.value, - type: setting.value, - boolean: (setting.value - ? setting.true_text - : setting.false_text), - }; - return ( - - {naniteTypesDisplayMap[setting.type]} - - ); - })} - -
-
- ); -}; - -export const NaniteCloudBackupList = (props, context) => { - const { act, data } = useBackend(context); - const cloud_backups = data.cloud_backups || []; - return cloud_backups.map(backup => ( -