diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm
index 3c64b9f6ad..f88a891b39 100644
--- a/_maps/map_files/CogStation/CogStation.dmm
+++ b/_maps/map_files/CogStation/CogStation.dmm
@@ -64,8 +64,8 @@
/turf/closed/wall,
/area/maintenance/port/fore)
"aam" = (
-/obj/structure/table,
-/obj/item/storage/box/lights/mixed,
+/obj/structure/rack,
+/obj/item/storage/toolbox/emergency,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
@@ -90,15 +90,13 @@
/turf/open/floor/plasteel/airless/solarpanel,
/area/solar/starboard/fore)
"aap" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/crew_quarters/observatory)
"aaq" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/emergency,
-/obj/effect/spawner/lootdrop/maintenance,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/observatory)
"aar" = (
/obj/machinery/conveyor/auto{
dir = 8;
@@ -664,14 +662,6 @@
},
/turf/open/floor/plating/airless,
/area/router/aux)
-"abF" = (
-/obj/machinery/mass_driver{
- dir = 8;
- id = "sb_out";
- name = "Router Driver"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"abG" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -709,13 +699,6 @@
/obj/item/paper/fluff/cogstation/cluwne,
/turf/open/floor/plating,
/area/crew_quarters/theatre/clown)
-"abJ" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "sb_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"abK" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
@@ -819,17 +802,10 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
-"abZ" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "sb_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"aca" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 5;
- id = "pb_off"
+ id = "pb"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -858,17 +834,9 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"ace" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "pb_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
-"acf" = (
-/obj/machinery/mass_driver{
- dir = 4;
- id = "pb_out";
- name = "Router Driver"
+ id = "pb"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -898,9 +866,9 @@
name = "Medical Booth"
})
"acj" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "solar_off"
+ id = "solar"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -973,8 +941,8 @@
/obj/structure/disposalpipe/junction{
dir = 4
},
-/obj/machinery/conveyor{
- id = "solar_off"
+/obj/machinery/conveyor/auto{
+ id = "solar"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -1052,25 +1020,10 @@
/obj/structure/rack,
/turf/open/floor/plasteel,
/area/ai_monitored/security/armory)
-"acz" = (
-/obj/machinery/mass_driver{
- dir = 4;
- id = "sb_in";
- name = "Router Driver"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
-"acA" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "sb_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"acB" = (
/obj/machinery/conveyor{
dir = 6;
- id = "sb_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -1109,9 +1062,9 @@
/turf/closed/wall,
/area/crew_quarters/lounge)
"acG" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "pb_off"
+ id = "pb"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -1142,8 +1095,8 @@
/area/crew_quarters/lounge)
"acJ" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/conveyor{
- id = "solar_off"
+/obj/machinery/conveyor/auto{
+ id = "solar"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -1297,18 +1250,11 @@
},
/turf/closed/wall/r_wall,
/area/security/brig)
-"adc" = (
-/obj/machinery/conveyor{
- id = "sb_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"add" = (
-/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 6
},
-/turf/open/floor/plating,
+/turf/closed/wall,
/area/crew_quarters/observatory)
"ade" = (
/obj/machinery/atmospherics/components/binary/valve/digital/on,
@@ -1332,11 +1278,10 @@
/turf/open/floor/plasteel,
/area/crew_quarters/lounge)
"adh" = (
-/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 10
},
-/turf/open/floor/plating,
+/turf/closed/wall,
/area/crew_quarters/observatory)
"adi" = (
/turf/open/floor/plasteel,
@@ -1349,8 +1294,8 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
-/obj/machinery/conveyor{
- id = "solar_off"
+/obj/machinery/conveyor/auto{
+ id = "solar"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -1494,9 +1439,8 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/observatory)
"adG" = (
-/obj/machinery/mass_driver{
- id = "serv_in";
- name = "Router Driver"
+/obj/machinery/mass_driver/pressure_plate{
+ id = "hydro_in"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -1535,13 +1479,6 @@
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/turf/open/floor/plasteel/stairs/medium,
/area/security/brig)
-"adL" = (
-/obj/machinery/mass_driver{
- id = "starboard_in";
- name = "Router Driver"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"adM" = (
/turf/closed/wall,
/area/crew_quarters/observatory)
@@ -2671,8 +2608,9 @@
/turf/open/floor/plating,
/area/construction)
"agy" = (
-/obj/effect/landmark/xeno_spawn,
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/table,
+/obj/item/storage/box/lights/mixed,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"agz" = (
@@ -4478,6 +4416,7 @@
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
/obj/machinery/door/poddoor{
+ id = "security_out";
name = "Security Router"
},
/turf/open/floor/plating,
@@ -4661,7 +4600,7 @@
"als" = (
/obj/machinery/mass_driver{
dir = 1;
- id = "sec_out";
+ id = "security_out";
name = "Router Driver"
},
/turf/open/floor/plating,
@@ -5525,16 +5464,15 @@
dir = 8
},
/obj/item/destTagger,
-/obj/machinery/button/door{
- id = "secblock";
- name = "Router Access Control";
- pixel_x = 8;
- pixel_y = 24;
- req_access_txt = "1"
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
+/obj/machinery/button/massdriver{
+ id = "security_out";
+ name = "Security Driver Control";
+ pixel_x = 8;
+ pixel_y = 24
+ },
/turf/open/floor/plasteel,
/area/router/sec)
"ant" = (
@@ -5817,9 +5755,9 @@
/turf/open/floor/plating,
/area/maintenance/solars/port)
"anW" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "sec_off"
+ id = "sec"
},
/turf/open/floor/plating,
/area/router/sec)
@@ -6276,20 +6214,20 @@
"aoS" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/conveyor{
- id = "serv_off"
- },
/obj/machinery/door/poddoor{
- id = "servblock";
+ id = "hydro_in";
name = "Service Router"
},
+/obj/machinery/conveyor/auto{
+ id = "service"
+ },
/turf/open/floor/plating,
/area/router/service)
"aoT" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
/obj/machinery/door/poddoor{
- id = "servblock";
+ id = "hydro_out";
name = "Service Router"
},
/turf/open/floor/plating,
@@ -6478,11 +6416,6 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/machinery/button/massdriver{
- id = "sec_out";
- pixel_x = 24;
- pixel_y = 24
- },
/turf/open/floor/plasteel,
/area/router/sec)
"aps" = (
@@ -6792,8 +6725,8 @@
},
/area/chapel/main)
"aqe" = (
-/obj/machinery/conveyor{
- id = "serv_off"
+/obj/machinery/conveyor/auto{
+ id = "service"
},
/turf/open/floor/plating,
/area/router/service)
@@ -6933,7 +6866,7 @@
"aqy" = (
/obj/machinery/mass_driver{
dir = 1;
- id = "serv_out";
+ id = "hydro_out";
name = "Router Driver"
},
/turf/open/floor/plating,
@@ -7497,11 +7430,6 @@
light_color = "#ffc1c1"
},
/obj/item/destTagger,
-/obj/machinery/button/massdriver{
- id = "serv_out";
- pixel_x = 8;
- pixel_y = -4
- },
/obj/machinery/requests_console{
department = "Service Router";
name = "Service Router RC";
@@ -7510,9 +7438,9 @@
/turf/open/floor/plasteel,
/area/router/service)
"arL" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "serv_off"
+ id = "service"
},
/turf/open/floor/plating,
/area/router/service)
@@ -7962,12 +7890,11 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/obj/machinery/button/door{
- id = "servblock";
- name = "Router Access Control";
+/obj/machinery/button/massdriver{
+ id = "hydro_out";
+ name = "Service Driver Control";
pixel_x = 8;
- pixel_y = 24;
- req_one_access_txt = "12;25;26;28;35;46"
+ pixel_y = 24
},
/turf/open/floor/plasteel,
/area/router/service)
@@ -8538,7 +8465,6 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
-/obj/effect/landmark/xeno_spawn,
/turf/open/floor/carpet/purple,
/area/crew_quarters/dorms/purple)
"atZ" = (
@@ -9047,9 +8973,9 @@
dir = 8
},
/obj/machinery/turnstile{
- name = "Genpop Entrance Turnstile";
- icon_state = "turnstile_map";
dir = 8;
+ icon_state = "turnstile_map";
+ name = "Genpop Entrance Turnstile";
req_access_txt = "69"
},
/turf/open/floor/plasteel,
@@ -9730,9 +9656,9 @@
name = "Brig Lockdown"
},
/obj/machinery/turnstile{
- name = "Genpop Entrance Turnstile";
- icon_state = "turnstile_map";
dir = 8;
+ icon_state = "turnstile_map";
+ name = "Genpop Entrance Turnstile";
req_access_txt = "69"
},
/turf/open/floor/plasteel,
@@ -10134,9 +10060,6 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"axt" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -10473,12 +10396,6 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/structure/cable{
- icon_state = "2-4"
- },
-/obj/structure/cable{
- icon_state = "2-8"
- },
/turf/open/floor/engine,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -11341,10 +11258,9 @@
/turf/open/floor/plasteel,
/area/security/prison)
"azO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/plasteel,
-/area/hydroponics/lobby)
+/obj/structure/reagent_dispensers/watertank,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"azP" = (
/obj/effect/turf_decal/bot,
/obj/machinery/vending/cola/random,
@@ -11515,6 +11431,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
/area/maintenance/solars/port)
"aAj" = (
@@ -12941,9 +12858,6 @@
"aCZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/warning/electricshock,
-/obj/structure/cable{
- icon_state = "1-2"
- },
/turf/open/floor/plating,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -15408,7 +15322,7 @@
icon_state = "0-4"
},
/obj/machinery/power/apc{
- areastring = "/area/maintenance/central";
+ areastring = "/area/security/main";
dir = 1;
name = "Security Office APC";
pixel_y = 24
@@ -18668,6 +18582,9 @@
})
"aOl" = (
/obj/effect/turf_decal/delivery,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/engine,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -18988,6 +18905,9 @@
/turf/open/floor/plating,
/area/crew_quarters/fitness/cogpool)
"aOV" = (
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/stairs,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -19401,7 +19321,7 @@
icon_state = "0-8"
},
/turf/open/floor/plating,
-/area/space/nearstation)
+/area/crew_quarters/fitness/cogpool)
"aPO" = (
/obj/machinery/atmospherics/pipe/manifold/supply/visible{
dir = 8
@@ -19667,16 +19587,10 @@
icon_state = "4-8"
},
/turf/open/floor/plating/airless,
-/area/space/nearstation)
+/area/crew_quarters/fitness/cogpool)
"aQq" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/closed/wall/r_wall,
-/area/space/nearstation)
+/turf/open/floor/plating/airless,
+/area/crew_quarters/fitness/cogpool)
"aQr" = (
/obj/structure/grille,
/obj/structure/disposalpipe/segment{
@@ -19689,7 +19603,7 @@
icon_state = "0-4"
},
/turf/open/floor/plating,
-/area/space/nearstation)
+/area/crew_quarters/lounge/jazz)
"aQs" = (
/obj/machinery/firealarm{
dir = 1;
@@ -20145,6 +20059,9 @@
/area/crew_quarters/heads/hop)
"aRp" = (
/obj/structure/sign/warning/fire,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/closed/wall/r_wall,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -20304,7 +20221,9 @@
dir = 1
},
/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
+/obj/structure/cable/yellow{
+ icon_state = "0-2"
+ },
/turf/open/floor/engine,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -21439,6 +21358,9 @@
dir = 1;
pixel_y = -26
},
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering{
name = "Engine Room"
@@ -21744,10 +21666,6 @@
/turf/open/floor/plating,
/area/maintenance/department/eva)
"aUR" = (
-/obj/machinery/atmospherics/pipe/simple/general/hidden{
- dir = 8;
- icon_state = "intact"
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -21936,19 +21854,14 @@
dir = 8;
pixel_y = -22
},
-/obj/machinery/button/massdriver{
- id = "public_out";
- pixel_x = 24;
- pixel_y = -6
- },
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
-/obj/machinery/button/door{
- id = "pubblock";
- name = "Router Access Control";
+/obj/machinery/button/massdriver{
+ id = "public_out";
+ name = "Public Router Control";
pixel_x = 24;
- pixel_y = 24
+ pixel_y = -8
},
/turf/open/floor/plasteel,
/area/router/public)
@@ -25118,9 +25031,11 @@
/turf/open/space/basic,
/area/space/nearstation)
"bcc" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 8
+ },
/turf/closed/wall/r_wall,
-/area/space/nearstation)
+/area/crew_quarters/lounge/jazz)
"bcd" = (
/obj/item/kirbyplants{
icon_state = "plant-14"
@@ -25134,8 +25049,8 @@
id = "public"
},
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "cargoblock";
+/obj/machinery/door/poddoor{
+ id = "public_in";
name = "Public Router"
},
/turf/open/floor/plating,
@@ -25148,8 +25063,8 @@
"bcg" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "cargoblock";
+/obj/machinery/door/poddoor{
+ id = "public_out";
name = "Public Router"
},
/turf/open/floor/plating,
@@ -25426,7 +25341,7 @@
dir = 5
},
/turf/closed/wall/r_wall,
-/area/space/nearstation)
+/area/crew_quarters/fitness/cogpool)
"bcP" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -25447,9 +25362,6 @@
/area/hallway/primary/central)
"bcS" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Courtroom"
- },
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/security/courtroom)
@@ -25492,10 +25404,12 @@
/turf/closed/wall,
/area/hallway/primary/central)
"bcY" = (
-/obj/machinery/power/smes,
/obj/structure/cable{
icon_state = "0-2"
},
+/obj/machinery/power/smes{
+ charge = 5e+006
+ },
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"bcZ" = (
@@ -25775,15 +25689,11 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bdE" = (
-/obj/machinery/atmospherics/pipe/simple/general/hidden{
- dir = 8;
- icon_state = "intact"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/open/floor/plasteel/dark,
-/area/bridge)
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/grass,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
"bdF" = (
/obj/effect/turf_decal/tile/purple{
dir = 4
@@ -26013,6 +25923,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plasteel,
/area/science/mixing)
"bel" = (
@@ -26079,7 +25990,7 @@
dir = 8
},
/turf/closed/wall/r_wall,
-/area/space/nearstation)
+/area/crew_quarters/fitness/cogpool)
"bet" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
@@ -26128,7 +26039,7 @@
dir = 8
},
/turf/closed/wall/r_wall/rust,
-/area/space/nearstation)
+/area/crew_quarters/fitness/cogpool)
"bez" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -26165,7 +26076,7 @@
dir = 10
},
/turf/closed/wall/r_wall,
-/area/space/nearstation)
+/area/crew_quarters/lounge/jazz)
"beE" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
@@ -26173,6 +26084,10 @@
},
/obj/structure/fans/tiny,
/obj/structure/plasticflaps,
+/obj/machinery/door/poddoor{
+ id = "starboardbelthell_in";
+ name = "Belt Hell"
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"beF" = (
@@ -26874,11 +26789,15 @@
/turf/open/space/basic,
/area/space/nearstation)
"bgi" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/turf/open/space/basic,
-/area/space)
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"bgj" = (
/obj/structure/table,
/obj/item/weldingtool/mini,
@@ -27474,6 +27393,7 @@
id = "sec"
},
/obj/machinery/door/poddoor{
+ id = "security_in";
name = "Security Router"
},
/turf/open/floor/plating,
@@ -27570,8 +27490,12 @@
/turf/open/floor/plasteel,
/area/maintenance/department/chapel)
"bhI" = (
-/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"bhJ" = (
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
@@ -27847,12 +27771,6 @@
/area/quartermaster/storage)
"bim" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/button/massdriver{
- id = "router_in";
- name = "mass driver button (Router)";
- pixel_x = 24;
- pixel_y = -8
- },
/turf/open/floor/plating,
/area/maintenance/disposal)
"bin" = (
@@ -27966,9 +27884,6 @@
/area/quartermaster/storage)
"bix" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Courtroom"
- },
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
dir = 4
@@ -28112,9 +28027,10 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"biO" = (
-/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/plating,
-/area/maintenance/solars/starboard/fore)
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/brown/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
"biP" = (
/obj/machinery/light{
dir = 4;
@@ -28721,6 +28637,11 @@
dir = 9;
id = "mail"
},
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced,
/turf/open/floor/plating,
/area/quartermaster/sorting)
"bkc" = (
@@ -29042,6 +28963,9 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering{
name = "Engine Room"
@@ -29936,10 +29860,13 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bmz" = (
-/obj/structure/closet/firecloset,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/storage/primary)
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/brown/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
"bmA" = (
/obj/item/stack/tile/plasteel{
pixel_x = 10;
@@ -30321,6 +30248,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/engine/break_room)
"bng" = (
@@ -30448,6 +30378,9 @@
/area/crew_quarters/lounge/jazz)
"bnp" = (
/obj/effect/turf_decal/delivery,
+/obj/structure/cable/yellow{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/engine/break_room)
"bnq" = (
@@ -30608,7 +30541,6 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
/area/maintenance/fore)
"bnI" = (
@@ -31542,7 +31474,7 @@
})
"bpL" = (
/obj/structure/cable{
- icon_state = "1-4"
+ icon_state = "1-2"
},
/turf/closed/wall/r_wall,
/area/engine/engine_smes{
@@ -31555,10 +31487,7 @@
"bpN" = (
/obj/structure/grille,
/obj/machinery/power/terminal,
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
+/obj/structure/cable/yellow{
icon_state = "0-4"
},
/turf/open/floor/plating,
@@ -32182,9 +32111,9 @@
},
/area/maintenance/central)
"brf" = (
-/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/plating,
-/area/maintenance/starboard/central)
+/obj/machinery/atmospherics/pipe/manifold/green/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"brg" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
@@ -32770,7 +32699,6 @@
name = "Station Intercom (Common)";
pixel_x = 26
},
-/obj/effect/landmark/xeno_spawn,
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/turf/open/floor/plasteel,
/area/maintenance/disposal)
@@ -33277,8 +33205,8 @@
"bts" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/light_construct/small{
- icon_state = "bulb-construct-stage1";
- dir = 1
+ dir = 1;
+ icon_state = "bulb-construct-stage1"
},
/turf/open/floor/plasteel,
/area/maintenance/aft)
@@ -33519,17 +33447,21 @@
"btZ" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "public_in";
+ name = "Public Router"
+ },
/turf/open/floor/plating,
/area/router)
"bua" = (
/turf/closed/wall/r_wall,
/area/science/robotics/mechbay)
"bub" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
/obj/machinery/light,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/scrubber,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"buc" = (
@@ -33543,6 +33475,10 @@
/obj/machinery/conveyor{
id = "router_off"
},
+/obj/machinery/door/poddoor{
+ id = "public_out";
+ name = "Public Router"
+ },
/turf/open/floor/plating,
/area/router)
"bue" = (
@@ -33644,10 +33580,9 @@
/area/maintenance/department/chapel)
"bus" = (
/obj/structure/window/reinforced/spawner/east,
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 1;
- id = "public_in";
- name = "Router Driver"
+ id = "public_in"
},
/turf/open/floor/plating,
/area/router)
@@ -34430,17 +34365,6 @@
name = "Routing Depot RC";
pixel_y = 28
},
-/obj/machinery/button/massdriver{
- id = "eva_in";
- name = "mass driver button (EVA)";
- pixel_x = -24
- },
-/obj/machinery/button/massdriver{
- id = "public_in";
- name = "mass driver button (Public)";
- pixel_x = -24;
- pixel_y = 8
- },
/turf/open/floor/plasteel,
/area/router)
"bwi" = (
@@ -34783,9 +34707,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -35059,6 +34983,12 @@
pixel_x = 3;
pixel_y = 1
},
+/obj/machinery/button/massdriver{
+ id = "trash";
+ name = "Trash Driver";
+ pixel_x = -24;
+ pixel_y = -8
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"bxt" = (
@@ -35105,7 +35035,6 @@
/area/tcommsat/computer)
"bxy" = (
/obj/item/trash/candle,
-/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -35122,6 +35051,9 @@
dir = 1
},
/obj/item/paper/guides/cogstation/letter_eng,
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/engine/break_room)
"bxA" = (
@@ -35536,7 +35468,6 @@
/area/maintenance/starboard/central)
"byu" = (
/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/blobstart,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/turf/open/floor/plating,
/area/maintenance/starboard/central)
@@ -35616,11 +35547,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/machinery/button/massdriver{
- id = "eva_out";
- pixel_x = 24;
- pixel_y = 24
- },
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
dir = 9
},
@@ -35633,7 +35559,7 @@
},
/obj/machinery/conveyor/auto{
dir = 4;
- id = "EVA"
+ id = "eva"
},
/turf/open/floor/plating,
/area/router/eva)
@@ -35954,7 +35880,7 @@
dir = 4;
id = "MiningConveyer"
},
-/turf/open/floor/plating/airless,
+/turf/open/floor/plating,
/area/quartermaster/miningoffice)
"bzv" = (
/obj/effect/turf_decal/stripes/line,
@@ -35966,7 +35892,7 @@
id = "MiningConveyer"
},
/obj/structure/plasticflaps,
-/turf/open/floor/plating/airless,
+/turf/open/floor/plating,
/area/quartermaster/miningoffice)
"bzw" = (
/obj/structure/disposalpipe/segment{
@@ -36032,8 +35958,8 @@
"bzD" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "evablock";
+/obj/machinery/door/poddoor{
+ id = "eva_out";
name = "EVA Router"
},
/turf/open/floor/plating,
@@ -36041,17 +35967,21 @@
"bzE" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/conveyor{
+/obj/machinery/door/poddoor{
+ id = "eva_out";
+ name = "EVA Router"
+ },
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
"bzF" = (
/obj/structure/window/reinforced/spawner,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -36067,6 +35997,7 @@
"bzH" = (
/obj/structure/disposalpipe/segment,
/obj/structure/grille/broken,
+/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
/area/maintenance/disposal)
"bzI" = (
@@ -37032,9 +36963,12 @@
"bBE" = (
/obj/structure/grille,
/obj/machinery/power/terminal,
-/obj/structure/cable{
+/obj/structure/cable/yellow{
icon_state = "0-8"
},
+/obj/structure/cable/yellow{
+ icon_state = "0-4"
+ },
/turf/open/floor/plating,
/area/engine/engine_smes{
name = "Power Monitoring"
@@ -37392,6 +37326,12 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/button/massdriver{
+ id = "eva_out";
+ name = "EVA Driver Control";
+ pixel_x = 24;
+ pixel_y = -22
+ },
/turf/open/floor/plasteel,
/area/router/eva)
"bCv" = (
@@ -37433,9 +37373,8 @@
dir = 4
},
/obj/effect/turf_decal/tile/yellow,
-/obj/structure/closet/secure_closet/engineering_personal,
-/obj/item/clothing/under/misc/overalls,
/obj/structure/window/reinforced/spawner/east,
+/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/storage/primary)
"bCA" = (
@@ -37471,8 +37410,8 @@
},
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "evablock";
+/obj/machinery/door/poddoor{
+ id = "eva_in";
name = "EVA Router"
},
/turf/open/floor/plating,
@@ -37561,10 +37500,9 @@
"bCR" = (
/obj/structure/window/reinforced/spawner/north,
/obj/effect/turf_decal/stripes/line,
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 8;
- id = "airbridge_in";
- name = "Router Driver"
+ id = "eva_in"
},
/turf/open/floor/plating,
/area/router)
@@ -37580,9 +37518,9 @@
/obj/structure/window/reinforced/spawner/north,
/obj/effect/turf_decal/stripes/line,
/obj/structure/disposalpipe/sorting/mail/flip,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -37636,13 +37574,13 @@
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"bCZ" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "router_off"
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "router"
+ },
/turf/open/floor/plating,
/area/router)
"bDa" = (
@@ -37909,14 +37847,14 @@
dir = 1
},
/obj/effect/turf_decal/stripes/line,
-/obj/machinery/conveyor{
- dir = 8;
- id = "router_off"
- },
/obj/structure/disposalpipe/junction/flip{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "router"
+ },
/turf/open/floor/plating,
/area/router)
"bDE" = (
@@ -38139,12 +38077,13 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/conveyor{
- dir = 8;
- id = "router_off"
- },
/obj/structure/disposalpipe/sorting/mail{
- dir = 4
+ dir = 4;
+ sortType = 9
+ },
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -38167,9 +38106,9 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -38359,9 +38298,9 @@
},
/obj/effect/turf_decal/stripes/line,
/obj/structure/disposalpipe/segment,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -38491,7 +38430,9 @@
/area/crew_quarters/bar)
"bEK" = (
/obj/machinery/atmospherics/pipe/simple/supply/visible,
-/obj/machinery/space_heater,
+/obj/machinery/space_heater{
+ anchored = 1
+ },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
@@ -39424,18 +39365,6 @@
pixel_x = 26
},
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/button/massdriver{
- id = "eng_in";
- name = "mass driver button (Engineering)";
- pixel_x = 24;
- pixel_y = -8
- },
-/obj/machinery/button/massdriver{
- id = "router_out";
- name = "mass driver button (Other)";
- pixel_x = 24;
- pixel_y = 12
- },
/turf/open/floor/plasteel,
/area/router)
"bGz" = (
@@ -39527,12 +39456,6 @@
/obj/item/clothing/gloves/color/grey,
/turf/open/floor/plating,
/area/maintenance/starboard/central)
-"bGK" = (
-/obj/machinery/conveyor{
- id = "starboard_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"bGL" = (
/obj/structure/chair{
dir = 1
@@ -39574,14 +39497,6 @@
/obj/effect/landmark/start/assistant,
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet)
-"bGP" = (
-/obj/machinery/mass_driver{
- dir = 1;
- id = "secserv";
- name = "Router Driver"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"bGQ" = (
/obj/structure/lattice/catwalk,
/obj/structure/disposalpipe/segment{
@@ -39696,13 +39611,6 @@
name = "EVA Router APC";
pixel_x = 24
},
-/obj/machinery/button/door{
- id = "evablock";
- name = "Router Access Control";
- pixel_x = 24;
- pixel_y = 10;
- req_access_txt = "19"
- },
/turf/open/floor/plasteel,
/area/router/eva)
"bHb" = (
@@ -40583,8 +40491,9 @@
/area/maintenance/department/chapel)
"bIY" = (
/obj/machinery/atmospherics/pipe/simple/violet/hidden,
+/obj/structure/lattice,
/turf/open/space/basic,
-/area/space)
+/area/space/nearstation)
"bIZ" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -42717,20 +42626,12 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 4;
- id = "router_out";
- name = "Router Driver"
+ id = "starboardbelthell_out"
},
/turf/open/floor/plating,
/area/router)
-"bNo" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "starboard_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"bNp" = (
/obj/machinery/light{
dir = 1
@@ -42756,6 +42657,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
+/obj/effect/landmark/start/atmospheric_technician,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bNr" = (
@@ -43726,7 +43628,6 @@
/turf/open/space/basic,
/area/space/nearstation)
"bPB" = (
-/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
@@ -43736,13 +43637,12 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPC" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 4;
- name = "Waste In"
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPD" = (
@@ -43963,7 +43863,7 @@
dir = 8
},
/obj/structure/disposalpipe/sorting/mail{
- sortType = 1
+ sortType = 2
},
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/turf/open/floor/plasteel,
@@ -44382,7 +44282,6 @@
/obj/structure/chair/office/dark{
dir = 4
},
-/obj/effect/landmark/start/atmospheric_technician,
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
@@ -45195,6 +45094,7 @@
/area/science/mixing)
"bSm" = (
/obj/machinery/modular_computer/console/preset/engineering,
+/obj/structure/cable/yellow,
/turf/open/floor/plasteel,
/area/engine/engine_smes{
name = "Power Monitoring"
@@ -45207,12 +45107,12 @@
name = "Power Monitoring"
})
"bSo" = (
-/obj/structure/cable{
- icon_state = "1-4"
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
},
-/turf/open/floor/plating,
-/area/engine/engine_smes{
- name = "Power Monitoring"
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
})
"bSp" = (
/obj/structure/cable{
@@ -45325,7 +45225,7 @@
},
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 1;
- sortType = 11
+ sortType = 9
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
@@ -45837,6 +45737,7 @@
"bTF" = (
/obj/structure/grille/broken,
/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plating,
/area/router)
"bTG" = (
@@ -46008,15 +45909,15 @@
/turf/open/space/basic,
/area/space/nearstation)
"bUa" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
- },
/obj/machinery/camera{
c_tag = "Atmospherics - Entrance"
},
/obj/machinery/firealarm{
pixel_y = 26
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bUb" = (
@@ -47053,10 +46954,10 @@
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bVY" = (
@@ -47260,9 +47161,6 @@
/turf/open/floor/engine/n2o,
/area/engine/atmos)
"bWq" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/machinery/airalarm{
dir = 8;
@@ -47414,12 +47312,10 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWG" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/manifold/orange/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bWH" = (
@@ -48037,9 +47933,9 @@
/area/maintenance/aft)
"bXM" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "router_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router)
@@ -48060,11 +47956,11 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bXP" = (
-/obj/structure/cable{
- icon_state = "0-4"
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
},
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"bXQ" = (
/obj/structure/closet/l3closet/scientist,
/obj/effect/turf_decal/tile/purple,
@@ -48117,11 +48013,12 @@
name = "Research Sector"
})
"bXV" = (
-/obj/structure/cable{
- icon_state = "4-8"
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Pure to Mix"
},
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"bXW" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -48197,11 +48094,9 @@
name = "Research Sector"
})
"bYd" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/closed/wall/r_wall,
-/area/hallway/primary/central)
+/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"bYe" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
@@ -48220,6 +48115,10 @@
id = "router"
},
/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "starboardbelthell_in";
+ name = "Belt Hell"
+ },
/turf/open/floor/plating,
/area/router)
"bYg" = (
@@ -48576,14 +48475,15 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bYP" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
/obj/structure/cable{
- icon_state = "0-8"
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Distro to Waste"
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/engine/atmos)
"bYQ" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -49034,12 +48934,22 @@
/turf/open/floor/engine/co2,
/area/engine/atmos)
"bZQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_y = -30
},
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
-/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_y = -30
+ },
+/obj/structure/tank_dispenser{
+ pixel_x = -1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
"bZR" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
@@ -49174,6 +49084,7 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"cai" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
@@ -49194,7 +49105,7 @@
"cak" = (
/obj/structure/sign/warning/fire,
/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cal" = (
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 10
@@ -49206,7 +49117,7 @@
"cam" = (
/obj/machinery/door/poddoor/incinerator_atmos_main,
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"can" = (
/obj/machinery/power/turbine{
dir = 8
@@ -49215,7 +49126,7 @@
icon_state = "0-4"
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cao" = (
/obj/machinery/power/compressor{
dir = 4
@@ -49227,7 +49138,7 @@
icon_state = "0-4"
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cap" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -49238,7 +49149,7 @@
},
/obj/machinery/igniter/incinerator_atmos,
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"caq" = (
/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior,
/obj/effect/mapping_helpers/airlock/locked,
@@ -49249,7 +49160,7 @@
dir = 4
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"car" = (
/obj/machinery/atmospherics/pipe/manifold/yellow/visible,
/turf/open/floor/plasteel,
@@ -49263,7 +49174,6 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/engine/vacuum,
/area/engine/atmos)
"cat" = (
@@ -49273,7 +49183,7 @@
"cau" = (
/obj/machinery/door/poddoor/incinerator_atmos_aux,
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cav" = (
/turf/closed/wall/r_wall,
/area/science/explab)
@@ -49545,6 +49455,7 @@
"cbe" = (
/obj/structure/table/reinforced,
/obj/item/clothing/mask/gas,
+/obj/effect/landmark/blobstart,
/turf/open/floor/engine,
/area/science/explab)
"cbf" = (
@@ -49926,13 +49837,6 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/central)
-"cbS" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "starboard_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"cbT" = (
/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
dir = 4
@@ -49940,28 +49844,28 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
-/obj/machinery/firealarm{
- dir = 1;
- pixel_x = -2;
- pixel_y = -27
- },
/obj/structure/cable{
icon_state = "1-8"
},
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cbU" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 8;
- name = "Air to Distro"
- },
/obj/machinery/power/apc/highcap/ten_k{
areastring = "/area/engine/atmos";
name = "Atmospherics APC";
- pixel_y = -28
+ pixel_y = -24
},
/obj/structure/cable,
-/turf/open/floor/plasteel,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/vending/wardrobe/atmos_wardrobe,
+/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cbV" = (
/obj/structure/disposalpipe/segment,
@@ -50055,9 +49959,9 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "starboard_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -50084,9 +49988,8 @@
/area/router)
"cci" = (
/obj/structure/window/reinforced/spawner/west,
-/obj/machinery/mass_driver{
- id = "workshop_in";
- name = "Router Driver"
+/obj/machinery/mass_driver/pressure_plate{
+ id = "portbelthell_out"
},
/turf/open/floor/plating,
/area/router)
@@ -50184,9 +50087,9 @@
/area/router/aux)
"ccs" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "starboard_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -50247,6 +50150,10 @@
id = "router"
},
/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "portbelthell_in";
+ name = "Airbridge Router"
+ },
/turf/open/floor/plating,
/area/router)
"ccz" = (
@@ -50320,11 +50227,10 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"ccE" = (
-/obj/machinery/mass_driver{
- id = "eng_in";
- name = "Router Driver"
- },
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/mass_driver/pressure_plate{
+ id = "engi_in"
+ },
/turf/open/floor/plating,
/area/router)
"ccF" = (
@@ -50349,10 +50255,9 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"ccH" = (
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 8;
- id = "disposal_in";
- name = "Router Driver"
+ id = "recycle_in"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -50368,13 +50273,6 @@
},
/turf/open/floor/plating,
/area/maintenance/disposal)
-"ccJ" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "starboard_off"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"ccK" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 9
@@ -50409,7 +50307,8 @@
"ccO" = (
/obj/structure/grille,
/obj/structure/disposalpipe/sorting/mail{
- dir = 8
+ dir = 8;
+ sortType = 21
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -50673,10 +50572,7 @@
/turf/open/space/basic,
/area/space/nearstation)
"cdq" = (
-/obj/machinery/mass_driver{
- id = "sq_in";
- name = "Router Driver"
- },
+/obj/machinery/mass_driver/pressure_plate,
/turf/open/floor/plating/airless,
/area/router/aux)
"cdr" = (
@@ -50820,8 +50716,8 @@
"cdG" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "engblock";
+/obj/machinery/door/poddoor{
+ id = "engi_out";
name = "Engineering Router"
},
/turf/open/floor/plating,
@@ -50961,8 +50857,8 @@
id = "eng"
},
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "engblock";
+/obj/machinery/door/poddoor{
+ id = "engi_in";
name = "Engineering Router"
},
/turf/open/floor/plating,
@@ -51172,7 +51068,7 @@
/obj/structure/window/reinforced/spawner/east,
/obj/machinery/mass_driver{
dir = 1;
- id = "eng_out";
+ id = "engi_out";
name = "Router Driver"
},
/obj/structure/window/reinforced/spawner/west,
@@ -51391,17 +51287,11 @@
dir = 1
},
/obj/machinery/button/massdriver{
- id = "eng_out";
+ id = "engi_out";
+ name = "Engineering Driver Control";
pixel_x = -24;
pixel_y = 24
},
-/obj/machinery/button/door{
- id = "engblock";
- name = "Router Access Control";
- pixel_x = -24;
- pixel_y = 32;
- req_access_txt = "31"
- },
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
dir = 4
},
@@ -51483,12 +51373,12 @@
/turf/open/floor/plasteel,
/area/router/eng)
"ceU" = (
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
- dir = 9
- },
/obj/structure/fireaxecabinet{
pixel_y = -32
},
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"ceV" = (
@@ -51888,15 +51778,15 @@
name = "Canister Storage"
})
"cfM" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
- },
/obj/structure/cable{
icon_state = "2-8"
},
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cfN" = (
@@ -51921,13 +51811,14 @@
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"cfP" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Mix to Distro"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cfQ" = (
@@ -51954,10 +51845,16 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
"cfT" = (
-/obj/machinery/atmospherics/pipe/manifold/orange/visible,
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "Air to Mix"
+ },
+/obj/machinery/atmospherics/pipe/simple/brown/visible{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cfU" = (
@@ -52061,6 +51958,10 @@
id = "disposal"
},
/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "starboardbelthell_out";
+ name = "Belt Hell"
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"cge" = (
@@ -52097,20 +51998,14 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cgg" = (
-/obj/effect/landmark/start/atmospheric_technician,
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 10
- },
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgh" = (
/obj/machinery/pipedispenser,
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
- },
/obj/effect/turf_decal/stripes/end{
dir = 1
},
@@ -52260,10 +52155,12 @@
/turf/open/floor/plasteel/dark,
/area/engine/teg_hot)
"cgx" = (
-/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible,
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgy" = (
@@ -52271,10 +52168,10 @@
/turf/closed/wall/rust,
/area/maintenance/solars/starboard/aft)
"cgz" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/binary/pump{
+ name = "Port to Filter"
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgA" = (
@@ -52629,37 +52526,23 @@
name = "Nature Preserve"
})
"chn" = (
-/obj/machinery/atmospherics/pipe/manifold/orange/visible{
- dir = 1
- },
/obj/machinery/light{
dir = 8
},
-/obj/machinery/power/apc{
- areastring = "/area/maintenance/disposal/incinerator";
- dir = 8;
- name = "Incinerator APC";
- pixel_x = -24
- },
-/obj/structure/cable{
- icon_state = "0-4"
- },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cho" = (
/turf/closed/wall/r_wall/rust,
/area/maintenance/department/eva)
"chp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/cable{
- icon_state = "2-8"
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"chq" = (
@@ -52712,10 +52595,10 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"chx" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"chy" = (
@@ -52826,21 +52709,21 @@
/turf/open/floor/plating,
/area/engine/teg_cold)
"chL" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 6
- },
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"chM" = (
-/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-8"
},
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"chN" = (
@@ -52919,11 +52802,13 @@
/turf/open/floor/engine,
/area/science/storage)
"chS" = (
-/obj/machinery/suit_storage_unit/atmos,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 6
+ },
+/obj/machinery/portable_atmospherics/pump,
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"chT" = (
@@ -53102,12 +52987,11 @@
dir = 1
},
/obj/effect/turf_decal/stripes/line,
-/obj/machinery/mass_driver{
- dir = 8;
- id = "router_in";
- name = "Router Driver"
- },
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/mass_driver/pressure_plate{
+ dir = 8;
+ id = "starboardbelthell_in"
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"cil" = (
@@ -53127,7 +53011,7 @@
"cim" = (
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 1;
- sortType = 11
+ sortType = 9
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -53150,11 +53034,10 @@
/turf/closed/wall,
/area/science/robotics/mechbay)
"cip" = (
-/obj/machinery/mass_driver{
- id = "cargo_in";
- name = "Router Driver"
- },
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/mass_driver/pressure_plate{
+ id = "cargo_in"
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"ciq" = (
@@ -53187,6 +53070,7 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"ciu" = (
@@ -53242,7 +53126,7 @@
"ciB" = (
/obj/structure/frame/computer,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating/airless,
+/turf/open/floor/plating,
/area/maintenance/port/fore)
"ciC" = (
/obj/structure/table,
@@ -53280,12 +53164,13 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"ciG" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "disposal_off"
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
},
-/turf/open/floor/plating,
-/area/maintenance/disposal)
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
"ciH" = (
/obj/machinery/atmospherics/pipe/simple/supply/visible{
dir = 6
@@ -53351,10 +53236,9 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/kitchen)
"ciO" = (
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 4;
- id = "disposal_out";
- name = "Router Driver"
+ id = "recycle_out"
},
/turf/open/floor/plating,
/area/maintenance/disposal)
@@ -53487,7 +53371,8 @@
/obj/structure/fans/tiny,
/obj/structure/plasticflaps,
/obj/machinery/door/poddoor{
- name = "Disposal Router"
+ id = "recycle_out";
+ name = "Belt Hell"
},
/turf/open/floor/plating,
/area/maintenance/disposal)
@@ -53539,6 +53424,10 @@
dir = 1;
id = "disposal"
},
+/obj/machinery/door/poddoor{
+ id = "cargo_out";
+ name = "Cargo Router"
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"cjj" = (
@@ -53897,9 +53786,6 @@
/area/engine/teg_cold)
"cjV" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Engineering Sector"
- },
/obj/structure/disposalpipe/segment,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -53929,8 +53815,8 @@
/obj/machinery/button/door{
id = "hos";
name = "HoS Office Shutters";
- pixel_y = -32;
- pixel_x = -5
+ pixel_x = -5;
+ pixel_y = -32
},
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/heads/hos)
@@ -55207,8 +55093,8 @@
"cmH" = (
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "cargoblock";
+/obj/machinery/door/poddoor{
+ id = "cargo_out";
name = "Cargo Router"
},
/turf/open/floor/plating,
@@ -55275,14 +55161,18 @@
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"cmL" = (
-/obj/effect/landmark/blobstart,
-/turf/open/floor/plating,
-/area/maintenance/aft)
+/obj/machinery/light,
+/obj/machinery/suit_storage_unit/atmos,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
"cmM" = (
/obj/structure/sign/poster/official/safety_internals{
pixel_x = -32
},
-/obj/effect/landmark/blobstart,
+/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cmN" = (
@@ -55421,6 +55311,9 @@
/area/quartermaster/qm)
"cmX" = (
/obj/machinery/light/small,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/engine,
/area/engine/supermatter{
name = "Thermo-Electric Generator"
@@ -55535,9 +55428,11 @@
/turf/open/floor/plasteel,
/area/engine/teg_cold)
"cni" = (
-/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
+/obj/machinery/atmospherics/components/binary/pump{
+ name = "Port to Fuel Pipe"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"cnj" = (
/obj/machinery/camera{
c_tag = "Research - Observatory";
@@ -55570,7 +55465,6 @@
dir = 1;
pixel_x = 5
},
-/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"cnm" = (
@@ -55646,7 +55540,8 @@
id = "disposal"
},
/obj/machinery/door/poddoor{
- name = "Disposal Router"
+ id = "recycle_in";
+ name = "Belt Hell"
},
/turf/open/floor/plating,
/area/maintenance/disposal)
@@ -55815,14 +55710,6 @@
/obj/item/target/clown,
/turf/open/floor/plasteel,
/area/science/mixing)
-"cnM" = (
-/obj/machinery/mass_driver{
- dir = 8;
- id = "pb_in";
- name = "Router Driver"
- },
-/turf/open/floor/plating/airless,
-/area/router/aux)
"cnN" = (
/obj/structure/bookcase/random/fiction,
/obj/effect/turf_decal/tile/neutral,
@@ -56008,13 +55895,15 @@
name = "Electrical Substation"
})
"coh" = (
-/obj/machinery/power/smes,
/obj/structure/cable{
icon_state = "0-4"
},
/obj/structure/cable{
icon_state = "0-8"
},
+/obj/machinery/power/smes{
+ charge = 5e+006
+ },
/turf/open/floor/plating,
/area/engine/storage_shared{
name = "Electrical Substation"
@@ -56203,8 +56092,8 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 8
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
@@ -56248,7 +56137,7 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"coE" = (
@@ -56679,8 +56568,8 @@
id = "cargo"
},
/obj/structure/fans/tiny,
-/obj/machinery/door/poddoor/preopen{
- id = "cargoblock";
+/obj/machinery/door/poddoor{
+ id = "cargo_in";
name = "Cargo Router"
},
/turf/open/floor/plating,
@@ -56792,6 +56681,10 @@
"cpE" = (
/obj/structure/fans/tiny,
/obj/structure/plasticflaps,
+/obj/machinery/door/poddoor{
+ id = "cargo_in";
+ name = "Cargo Router"
+ },
/turf/open/floor/plating,
/area/maintenance/disposal)
"cpF" = (
@@ -56901,12 +56794,18 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 6
+ },
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cpO" = (
/obj/structure/closet/secure_closet/atmospherics,
/obj/item/cartridge/atmos,
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cpP" = (
@@ -56917,14 +56816,12 @@
/turf/open/floor/plasteel/white,
/area/gateway)
"cpQ" = (
-/obj/machinery/vending/wardrobe/atmos_wardrobe,
/obj/effect/turf_decal/stripes/line{
dir = 6;
layer = 2.03
},
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 5
- },
+/obj/machinery/atmospherics/pipe/manifold/orange/visible,
+/obj/machinery/portable_atmospherics/pump,
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cpR" = (
@@ -57238,6 +57135,9 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/engine/break_room)
"cqt" = (
@@ -57260,6 +57160,9 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/engine/break_room)
"cqv" = (
@@ -57273,6 +57176,9 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/engine/break_room)
"cqw" = (
@@ -57617,11 +57523,6 @@
name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
pixel_y = 32
},
-/obj/machinery/button/massdriver{
- id = "cargo_out";
- pixel_x = -8;
- pixel_y = -4
- },
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"cre" = (
@@ -58608,9 +58509,9 @@
/obj/machinery/button/door{
id = "robotics";
name = "Shutters Control Button";
+ pixel_x = -24;
pixel_y = 8;
- req_access_txt = "29";
- pixel_x = -24
+ req_access_txt = "29"
},
/turf/open/floor/plasteel/dark/side{
dir = 8
@@ -58648,8 +58549,6 @@
dir = 8;
light_color = "#e8eaff"
},
-/obj/effect/landmark/blobstart,
-/obj/effect/landmark/xeno_spawn,
/turf/open/floor/engine,
/area/science/explab)
"ctc" = (
@@ -58998,6 +58897,10 @@
/area/science/explab)
"ctJ" = (
/obj/structure/plasticflaps,
+/obj/machinery/door/poddoor{
+ id = "portbelthell_in";
+ name = "Airbridge Router"
+ },
/turf/open/floor/plating,
/area/engine/workshop)
"ctK" = (
@@ -59005,6 +58908,10 @@
/obj/machinery/conveyor{
id = "workshop_off"
},
+/obj/machinery/door/poddoor{
+ id = "portbelthell_out";
+ name = "Airbridge Router"
+ },
/turf/open/floor/plating,
/area/engine/workshop)
"ctL" = (
@@ -59474,7 +59381,7 @@
dir = 4
},
/turf/open/floor/plating/airless,
-/area/space/nearstation)
+/area/crew_quarters/fitness/cogpool)
"cuy" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -59685,17 +59592,16 @@
/area/router/air)
"cuS" = (
/obj/structure/window/reinforced/spawner/east,
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 1;
- id = "workshop_out";
- name = "Router Driver"
+ id = "portbelthell_in"
},
/turf/open/floor/plating,
/area/engine/workshop)
"cuT" = (
/obj/structure/window/reinforced/spawner/west,
-/obj/machinery/conveyor{
- id = "workshop_off"
+/obj/machinery/conveyor/auto{
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/engine/workshop)
@@ -59908,9 +59814,9 @@
/area/router/air)
"cvq" = (
/obj/structure/window/reinforced/spawner/east,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "workshop_off"
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/engine/workshop)
@@ -60422,12 +60328,11 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/obj/machinery/button/door{
- id = "cargoblock";
- name = "Router Access Control";
+/obj/machinery/button/massdriver{
+ id = "cargo_out";
+ name = "Cargo Driver Control";
pixel_x = -24;
- pixel_y = 24;
- req_access_txt = "31"
+ pixel_y = 24
},
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
@@ -60587,6 +60492,9 @@
/obj/effect/turf_decal/stripes/line,
/obj/machinery/door/firedoor/heavy,
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/engine/engine_smes{
name = "Power Monitoring"
@@ -60894,6 +60802,7 @@
/obj/machinery/airalarm{
pixel_y = 24
},
+/obj/structure/cable/yellow,
/turf/open/floor/plasteel,
/area/engine/engine_smes{
name = "Power Monitoring"
@@ -66167,15 +66076,16 @@
},
/obj/machinery/button/massdriver{
id = "airbridge_out";
+ name = "Airbridge Driver Control";
pixel_x = -8;
pixel_y = 24
},
/turf/open/floor/plasteel,
/area/router/air)
"cGa" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "airbridge_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router/air)
@@ -66261,9 +66171,9 @@
/area/medical/medbay/central)
"cGf" = (
/obj/structure/window/reinforced/spawner,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "airbridge_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router/air)
@@ -66273,9 +66183,9 @@
dir = 1
},
/obj/structure/window/reinforced/spawner,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "airbridge_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/router/air)
@@ -66287,7 +66197,7 @@
/obj/structure/window/reinforced/spawner,
/obj/machinery/mass_driver{
dir = 4;
- id = "airbridge_in";
+ id = "airbridge_out";
name = "Router Driver"
},
/turf/open/floor/plating,
@@ -66730,7 +66640,6 @@
/turf/open/floor/engine,
/area/science/storage)
"cGW" = (
-/obj/effect/landmark/blobstart,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -67029,7 +66938,6 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/effect/landmark/blobstart,
/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
dir = 4
},
@@ -67284,6 +67192,7 @@
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
/obj/machinery/door/poddoor{
+ id = "airbridge_out";
name = "Airbridge Router"
},
/turf/open/floor/plating,
@@ -67326,7 +67235,6 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"cId" = (
-/obj/effect/landmark/xeno_spawn,
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 5
},
@@ -67363,17 +67271,21 @@
/area/medical/genetics)
"cIh" = (
/obj/structure/plasticflaps,
-/obj/machinery/conveyor{
+/obj/machinery/door/poddoor{
+ id = "airbridge_out";
+ name = "Airbridge Router"
+ },
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "workshop_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/engine/workshop)
"cIi" = (
/obj/structure/window/reinforced/spawner,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "workshop_off"
+ id = "router"
},
/turf/open/floor/plating,
/area/engine/workshop)
@@ -67473,9 +67385,9 @@
"cIq" = (
/obj/structure/window/reinforced/spawner,
/obj/structure/window/reinforced/spawner/east,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "workshop_off"
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/engine/workshop)
@@ -67502,13 +67414,13 @@
name = "Atmospherics";
req_access_txt = "24"
},
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cIt" = (
@@ -67737,9 +67649,6 @@
/area/hallway/primary/aft)
"cIN" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Engineering Sector"
- },
/obj/structure/disposalpipe/segment,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -68040,17 +67949,6 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"cJo" = (
-/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/portables_connector/visible,
-/obj/machinery/portable_atmospherics/pump,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white/corner,
-/area/engine/atmos)
"cJp" = (
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
dir = 4
@@ -68103,14 +68001,10 @@
/turf/open/floor/plasteel,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"cJu" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Mix to Engine"
},
-/obj/machinery/portable_atmospherics/canister,
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cJv" = (
@@ -68256,14 +68150,9 @@
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"cJH" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
+ dir = 9
},
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cJI" = (
@@ -68982,11 +68871,12 @@
/obj/effect/turf_decal/tile/green{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 5
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1;
+ name = "Unfiltered & Air to Mix"
},
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 10
+/obj/machinery/atmospherics/pipe/simple/brown/visible{
+ dir = 8
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -69016,10 +68906,10 @@
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/violet/visible,
/obj/structure/extinguisher_cabinet{
pixel_y = 29
},
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cLh" = (
@@ -69075,7 +68965,6 @@
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/closed/wall/r_wall,
/area/engine/atmos)
"cLn" = (
@@ -69262,8 +69151,8 @@
/area/router/air)
"cLK" = (
/obj/structure/window/reinforced/spawner/north,
-/obj/machinery/conveyor{
- id = "airbridge_off"
+/obj/machinery/conveyor/auto{
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/router/air)
@@ -69289,9 +69178,9 @@
/area/medical/virology)
"cLO" = (
/obj/structure/window/reinforced/spawner/north,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "airbridge_off"
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/router/air)
@@ -69328,6 +69217,7 @@
id = "airbridge_off"
},
/obj/machinery/door/poddoor{
+ id = "airbridge_in";
name = "Airbridge Router"
},
/turf/open/floor/plating,
@@ -69338,10 +69228,9 @@
dir = 1
},
/obj/effect/turf_decal/stripes/line,
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 8;
- id = "workshop_in";
- name = "Router Driver"
+ id = "airbridge_in"
},
/turf/open/floor/plating,
/area/engine/workshop)
@@ -69363,8 +69252,8 @@
/turf/open/floor/plating/airless,
/area/medical/virology)
"cLV" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{
- dir = 4
+/obj/machinery/atmospherics/components/binary/pump/on{
+ name = "Waste to Filter"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -69381,19 +69270,13 @@
dir = 6
},
/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cLY" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{
dir = 4
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
-"cLZ" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 4
- },
-/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cMa" = (
/obj/machinery/light/small{
dir = 1;
@@ -69404,21 +69287,17 @@
dir = 4
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cMb" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/closed/wall/r_wall,
/area/engine/atmos)
"cMc" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 6
},
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
- dir = 9
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cMd" = (
@@ -69451,9 +69330,10 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cMi" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/structure/closet/firecloset,
-/turf/open/floor/plasteel,
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
/area/engine/atmos)
"cMj" = (
/obj/structure/cable{
@@ -69463,7 +69343,7 @@
dir = 1
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cMk" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -69527,7 +69407,7 @@
dir = 4
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cMu" = (
/obj/machinery/light/small,
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
@@ -69535,7 +69415,7 @@
dir = 8
},
/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
+/area/engine/atmos)
"cMv" = (
/obj/machinery/button/door/incinerator_vent_atmos_main{
pixel_x = -24;
@@ -69545,29 +69425,27 @@
pixel_x = -40;
pixel_y = 8
},
-/obj/machinery/atmospherics/pipe/simple/general/visible{
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cMw" = (
-/obj/machinery/atmospherics/components/binary/valve/digital{
- name = "Waste Release"
- },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"cMx" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 5
- },
/obj/item/radio/intercom{
name = "Station Intercom (General)";
pixel_y = -30
},
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cMy" = (
@@ -69659,14 +69537,20 @@
/turf/open/floor/plasteel/white/corner,
/area/engine/atmos)
"cMG" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 5
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
"cMH" = (
-/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
-/turf/closed/wall/r_wall,
+/obj/machinery/suit_storage_unit/atmos,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cMI" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
@@ -69717,13 +69601,12 @@
/turf/open/floor/plating,
/area/engine/atmos)
"cMP" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
dir = 4
},
-/turf/open/floor/plating/airless,
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
/area/engine/atmos)
"cMQ" = (
/obj/structure/lattice,
@@ -69755,16 +69638,16 @@
dir = 1
},
/obj/effect/turf_decal/stripes/line,
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "workshop_off"
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/engine/workshop)
"cMV" = (
-/obj/machinery/conveyor{
- dir = 10;
- id = "workshop_off"
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/engine/workshop)
@@ -69943,17 +69826,10 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/router/air)
-"cNm" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "airbridge_off"
- },
-/turf/open/floor/plating,
-/area/router/air)
"cNn" = (
-/obj/machinery/conveyor{
- dir = 10;
- id = "airbridge_off"
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "airbridge"
},
/turf/open/floor/plating,
/area/router/air)
@@ -70359,6 +70235,7 @@
icon_state = "2-4"
},
/obj/effect/landmark/event_spawn,
+/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cOr" = (
@@ -70499,6 +70376,12 @@
dir = 4;
pixel_x = -22
},
+/obj/machinery/button/massdriver{
+ id = "research_out";
+ name = "Medsci Driver Control";
+ pixel_x = -24;
+ pixel_y = -24
+ },
/turf/open/floor/plasteel,
/area/router/medsci)
"cOF" = (
@@ -70527,8 +70410,8 @@
/turf/closed/wall/r_wall,
/area/router/medsci)
"cOJ" = (
-/obj/machinery/conveyor{
- id = "medsci_off"
+/obj/machinery/conveyor/auto{
+ id = "medsci"
},
/turf/open/floor/plating,
/area/router/medsci)
@@ -70538,11 +70421,6 @@
/obj/item/hand_labeler,
/obj/item/destTagger,
/obj/machinery/light,
-/obj/machinery/button/massdriver{
- id = "medsci_out";
- pixel_x = -8;
- pixel_y = 8
- },
/obj/machinery/requests_console{
department = "MedSci Router";
name = "MedSci Router RC";
@@ -70551,9 +70429,9 @@
/turf/open/floor/plating,
/area/router/medsci)
"cOL" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "medsci_off"
+ id = "medsci"
},
/turf/open/floor/plating,
/area/router/medsci)
@@ -70579,7 +70457,7 @@
/area/janitor/aux)
"cOP" = (
/obj/machinery/mass_driver{
- id = "medsci_out";
+ id = "research_out";
name = "Router Driver"
},
/turf/open/floor/plating,
@@ -70649,6 +70527,7 @@
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
/obj/machinery/door/poddoor{
+ id = "research_out";
name = "MedSci Router"
},
/turf/open/floor/plating,
@@ -70657,11 +70536,12 @@
/obj/structure/plasticflaps,
/obj/structure/fans/tiny,
/obj/machinery/door/poddoor{
+ id = "research_in";
name = "MedSci Router"
},
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "medsci_off"
+ id = "medsci"
},
/turf/open/floor/plating,
/area/router/medsci)
@@ -70691,6 +70571,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
+/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plasteel,
/area/janitor/aux)
"cOX" = (
@@ -70768,100 +70649,88 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"cPd" = (
-/obj/machinery/conveyor{
- id = "sq_off"
+/obj/machinery/conveyor/auto{
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPe" = (
-/obj/machinery/mass_driver{
- dir = 1;
- id = "sq_out";
- name = "Router Driver"
+/obj/machinery/mass_driver/pressure_plate{
+ dir = 1
},
/turf/open/floor/plating/airless,
/area/router/aux)
-"cPf" = (
-/obj/machinery/conveyor/auto,
-/turf/open/floor/plating/airless,
-/area/router/aux)
"cPg" = (
-/obj/machinery/mass_driver{
+/obj/machinery/mass_driver/pressure_plate{
dir = 1;
- id = "medsci_in";
- name = "Router Driver"
+ id = "research_in"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPh" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "sq_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPi" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 1;
- id = "viro_off"
+ id = "pq"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPj" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 9;
- id = "viro_off"
+ id = "medsci"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPk" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "viro_off"
+ id = "medsci"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPl" = (
-/obj/machinery/mass_driver{
- dir = 8;
- id = "viro_in";
- name = "Router Driver"
+/obj/machinery/mass_driver/pressure_plate{
+ dir = 8
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPm" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 8;
- id = "sq_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPn" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 10;
- id = "sq_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPo" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "viro_off"
+/obj/machinery/conveyor/auto{
+ id = "pq"
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPp" = (
-/obj/machinery/mass_driver{
- dir = 4;
- id = "viro_out";
- name = "Router Driver"
+/obj/machinery/mass_driver/pressure_plate{
+ dir = 4
},
/turf/open/floor/plating/airless,
/area/router/aux)
"cPq" = (
-/obj/machinery/conveyor{
+/obj/machinery/conveyor/auto{
dir = 4;
- id = "sq_off"
+ id = "starboard"
},
/turf/open/floor/plating/airless,
/area/router/aux)
@@ -71867,7 +71736,7 @@
id = "MiningConveyorBlastDoor";
name = "Asteroid Mining Load Door"
},
-/turf/open/floor/plating/airless,
+/turf/open/floor/plating,
/area/quartermaster/miningoffice)
"cRb" = (
/obj/machinery/computer/cloning,
@@ -71932,13 +71801,7 @@
/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
dir = 4
},
-/obj/machinery/atmospherics/components/unary/portables_connector/visible,
-/obj/machinery/portable_atmospherics/pump,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/light,
-/turf/open/floor/plasteel/white/corner,
+/turf/open/floor/plasteel,
/area/engine/atmos)
"cRh" = (
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
@@ -71972,8 +71835,8 @@
/obj/item/stock_parts/cell/high{
charge = 100;
maxcharge = 15000;
- pixel_y = 3;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = 3
},
/obj/item/stock_parts/cell/high{
charge = 100;
@@ -72137,29 +72000,41 @@
name = "Medbay Treatment Center"
})
"cVq" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
+/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
/turf/open/floor/plasteel,
-/area/engine/atmos)
+/area/hallway/primary/aft)
"cVO" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
- },
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/effect/landmark/start/atmospheric_technician,
/turf/open/floor/plasteel,
/area/engine/atmos)
"dpO" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible,
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
+"dwH" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "router"
+ },
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "engi_out";
+ name = "Engineering Router"
+ },
+/turf/open/floor/plating,
+/area/router)
"dVR" = (
-/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
-/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"dYm" = (
@@ -72170,12 +72045,12 @@
/turf/open/floor/engine,
/area/science/storage)
"eCy" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 9
- },
/obj/structure/extinguisher_cabinet{
pixel_x = -27
},
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"eIh" = (
@@ -72194,13 +72069,15 @@
},
/area/engine/atmos)
"eKM" = (
-/obj/item/radio/intercom{
- name = "Station Intercom (General)";
- pixel_y = -30
- },
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"eSd" = (
+/obj/machinery/mass_driver/pressure_plate{
+ id = "security_in"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
"eTZ" = (
/obj/effect/turf_decal/tile/green{
dir = 4
@@ -72208,10 +72085,9 @@
/obj/effect/turf_decal/tile/green{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/green/visible{
+/obj/machinery/atmospherics/pipe/manifold/brown/visible{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"eUF" = (
@@ -72238,24 +72114,25 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"fkx" = (
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
- dir = 4
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
},
+/obj/machinery/portable_atmospherics/scrubber,
/turf/open/floor/plasteel,
-/area/engine/atmos)
+/area/hallway/primary/aft)
"fti" = (
-/obj/machinery/atmospherics/components/binary/pump,
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+/obj/machinery/atmospherics/pipe/manifold/green/visible{
dir = 8
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"fui" = (
-/obj/machinery/atmospherics/pipe/simple/violet/visible{
- dir = 4
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
},
-/turf/open/space/basic,
-/area/space)
+/obj/machinery/portable_atmospherics/pump,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
"fuE" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
@@ -72271,32 +72148,22 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
-"fIw" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 4
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"guK" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/space/basic,
/area/space)
"gDY" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "Fuel Pipe to Incinerator"
- },
/obj/machinery/light,
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"gGG" = (
/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/manifold/orange/visible{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 5
},
/turf/open/space/basic,
/area/space/nearstation)
@@ -72330,24 +72197,15 @@
/turf/open/floor/plasteel,
/area/tcommsat/computer)
"hlo" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 1
- },
-/obj/machinery/meter,
+/obj/effect/landmark/blobstart,
/turf/open/floor/plasteel,
-/area/engine/atmos)
+/area/quartermaster/miningdock/airless)
"hlV" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating,
+/area/storage/tech)
"hDz" = (
-/obj/machinery/space_heater,
-/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
- dir = 4
- },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
/area/engine/atmos)
"hFa" = (
@@ -72358,19 +72216,10 @@
/turf/open/floor/engine,
/area/science/storage)
"hKC" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 10
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"hMZ" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- name = "Pure to Port"
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"hXk" = (
@@ -72384,17 +72233,10 @@
/obj/machinery/atmospherics/pipe/manifold/orange/visible,
/turf/open/space/basic,
/area/space/nearstation)
-"iAW" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"iQY" = (
/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
dir = 4
},
-/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/engine/atmos)
"jiZ" = (
@@ -72403,19 +72245,8 @@
},
/turf/closed/wall/r_wall,
/area/engine/atmos)
-"jml" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- layer = 2.4
- },
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"jon" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
dir = 4
},
/turf/open/floor/plasteel,
@@ -72435,16 +72266,6 @@
/area/engine/secure_construction{
name = "Engineering Construction Area"
})
-"jXo" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 10
- },
-/turf/closed/wall/r_wall,
-/area/engine/atmos)
-"kxw" = (
-/obj/machinery/atmospherics/pipe/simple/violet/visible,
-/turf/open/space/basic,
-/area/space)
"kzb" = (
/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
dir = 4
@@ -72455,16 +72276,12 @@
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 4
},
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1;
- name = "Mix to Engine"
- },
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"lcD" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- name = "Air to Port"
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -72472,8 +72289,9 @@
/obj/machinery/light{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
- dir = 8
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Mix to Filter"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -72487,7 +72305,10 @@
name = "Engine Room"
})
"mqB" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Air to Ports"
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"mxW" = (
@@ -72497,13 +72318,12 @@
},
/turf/open/space/basic,
/area/space/nearstation)
-"mBP" = (
-/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"mEa" = (
-/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
-/obj/machinery/meter,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Air to Distro"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"mIm" = (
@@ -72530,36 +72350,14 @@
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/turf/open/floor/plasteel,
/area/tcommsat/computer)
-"mNN" = (
-/obj/machinery/space_heater,
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"ntC" = (
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Port to Fuel Pipe"
- },
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"nvn" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 1
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"nAF" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- name = "Mix to Port"
- },
+/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"nBM" = (
@@ -72570,26 +72368,9 @@
},
/turf/open/floor/plating,
/area/engine/atmos)
-"nEX" = (
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
- dir = 6
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"nLV" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/engine/atmos)
"ony" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+/obj/machinery/atmospherics/pipe/manifold/brown/visible{
dir = 4
},
/turf/open/floor/plating,
@@ -72618,6 +72399,13 @@
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"pZq" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 8;
+ sortType = 12
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
"qeq" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -72625,41 +72413,72 @@
},
/turf/open/space/basic,
/area/space/nearstation)
-"qgO" = (
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"qlJ" = (
/obj/structure/lattice/catwalk,
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
/turf/open/space/basic,
/area/space/nearstation)
-"qvB" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/heater{
- dir = 8
+"qGi" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
+/obj/structure/cable/yellow{
+ icon_state = "2-4"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
"qHL" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/brown/visible{
+ dir = 6
},
/turf/open/floor/plating,
/area/engine/atmos)
-"qWY" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- name = "Waste In"
+"qMN" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "starboardbelthell_out";
+ name = "Belt Hell"
},
+/turf/open/floor/plating,
+/area/router)
+"qWY" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"rdF" = (
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
- dir = 6
- },
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"rke" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"rqk" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"rOE" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "eva_in";
+ name = "EVA Router"
+ },
+/turf/open/floor/plating,
+/area/router)
"rTW" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/violet/visible{
@@ -72673,22 +72492,28 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"sdp" = (
-/obj/structure/reagent_dispensers/foamtank,
-/turf/open/floor/engine,
-/area/engine/secure_construction{
- name = "Engineering Construction Area"
- })
-"sHB" = (
-/obj/machinery/atmospherics/pipe/manifold/orange/visible{
- dir = 4
+"sky" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "pq"
},
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"sAm" = (
+/obj/structure/plasticflaps,
+/obj/machinery/door/poddoor{
+ id = "airbridge_out";
+ name = "Airbridge Router"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"sHB" = (
+/obj/effect/landmark/start/atmospheric_technician,
/turf/open/floor/plasteel,
/area/engine/atmos)
"sRD" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 5
- },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/machinery/portable_atmospherics/canister,
/turf/open/floor/plasteel,
/area/engine/atmos)
"sVC" = (
@@ -72699,6 +72524,15 @@
/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
/turf/open/space/basic,
/area/space/nearstation)
+"tff" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "portbelthell_out";
+ name = "Airbridge Router"
+ },
+/turf/open/floor/plating,
+/area/router)
"tjb" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
@@ -72714,12 +72548,15 @@
/obj/machinery/atmospherics/pipe/simple/violet/visible,
/turf/open/space/basic,
/area/space/nearstation)
-"tuF" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 6
+"tsU" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "engi_in";
+ name = "Engineering Router"
},
-/turf/closed/wall/r_wall,
-/area/engine/atmos)
+/turf/open/floor/plating,
+/area/router)
"tyI" = (
/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
dir = 4
@@ -72728,36 +72565,28 @@
/area/engine/atmos)
"tXV" = (
/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- layer = 2.4
+ name = "Pure to Ports"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"tZj" = (
-/obj/structure/tank_dispenser{
- pixel_x = -1
- },
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
- dir = 6
- },
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"tZC" = (
-/obj/machinery/atmospherics/pipe/manifold4w/orange/visible,
-/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"urj" = (
-/obj/machinery/atmospherics/pipe/simple/general/hidden{
- dir = 8;
- icon_state = "intact"
- },
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
dir = 4
},
+/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plasteel/dark,
/area/bridge)
"uwK" = (
@@ -72778,27 +72607,18 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"uVD" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 5
+/obj/machinery/atmospherics/pipe/simple/brown/visible{
+ dir = 9
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"vcb" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 10
+/obj/machinery/atmospherics/pipe/simple/brown/visible,
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"vsO" = (
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/turf/closed/wall/r_wall,
-/area/engine/atmos)
"vxU" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/obj/structure/extinguisher_cabinet{
@@ -72818,7 +72638,9 @@
/turf/open/space/basic,
/area/space/nearstation)
"wWH" = (
-/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
+/obj/machinery/atmospherics/components/unary/thermomachine/heater{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"xcO" = (
@@ -72828,24 +72650,8 @@
/obj/effect/turf_decal/tile/green{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
- },
/obj/machinery/atmospherics/components/binary/pump{
- dir = 0;
- name = "Mix Outlet Pump"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"xjk" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"xkC" = (
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 9
+ name = "Mix to Ports"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -72862,9 +72668,8 @@
/turf/closed/wall,
/area/quartermaster/storage)
"xCy" = (
-/obj/machinery/atmospherics/components/binary/pump,
-/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 9
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -92048,7 +91853,7 @@ aaa
aaa
bcy
bdf
-mBP
+bdf
crJ
blT
bqJ
@@ -92763,7 +92568,7 @@ auL
aAc
aGq
aJX
-bdE
+cQQ
cen
aGq
cvK
@@ -95885,7 +95690,7 @@ bhS
beJ
beJ
bGI
-bXP
+aaU
aaa
aaa
aaa
@@ -96142,7 +95947,7 @@ bdg
beJ
beJ
bGI
-bXV
+aaU
aaa
aaa
aaa
@@ -96399,7 +96204,7 @@ bdg
beJ
ceI
bGI
-bXV
+aaU
aaa
aaa
aaa
@@ -96656,7 +96461,7 @@ bdg
cmd
beT
bGI
-bXV
+aaU
aaa
aaa
aaa
@@ -96913,7 +96718,7 @@ bdg
beJ
bfd
bdg
-bXV
+aaU
aaa
aaa
ceD
@@ -97170,7 +96975,7 @@ bdg
beJ
bfd
bdg
-bXV
+aaU
aaa
bdg
buB
@@ -97427,7 +97232,7 @@ bdg
caW
bJy
bdg
-bXV
+aaU
aaU
bdg
bjg
@@ -97684,7 +97489,7 @@ bdg
beJ
bfd
bGI
-bYd
+bGI
bGI
bGI
bzb
@@ -97941,7 +97746,7 @@ beJ
beJ
bfd
blc
-bYP
+beJ
coS
aXc
aXc
@@ -98116,7 +97921,7 @@ aak
aak
aak
aak
-aak
+eSd
aaa
aaa
aaa
@@ -98198,7 +98003,7 @@ bzB
bgA
bWf
bXm
-bZQ
+bgA
bWq
ccN
cei
@@ -98263,10 +98068,10 @@ aaa
aaa
aaa
aaa
-cPf
-cPf
-cPf
-cPf
+cPo
+cPo
+cPo
+cPo
cPo
abp
aaa
@@ -98524,7 +98329,7 @@ abM
abR
abM
abM
-cPo
+sky
aaU
aaa
aaa
@@ -98781,7 +98586,7 @@ cPg
cPi
cPj
abR
-cPo
+sky
aaU
aaa
aaa
@@ -99038,7 +98843,7 @@ aaa
aaa
cPk
abR
-cPo
+sky
aaU
aaa
aaa
@@ -99399,7 +99204,7 @@ aaa
aaU
aar
abM
-acf
+cPp
aaU
aaa
aaa
@@ -99661,12 +99466,12 @@ aaU
aaa
aaa
aaa
+adM
adj
adj
adj
adj
-adj
-adj
+adM
aaU
aaU
aaa
@@ -99918,12 +99723,12 @@ aaU
aaa
aaa
aaa
-adj
+adM
aeC
afv
adF
agM
-adj
+adM
aaa
aaU
aaU
@@ -100175,12 +99980,12 @@ aaU
aaa
aaa
aaa
-adj
+adM
aeR
afx
aga
afI
-adj
+adM
aaa
aaa
aaU
@@ -100432,20 +100237,20 @@ aaU
add
adC
adC
-adC
+aap
aeS
adj
adj
agN
+aiX
ahL
ahL
-ahL
-ahL
+aaq
afD
afQ
age
age
-agy
+age
age
age
afC
@@ -100697,8 +100502,8 @@ aad
aad
aad
aad
-adM
-aaj
+aiM
+agy
aaI
ami
akX
@@ -100955,7 +100760,7 @@ aad
aad
aad
aiM
-aaj
+azO
aaI
aco
akX
@@ -101020,7 +100825,7 @@ bRf
cCG
cCH
cCG
-bUw
+bgi
bVJ
cCG
bWF
@@ -101277,7 +101082,7 @@ bcf
bcf
bCs
bcf
-bwU
+bhI
bCD
bcf
bcf
@@ -101469,7 +101274,7 @@ aad
aad
aad
aiM
-aap
+aco
abd
abT
akX
@@ -101725,8 +101530,8 @@ aad
aad
aad
aad
-adM
-aaq
+aiM
+aco
aaI
acF
akX
@@ -101982,7 +101787,7 @@ agO
adj
adj
adj
-adM
+aiM
aat
abf
acF
@@ -103105,7 +102910,7 @@ aaa
cuR
cGa
cuR
-cNm
+cNn
cuR
cIH
cgv
@@ -103927,7 +103732,7 @@ aaa
aaa
aaa
aaa
-aaa
+cpB
ckl
ckl
ckl
@@ -105619,7 +105424,7 @@ aYi
baU
bdh
aOJ
-aog
+bdE
aog
axV
aHV
@@ -106149,7 +105954,7 @@ aaU
aaa
btT
bzE
-btZ
+rOE
btT
aaa
aaa
@@ -106188,7 +105993,7 @@ aaa
aaa
ctG
cIh
-ctJ
+sAm
ctG
cIy
bjm
@@ -106925,7 +106730,7 @@ bKl
bQW
bUp
cci
-btZ
+tff
aSq
bgh
bIY
@@ -107163,7 +106968,7 @@ bdP
bfF
bha
bdP
-abp
+aOJ
aPN
bes
aaU
@@ -107208,8 +107013,8 @@ aPg
aPg
cet
bpL
-bBO
-bBO
+bpL
+rqk
bBO
bBO
ctG
@@ -107228,7 +107033,7 @@ bZq
bZh
cEE
bpD
-cmL
+bpD
cyS
byQ
byQ
@@ -107420,7 +107225,7 @@ bdW
bfJ
bhc
bdP
-abp
+aOJ
aPN
bes
aaU
@@ -107466,7 +107271,7 @@ cdV
cdV
bpN
bCa
-bSo
+bSp
bSv
cfl
ctX
@@ -107677,7 +107482,7 @@ bdY
bfM
bhg
bdP
-abp
+aOJ
aPN
bey
aaU
@@ -107934,7 +107739,7 @@ bdP
bdP
bhl
bdP
-abp
+aOJ
aPN
bes
aaU
@@ -107978,7 +107783,7 @@ cmf
cnK
cnK
cdV
-bBO
+rke
bUB
bSq
bVf
@@ -108191,7 +107996,7 @@ aaU
aaU
cuA
cuy
-bcc
+blD
bcO
bes
aaU
@@ -108448,7 +108253,7 @@ aaa
aaa
aaa
aaU
-brs
+aQq
aPR
cux
aaU
@@ -108492,7 +108297,7 @@ cmE
cok
cok
cdV
-bBO
+rke
bPv
cBd
cfi
@@ -108705,7 +108510,7 @@ aaa
aaa
aaa
aaU
-brs
+aQq
aQp
cux
aaU
@@ -108749,7 +108554,7 @@ cmG
coT
cpL
cpZ
-bBO
+qGi
cxd
cBd
cfj
@@ -108962,9 +108767,9 @@ aaU
aaU
aaU
aaU
-abp
-aQq
-bes
+aUq
+bmO
+bcc
aaU
aaa
aaa
@@ -109006,7 +108811,7 @@ cmY
cdV
cdV
cdV
-bBO
+qGi
bSm
cBk
cfk
@@ -109066,7 +108871,7 @@ aaa
aaa
aaa
aaa
-aaa
+cpB
aaa
ckl
ckl
@@ -109219,9 +109024,9 @@ aaa
aaa
aaa
aaU
-abp
+aUq
aQr
-bes
+bcc
aaU
aaa
aaa
@@ -109239,7 +109044,7 @@ bBv
bXM
ccn
ccA
-ccy
+dwH
aTl
bsz
cdG
@@ -109263,7 +109068,7 @@ cks
crv
crx
aeI
-bBO
+rke
bSn
cBl
bSn
@@ -109476,7 +109281,7 @@ aaa
aaa
aaa
aaU
-abp
+aUq
aQr
beD
cuy
@@ -109496,7 +109301,7 @@ bUc
bXM
cco
ccE
-btZ
+tsU
aTl
bsz
cdU
@@ -109534,7 +109339,7 @@ cNt
beZ
cIS
coz
-bty
+fkx
bBl
aaU
aaU
@@ -110046,9 +109851,9 @@ cJy
cNg
cNs
cIB
-cIM
-bXX
-bty
+cMG
+cVq
+fui
bBl
aaU
bIm
@@ -110262,7 +110067,7 @@ aaa
btT
bBX
btT
-btZ
+qMN
btT
aaa
aaU
@@ -110303,9 +110108,9 @@ cvi
cuN
cNv
bhT
-cIM
-bXX
-bty
+cMG
+cVq
+fui
bzr
byT
cfc
@@ -110799,12 +110604,12 @@ aCZ
aRG
aOl
aOV
-avQ
+bSo
cmX
aRp
bkJ
aUf
-aeI
+ciG
bnp
cmO
cfU
@@ -112870,7 +112675,7 @@ biV
cKg
cLn
cLz
-bmz
+cLz
biV
cdP
bXX
@@ -113177,7 +112982,7 @@ aaa
aaa
aaa
aaa
-aaa
+cpB
aaa
aaa
ckl
@@ -113336,7 +113141,7 @@ cAM
bCP
boA
aYC
-brf
+att
att
att
att
@@ -114066,7 +113871,7 @@ aaa
aaU
aio
akZ
-biO
+aKe
bEt
bEA
aik
@@ -114643,7 +114448,7 @@ aaa
bsz
anr
bcI
-sdp
+bgw
bUX
bgw
uwK
@@ -116226,7 +116031,7 @@ btz
bPm
bxH
bSf
-bzd
+hlV
bQD
bxH
bxH
@@ -116873,7 +116678,7 @@ aaa
aaa
aaa
aaU
-cnM
+cPl
abM
acj
aaU
@@ -117470,8 +117275,8 @@ aaa
aaa
aaa
aaa
-bgi
-fui
+bMp
+bJv
aaa
cwK
aaa
@@ -117727,8 +117532,8 @@ aZG
aaa
aaa
aaa
-bgi
-fui
+bMp
+bJv
aaa
cwI
aaa
@@ -117984,8 +117789,8 @@ aaa
aaa
aaa
aaa
-bgi
-fui
+bMp
+bJv
aaa
cwK
aaa
@@ -118026,7 +117831,7 @@ bYh
bYn
bYn
bYE
-cni
+bYn
cyf
cgy
bIz
@@ -118488,16 +118293,16 @@ bzO
caD
bzn
bjz
-ciG
+ciq
bAK
ciV
aMI
aaa
bJj
bLS
-kxw
-kxw
-kxw
+bHg
+bHg
+bHg
bPA
wPS
aaa
@@ -118931,7 +118736,7 @@ aaa
aaU
aav
abM
-acz
+cPp
aaU
aaa
aaa
@@ -118961,7 +118766,7 @@ avz
awx
axU
ayL
-azO
+azU
aAu
awp
aCP
@@ -119533,10 +119338,10 @@ cPD
bVE
cbT
cww
-bhI
-bhI
+cww
+cww
can
-bhI
+cww
aaa
anr
aaa
@@ -119786,15 +119591,15 @@ bNb
bPL
cwB
cwB
-cwB
+hDz
bVX
eKM
+bZQ
+cww
cww
-bhI
-bhI
cao
-bhI
-bhI
+cww
+cww
anr
aaa
aaU
@@ -120041,13 +119846,13 @@ cww
bjE
bNq
bQK
-qgO
+cwB
chO
cpN
bWG
cRg
-jiZ
-bhI
+cmL
+cww
cLY
cap
cMt
@@ -120301,14 +120106,14 @@ bNd
bNE
cww
cpO
-bWG
-cJo
+bYP
+cRg
cMH
-bhI
-cLZ
+cww
+cMb
caq
-cLZ
-bhI
+cMb
+cww
anr
aaa
aaU
@@ -120557,15 +120362,15 @@ cww
cww
cww
cww
-cww
+cLm
cIs
tyI
-cMJ
+cww
cLX
cMa
cMj
cMu
-cMG
+jiZ
anr
aaU
aaU
@@ -120812,17 +120617,17 @@ pgu
pgu
pgu
gGG
-vsO
+cww
chS
cpQ
cfM
cbU
-jXo
+cww
cLm
cMb
cas
cMb
-cMH
+cMJ
anr
aaa
aaa
@@ -121069,9 +120874,9 @@ aXx
aXx
aXx
bfW
-tuF
+cww
lRy
-fti
+cMl
cfP
mEa
cLV
@@ -121326,7 +121131,7 @@ bca
cat
cKX
bQN
-nLV
+cLb
cLd
fti
cfT
@@ -121337,7 +121142,7 @@ chx
chM
gDY
jiZ
-hlV
+anr
aaa
aaa
aaU
@@ -121595,7 +121400,7 @@ rUl
cMw
cfs
cMP
-aaa
+cMi
aaa
aaU
aaa
@@ -121838,14 +121643,14 @@ aXx
bca
bca
cKQ
-cKY
-bQO
+biO
+bmz
ony
xcO
hKC
cVO
-sRD
-cMe
+nAF
+cni
cai
rdF
cMk
@@ -122099,12 +121904,12 @@ aXx
bfW
cww
bUa
-cMr
+brf
sRD
-cMo
+nAF
cgz
-cai
-fkx
+cJH
+cwB
cMl
cMx
cMJ
@@ -122356,13 +122161,13 @@ cKX
bQN
cLb
cLe
-cMo
-hMZ
+bXP
+sRD
nAF
lcD
-cai
-fkx
-mNN
+cwB
+cwB
+cwB
cLo
nBM
cfD
@@ -122613,12 +122418,12 @@ bZR
bfW
cwA
cLf
-cMo
-iAW
-fIw
+bXV
+sRD
+nAF
wWH
-ntC
-nEX
+cwB
+cwB
hDz
cLp
oMB
@@ -122870,11 +122675,11 @@ cKY
bQO
cLc
eIh
-car
+bYd
tXV
tZj
-jml
-cVq
+cwB
+cwB
cMc
cMm
cMy
@@ -123128,10 +122933,10 @@ bfW
cww
bhJ
cMo
-iAW
+cwB
cJu
-iAW
-cJH
+cwB
+cwB
cMd
cMn
cMz
@@ -123385,10 +123190,10 @@ bQN
cLb
cLh
cMo
-iAW
-cJu
-hlo
-cJH
+cwB
+jon
+cwB
+cwB
cMe
cMo
cLq
@@ -123643,9 +123448,9 @@ bWK
cLi
xKr
nvn
-cJu
-iAW
-cJH
+jon
+cwB
+cwB
cMe
cMo
cMA
@@ -123899,10 +123704,10 @@ cLa
cLc
fgS
car
-iAW
+cwB
jon
-xjk
-cai
+cwB
+cwB
cMg
cMq
cMB
@@ -124159,7 +123964,7 @@ kOG
dVR
xCy
sHB
-xkC
+cwB
cMe
cMr
cMC
@@ -124413,7 +124218,7 @@ bQS
cLb
cLj
cMo
-qvB
+cwB
cgh
cgA
chq
@@ -124931,7 +124736,7 @@ prx
vxU
cLW
ccG
-cMi
+prx
iQY
cMF
cMO
@@ -125728,7 +125533,7 @@ cNB
cNB
cNB
cNG
-cNN
+hlo
cNT
cNy
cNX
@@ -125941,7 +125746,7 @@ aaa
aaa
aaa
aaU
-cbS
+cPq
abM
ccH
aaU
@@ -126125,9 +125930,9 @@ aaa
aaa
aaa
aaU
-abF
+cPl
abM
-acA
+cPq
aaU
aaa
aaa
@@ -126198,9 +126003,9 @@ aaa
aaa
aaa
aaU
-cbS
+cPq
abR
-ccJ
+cPm
aaU
aaa
aaa
@@ -126382,9 +126187,9 @@ aaa
aaa
aaa
aaU
-abJ
+cPm
abR
-acA
+cPq
aaU
aaU
aaU
@@ -126639,12 +126444,12 @@ aaa
aaa
aaa
aaU
-abJ
+cPm
abR
acB
-adc
-adc
-adL
+cPd
+cPd
+cdq
aaa
aaa
aaa
@@ -126709,14 +126514,14 @@ aaU
aaa
aaa
aaa
-bGK
-bGK
+cPd
+cPd
bUe
ccc
abR
-aaY
+pZq
cdb
-bGK
+cPd
cdq
aaa
aaa
@@ -126896,7 +126701,7 @@ aaa
aaa
aaa
aaU
-abJ
+cPm
abM
abR
abM
@@ -127153,12 +126958,12 @@ aaa
aaa
aaa
abp
-abJ
-abZ
-abZ
-abZ
-abZ
-abZ
+cPm
+cPh
+cPh
+cPh
+cPh
+cPh
aaa
aaa
aaa
@@ -127223,15 +127028,15 @@ aaU
aaa
aaa
aaa
-bGP
-bNo
-bNo
+cPe
+cPh
+cPh
ccf
ccs
ccP
cdi
-bNo
-bNo
+cPh
+cPh
aaa
aaa
aaa
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index fdc313c30a..6f0636d3cb 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -982,11 +982,11 @@
/area/security/prison)
"aci" = (
/obj/structure/lattice/catwalk,
-/obj/machinery/door/airlock/external{
- req_one_access_txt = "13,8"
+/obj/structure/cable{
+ icon_state = "0-2"
},
/turf/open/space,
-/area/maintenance/starboard/fore)
+/area/solar/starboard/fore)
"acj" = (
/obj/machinery/light/small{
dir = 1
@@ -3123,6 +3123,17 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"afQ" = (
+/obj/machinery/door/airlock/external{
+ name = "Solar Maintenance";
+ req_access_txt = "10; 13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
"afR" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -5480,15 +5491,17 @@
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"akd" = (
-/turf/open/space,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
/area/maintenance/solars/starboard/fore)
"ake" = (
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/structure/lattice/catwalk,
/turf/open/space,
-/area/maintenance/solars/starboard/fore)
+/area/space)
"akf" = (
/obj/machinery/conveyor{
dir = 1;
@@ -6294,11 +6307,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/door/airlock/external{
- name = "Solar Maintenance";
- req_access_txt = "10; 13"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/maintenance/solars/starboard/fore)
"alx" = (
@@ -6997,6 +7005,10 @@
/obj/structure/window/reinforced,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
+"amB" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/maintenance/port)
"amC" = (
/obj/structure/chair{
dir = 4
@@ -7014,6 +7026,17 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/crew_quarters/fitness/recreation)
+"amF" = (
+/obj/machinery/door/airlock/maintenance/abandoned{
+ name = "Storage Room";
+ req_access_txt = "12"
+ },
+/obj/structure/barricade/wooden,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"amG" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"amH" = (
/obj/machinery/door/airlock/external{
req_one_access_txt = "13,8"
@@ -7086,14 +7109,9 @@
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"amN" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
+/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plating,
-/area/maintenance/solars/starboard/fore)
+/area/crew_quarters/fitness/pool)
"amO" = (
/obj/machinery/light/small{
dir = 8
@@ -7158,6 +7176,13 @@
icon_state = "platingdmg2"
},
/area/maintenance/port)
+"amV" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"amW" = (
/obj/structure/table/reinforced,
/obj/item/folder,
@@ -7438,6 +7463,9 @@
/obj/item/paper,
/turf/open/floor/plasteel,
/area/security/main)
+"anz" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"anA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
@@ -7898,6 +7926,10 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/security/warden)
+"aov" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"aow" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/yellow{
@@ -8616,6 +8648,12 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"apP" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"apQ" = (
/obj/structure/reagent_dispensers/peppertank{
pixel_x = 32
@@ -8682,6 +8720,9 @@
/obj/item/assembly/flash/handheld,
/turf/open/floor/plasteel,
/area/security/main)
+"apX" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"apY" = (
/obj/structure/table,
/obj/item/folder/red,
@@ -8747,6 +8788,12 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
+"aqe" = (
+/obj/machinery/pool/filter{
+ pixel_y = 16
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"aqf" = (
/obj/structure/closet/lasertag/blue,
/obj/effect/turf_decal/tile/neutral{
@@ -9248,6 +9295,12 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"arh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"ari" = (
/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -9478,6 +9531,14 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"arF" = (
+/obj/structure/pool/ladder{
+ dir = 8;
+ icon_state = "ladder";
+ pixel_x = 4
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"arG" = (
/obj/structure/closet,
/obj/item/storage/box/lights/mixed,
@@ -10167,6 +10228,13 @@
/obj/structure/chair,
/turf/open/floor/plasteel/grimy,
/area/security/main)
+"asN" = (
+/obj/machinery/light/built{
+ icon_state = "tube-empty";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"asO" = (
/obj/item/paper_bin{
pixel_x = -3;
@@ -10466,6 +10534,10 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"atw" = (
+/obj/machinery/pool/drain,
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"atx" = (
/obj/structure/cable/yellow{
icon_state = "2-4"
@@ -10536,6 +10608,12 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"atC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"atD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -10558,6 +10636,10 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"atF" = (
+/obj/machinery/pool/controller,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"atG" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -10601,6 +10683,23 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"atJ" = (
+/obj/structure/sign/poster/ripped{
+ pixel_y = 32
+ },
+/obj/structure/table,
+/obj/structure/cable/yellow{
+ icon_state = "0-2"
+ },
+/obj/item/light/tube,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/fitness/pool";
+ dir = 4;
+ name = "Pool APC";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"atK" = (
/obj/machinery/computer/prisoner/gulag_teleporter_computer{
dir = 1
@@ -11069,6 +11168,24 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"auQ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"auR" = (
+/obj/structure/pool/Lboard,
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"auS" = (
+/obj/structure/pool/Rboard,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"auT" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"auU" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -11659,6 +11776,50 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"avU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"avV" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance/abandoned,
+/obj/structure/barricade/wooden,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"avW" = (
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/aft)
+"avX" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"avY" = (
/obj/machinery/door/airlock/external{
name = "Labor Camp Shuttle Airlock";
@@ -11932,6 +12093,11 @@
},
/turf/open/floor/plasteel/dark,
/area/security/brig)
+"awA" = (
+/obj/structure/closet/athletic_mixed,
+/obj/item/toy/poolnoodle/blue,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"awB" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/storage/box/lights/mixed,
@@ -12053,6 +12219,18 @@
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"awN" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"awO" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"awP" = (
/obj/item/clothing/gloves/color/rainbow,
/obj/item/clothing/shoes/sneakers/rainbow,
@@ -12105,6 +12283,25 @@
"awW" = (
/turf/closed/wall/r_wall,
/area/security/nuke_storage)
+"awX" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"awY" = (
+/obj/machinery/door/airlock/external{
+ name = "Solar Maintenance";
+ req_access_txt = "10; 13"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
"awZ" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
@@ -54179,21 +54376,6 @@
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/solar/port/aft)
-"cek" = (
-/obj/machinery/door/airlock/external{
- req_access_txt = "13"
- },
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
-"cel" = (
-/obj/structure/sign/warning/vacuum/external{
- pixel_y = 32
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
"cem" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -54885,16 +55067,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
-"cfB" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable/yellow{
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
"cfC" = (
/obj/item/trash/pistachios,
/obj/structure/closet,
@@ -55509,13 +55681,6 @@
/obj/structure/reagent_dispensers/cooking_oil,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
-"cgG" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
"cgH" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -81287,19 +81452,6 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"gsT" = (
-/obj/machinery/door/airlock/external{
- name = "Solar Maintenance";
- req_access_txt = "10; 13"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/solar/starboard/aft)
"gEk" = (
/obj/structure/cable/yellow{
icon_state = "2-8"
@@ -97098,15 +97250,15 @@ bTp
bUP
bVS
bXv
-bYC
-bYC
-bYC
-bYC
-aaa
-aaf
-aaa
-aaa
-aaf
+bTn
+bTn
+bTn
+bTn
+amG
+auQ
+auQ
+amG
+amG
aaf
aaf
aaa
@@ -97356,16 +97508,16 @@ bTn
bTn
bTn
bTn
+amN
+anz
+arh
+asN
+anz
+arh
+awN
+amG
aaa
-aaf
-aaa
-aaa
-aaf
-aaf
-aaf
-aaf
-aaa
-aaa
+lMJ
aaa
aaa
aaa
@@ -97609,20 +97761,20 @@ bzx
alC
mEe
alK
-aob
-aob
dix
-alK
-aaf
-aaf
-aaf
-aaf
-aaf
-aaa
-aaa
-aaf
-aaa
+aob
+amB
+amF
+amV
+apX
+apX
+apX
+apX
+apX
+awO
+auQ
aaa
+lMJ
aaa
aaa
aaa
@@ -97869,17 +98021,17 @@ bTr
bUQ
bVT
aob
-alK
-aaa
-aaf
-aaa
-aaa
-aaa
-aaa
-aaa
-aaf
-aaa
+amG
+anz
+aqe
+apX
+atw
+apX
+apX
+anz
+auQ
aaa
+lMJ
aaa
aaa
aaa
@@ -98126,15 +98278,15 @@ alK
bJs
bVU
bXx
-alK
-aaa
-aaf
-aaf
-ack
-aaf
-aaf
-aaf
-aaf
+amG
+aov
+apX
+arF
+apX
+auR
+apX
+anz
+auQ
aaf
aaf
aaf
@@ -98383,15 +98535,15 @@ alK
bUR
alK
alK
-alK
-aaa
-aaf
-aaa
-ack
-aaf
-aaa
-aaa
-aaa
+amG
+apP
+anz
+anz
+atC
+auS
+atC
+awX
+amG
aaa
aaa
aaa
@@ -98640,15 +98792,15 @@ alK
alK
alK
bXy
-dux
-dux
-dux
-dux
-cek
-dux
-dux
-dux
-dux
+amG
+amG
+amG
+amG
+atF
+auT
+avX
+amG
+amG
ckN
ckN
ckN
@@ -98900,11 +99052,11 @@ bXz
bYE
bYE
cbp
-dux
-cel
-bUU
-cgG
-dux
+amG
+atJ
+avU
+awA
+amG
cjp
ckO
cmg
@@ -99157,11 +99309,11 @@ dux
dux
dux
cbq
-dux
-dux
-cek
-dux
-dux
+amG
+amG
+avV
+amG
+amG
cjq
ckP
ckS
@@ -99416,7 +99568,7 @@ dux
cbr
bYE
cem
-cfB
+avW
cbp
dux
diE
@@ -119752,7 +119904,7 @@ cJf
dvY
aaa
dbN
-gsT
+awY
dbN
aaa
aaa
@@ -124021,7 +124173,7 @@ aaf
aaa
aaf
dnh
-aci
+amH
dnh
ape
dnS
@@ -126848,7 +127000,7 @@ aaa
aaf
aaa
aaa
-akd
+ake
alv
apm
apm
@@ -127103,7 +127255,7 @@ aaf
aaa
aaa
aaf
-akd
+alv
alv
alv
alv
@@ -127359,10 +127511,10 @@ abR
abR
abR
abR
-abR
-ake
+aci
+afQ
+akd
alw
-amN
sGh
apo
aqz
@@ -127617,7 +127769,7 @@ aaf
aaa
aaa
aaf
-akd
+alv
alv
alv
alv
@@ -127876,7 +128028,7 @@ aaa
aaf
aaa
aaa
-akd
+ake
alv
apm
apm
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index db44dfb92a..e5232746f2 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -1240,13 +1240,26 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/hop)
"abL" = (
-/obj/structure/sign/warning/securearea,
-/turf/closed/wall,
-/area/maintenance/starboard/fore)
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/effect/turf_decal/box,
+/obj/machinery/power/solar{
+ id = "forestarboard";
+ name = "Fore-Starboard Solar Array"
+ },
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/fore)
"abM" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/maintenance/starboard/fore)
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
"abN" = (
/obj/structure/sign/warning/vacuum,
/turf/closed/wall,
@@ -1602,15 +1615,16 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/hop)
"acu" = (
-/obj/structure/sign/warning/vacuum{
- pixel_x = 32;
- pixel_y = 32
+/obj/structure/cable{
+ icon_state = "0-8"
},
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/plasteel,
-/area/maintenance/starboard/fore)
+/obj/effect/turf_decal/box,
+/obj/machinery/power/solar{
+ id = "forestarboard";
+ name = "Fore-Starboard Solar Array"
+ },
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/fore)
"acv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -2131,20 +2145,12 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/hop)
"adm" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable/white{
- icon_state = "0-2"
+/obj/structure/sign/warning/securearea{
+ pixel_x = 32;
+ pixel_y = -32
},
-/obj/machinery/power/apc{
- areastring = "/area/maintenance/starboard/fore";
- dir = 4;
- name = "Starboard Bow Maintenance APC";
- pixel_x = 26
- },
-/turf/open/floor/plating{
- icon_state = "platingdmg2"
- },
-/area/maintenance/starboard/fore)
+/turf/open/space/basic,
+/area/space)
"adn" = (
/turf/closed/wall,
/area/quartermaster/storage)
@@ -2157,15 +2163,9 @@
/turf/closed/wall,
/area/quartermaster/storage)
"adq" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/light/small{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/maintenance/starboard/fore)
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/solar/starboard/fore)
"adr" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -2194,20 +2194,12 @@
/turf/open/floor/plating,
/area/engine/supermatter)
"adt" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-4"
},
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/door/airlock/external{
- name = "External Airlock";
- req_access_txt = "13"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/maintenance/starboard/fore)
+/turf/open/space/basic,
+/area/solar/starboard/fore)
"adu" = (
/turf/closed/wall,
/area/quartermaster/qm)
@@ -2393,13 +2385,18 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/captain/private)
"adM" = (
-/obj/structure/sign/warning/vacuum{
- pixel_x = 32;
- pixel_y = 32
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-8"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
"adN" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/item/radio/intercom{
@@ -2597,11 +2594,12 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aef" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 8
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-8"
},
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
+/turf/open/space/basic,
+/area/solar/starboard/fore)
"aeg" = (
/obj/machinery/conveyor{
dir = 8;
@@ -3099,6 +3097,7 @@
"aeS" = (
/obj/structure/closet/crate,
/obj/effect/turf_decal/delivery,
+/obj/item/toy/figure/cargotech,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aeT" = (
@@ -5559,7 +5558,8 @@
icon_state = "plant-21"
},
/obj/machinery/camera{
- c_tag = "Chemistry"
+ c_tag = "Chemistry";
+ network = list("ss13","medbay")
},
/obj/effect/turf_decal/tile/yellow{
dir = 8
@@ -6262,12 +6262,8 @@
/turf/open/floor/plasteel,
/area/medical/medbay/zone3)
"ajP" = (
-/obj/structure/cable/white{
- icon_state = "4-8"
- },
-/obj/effect/landmark/start/research_director,
-/turf/open/floor/plasteel,
-/area/science/mixing)
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hor)
"ajQ" = (
/obj/effect/turf_decal/loading_area{
dir = 8
@@ -7432,7 +7428,8 @@
dir = 4
},
/obj/machinery/camera{
- c_tag = "Chief Engineer's Office"
+ c_tag = "Chief Engineer's Office";
+ network = list("ss13","engine")
},
/mob/living/simple_animal/parrot/Poly,
/turf/open/floor/plasteel/dark,
@@ -12020,18 +12017,28 @@
},
/area/engine/atmos)
"asH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics North East";
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
+/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
},
-/turf/open/floor/plasteel/checker,
+/obj/machinery/atmospherics/components/binary/pump{
+ name = "Plasma to Pure"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera{
+ c_tag = "Atmospherics North";
+ network = list("ss13","engine")
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"asI" = (
/obj/structure/sign/warning/vacuum{
@@ -15126,7 +15133,8 @@
"axu" = (
/obj/machinery/portable_atmospherics/canister/nitrogen,
/obj/machinery/camera{
- c_tag = "Atmospherics Monitoring"
+ c_tag = "Atmospherics Monitoring";
+ network = list("ss13","engine")
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -15702,6 +15710,10 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/item/toy/figure/atmos{
+ pixel_x = -2;
+ pixel_y = 2
+ },
/turf/open/floor/plasteel/dark/corner{
dir = 1
},
@@ -18253,23 +18265,25 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"aCF" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 4;
- name = "Air to External Air Ports"
+/obj/effect/decal/cleanable/dirt,
+/obj/item/radio/intercom{
+ name = "Station Intercom";
+ pixel_y = 24
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/camera{
- c_tag = "Atmospherics South East";
- dir = 1
+ c_tag = "Atmospherics North West";
+ dir = 4;
+ network = list("ss13","engine")
},
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
+/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
/area/engine/atmos)
"aCG" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -19324,7 +19338,8 @@
},
/obj/machinery/camera{
c_tag = "Engineering Secure Storage";
- dir = 4
+ dir = 4;
+ network = list("ss13","engine")
},
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral,
@@ -20192,7 +20207,8 @@
},
/obj/machinery/camera{
c_tag = "SMES Access";
- dir = 8
+ dir = 8;
+ network = list("ss13","engine")
},
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
@@ -20226,23 +20242,22 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"aFB" = (
-/obj/machinery/shower{
- dir = 8;
- name = "emergency shower"
+/obj/structure/cable{
+ icon_state = "0-8"
},
-/obj/machinery/light/small,
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+/obj/machinery/power/terminal{
dir = 4
},
+/obj/effect/turf_decal/delivery,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
/obj/machinery/camera{
- c_tag = "Engineering Access";
- dir = 8
+ c_tag = "Starboard Bow Solar";
+ network = list("ss13","engine")
},
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/plasteel,
-/area/engine/engineering)
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
"aFC" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
@@ -20787,7 +20802,8 @@
/obj/machinery/light,
/obj/machinery/camera{
c_tag = "Engineering Foyer";
- dir = 1
+ dir = 1;
+ network = list("ss13","engine")
},
/obj/machinery/power/apc{
areastring = "/area/engine/break_room";
@@ -21227,22 +21243,20 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"aGY" = (
-/obj/structure/bed/dogbed/runtime,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/poster/official/medical_green_cross{
- pixel_x = -32
- },
/obj/machinery/camera{
- c_tag = "CMO's Office";
- dir = 4
+ c_tag = "Genetics Cloning";
+ dir = 4;
+ network = list("ss13","medbay")
},
-/mob/living/simple_animal/pet/cat/Runtime,
-/turf/open/floor/plasteel/dark,
-/area/crew_quarters/heads/cmo)
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
"aGZ" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -21343,7 +21357,8 @@
"aHg" = (
/obj/machinery/camera{
c_tag = "Gravity Generator Room";
- dir = 8
+ dir = 8;
+ network = list("ss13","engine")
},
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
@@ -22188,7 +22203,8 @@
pixel_x = -32
},
/obj/machinery/camera{
- c_tag = "Engineering Monitoring"
+ c_tag = "Engineering Monitoring";
+ network = list("ss13","engine")
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -22593,28 +22609,24 @@
/turf/open/floor/plasteel/white,
/area/medical/genetics)
"aJe" = (
-/obj/structure/table,
-/obj/machinery/airalarm/unlocked{
- dir = 4;
- pixel_x = -23
+/obj/machinery/firealarm{
+ pixel_y = 24
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -24;
+ pixel_y = 32
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/item/clipboard,
-/obj/item/folder/white,
-/obj/item/storage/pill_bottle/mutadone{
- pixel_x = -8;
- pixel_y = 8
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/camera{
+ c_tag = "Gravity Generator Entry";
+ network = list("ss13","engine");
+ pixel_x = 23
},
-/obj/item/storage/pill_bottle/mannitol{
- pixel_x = -8;
- pixel_y = 2
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
},
-/obj/item/radio/headset/headset_medsci,
-/turf/open/floor/plasteel/dark,
-/area/medical/genetics)
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
"aJf" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -22684,23 +22696,30 @@
/turf/open/floor/plating,
/area/engine/gravity_generator)
"aJk" = (
-/obj/machinery/firealarm{
- pixel_y = 24
+/obj/structure/table/reinforced,
+/obj/item/lightreplacer,
+/obj/structure/cable/white{
+ icon_state = "1-8"
},
-/obj/structure/extinguisher_cabinet{
- pixel_x = -24;
- pixel_y = 32
+/obj/structure/cable/white{
+ icon_state = "4-8"
},
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/machinery/camera{
- c_tag = "Gravity Generator Entry";
- pixel_x = 23
- },
-/obj/effect/turf_decal/stripes/line{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/toy/figure/engineer,
/turf/open/floor/plasteel,
-/area/engine/gravity_generator)
+/area/engine/engineering)
"aJl" = (
/obj/machinery/power/apc/highcap/five_k{
areastring = "/area/engine/gravity_generator";
@@ -23106,19 +23125,13 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"aJO" = (
-/obj/machinery/camera{
- c_tag = "Genetics Cloning";
- dir = 4
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "rdprivacy";
+ name = "Director's Privacy Blast Door"
},
-/obj/machinery/airalarm{
- dir = 4;
- pixel_x = -22
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
-/turf/open/floor/plasteel/white,
-/area/medical/genetics)
+/turf/open/floor/plating,
+/area/crew_quarters/heads/hor)
"aJP" = (
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -23394,21 +23407,9 @@
/turf/closed/wall,
/area/maintenance/port/aft)
"aKo" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "External Airlock";
- req_access_txt = "13"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/obj/structure/lattice,
+/turf/open/floor/plating/asteroid/airless,
+/area/asteroid/nearstation)
"aKp" = (
/obj/machinery/airalarm{
dir = 4;
@@ -23446,17 +23447,16 @@
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"aKr" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
+/obj/machinery/power/solar{
+ id = "aftport";
+ name = "Aft-Port Solar Array"
},
-/obj/effect/landmark/xeno_spawn,
-/obj/structure/sign/warning/vacuum{
- pixel_x = -32;
- pixel_y = 32
+/obj/structure/cable{
+ icon_state = "0-4"
},
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/port/aft)
"aKs" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command/glass{
@@ -23600,11 +23600,15 @@
/turf/open/floor/engine,
/area/engine/supermatter)
"aKB" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
},
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/solar/port/aft)
"aKC" = (
/obj/machinery/atmospherics/components/binary/pump{
name = "Gas to Chamber"
@@ -23624,24 +23628,16 @@
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"aKF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
+/obj/machinery/power/solar{
+ id = "aftport";
+ name = "Aft-Port Solar Array"
},
-/obj/effect/turf_decal/stripes/line{
- dir = 4
+/obj/structure/cable{
+ icon_state = "0-8"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "External Airlock";
- req_access_txt = "13"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/port/aft)
"aKG" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -23750,29 +23746,15 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"aKM" = (
-/obj/structure/table/reinforced,
-/obj/item/lightreplacer,
-/obj/structure/cable/white{
- icon_state = "1-8"
- },
-/obj/structure/cable/white{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
+/obj/machinery/light_switch{
+ pixel_y = -24
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/turf_decal/bot,
+/obj/structure/closet/l3closet/janitor,
+/obj/item/toy/figure/janitor,
/turf/open/floor/plasteel,
-/area/engine/engineering)
+/area/janitor)
"aKN" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -24268,13 +24250,18 @@
},
/area/maintenance/port/aft)
"aLz" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
},
-/obj/machinery/light/small,
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/port/aft)
"aLA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
@@ -24292,12 +24279,8 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"aLC" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/item/cigbutt,
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
+/turf/closed/wall,
+/area/maintenance/solars/port/aft)
"aLD" = (
/obj/machinery/power/port_gen/pacman,
/obj/effect/turf_decal/stripes/line{
@@ -24396,11 +24379,13 @@
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aLL" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/turf_decal/box,
+/obj/structure/cable{
+ icon_state = "0-4"
},
-/turf/open/floor/plating/airless,
-/area/maintenance/port/aft)
+/obj/machinery/power/tracker,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/port/aft)
"aLM" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -24938,27 +24923,19 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"aMH" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-8"
},
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Maintenance Hatch";
- req_access_txt = "12"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/turf/open/space/basic,
+/area/solar/port/aft)
"aMI" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-4"
},
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/aft)
+/turf/open/space/basic,
+/area/solar/port/aft)
"aMJ" = (
/turf/closed/wall/r_wall,
/area/tcommsat/server)
@@ -25024,21 +25001,18 @@
/turf/open/floor/engine,
/area/engine/engineering)
"aMQ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
+/obj/structure/cable{
+ icon_state = "2-4"
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/aft)
+/turf/open/space/basic,
+/area/solar/port/aft)
"aMR" = (
/obj/machinery/camera{
c_tag = "Supermatter Chamber";
@@ -25257,14 +25231,32 @@
/turf/open/floor/plasteel,
/area/janitor)
"aNl" = (
-/obj/machinery/light_switch{
- pixel_y = -24
+/obj/structure/table,
+/obj/machinery/airalarm/unlocked{
+ dir = 4;
+ pixel_x = -23
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/bot,
-/obj/structure/closet/l3closet/janitor,
-/turf/open/floor/plasteel,
-/area/janitor)
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/item/clipboard,
+/obj/item/folder/white,
+/obj/item/storage/pill_bottle/mutadone{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/obj/item/storage/pill_bottle/mannitol{
+ pixel_x = -8;
+ pixel_y = 2
+ },
+/obj/item/radio/headset/headset_medsci,
+/obj/item/toy/figure/geneticist{
+ pixel_x = 5;
+ pixel_y = 13
+ },
+/turf/open/floor/plasteel/dark,
+/area/medical/genetics)
"aNm" = (
/obj/effect/turf_decal/bot,
/obj/machinery/vending/wardrobe/jani_wardrobe,
@@ -25575,23 +25567,17 @@
/turf/open/floor/plasteel/white,
/area/medical/genetics)
"aNO" = (
-/obj/machinery/camera{
- c_tag = "Genetics Lab";
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
},
-/obj/machinery/computer/scan_consolenew{
- icon_state = "computer";
- dir = 1
+/obj/structure/sign/poster/official/anniversary_vintage_reprint{
+ pixel_x = 32
},
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel/dark,
-/area/medical/genetics)
+/turf/open/floor/plasteel/white,
+/area/science/research)
"aNP" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -25744,22 +25730,10 @@
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/heads/cmo)
"aOc" = (
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Maintenance Hatch";
- req_access_txt = "12"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/maintenance/port/aft)
+/obj/structure/lattice/catwalk,
+/obj/effect/landmark/xeno_spawn,
+/turf/open/space/basic,
+/area/solar/port/aft)
"aOd" = (
/obj/machinery/power/apc{
areastring = "/area/engine/engineering";
@@ -26119,17 +26093,18 @@
/turf/open/floor/engine,
/area/engine/engineering)
"aOH" = (
-/obj/structure/cable/white{
- icon_state = "1-2"
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
},
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
+/obj/structure/cable{
+ icon_state = "1-4"
},
-/obj/effect/turf_decal/stripes/line{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-8"
},
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
+/turf/open/space/basic,
+/area/solar/port/aft)
"aOI" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
@@ -26329,21 +26304,15 @@
/turf/closed/wall,
/area/medical/genetics)
"aOX" = (
-/obj/machinery/requests_console{
- department = "Medbay";
- departmentType = 1;
- name = "Medbay RC";
- pixel_x = -30
- },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/camera{
- c_tag = "Medbay Storage"
+ c_tag = "R&D";
+ dir = 1;
+ network = list("ss13","rd")
},
-/obj/machinery/rnd/production/techfab/department/medical,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/stripes/box,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel,
-/area/medical/medbay/zone3)
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
"aOY" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -27125,18 +27094,24 @@
},
/area/hallway/primary/port/aft)
"aQe" = (
-/obj/structure/table/glass,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/machinery/camera{
+ c_tag = "Genetics Lab";
+ dir = 8;
+ network = list("ss13","medbay")
},
-/obj/effect/turf_decal/tile/blue{
+/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/item/stamp/cmo,
-/turf/open/floor/plasteel/cafeteria,
-/area/crew_quarters/heads/cmo)
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/computer/scan_consolenew{
+ icon_state = "computer";
+ dir = 1
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel/dark,
+/area/medical/genetics)
"aQf" = (
/obj/machinery/firealarm{
dir = 1;
@@ -27424,40 +27399,12 @@
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"aQE" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/cable/white{
- icon_state = "0-8"
- },
-/obj/structure/table/wood,
-/obj/item/storage/box/bodybags{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/bodybags,
-/obj/machinery/power/apc{
- areastring = "/area/medical/morgue";
+/obj/machinery/airalarm/unlocked{
dir = 4;
- name = "Morgue APC";
- pixel_x = 26
+ pixel_x = -23
},
-/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 = "Morgue";
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/medical/morgue)
+/turf/open/floor/plating/asteroid,
+/area/crew_quarters/heads/hor)
"aQF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -28844,24 +28791,20 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"aTn" = (
-/obj/effect/landmark/start/virologist,
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 4
+/obj/structure/table/plasmaglass,
+/obj/machinery/recharger,
+/obj/item/paicard{
+ pixel_x = 15
},
-/obj/machinery/power/apc/highcap/five_k{
- areastring = "/area/medical/virology";
- dir = 1;
- name = "Virology APC";
- pixel_y = 24
+/obj/structure/sign/poster/official/ue_no{
+ pixel_y = 32
},
-/obj/structure/cable/white{
- icon_state = "0-4"
+/obj/item/toy/figure/rd{
+ pixel_x = -8;
+ pixel_y = 14
},
-/obj/machinery/camera{
- c_tag = "Virology"
- },
-/turf/open/floor/plasteel,
-/area/medical/virology)
+/turf/open/floor/plating/asteroid,
+/area/crew_quarters/heads/hor)
"aTo" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
@@ -30095,14 +30038,24 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"aVz" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+/obj/machinery/shower{
+ dir = 8;
+ name = "emergency shower"
+ },
+/obj/machinery/light/small,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/purple{
- dir = 4
+/obj/machinery/camera{
+ c_tag = "Engineering Access";
+ dir = 8;
+ network = list("ss13","engine")
},
-/turf/open/floor/plasteel/white,
-/area/science/research)
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering)
"aVA" = (
/turf/closed/wall,
/area/science/research)
@@ -30425,6 +30378,10 @@
/obj/item/reagent_containers/glass/bottle/epinephrine,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/dropper,
+/obj/item/toy/figure/chemist{
+ pixel_x = -6;
+ pixel_y = 11
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"aWg" = (
@@ -30517,14 +30474,24 @@
/turf/open/floor/plasteel/white,
/area/science/lab)
"aWm" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/camera{
- c_tag = "R&D";
- dir = 1
+/obj/structure/table,
+/obj/item/storage/box/gloves{
+ pixel_x = 3;
+ pixel_y = 3
},
-/obj/effect/turf_decal/tile/purple,
-/turf/open/floor/plasteel/white,
-/area/science/lab)
+/obj/item/storage/box/beakers,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay West";
+ network = list("ss13","medbay")
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone3)
"aWn" = (
/obj/machinery/firealarm{
dir = 1;
@@ -31057,23 +31024,22 @@
/turf/open/floor/plasteel/dark,
/area/library)
"aXm" = (
-/obj/structure/table,
-/obj/item/storage/box/gloves{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/beakers,
-/obj/structure/extinguisher_cabinet{
- pixel_x = -26
- },
-/obj/machinery/camera{
- c_tag = "Medbay West"
- },
-/obj/effect/turf_decal/stripes/line{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel,
-/area/medical/medbay/zone3)
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Research Division North";
+ network = list("ss13","rd")
+ },
+/obj/effect/landmark/event_spawn,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/research)
"aXn" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/blue{
@@ -31712,18 +31678,26 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"aYp" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = 24
- },
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/machinery/camera{
- c_tag = "Research Division South";
+ c_tag = "Communications Relay";
+ dir = 8;
+ network = list("ss13","tcomms")
+ },
+/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/vending/wardrobe/science_wardrobe,
-/obj/effect/turf_decal/tile/purple,
-/turf/open/floor/plasteel/white,
-/area/science/research)
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
"aYq" = (
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
dir = 1
@@ -31881,21 +31855,25 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"aYB" = (
-/obj/machinery/shower{
- desc = "From what you understand it was put in rather recently, but the design looks right out of the 2510's. Weird.";
- dir = 1;
- icon_state = "shower";
- name = "Emergency Shower"
+/obj/machinery/door/firedoor/heavy,
+/obj/machinery/door/airlock/command{
+ name = "Research Director's Office";
+ req_access_txt = "30"
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
/obj/effect/turf_decal/stripes/line{
- dir = 6
+ dir = 4
},
-/obj/machinery/camera{
- c_tag = "Virology Access";
- dir = 1
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
},
-/turf/open/floor/plasteel/white,
-/area/medical/virology)
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/hor)
"aYC" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/landmark/event_spawn,
@@ -32695,6 +32673,17 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"aZS" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/solar/port/aft)
+"aZT" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating/airless,
+/area/solar/port/aft)
"aZU" = (
/obj/machinery/recharge_station,
/obj/effect/landmark/start/cyborg,
@@ -32822,6 +32811,25 @@
},
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
+"bae" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/port/aft)
"baf" = (
/obj/item/stack/sheet/metal/fifty,
/obj/item/stack/sheet/metal/fifty,
@@ -32895,6 +32903,148 @@
icon_state = "platingdmg1"
},
/area/maintenance/starboard)
+"baj" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/effect/landmark/xeno_spawn,
+/obj/structure/sign/warning/vacuum{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/port/aft)
+"bak" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/port/aft)
+"bal" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/port/aft)
+"bam" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/sign/warning/vacuum{
+ pixel_y = 32
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"ban" = (
+/obj/structure/cable/white{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bao" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning/electricshock{
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bap" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Maintenance Hatch";
+ req_access_txt = "12"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"baq" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/obj/structure/cable/white{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/aft)
+"bar" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/port/aft)
+"bas" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small,
+/obj/structure/closet/emcloset/anchored,
+/turf/open/floor/plasteel,
+/area/maintenance/solars/port/aft)
+"bat" = (
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/solars/port/aft)
+"bau" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/port/aft)
+"bav" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/closed/wall,
+/area/maintenance/solars/port/aft)
"baw" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/departments/medbay/alt,
@@ -33015,6 +33165,17 @@
},
/turf/open/floor/plasteel,
/area/medical/medbay/zone3)
+"baE" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Port Quarter Solar Access";
+ req_access_txt = "10"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
"baF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/blue,
@@ -33125,28 +33286,22 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"baN" = (
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = -24
+/obj/machinery/computer/card/minor/rd,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
},
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/structure/cable/white{
- icon_state = "1-2"
+/obj/item/aicard,
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
},
-/obj/structure/cable/white{
- icon_state = "1-4"
- },
-/obj/machinery/camera{
- c_tag = "Mech Bay";
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/science/robotics/mechbay)
+/area/crew_quarters/heads/hor)
"baO" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/structure/cable/white{
@@ -33292,6 +33447,165 @@
},
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
+"bbb" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/obj/structure/cable/white{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/aft)
+"bbc" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/item/cigbutt,
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/aft)
+"bbd" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/aft)
+"bbe" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating/airless,
+/area/maintenance/port/aft)
+"bbf" = (
+/obj/machinery/power/smes,
+/obj/structure/cable/white{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bbg" = (
+/obj/structure/lattice/catwalk,
+/obj/effect/landmark/xeno_spawn,
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"bbh" = (
+/obj/structure/cable/white{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bbi" = (
+/obj/structure/cable/white{
+ icon_state = "0-8"
+ },
+/obj/structure/cable/white{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/solars/port/aft";
+ dir = 4;
+ name = "Port Quarter Solar APC";
+ pixel_x = 26
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bbj" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Maintenance Hatch";
+ req_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/port/aft)
+"bbk" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/maintenance/port/aft)
+"bbl" = (
+/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/manifold/supply/hidden{
+ dir = 1
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/maintenance/port/aft)
+"bbm" = (
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Maintenance Hatch";
+ req_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/port/aft)
+"bbn" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable/white{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/aft)
+"bbo" = (
+/obj/structure/cable/white{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
"bbp" = (
/obj/machinery/light{
dir = 8
@@ -33605,6 +33919,153 @@
},
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
+"bbP" = (
+/obj/machinery/modular_computer/console/preset/research,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bbQ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"bbR" = (
+/obj/structure/cable/white{
+ icon_state = "0-8"
+ },
+/obj/structure/cable/white,
+/obj/machinery/power/solar_control{
+ dir = 8;
+ id = "aftport";
+ name = "Port Quarter Solar Control"
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bbS" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space/basic,
+/area/solar/port/aft)
+"bbT" = (
+/turf/closed/wall,
+/area/maintenance/solars/starboard/fore)
+"bbU" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/starboard/fore)
+"bbV" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"bbW" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"bbX" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/structure/closet/emcloset/anchored,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/maintenance/solars/starboard/fore)
+"bbY" = (
+/obj/structure/lattice/catwalk,
+/turf/open/floor/plating/airless,
+/area/solar/starboard/fore)
+"bbZ" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/starboard/fore)
+"bca" = (
+/obj/structure/sign/warning/vacuum{
+ pixel_x = 32;
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/effect/landmark/xeno_spawn,
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/starboard/fore)
+"bcb" = (
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/starboard/fore)
+"bcc" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/solars/starboard/fore)
"bcd" = (
/obj/item/retractor,
/obj/item/hemostat,
@@ -33923,12 +34384,166 @@
},
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
+"bcD" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
"bcE" = (
/obj/structure/closet/l3closet/scientist{
pixel_x = -2
},
/turf/open/floor/plasteel,
/area/science/mixing)
+"bcF" = (
+/obj/structure/sign/warning/securearea,
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/starboard/fore)
+"bcG" = (
+/obj/structure/sign/warning/vacuum{
+ pixel_x = 32;
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcH" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcI" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcJ" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/turf_decal/box,
+/obj/machinery/power/tracker,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/fore)
+"bcK" = (
+/obj/machinery/power/smes,
+/obj/structure/cable/white{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcL" = (
+/obj/structure/cable/white{
+ icon_state = "0-2"
+ },
+/obj/structure/cable/white{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/solar_control{
+ dir = 2;
+ id = "forestarboard";
+ name = "Starboard Bow Solar Control"
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcM" = (
+/obj/structure/cable/white{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcN" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning/electricshock{
+ pixel_x = 32;
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcO" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Starboard Bow Solar Access";
+ req_access_txt = "10"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcP" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcQ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"bcR" = (
+/obj/structure/cable/white{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bcS" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning/securearea{
+ pixel_x = -32
+ },
+/turf/open/floor/plating/asteroid/airless,
+/area/asteroid/nearstation)
+"bcT" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
"bcU" = (
/obj/item/circular_saw,
/obj/item/surgicaldrill{
@@ -34174,6 +34789,15 @@
},
/turf/open/floor/plating,
/area/security/checkpoint)
+"bdi" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
"bdj" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -34319,20 +34943,20 @@
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bdv" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced{
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
dir = 8
},
-/obj/item/clothing/gloves/color/latex,
-/obj/item/surgical_drapes,
-/obj/item/cautery,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
+/obj/machinery/camera{
+ c_tag = "Atmospherics North East";
+ dir = 8;
+ network = list("ss13","engine")
+ },
+/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/open/floor/plasteel/checker,
+/area/engine/atmos)
"bdw" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/tile/purple{
@@ -34380,6 +35004,243 @@
/obj/structure/sign/warning/fire,
/turf/closed/wall,
/area/science/mixing)
+"bdB" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating/airless,
+/area/solar/starboard/fore)
+"bdC" = (
+/obj/structure/cable,
+/obj/machinery/power/terminal{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bdD" = (
+/obj/structure/displaycase/labcage,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/heads/hor";
+ dir = 1;
+ name = "RD Office APC";
+ pixel_y = 26
+ },
+/obj/structure/cable/white{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdE" = (
+/obj/structure/cable/white{
+ icon_state = "0-4"
+ },
+/obj/structure/cable/white{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/solars/starboard/fore";
+ dir = 2;
+ name = "Starboard Bow Solar APC";
+ pixel_y = -26
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bdF" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/starboard/fore";
+ dir = 4;
+ name = "Starboard Bow Maintenance APC";
+ pixel_x = 26
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/structure/cable/white{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"bdG" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
+"bdH" = (
+/obj/machinery/requests_console{
+ department = "Medbay";
+ departmentType = 1;
+ name = "Medbay RC";
+ pixel_x = -30
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay Storage";
+ network = list("ss13","medbay")
+ },
+/obj/machinery/rnd/production/techfab/department/medical,
+/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/stripes/box,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone3)
+"bdI" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdJ" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/landmark/start/research_director,
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdK" = (
+/obj/machinery/computer/mecha{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdL" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/landmark/start/research_director,
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdM" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdN" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = 24;
+ pixel_y = -24
+ },
+/obj/machinery/button/door{
+ id = "rdprivacy";
+ name = "Director's Privacy Toggle";
+ pixel_x = 24;
+ pixel_y = -38
+ },
+/obj/machinery/light_switch{
+ pixel_x = 40;
+ pixel_y = -24
+ },
+/obj/machinery/button/door{
+ id = "rdxeno";
+ name = "Xenobiology Containment Lockdown";
+ pixel_x = 38;
+ pixel_y = -38;
+ req_access_txt = "47"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bdO" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hor)
+"bdP" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/obj/structure/flora/tree/palm,
+/turf/open/floor/plating/asteroid,
+/area/crew_quarters/heads/hor)
"bdQ" = (
/obj/structure/closet/secure_closet/medical2,
/obj/machinery/airalarm{
@@ -34487,25 +35348,23 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"bdW" = (
-/obj/structure/closet/crate/freezer/blood,
-/obj/structure/extinguisher_cabinet{
- pixel_y = -26
+/obj/structure/bed/dogbed/runtime,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
},
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
+/obj/effect/turf_decal/delivery,
+/obj/structure/sign/poster/official/medical_green_cross{
+ pixel_x = -32
},
/obj/machinery/camera{
- c_tag = "Medbay Recovery Room";
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+ c_tag = "CMO's Office";
+ dir = 4;
+ network = list("ss13","medbay")
},
+/mob/living/simple_animal/pet/cat/Runtime,
/turf/open/floor/plasteel/dark,
-/area/medical/medbay/zone3)
+/area/crew_quarters/heads/cmo)
"bdX" = (
/obj/machinery/computer/crew{
dir = 4
@@ -34790,10 +35649,174 @@
/obj/machinery/door/poddoor/incinerator_toxmix,
/turf/open/floor/engine/vacuum,
/area/science/mixing)
+"beu" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bev" = (
+/obj/structure/table/plasmaglass,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/stamp/rd,
+/obj/machinery/newscaster{
+ pixel_y = 32
+ },
+/turf/open/floor/plating/asteroid,
+/area/crew_quarters/heads/hor)
+"bew" = (
+/obj/machinery/computer/aifixer{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bex" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"bey" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/stamp/cmo,
+/obj/machinery/light_switch{
+ pixel_x = 24;
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/heads/cmo)
+"bez" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"beA" = (
+/obj/structure/closet/bombcloset,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beB" = (
+/obj/structure/cable/white{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beC" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/structure/cable/white{
+ icon_state = "1-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Mech Bay";
+ dir = 4;
+ network = list("ss13","rd")
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/mechbay)
+"beD" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/poster/official/soft_cap_pop_art{
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
"beE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/medical/medbay/zone3)
+"beF" = (
+/obj/machinery/camera{
+ c_tag = "Toxins Lab West";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
"beG" = (
/obj/structure/sign/departments/medbay/alt,
/turf/closed/wall,
@@ -34930,6 +35953,146 @@
},
/turf/closed/wall/r_wall,
/area/science/robotics/lab)
+"beR" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Research Director's Office";
+ dir = 1;
+ network = list("ss13","rd")
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom";
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"beS" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "1-8"
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Research Director's Desk";
+ departmentType = 5;
+ name = "Research Director RC";
+ pixel_x = 0;
+ pixel_y = -32;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
+"beT" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beU" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beV" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/closet/bombcloset,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beW" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beX" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"beY" = (
+/obj/structure/sign/warning/nosmoking/circle,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hor)
+"beZ" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfa" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfb" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/item/storage/firstaid/toxin,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfc" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfd" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
"bfe" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/airalarm/unlocked{
@@ -34969,6 +36132,37 @@
/obj/effect/turf_decal/tile/purple,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"bfh" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfi" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/structure/cable/white{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfj" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bfk" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
"bfl" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -35033,6 +36227,15 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard)
+"bfq" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
"bfr" = (
/obj/structure/cable/white{
icon_state = "1-8"
@@ -35045,6 +36248,32 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"bfs" = (
+/obj/machinery/vending/wardrobe/science_wardrobe,
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bft" = (
+/obj/structure/closet/secure_closet/RD,
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/obj/item/circuitboard/aicore,
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
"bfu" = (
/turf/closed/wall,
/area/chapel/main)
@@ -35063,6 +36292,27 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/white,
/area/chapel/main)
+"bfw" = (
+/obj/machinery/suit_storage_unit/rd,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/computer/security/telescreen/rd{
+ dir = 1;
+ icon_state = "telescreen";
+ pixel_y = -28
+ },
+/turf/open/floor/plasteel{
+ icon_state = "sepia"
+ },
+/area/crew_quarters/heads/hor)
"bfx" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
@@ -35075,16 +36325,148 @@
},
/turf/closed/wall,
/area/chapel/main)
+"bfz" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
"bfA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/closed/wall,
/area/chapel/main)
+"bfB" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
"bfC" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/closed/wall/rust,
/area/chapel/main)
+"bfD" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "0-8"
+ },
+/obj/structure/table/wood,
+/obj/item/storage/box/bodybags{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/storage/box/bodybags,
+/obj/machinery/power/apc{
+ areastring = "/area/medical/morgue";
+ dir = 4;
+ name = "Morgue APC";
+ pixel_x = 26
+ },
+/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 = "Morgue";
+ dir = 8;
+ network = list("ss13","medbay")
+ },
+/turf/open/floor/plasteel/dark,
+/area/medical/morgue)
+"bfE" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/clothing/gloves/color/latex,
+/obj/item/surgical_drapes,
+/obj/item/cautery,
+/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/item/toy/figure/roboticist{
+ pixel_x = -4;
+ pixel_y = 14
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bfF" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Surgery Operating";
+ dir = 1;
+ network = list("ss13","medbay");
+ pixel_x = 22
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone3)
+"bfG" = (
+/obj/structure/closet/crate/freezer/blood,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -26
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay Recovery Room";
+ dir = 8;
+ network = list("ss13","medbay")
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/medical/medbay/zone3)
+"bfH" = (
+/obj/effect/landmark/start/virologist,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/medical/virology";
+ dir = 1;
+ name = "Virology APC";
+ pixel_y = 24
+ },
+/obj/structure/cable/white{
+ icon_state = "0-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Virology";
+ network = list("ss13","medbay")
+ },
+/turf/open/floor/plasteel,
+/area/medical/virology)
"bfI" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -35162,6 +36544,36 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"bfM" = (
+/obj/machinery/shower{
+ desc = "From what you understand it was put in rather recently, but the design looks right out of the 2510's. Weird.";
+ dir = 1;
+ icon_state = "shower";
+ name = "Emergency Shower"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/machinery/camera{
+ c_tag = "Virology Access";
+ dir = 1;
+ network = list("ss13","medbay")
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bfN" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/camera{
+ c_tag = "Xenobiology North";
+ dir = 4;
+ network = list("ss13","rd");
+ pixel_y = -5
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"bfO" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -35367,6 +36779,48 @@
},
/turf/open/floor/plasteel/dark,
/area/chapel/main)
+"bgc" = (
+/obj/machinery/shower{
+ dir = 4;
+ name = "emergency shower"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology Central";
+ dir = 4;
+ network = list("ss13","rd");
+ pixel_y = -5
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bgd" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/beakers{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/storage/box/syringes,
+/obj/item/extinguisher/mini,
+/obj/machinery/airalarm/unlocked{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/newscaster{
+ pixel_y = -32
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab";
+ dir = 4;
+ network = list("ss13","rd")
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"bge" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
@@ -35401,6 +36855,88 @@
heat_capacity = 1e+006
},
/area/hallway/primary/aft)
+"bgg" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/monkeycubes,
+/obj/item/storage/box/monkeycubes,
+/obj/machinery/status_display{
+ pixel_y = -32
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology South";
+ dir = 1;
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bgh" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/camera{
+ c_tag = "Atmospherics South West";
+ dir = 1;
+ network = list("ss13","engine")
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bgi" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4;
+ name = "Air to External Air Ports"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/camera{
+ c_tag = "Atmospherics South East";
+ dir = 1;
+ network = list("ss13","engine")
+ },
+/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"bgj" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/airlock_sensor{
+ id_tag = "incinerator_airlock_sensor";
+ master_tag = "incinerator_airlock_control";
+ pixel_y = 24
+ },
+/obj/machinery/camera/autoname{
+ network = list("ss13","engine")
+ },
+/turf/open/floor/engine,
+/area/maintenance/disposal/incinerator)
+"bgk" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/light/small,
+/obj/machinery/camera{
+ c_tag = "Port Quarter Solar";
+ dir = 1;
+ network = list("ss13","engine")
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port/aft)
"bgl" = (
/obj/machinery/vending/cola/random,
/obj/machinery/newscaster{
@@ -35428,6 +36964,20 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
+"bgn" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/machinery/camera{
+ c_tag = "Research Division South";
+ dir = 8;
+ network = list("ss13","rd")
+ },
+/obj/machinery/vending/wardrobe/science_wardrobe,
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel/white,
+/area/science/research)
"bgo" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/white{
@@ -36710,22 +38260,6 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/entry)
-"biC" = (
-/obj/machinery/shower{
- dir = 4;
- name = "emergency shower"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/stripes/end{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Xenobiology Central";
- dir = 4;
- pixel_y = -5
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"biD" = (
/obj/machinery/shower{
dir = 8;
@@ -37396,46 +38930,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
-"bjP" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/box/beakers{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/syringes,
-/obj/item/extinguisher/mini,
-/obj/machinery/airalarm/unlocked{
- dir = 4;
- pixel_x = -23
- },
-/obj/machinery/newscaster{
- pixel_y = -32
- },
-/obj/machinery/camera{
- c_tag = "Xenobiology Lab";
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bjQ" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/box/monkeycubes,
-/obj/item/storage/box/monkeycubes,
-/obj/machinery/status_display{
- pixel_y = -32
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/camera{
- c_tag = "Xenobiology South";
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"bjR" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 1
@@ -37844,22 +39338,6 @@
/obj/machinery/telecomms/broadcaster/preset_left/birdstation,
/turf/open/floor/circuit/telecomms/mainframe,
/area/tcommsat/server)
-"blr" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable/white{
- icon_state = "4-8"
- },
-/obj/machinery/camera{
- c_tag = "Research Division North"
- },
-/obj/effect/landmark/event_spawn,
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
-/turf/open/floor/plasteel/white,
-/area/science/research)
"bls" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -37881,27 +39359,6 @@
heat_capacity = 1e+006
},
/area/hallway/primary/aft)
-"blt" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/camera{
- c_tag = "Surgery Operating";
- dir = 1;
- pixel_x = 22
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/medical/medbay/zone3)
"blv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -38715,26 +40172,6 @@
},
/turf/open/floor/plasteel/dark/telecomms,
/area/tcommsat/server)
-"buU" = (
-/obj/machinery/camera{
- c_tag = "Communications Relay";
- dir = 8
- },
-/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/plasteel/dark/telecomms,
-/area/tcommsat/server)
"buW" = (
/turf/closed/wall/r_wall,
/area/engine/supermatter)
@@ -39149,9 +40586,6 @@
heat_capacity = 1e+006
},
/area/hallway/secondary/entry)
-"bxZ" = (
-/turf/closed/wall,
-/area/maintenance/starboard/fore)
"bye" = (
/turf/closed/wall/rust,
/area/maintenance/fore)
@@ -39206,14 +40640,6 @@
dir = 1
},
/area/engine/atmos)
-"bNB" = (
-/obj/machinery/portable_atmospherics/pump,
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"bOJ" = (
/obj/machinery/camera{
c_tag = "Toxins Launch Room Access";
@@ -39227,15 +40653,6 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
-"bWO" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
- },
-/obj/structure/cable/white{
- icon_state = "4-8"
- },
-/turf/open/floor/plasteel,
-/area/science/mixing)
"bYE" = (
/obj/structure/sign/warning/fire,
/obj/machinery/atmospherics/pipe/simple/general/visible{
@@ -39374,19 +40791,6 @@
},
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
-"cGz" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/firealarm{
- dir = 1;
- pixel_y = -26
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics South West";
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"cRz" = (
/obj/machinery/button/door{
id = "supplybridge";
@@ -39595,18 +40999,6 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"edA" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/door/airlock/external{
- name = "External Airlock";
- req_access_txt = "13"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/maintenance/starboard/fore)
"eew" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable{
@@ -39738,18 +41130,6 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
-"eFp" = (
-/obj/effect/turf_decal/stripes/end{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/camera{
- c_tag = "Xenobiology North";
- dir = 4;
- pixel_y = -5
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"eGm" = (
/turf/closed/wall/r_wall,
/area/science/storage)
@@ -40201,12 +41581,6 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"hns" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/closed/wall/rust,
-/area/science/mixing)
"hpr" = (
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=3.2-AtriumSW";
@@ -40512,14 +41886,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"iXB" = (
-/obj/structure/closet/bombcloset,
-/obj/machinery/light_switch{
- pixel_y = 28
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"iZQ" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input,
/turf/open/floor/engine/co2,
@@ -40725,13 +42091,6 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
-"jLT" = (
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/item/storage/firstaid/toxin,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"jRe" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -40890,10 +42249,6 @@
/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/plating,
/area/science/storage)
-"lmr" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"low" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
@@ -40965,26 +42320,6 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
-"lAs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/radio/intercom{
- name = "Station Intercom";
- pixel_y = 24
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics North West";
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/turf/open/floor/plasteel/dark/corner{
- dir = 1
- },
-/area/engine/atmos)
"lCg" = (
/obj/machinery/door/airlock/external{
name = "Supply Dock Airlock";
@@ -41084,13 +42419,6 @@
"meo" = (
/turf/closed/wall/r_wall/rust,
/area/science/mixing)
-"mfj" = (
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/science/mixing)
"mgs" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{
dir = 1
@@ -41494,15 +42822,6 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
-"oRo" = (
-/obj/structure/cable/white{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/science/mixing)
"pbT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
@@ -41701,10 +43020,6 @@
},
/turf/closed/wall/r_wall,
/area/engine/atmos)
-"pXH" = (
-/obj/machinery/vending/wardrobe/science_wardrobe,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"pZU" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -41879,23 +43194,6 @@
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"rjV" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4
- },
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/airlock_sensor{
- id_tag = "incinerator_airlock_sensor";
- master_tag = "incinerator_airlock_control";
- pixel_y = 24
- },
-/obj/machinery/camera/autoname,
-/turf/open/floor/engine,
-/area/maintenance/disposal/incinerator)
"rlq" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -41908,13 +43206,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
-"rpy" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
-/obj/structure/sign/warning/nosmoking/circle,
-/turf/closed/wall,
-/area/science/mixing)
"rzn" = (
/obj/machinery/status_display,
/turf/closed/wall,
@@ -41994,18 +43285,6 @@
/mob/living/simple_animal/opossum,
/turf/open/floor/plating,
/area/maintenance/starboard)
-"scn" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/science/mixing)
"sdL" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/hydroponics/soil,
@@ -44840,12 +46119,6 @@
"tin" = (
/turf/open/floor/engine/vacuum,
/area/science/mixing)
-"tms" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/closed/wall,
-/area/maintenance/starboard/aft)
"ttp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -45025,29 +46298,6 @@
},
/turf/closed/wall/r_wall,
/area/engine/atmos)
-"uoy" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Plasma to Pure"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/camera{
- c_tag = "Atmospherics North"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/engine/atmos)
"upN" = (
/obj/machinery/door/airlock/research{
name = "Toxins Launch Room";
@@ -45778,14 +47028,6 @@
/obj/structure/grille,
/turf/closed/wall/r_wall,
/area/engine/atmos)
-"xLe" = (
-/obj/structure/closet/bombcloset,
-/obj/machinery/light{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"xPz" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 9
@@ -70446,22 +71688,22 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
jFP
jFP
jFP
@@ -70703,22 +71945,22 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-uXD
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aab
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
jFP
jFP
jFP
@@ -70961,19 +72203,19 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
+sdX
+pZU
+pZU
+pZU
+sdX
+aLL
+sdX
+pZU
+pZU
+pZU
+sdX
+pZU
aaa
aaa
jFP
@@ -71218,19 +72460,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
aaa
aaa
aaa
aaa
+aMH
aaa
aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -71475,19 +72717,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
+aKr
+aKr
+aKr
+aKr
+aMI
+aKr
+aKr
+aKr
+aKr
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -71732,19 +72974,19 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+sdX
+sdX
+aKB
+aLz
+aLz
+aLz
+aMQ
+bar
+bar
+bar
+bbS
+sdX
+sdX
aaa
aaa
jFP
@@ -71989,19 +73231,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
+aKF
+aKF
+aKF
+aKF
+aMH
+aKF
+aKF
+aKF
+aKF
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -72227,7 +73469,7 @@ aad
aad
aad
gdA
-rjV
+bgj
fsJ
eyu
uvg
@@ -72246,19 +73488,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
aaa
aaa
aaa
aaa
+aOc
aaa
aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -72503,19 +73745,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
+aKr
+aKr
+aKr
+aKr
+aMI
+aKr
+aKr
+aKr
+aKr
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -72760,19 +74002,19 @@ aac
aac
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
+sdX
+aKB
+aLz
+aLz
+aLz
+aOH
+bar
+bar
+bar
+bbS
+sdX
+sdX
aaa
aaa
jFP
@@ -72990,7 +74232,7 @@ aad
aad
aad
aqz
-lAs
+aCF
qTa
oJp
hUG
@@ -73017,19 +74259,19 @@ aad
aac
aac
aac
+sdX
aaa
+aKF
+aKF
+aKF
+aKF
+aMH
+aKF
+aKF
+aKF
+aKF
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -73257,7 +74499,7 @@ bGL
vuN
jkl
eew
-cGz
+bgh
qUW
aqz
aqz
@@ -73274,19 +74516,19 @@ aad
aad
aad
aad
-aac
-aac
-aaa
+aKo
aaa
aaa
aaa
aaa
aaa
+aZS
aaa
aaa
aaa
aaa
aaa
+pZU
aaa
aaa
jFP
@@ -73531,19 +74773,19 @@ aad
aad
aad
aad
-aad
+adx
aad
aac
aad
aad
aad
-bvg
+aZT
aac
aaa
aaa
aaa
aaa
-aaa
+pZU
aaa
aaa
jFP
@@ -73793,14 +75035,14 @@ aad
aad
aad
aad
-aKm
-aKo
-aKm
-aKm
-aaa
-aaa
-aaa
-aaa
+aLC
+bae
+aLC
+aLC
+sdX
+sdX
+sdX
+sdX
aaa
aaa
aaa
@@ -74051,13 +75293,13 @@ aMJ
aMJ
sJV
aMJ
-aKr
-aLz
-aKm
-aaa
+baj
+bas
+aLC
aaa
aaa
aaa
+pZU
aaa
aaa
aaa
@@ -74308,13 +75550,13 @@ buJ
buO
sKn
aMJ
-aKB
-aLs
-aKm
-aac
-aaa
-aaa
+bak
+bat
+aLC
+aLC
+aLC
aaa
+pZU
aaa
aaa
aaa
@@ -74549,7 +75791,7 @@ anv
anK
aoo
aGe
-aJk
+aJe
aKt
aLH
aMK
@@ -74565,13 +75807,13 @@ buK
sKj
buR
aMJ
-aKF
-aqo
-aad
-aac
-aaa
-aaa
+bal
+bau
+bbf
+bbo
+aLC
aaa
+pZU
aaa
aaa
aaa
@@ -74822,13 +76064,13 @@ buL
buP
buS
aMJ
-aKJ
-aKm
-aad
-aad
-aaa
-aaa
-aaa
+bam
+bav
+bdC
+bgk
+aLC
+sdX
+sdX
aaa
aaa
aaa
@@ -75079,13 +76321,13 @@ buK
sKj
buR
aMJ
-aKJ
-aKm
-aad
-aad
-aaa
-aaa
+ban
+baE
+bbh
+bdG
+aLC
aaa
+pZU
aaa
aaa
aaa
@@ -75302,7 +76544,7 @@ pNE
oOk
xej
oaV
-uoy
+asH
lqz
fFw
auq
@@ -75334,15 +76576,15 @@ aTZ
blq
buN
buQ
-buU
+aYp
sJV
-aKJ
-aqo
-aad
-aaa
-aaa
-aaa
+bao
+bau
+bbi
+bbR
+aLC
aaa
+pZU
aaa
aaa
aaa
@@ -75593,13 +76835,13 @@ sJV
aMJ
aMJ
sJV
-aKJ
-aqo
-aLs
-aac
-aaa
-aaa
+bap
+bau
+bat
+aLC
+aLC
aaa
+pZU
aaa
aaa
aaa
@@ -75850,13 +77092,13 @@ aad
bvo
aad
aKm
-aLp
-aLB
+baq
+bbb
aKm
aac
aac
aac
-aac
+aKo
aaa
aaa
aaa
@@ -76108,12 +77350,12 @@ aUQ
aXc
aKm
aqo
-aLC
+bbc
aLv
aac
aac
aac
-aad
+adx
aad
aaa
aaa
@@ -76365,7 +77607,7 @@ aUR
aUQ
bvo
aLs
-aKJ
+bbd
aKm
aac
aad
@@ -76622,7 +77864,7 @@ aWz
aVL
bvo
aqo
-aLL
+bbe
aKm
aad
aad
@@ -76879,7 +78121,7 @@ aWz
aUQ
bvg
aKm
-aKJ
+bbd
aKm
aKm
aad
@@ -77136,7 +78378,7 @@ aWz
aVL
bvg
aLv
-aKJ
+bbd
aME
aKm
aad
@@ -77393,7 +78635,7 @@ aUU
aUQ
bvg
aKm
-aKJ
+bbd
aMF
aKm
aac
@@ -77650,7 +78892,7 @@ aWz
aVL
bvg
aKm
-aKJ
+bbd
aMG
aKm
aKm
@@ -77907,8 +79149,8 @@ aWz
aUQ
bvo
aKm
-aLp
-aLB
+baq
+bbb
aOI
aPQ
aPQ
@@ -78130,7 +79372,7 @@ asA
asD
sAx
arA
-asH
+bdv
atI
auB
avG
@@ -78165,7 +79407,7 @@ aVL
bvo
aqo
aKm
-aMH
+bbj
axU
aKm
aMG
@@ -78422,7 +79664,7 @@ aUQ
aad
aLs
aLX
-aMI
+bbk
aOL
aPR
aQV
@@ -78679,7 +79921,7 @@ aVL
aad
aqo
aMv
-aMQ
+bbl
aOM
aPS
aRc
@@ -78911,10 +80153,10 @@ ayl
azr
aAt
aBB
-aCF
+bgi
aDu
aEz
-aFB
+aVz
aGo
aHu
aIr
@@ -78936,7 +80178,7 @@ bvo
bvo
aqo
aMw
-aMI
+bbk
aON
aPT
aRd
@@ -78945,7 +80187,7 @@ aUm
aKm
aVH
aRe
-aTn
+bfH
aWL
aZB
aTv
@@ -79193,7 +80435,7 @@ axX
aEg
aEg
aMD
-aOc
+bbm
aOS
aPU
aRj
@@ -79450,7 +80692,7 @@ aFM
aFM
aKl
aFM
-aOH
+bbn
aOT
aPV
uXV
@@ -79717,7 +80959,7 @@ aKm
aSQ
aKV
aWJ
-aYB
+bfM
aKV
aYA
aZJ
@@ -80461,7 +81703,7 @@ aGt
aHz
aIw
aJF
-aKM
+aJk
aMa
aNe
aEt
@@ -81504,7 +82746,7 @@ aVT
aVQ
aXg
ajG
-aGY
+bdW
aOl
aOQ
aCy
@@ -82019,7 +83261,7 @@ aVQ
aXk
ajG
aOZ
-aQe
+bey
aOK
aCy
aPE
@@ -82776,7 +84018,7 @@ aIC
aJK
aKR
aMg
-aNl
+aKM
aID
aOU
aQc
@@ -82794,7 +84036,7 @@ aNS
aPz
aPB
aPH
-aQE
+bfD
aQL
aRb
aVc
@@ -83039,13 +84281,13 @@ aEh
aFh
aGf
aHG
-aJe
+aNl
aJo
aLo
aLu
aMl
aOW
-aOX
+bdH
aGZ
aOE
aPv
@@ -83557,7 +84799,7 @@ aJg
aJA
aLr
aLA
-aNO
+aQe
ail
aXQ
aYI
@@ -83823,7 +85065,7 @@ baw
aSh
bcf
bcW
-blt
+bfF
ooX
avB
bfA
@@ -84068,11 +85310,11 @@ bxQ
sJJ
ail
aGF
-aJO
+aGY
aNL
aNo
aNP
-aXm
+aWm
aXS
aYK
aZG
@@ -85108,7 +86350,7 @@ baB
bbr
bci
bcZ
-bdW
+bfG
aSh
atE
bfA
@@ -89216,7 +90458,7 @@ aXy
aYi
aZb
aZU
-baN
+beC
bbC
bct
bdl
@@ -89724,7 +90966,7 @@ aSw
aTI
aUC
aVv
-aWm
+aOX
aWV
aXA
aYk
@@ -90263,7 +91505,7 @@ nTi
jdD
bhb
bhO
-bjP
+bgd
bfP
aad
aad
@@ -90497,7 +91739,7 @@ aSz
aTL
aWp
aWW
-blr
+aXm
aYn
aZf
aZY
@@ -90512,15 +91754,15 @@ bfQ
bgq
bhc
bhP
-eFp
+bfN
bhP
pLb
bhP
-biC
+bgc
bhP
bjq
bjD
-bjQ
+bgg
bfP
aad
aad
@@ -90954,9 +92196,9 @@ sOk
aae
aae
aaf
-aaa
-aaa
-aaa
+sdX
+sdX
+sdX
aae
aad
abs
@@ -91008,11 +92250,11 @@ aRv
aSB
aTN
aUG
-aVz
+aNO
aWr
aWX
aXE
-aYp
+bgn
aZh
baa
baU
@@ -91210,12 +92452,12 @@ aad
aad
aaa
aaa
-aae
-aaa
-aaa
-bxZ
-abL
-bxZ
+bbT
+bbT
+bbT
+bbT
+bcF
+bbT
swz
abs
abs
@@ -91466,17 +92708,17 @@ sMq
aad
aad
aaa
-aaa
-aae
-aad
-aac
-edA
-abM
-acu
-adt
-adM
-aef
adm
+bbT
+bbX
+bbZ
+bcc
+bcG
+bcM
+bcT
+bym
+bdi
+bdF
bxw
bym
afB
@@ -91724,13 +92966,13 @@ aad
aad
aaa
aad
-aah
-aad
-aad
-bxZ
-bxZ
-adq
-bxZ
+bbU
+bbT
+bca
+bbT
+bcH
+bcN
+bbT
adY
aei
adn
@@ -91789,7 +93031,7 @@ bad
baX
bbL
bcA
-bdv
+bfE
beo
aZl
sPK
@@ -91982,11 +93224,11 @@ aac
aaa
aad
aad
-aad
-aad
-aad
-bxZ
-bxZ
+bbT
+bcb
+bbT
+bcI
+bcO
adu
adu
aej
@@ -92239,11 +93481,11 @@ aac
aaa
aaa
aad
-aac
-aac
-aad
-aad
-aad
+bbY
+bdB
+bbT
+aFB
+bcP
ady
adZ
aek
@@ -92491,16 +93733,16 @@ sMq
sMr
sMr
aad
+adx
+sdX
+sdX
+bbW
+bcQ
+adq
aad
-aaa
-aaa
-aaa
-aaa
-aaa
-aad
-aad
-aad
-aad
+bbT
+bcK
+bdE
adu
aea
aen
@@ -92748,16 +93990,16 @@ aad
aad
aad
aad
-aac
+aKo
+aaa
+aaa
+aef
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aad
-aad
-aad
+bbT
+bcL
+bcR
adu
aeb
aeP
@@ -93002,19 +94244,19 @@ aad
aad
aac
aac
-aad
+adx
aaa
aaa
+sdX
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aac
-aac
+adq
+sdX
+sdX
+sdX
+bbT
+bbT
+bbU
adu
adu
adu
@@ -93259,19 +94501,19 @@ aad
aac
aac
aaa
+sdX
+aaa
+aaa
+sdX
+aaa
+aaa
+adq
aaa
aaa
aaa
+sdX
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aac
+bcS
aad
aad
aad
@@ -93324,8 +94566,8 @@ auu
avz
avF
abv
-sON
-tms
+hXc
+orV
hXc
abP
jLF
@@ -93516,19 +94758,19 @@ aad
aaa
aaa
aaa
+pZU
aaa
+abL
+abL
+abL
+abL
+adt
+abL
+abL
+abL
+abL
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aac
+aKo
aac
aad
aad
@@ -93581,8 +94823,8 @@ aux
avA
avH
abv
-aad
-orV
+beA
+beV
iio
tPn
wOe
@@ -93773,19 +95015,19 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
+sdX
+abM
+bbQ
+bbQ
+bbQ
+adM
+bbV
+bbV
+bbV
+bcD
+sdX
+pZU
aaa
aaa
aac
@@ -93838,9 +95080,9 @@ atF
atF
atF
swG
-aad
-hns
-iXB
+beF
+beW
+beZ
hVE
sPq
hVE
@@ -94030,19 +95272,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
+acu
+acu
+acu
+acu
+aef
+acu
+acu
+acu
+acu
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
aaa
@@ -94094,14 +95336,14 @@ aaa
aaa
aaa
aad
-aad
-aad
-hns
-xLe
+iio
+beB
+beX
+bfa
+bfc
+bfi
hVE
-ajP
-hVE
-pXH
+bfs
sVt
vCu
tin
@@ -94287,19 +95529,19 @@ aaa
aaa
aaa
aaa
+pZU
aaa
aaa
aaa
aaa
aaa
+bbg
aaa
aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
+pZU
aaa
aaa
aaa
@@ -94349,13 +95591,13 @@ aaa
aaa
aaa
aaa
-aac
aad
-aad
-aad
-orV
+ajP
+ajP
+aYB
+ajP
nMh
-hVE
+beW
sPq
wPr
jIk
@@ -94544,19 +95786,19 @@ aaa
aaa
aaa
aaa
+sdX
aaa
+abL
+abL
+abL
+abL
+adt
+abL
+abL
+abL
+abL
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+sdX
aaa
aaa
aaa
@@ -94606,14 +95848,14 @@ aaa
aaa
aaa
aaa
-aac
-aac
aad
-aad
-orV
+ajP
+aQE
+bex
+ajP
pdX
-hVE
-bWO
+bfd
+bfj
oKp
dXv
sVt
@@ -94798,23 +96040,23 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
aaa
aaa
aaa
+pZU
+sdX
+abM
+bbQ
+bbQ
+bbQ
+adM
+bbV
+bbV
+bbV
+bcD
+sdX
+pZU
+aaa
aaa
aaa
aaa
@@ -94862,15 +96104,15 @@ aaf
aaa
aaa
aaa
-aaa
aac
aad
-aad
-aad
-rpy
-jLT
-lmr
-oRo
+ajP
+bdP
+bez
+beY
+bfb
+bfh
+bfk
pAN
nTg
gcw
@@ -95055,23 +96297,23 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
aaa
aaa
aaa
+pZU
+aaa
+acu
+acu
+acu
+acu
+aef
+acu
+acu
+acu
+acu
+aaa
+pZU
+aaa
aaa
aaa
aaa
@@ -95119,15 +96361,15 @@ aaf
aaa
aaa
aaa
-aaa
-aac
aad
aad
-aad
-sVt
-bNB
-hVE
-sPq
+ajP
+aTn
+beD
+bdO
+beu
+mvB
+beT
hVE
lzC
sVt
@@ -95312,23 +96554,23 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
aaa
aaa
aaa
+pZU
+aaa
+aaa
+aaa
+aaa
+aaa
+adt
+aaa
+aaa
+aaa
+aaa
+aaa
+pZU
+aaa
aaa
aaa
aaa
@@ -95376,15 +96618,15 @@ aaf
aaa
aaa
aaa
-aaa
-aac
aad
-aad
-aad
-sVt
+ajP
+ajP
+bev
+beR
+ajP
jXX
wwT
-sPq
+beU
tFk
hVE
lzG
@@ -95569,23 +96811,23 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
aaa
aaa
aaa
+sdX
+sdX
+pZU
+pZU
+pZU
+sdX
+bcJ
+sdX
+pZU
+pZU
+pZU
+sdX
+sdX
+aaa
aaa
aaa
aaa
@@ -95633,16 +96875,16 @@ aaa
aaa
aaa
aaa
-aaa
-aac
-aad
-aad
-aad
-meo
+ajP
+ajP
+bdD
+bdL
+beS
+ajP
xiZ
wvy
-sPq
-mfj
+bfz
+bfB
mvB
mvB
kqH
@@ -95826,20 +97068,20 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -95890,12 +97132,12 @@ aaa
aaa
aaa
aaa
-aaa
-aac
-aac
-aad
-aad
-sVt
+aJO
+baN
+bdI
+bdM
+bft
+ajP
mhf
kCG
ybw
@@ -96083,20 +97325,20 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -96147,12 +97389,12 @@ aaf
aaa
aaa
aaa
-aaa
-aac
-aac
-aad
-aad
-sVt
+aJO
+bbP
+bdJ
+bdN
+bfw
+ajP
sVt
sVt
sVt
@@ -96340,20 +97582,20 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -96404,16 +97646,16 @@ aaf
aaa
aaa
aaa
-aaa
-aaa
-aad
-aad
-eGm
-eGm
+aJO
+aJO
+bdK
+bew
+ajP
+ajP
eGm
meo
uiT
-scn
+bfq
bpj
iio
aad
@@ -96597,20 +97839,20 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -96662,10 +97904,10 @@ aaa
aaa
aaa
aaa
-aaa
-aad
-aad
-leU
+aJO
+aJO
+aJO
+ajP
dfK
dfK
sVt
@@ -96854,20 +98096,20 @@ jFP
jFP
jFP
jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
-jFP
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
diff --git a/_maps/map_files/Snaxi/IcemoonUnderground_Above.dmm b/_maps/map_files/Snaxi/IcemoonUnderground_Above.dmm
index 403f155854..153ad4265d 100644
--- a/_maps/map_files/Snaxi/IcemoonUnderground_Above.dmm
+++ b/_maps/map_files/Snaxi/IcemoonUnderground_Above.dmm
@@ -112,7 +112,7 @@
/obj/machinery/light/small{
dir = 8
},
-/turf/closed/mineral/random/snow,
+/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/unexplored/rivers)
"eH" = (
/obj/machinery/airalarm{
@@ -581,7 +581,7 @@
desc = "A horn off of a bicycle. This one has been charred to hell and back, yet somehow it still honks.";
name = "charred bike horn"
},
-/turf/closed/mineral/random/snow,
+/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/unexplored/rivers)
"nN" = (
/turf/closed/wall/r_wall,
@@ -722,6 +722,9 @@
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
+"rs" = (
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/underground/unexplored/rivers)
"ry" = (
/obj/effect/turf_decal/tile/purple{
dir = 8
@@ -809,6 +812,9 @@
},
/turf/open/floor/plasteel/white,
/area/mine/living_quarters)
+"sL" = (
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/underground/unexplored/rivers)
"sM" = (
/obj/structure/table,
/obj/item/storage/firstaid/toxin{
@@ -2367,7 +2373,7 @@
/obj/machinery/light/small{
dir = 1
},
-/turf/closed/mineral/random/snow,
+/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/unexplored/rivers)
"WE" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -29940,9 +29946,9 @@ ah
ah
ah
ah
+rs
ah
-ah
-ah
+rs
ah
ah
ah
@@ -30199,8 +30205,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -30456,8 +30462,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -30712,10 +30718,10 @@ ah
ah
ah
nE
-ah
-ah
-ah
-ah
+rs
+sL
+sL
+rs
ah
ah
ah
@@ -30968,11 +30974,11 @@ ah
ah
ah
ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+sL
+rs
ah
ah
ah
@@ -31498,8 +31504,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -31749,14 +31755,14 @@ ah
ah
ah
ah
+rs
+rs
+rs
+rs
ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
ah
ah
ah
@@ -32005,14 +32011,14 @@ Gw
op
nd
ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+sL
+rs
+rs
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -32262,15 +32268,15 @@ GI
Lg
nd
ah
-ah
-ah
-ah
+sL
+sL
+rs
op
WE
op
-ah
-ah
-ah
+rs
+rs
+rs
ah
ah
ah
@@ -32519,17 +32525,17 @@ GN
Lu
nd
ah
-ah
-ah
-ah
+rs
+rs
+rs
op
sa
op
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -32782,11 +32788,11 @@ nd
op
WM
op
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -33039,10 +33045,10 @@ Rx
ry
WO
op
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -33296,9 +33302,9 @@ sa
sa
sa
op
-ah
-ah
-ah
+rs
+rs
+rs
ah
ah
ah
@@ -33553,8 +33559,8 @@ TA
sa
Xf
op
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -33810,8 +33816,8 @@ TA
sa
sa
op
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -37651,8 +37657,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
op
sa
Ho
@@ -37908,8 +37914,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
op
ET
HY
@@ -38165,18 +38171,18 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
op
op
Iq
op
op
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -38422,19 +38428,19 @@ ah
ah
ah
ah
-ah
-ah
-ah
+rs
+rs
+rs
op
Iv
op
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -38680,18 +38686,18 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
op
Ho
op
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+sL
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -38937,18 +38943,18 @@ ah
ah
ah
ah
-ah
-ah
+sL
+rs
op
Ho
op
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+sL
+sL
+sL
+rs
+rs
+rs
ah
ah
ah
@@ -39193,21 +39199,21 @@ ah
ah
ah
ah
-ah
-ah
-ah
+sL
+sL
+rs
op
Ho
op
-ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+sL
+sL
+sL
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -39444,26 +39450,26 @@ ah
ah
ah
ah
+rs
+rs
+rs
ah
ah
ah
ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
er
IB
er
-ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+sL
+sL
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -39700,24 +39706,24 @@ ah
ah
ah
ah
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
er
IB
er
-ah
-ah
-ah
-ah
-ah
+rs
+sL
+sL
+rs
+rs
ah
ah
ah
@@ -39957,24 +39963,24 @@ ah
ah
ah
ah
-ah
+rs
eZ
fB
er
+rs
ah
ah
ah
-ah
-ah
-ah
+rs
+rs
er
IB
er
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+sL
+sL
+rs
ah
ah
ah
@@ -40213,25 +40219,25 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
er
fC
er
+rs
+rs
ah
ah
-ah
-ah
-ah
-ah
+rs
+rs
er
IF
er
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+sL
+sL
+rs
ah
ah
ah
@@ -40470,25 +40476,25 @@ ah
ah
ah
ah
-ah
+rs
er
er
fD
er
er
+rs
ah
-ah
-ah
-ah
+rs
+rs
Be
er
IK
er
er
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -40743,8 +40749,8 @@ IM
gS
er
eq
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -40983,7 +40989,7 @@ ah
ah
ah
ah
-ah
+rs
eq
eH
fb
@@ -41000,8 +41006,8 @@ IB
fC
Nt
eq
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -41240,7 +41246,7 @@ ah
ah
ah
ah
-ah
+rs
er
eI
fc
@@ -41497,7 +41503,7 @@ ah
ah
ah
ah
-ah
+rs
er
eJ
fd
@@ -41774,8 +41780,8 @@ er
Tk
NK
er
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -42009,7 +42015,7 @@ ah
ah
ah
ah
-ah
+rs
dW
ei
es
@@ -42031,9 +42037,9 @@ Rf
Tn
NP
VC
-ah
-ah
-ah
+rs
+rs
+rs
ah
ah
ah
@@ -42265,8 +42271,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
dX
ej
et
@@ -42288,8 +42294,8 @@ er
To
UJ
er
-ah
-ah
+rs
+rs
ah
ah
ah
@@ -42522,8 +42528,8 @@ ah
ah
ah
ah
-ah
-ah
+rs
+rs
dX
ej
eu
@@ -42780,7 +42786,7 @@ ah
ah
ah
ah
-ah
+rs
dW
ek
ew
@@ -44069,9 +44075,9 @@ ah
ah
ah
ex
-ah
-ah
-ah
+rs
+rs
+rs
ex
ah
ah
@@ -44324,13 +44330,13 @@ ah
ah
ah
ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -44581,13 +44587,13 @@ ah
ah
ah
ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -44839,11 +44845,11 @@ ah
ah
ah
ah
-ah
-ah
-ah
-ah
-ah
+rs
+rs
+rs
+rs
+rs
ah
ah
ah
@@ -45097,9 +45103,9 @@ ah
ah
ah
ah
-ah
-ah
-ah
+rs
+rs
+rs
ah
ah
ah
diff --git a/_maps/map_files/Snaxi/IcemoonUnderground_Below.dmm b/_maps/map_files/Snaxi/IcemoonUnderground_Below.dmm
index 42971e4315..79e5080644 100644
--- a/_maps/map_files/Snaxi/IcemoonUnderground_Below.dmm
+++ b/_maps/map_files/Snaxi/IcemoonUnderground_Below.dmm
@@ -5,6 +5,9 @@
"b" = (
/turf/closed/mineral/random/high_chance/snow,
/area/icemoon/underground/unexplored/rivers)
+"c" = (
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/underground/unexplored/rivers)
"d" = (
/turf/closed/wall,
/area/icemoon/underground/explored)
@@ -19,6 +22,9 @@
/obj/item/gps/mining,
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
+"G" = (
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/mine/maintenance)
"N" = (
/obj/item/flashlight/lantern{
on = 1
@@ -33,6 +39,22 @@
/obj/structure/ladder,
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
+"X" = (
+/obj/machinery/telecomms/relay/preset/mining,
+/obj/machinery/bluespace_beacon,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/obj/machinery/door/window/eastright{
+ dir = 8;
+ req_access_txt = "48"
+ },
+/turf/open/floor/circuit,
+/area/icemoon/underground/explored)
(1,1,1) = {"
a
@@ -39499,9 +39521,9 @@ a
a
a
a
-a
-a
-a
+c
+c
+c
a
a
a
@@ -40011,13 +40033,13 @@ a
a
a
a
-a
+c
e
i
h
h
e
-a
+c
a
a
a
@@ -40268,13 +40290,13 @@ a
a
a
a
-a
+c
h
h
T
h
h
-a
+c
a
a
a
@@ -40525,13 +40547,13 @@ a
a
a
a
-a
+c
e
N
h
-h
+G
e
-a
+c
a
a
a
@@ -40786,7 +40808,7 @@ a
d
O
h
-e
+X
d
a
a
@@ -41041,9 +41063,9 @@ a
a
a
a
-a
-a
-a
+c
+c
+c
a
a
a
diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm
index 45e6e4dee0..ed574fa1a4 100644
--- a/_maps/map_files/Snaxi/Snaxi.dmm
+++ b/_maps/map_files/Snaxi/Snaxi.dmm
@@ -254,10 +254,11 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"aar" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/sign/departments/botany,
-/turf/open/floor/plating,
-/area/hydroponics)
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/fore)
"aas" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment{
@@ -310,6 +311,9 @@
dir = 1
},
/obj/machinery/disposal/bin,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"aaw" = (
@@ -516,13 +520,6 @@
},
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/fitness/recreation)
-"aaM" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
-/obj/machinery/atmospherics/components/binary/valve{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
"aaN" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/machinery/quantumpad{
@@ -602,7 +599,8 @@
/obj/structure/sign/departments/restroom{
pixel_x = 32
},
-/turf/open/floor/carpet,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aaV" = (
/obj/structure/sign/directions/evac{
@@ -673,8 +671,8 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/sign/mining{
- pixel_x = 32
+/obj/machinery/light{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
@@ -942,7 +940,7 @@
/obj/structure/sign/poster/official/fashion{
pixel_y = -32
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"abB" = (
/obj/structure/cable{
@@ -1080,13 +1078,14 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"abL" = (
-/obj/structure/table,
-/obj/item/mmi,
-/obj/item/mmi,
-/obj/item/mmi,
/obj/structure/sign/poster/official/state_laws{
pixel_y = -32
},
+/obj/machinery/camera{
+ c_tag = "Robotics Lab South";
+ dir = 1;
+ network = list("ss13","rd")
+ },
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"abM" = (
@@ -1184,14 +1183,8 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"abU" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 5
- },
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"abV" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -1358,7 +1351,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"acV" = (
@@ -1568,8 +1563,9 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 9
+ dir = 4
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"aeG" = (
@@ -1711,6 +1707,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/visible{
dir = 9
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"akB" = (
@@ -1858,7 +1855,6 @@
/obj/structure/table/reinforced,
/obj/machinery/door/window/eastright{
base_state = "left";
- dir = 8;
icon_state = "left";
name = "Chemistry Desk";
req_access_txt = "33"
@@ -1866,6 +1862,10 @@
/obj/machinery/door/firedoor/border_only{
dir = 8
},
+/obj/machinery/door/window/eastright{
+ dir = 8;
+ name = "Chemistry Desk"
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"anw" = (
@@ -2075,8 +2075,8 @@
/obj/machinery/door/firedoor/border_only{
dir = 1
},
-/obj/machinery/door/airlock/external,
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"arE" = (
@@ -2164,6 +2164,7 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"asE" = (
@@ -2505,17 +2506,10 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/door/airlock/highsecurity{
- name = "AI Upload Access";
- req_access_txt = "16"
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/ai_upload)
"axc" = (
/obj/structure/table,
@@ -2604,17 +2598,9 @@
/obj/structure/plasticflaps/opaque,
/turf/open/floor/plasteel/dark,
/area/science/lab)
-"axL" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 10
- },
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
"axN" = (
-/obj/machinery/atmospherics/pipe/simple/supply/visible{
- dir = 10
- },
-/turf/open/floor/plating/asteroid/snow/icemoon,
+/obj/structure/fluff/railing,
+/turf/open/transparent/openspace/icemoon,
/area/icemoon/surface/outdoors)
"ayk" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -2626,7 +2612,14 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/closed/wall/r_wall,
+/obj/machinery/door/airlock/highsecurity{
+ name = "AI Upload Access";
+ req_access_txt = "16"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload)
"aym" = (
/obj/structure/cable{
@@ -2741,20 +2734,34 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/conveyor_switch/oneway{
- dir = 8;
- id = "robo2"
- },
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
},
+/obj/structure/table,
+/obj/item/storage/firstaid/regular{
+ empty = 1;
+ name = "First-Aid (empty)"
+ },
+/obj/item/storage/firstaid/regular{
+ empty = 1;
+ name = "First-Aid (empty)"
+ },
+/obj/item/storage/firstaid/regular{
+ empty = 1;
+ name = "First-Aid (empty)"
+ },
+/obj/item/healthanalyzer,
+/obj/item/healthanalyzer,
+/obj/item/healthanalyzer,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"ayC" = (
-/obj/machinery/mecha_part_fabricator,
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/obj/structure/fluff/railing/corner{
+ dir = 8
+ },
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"ayD" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -2805,6 +2812,7 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/maintenance/department/electrical)
"azq" = (
@@ -2890,20 +2898,11 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"azH" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "robo2"
+/obj/structure/fluff/railing{
+ dir = 4
},
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/glass{
- amount = 20;
- pixel_x = -3;
- pixel_y = 6
- },
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"aAe" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/disposalpipe/segment{
@@ -3136,24 +3135,11 @@
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"aCr" = (
-/obj/structure/table,
-/obj/item/storage/firstaid/regular{
- empty = 1;
- name = "First-Aid (empty)"
+/obj/structure/fluff/railing{
+ dir = 8
},
-/obj/item/storage/firstaid/regular{
- empty = 1;
- name = "First-Aid (empty)"
- },
-/obj/item/storage/firstaid/regular{
- empty = 1;
- name = "First-Aid (empty)"
- },
-/obj/item/healthanalyzer,
-/obj/item/healthanalyzer,
-/obj/item/healthanalyzer,
-/turf/open/floor/plasteel/white,
-/area/science/robotics/lab)
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"aCV" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -3199,8 +3185,7 @@
/area/hallway/primary/port)
"aDc" = (
/obj/effect/landmark/start/scientist,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel/white,
+/turf/open/floor/circuit,
/area/science/lab)
"aDd" = (
/obj/structure/cable{
@@ -3226,10 +3211,6 @@
/obj/machinery/vending/clothing,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
-"aDf" = (
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel/white,
-/area/science/lab)
"aDg" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -3380,8 +3361,10 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/medical)
"aEE" = (
-/obj/machinery/rnd/destructive_analyzer,
-/turf/open/floor/circuit,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
/area/science/lab)
"aEF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
@@ -3390,25 +3373,24 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"aEG" = (
-/turf/open/floor/circuit,
-/area/science/lab)
-"aEH" = (
-/obj/machinery/computer/rdconsole/core{
- dir = 1
+/obj/structure/fluff/railing{
+ dir = 10
},
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
+"aEH" = (
/obj/machinery/light,
/turf/open/floor/circuit,
/area/science/lab)
"aEI" = (
-/obj/machinery/rnd/production/protolathe/department/science,
+/obj/machinery/rnd/destructive_analyzer,
/turf/open/floor/circuit,
/area/science/lab)
"aEJ" = (
/turf/closed/wall/r_wall,
/area/hallway/secondary/entry)
"aEK" = (
-/obj/machinery/rnd/production/circuit_imprinter/department/science,
-/obj/item/reagent_containers/glass/beaker/sulphuric,
+/obj/machinery/rnd/production/protolathe/department/science,
/turf/open/floor/circuit,
/area/science/lab)
"aEL" = (
@@ -3606,35 +3588,11 @@
/turf/open/floor/circuit,
/area/science/robotics/mechbay)
"aHK" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -2;
- pixel_y = -1
+/obj/structure/fluff/railing{
+ dir = 6
},
-/obj/item/storage/toolbox/electrical{
- pixel_x = 1;
- pixel_y = 6
- },
-/obj/item/clothing/head/welding{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/clothing/head/welding{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/clothing/glasses/welding,
-/obj/item/clothing/glasses/welding,
-/obj/item/multitool{
- pixel_x = 3
- },
-/obj/item/multitool{
- pixel_x = 3
- },
-/obj/item/storage/belt/utility,
-/obj/item/storage/belt/utility,
-/turf/open/floor/plasteel/white,
-/area/science/robotics/lab)
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"aHU" = (
/obj/machinery/rnd/production/techfab/department/service,
/turf/open/floor/plating,
@@ -3749,11 +3707,12 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/entry)
"aKa" = (
-/obj/machinery/atmospherics/components/binary/valve/digital{
- dir = 4
+/obj/structure/cable{
+ icon_state = "0-2"
},
-/turf/closed/wall/r_wall,
-/area/storage/atmos)
+/obj/machinery/power/tracker,
+/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
+/area/solar/port/fore)
"aKf" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment{
@@ -4062,14 +4021,14 @@
/turf/open/floor/wood,
/area/security/courtroom)
"aNL" = (
-/obj/machinery/door/airlock/external,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/firedoor/border_only{
dir = 1;
name = "north facing firelock"
},
/obj/structure/fans/tiny,
-/turf/open/floor/carpet,
+/obj/machinery/door/airlock/external/glass,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"aNS" = (
/obj/machinery/turnstile{
@@ -4136,18 +4095,12 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/obj/machinery/power/apc{
- areastring = "/area/storage/atmos";
- dir = 8;
- name = "Atmospherics APC";
- pixel_x = -24
- },
/obj/structure/extinguisher_cabinet{
pixel_y = -30
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"aOq" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -4159,7 +4112,7 @@
dir = 8
},
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"aOr" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
@@ -4203,9 +4156,11 @@
/turf/open/floor/plating,
/area/security/checkpoint/medical)
"aPC" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/storage/atmos)
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"aPD" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -4213,10 +4168,17 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"aPE" = (
-/turf/closed/wall/r_wall,
-/area/storage/atmos)
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/solar{
+ id = "auxsolareast";
+ name = "Port Auxiliary Solar Array"
+ },
+/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
+/area/solar/port/fore)
"aPY" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
@@ -4286,7 +4248,7 @@
icon_state = "2-4"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"aQT" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -4352,6 +4314,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 9
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"aSI" = (
@@ -4700,6 +4663,13 @@
},
/turf/open/floor/plating,
/area/quartermaster/storage)
+"bfo" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"bfB" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -4755,6 +4725,12 @@
/obj/machinery/vending/coffee,
/turf/open/floor/plasteel/dark,
/area/maintenance/department/bridge)
+"bjR" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"bjU" = (
/obj/machinery/airalarm{
dir = 8;
@@ -4804,13 +4780,6 @@
/obj/machinery/holopad,
/turf/open/floor/plasteel/dark,
/area/maintenance/department/bridge)
-"blD" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"blI" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/ambrosia,
@@ -4977,6 +4946,12 @@
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
+"bqb" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"bqx" = (
/obj/structure/table/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -5185,9 +5160,6 @@
/area/icemoon/surface/outdoors)
"buF" = (
/obj/machinery/light,
-/obj/structure/window/plasma/reinforced{
- dir = 4
- },
/obj/structure/table,
/obj/item/clothing/gloves/color/yellow,
/obj/item/clothing/gloves/color/yellow,
@@ -5200,6 +5172,9 @@
dir = 8
},
/obj/item/pipe_dispenser,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"buI" = (
@@ -6106,9 +6081,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/airalarm{
- pixel_y = 28
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -6218,9 +6190,6 @@
/obj/effect/turf_decal/tile/brown{
dir = 4
},
-/obj/machinery/light{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bCM" = (
@@ -6414,6 +6383,17 @@
/obj/machinery/vending/wardrobe/science_wardrobe,
/turf/open/floor/plasteel/white,
/area/science/misc_lab)
+"bEp" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"bEJ" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/purple{
@@ -6921,7 +6901,7 @@
/obj/structure/window/reinforced,
/obj/structure/table/reinforced,
/obj/machinery/button/door{
- id = "xenobio2";
+ id = "xenobiospec";
name = "Containment Blast Doors";
pixel_y = 4;
req_access_txt = "55"
@@ -6982,7 +6962,7 @@
req_access_txt = "55"
},
/obj/machinery/door/poddoor/preopen{
- id = "xenobio2";
+ id = "xenobiospec";
name = "containment blast door"
},
/turf/open/floor/engine,
@@ -7138,35 +7118,9 @@
/obj/machinery/disposal/bin,
/turf/open/floor/plasteel/cult,
/area/lawoffice)
-"bJQ" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "Arrivals Airlock"
- },
-/obj/structure/fans/tiny,
-/turf/open/floor/plating,
-/area/hallway/secondary/exit/departure_lounge)
"bKl" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
/obj/effect/landmark/event_spawn,
-/turf/open/floor/plasteel,
+/turf/open/transparent/glass/reinforced,
/area/crew_quarters/fitness)
"bKo" = (
/obj/machinery/door/airlock/public/glass{
@@ -7245,7 +7199,7 @@
icon_state = "0-4"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"bLI" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -7477,6 +7431,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/recharge_station,
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
"bOp" = (
@@ -7621,16 +7576,16 @@
dir = 8;
name = "west facing firelock"
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/obj/machinery/door/poddoor/preopen{
- id = "xenobio2";
+ id = "xenobiospec";
name = "containment blast door"
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/turf/open/floor/engine,
/area/science/xenobiology)
"bPW" = (
@@ -8578,23 +8533,14 @@
"chp" = (
/turf/open/floor/plating,
/area/maintenance/aft)
-"chN" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"chZ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/maintenance/solars/port/fore)
+"cih" = (
+/obj/structure/cable,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/aft)
"cio" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -8822,7 +8768,7 @@
icon_state = "0-4"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"cly" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/floor/plating/snowed/smoothed/icemoon,
@@ -9154,6 +9100,12 @@
},
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/fitness/recreation)
+"cvN" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
"cwm" = (
/obj/machinery/vending/boozeomat,
/obj/machinery/firealarm{
@@ -9506,15 +9458,6 @@
},
/turf/open/floor/plating,
/area/bridge)
-"cDO" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"cDS" = (
/obj/structure/bodycontainer/morgue{
dir = 8
@@ -9542,6 +9485,12 @@
/obj/structure/reflector/single,
/turf/open/floor/plating,
/area/engine/storage)
+"cEs" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"cFm" = (
/obj/structure/reagent_dispensers/peppertank{
pixel_x = -30
@@ -9698,7 +9647,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"cKQ" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -9723,7 +9672,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel,
+/turf/open/floor/wood,
/area/crew_quarters/fitness)
"cLC" = (
/obj/effect/turf_decal/tile/brown{
@@ -9770,7 +9719,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cNE" = (
/obj/structure/cable{
@@ -10043,6 +9992,13 @@
"cTO" = (
/turf/closed/wall/r_wall,
/area/quartermaster/miningoffice)
+"cTV" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
"cUd" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -10062,6 +10018,40 @@
},
/turf/open/floor/plating,
/area/maintenance/solars/starboard/aft)
+"cUs" = (
+/obj/effect/landmark/start/ai,
+/obj/item/radio/intercom{
+ freerange = 1;
+ name = "Common Channel";
+ pixel_x = 25;
+ pixel_y = -4
+ },
+/obj/item/radio/intercom{
+ freerange = 1;
+ frequency = 1447;
+ name = "Private Channel";
+ pixel_x = 25;
+ pixel_y = -13
+ },
+/obj/item/radio/intercom{
+ freerange = 1;
+ listening = 0;
+ name = "Custom Channel";
+ pixel_x = 25;
+ pixel_y = 7
+ },
+/obj/machinery/button/door{
+ id = "AI Chamber entrance shutters";
+ name = "AI Chamber entrance shutters control";
+ pixel_x = -7;
+ pixel_y = -24;
+ req_access_txt = "16"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
"cUC" = (
/obj/structure/chair,
/obj/effect/landmark/start/geneticist,
@@ -10090,6 +10080,12 @@
},
/turf/open/floor/pod/dark,
/area/maintenance/starboard)
+"cVa" = (
+/obj/structure/fluff/railing{
+ dir = 9
+ },
+/turf/open/transparent/openspace/icemoon,
+/area/engine/atmospherics_engine)
"cVu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/blue{
@@ -10143,6 +10139,10 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
+"cWI" = (
+/obj/structure/cable,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"cWO" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
@@ -10167,11 +10167,9 @@
/turf/open/floor/plasteel/dark,
/area/security/prison)
"cXI" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/closed/wall/r_wall,
-/area/ai_monitored/turret_protected/ai)
+/obj/structure/cable,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"cXO" = (
/obj/structure/cable,
/obj/effect/landmark/start/ai/secondary,
@@ -10495,21 +10493,23 @@
name = "Port Solar Array"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"dfy" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/cable{
icon_state = "1-4"
},
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/effect/landmark/event_spawn,
+/obj/machinery/flasher{
+ id = "AI";
+ pixel_x = -26;
+ pixel_y = 3
+ },
/obj/machinery/ai_slipper{
uses = 10
},
-/obj/effect/landmark/event_spawn,
/turf/open/floor/circuit/off,
/area/ai_monitored/turret_protected/ai)
"dfV" = (
@@ -10817,8 +10817,8 @@
dir = 4
},
/obj/machinery/door/airlock/atmos{
- name = "Atmospherics";
- req_access_txt = "24"
+ name = "Antimatter Engine";
+ req_access_txt = "10"
},
/obj/machinery/door/firedoor/border_only{
dir = 8;
@@ -10886,10 +10886,11 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
+/obj/structure/cable{
+ icon_state = "2-8"
},
-/turf/open/floor/carpet,
+/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"duI" = (
/obj/structure/cable{
@@ -10934,6 +10935,7 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"dvs" = (
@@ -10946,7 +10948,7 @@
/obj/machinery/door/firedoor/border_only{
name = "south facing firelock"
},
-/turf/open/floor/carpet,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"dvw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -11053,12 +11055,6 @@
},
/turf/open/floor/pod/dark,
/area/maintenance/starboard)
-"dAi" = (
-/obj/structure/sign/warning/pods{
- pixel_x = -32
- },
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
"dAs" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -11158,36 +11154,11 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"dDC" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
+/obj/structure/fluff/railing{
dir = 1
},
-/obj/structure/closet/crate/engineering{
- name = "Antimatter Engine Crate"
- },
-/obj/machinery/power/am_control_unit,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_shielding_container,
-/obj/item/am_containment,
-/obj/item/am_containment,
-/turf/open/floor/plasteel/dark,
-/area/engine/secure_construction)
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"dDK" = (
/obj/machinery/atmospherics/pipe/simple/supply/visible{
dir = 6
@@ -11265,9 +11236,11 @@
/turf/closed/wall,
/area/quartermaster/qm)
"dFJ" = (
-/obj/effect/turf_decal/stripes/corner,
-/turf/open/floor/plasteel/white,
-/area/science/lab)
+/obj/structure/fluff/railing{
+ dir = 5
+ },
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"dGb" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -11354,7 +11327,7 @@
/obj/machinery/door/firedoor/border_only{
name = "south facing firelock"
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"dJc" = (
/obj/structure/cable{
@@ -11386,7 +11359,7 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"dKw" = (
/obj/structure/cable{
@@ -11437,6 +11410,11 @@
"dMj" = (
/turf/closed/wall/r_wall,
/area/ai_monitored/nuke_storage)
+"dMo" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"dMI" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -12102,6 +12080,7 @@
dir = 1;
sortType = 26
},
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"egM" = (
@@ -12218,15 +12197,6 @@
},
/turf/open/floor/plasteel/dark,
/area/security/brig)
-"ejw" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"ekw" = (
/obj/structure/chair{
dir = 1
@@ -12287,6 +12257,18 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit/departure_lounge)
+"eoH" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"eoL" = (
/obj/structure/chair{
dir = 4
@@ -12354,9 +12336,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"ery" = (
-/obj/machinery/light{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -12371,10 +12350,6 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/item/radio/intercom{
- name = "Station Intercom (General)";
- pixel_x = -28
- },
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"erG" = (
@@ -12587,6 +12562,12 @@
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
+"eyc" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/crew_quarters/dorms)
"eyP" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -12690,6 +12671,13 @@
},
/turf/open/floor/plating,
/area/maintenance/solars/port/aft)
+"eCS" = (
+/obj/machinery/door/airlock{
+ id_tag = "Dorm5";
+ name = "Room Four"
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"eDr" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -12870,7 +12858,7 @@
/area/hallway/primary/central)
"eHK" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+/obj/machinery/atmospherics/pipe/layer_manifold{
dir = 4
},
/turf/open/floor/plating,
@@ -12982,25 +12970,6 @@
},
/turf/open/floor/plasteel,
/area/maintenance/aft)
-"eLl" = (
-/obj/structure/window{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/structure/window{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"eLm" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -13174,10 +13143,6 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
-"eOO" = (
-/obj/structure/weightmachine/weightlifter,
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"eOZ" = (
/obj/machinery/atmospherics/components/binary/pump/on,
/turf/open/floor/plasteel/dark,
@@ -13417,6 +13382,20 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/mineral/wood,
/area/maintenance/bar)
+"eXy" = (
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"eXO" = (
+/obj/structure/table,
+/obj/item/mmi,
+/obj/item/mmi,
+/obj/item/mmi,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"eYe" = (
/obj/machinery/conveyor{
dir = 4;
@@ -13489,7 +13468,7 @@
icon_state = "1-4"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/aft)
"faR" = (
/obj/structure/window/reinforced{
dir = 8
@@ -13497,7 +13476,7 @@
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"faV" = (
/obj/machinery/light{
dir = 4
@@ -13819,6 +13798,13 @@
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/icemoon/surface/outdoors)
+"fkA" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"fkC" = (
/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/closed/wall/r_wall,
@@ -13914,9 +13900,14 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"fne" = (
-/obj/effect/landmark/start/roboticist,
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"fni" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{
dir = 8
@@ -13957,6 +13948,11 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/engine/engineering)
+"fol" = (
+/obj/machinery/rnd/production/circuit_imprinter/department/science,
+/obj/item/reagent_containers/glass/beaker/sulphuric,
+/turf/open/floor/circuit,
+/area/science/lab)
"foy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -13986,17 +13982,6 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"fpS" = (
-/obj/structure/table,
-/obj/item/hemostat,
-/obj/item/retractor,
-/obj/item/scalpel{
- pixel_y = 12
- },
-/obj/item/circular_saw,
-/obj/item/cautery{
- pixel_x = 4
- },
-/obj/item/surgical_drapes,
/obj/machinery/airalarm{
pixel_y = 23
},
@@ -14004,7 +13989,14 @@
c_tag = "Robotics Lab";
network = list("ss13","rd")
},
-/turf/open/floor/plasteel/white,
+/obj/machinery/mecha_part_fabricator,
+/obj/item/stack/sheet/glass{
+ amount = 20;
+ pixel_x = -3;
+ pixel_y = 6
+ },
+/obj/item/stack/sheet/metal/fifty,
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"fqj" = (
/obj/machinery/field/generator,
@@ -14088,7 +14080,7 @@
icon_state = "1-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"fsA" = (
/obj/structure/bodycontainer/morgue,
/obj/effect/turf_decal/tile/blue{
@@ -14115,11 +14107,8 @@
/turf/open/floor/plasteel/dark/telecomms,
/area/tcommsat/server)
"ftH" = (
-/obj/machinery/mineral/ore_redemption{
- input_dir = 2;
- output_dir = 1
- },
-/turf/open/floor/plating,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/space/basic,
/area/quartermaster/miningdock)
"ftM" = (
/obj/structure/cable{
@@ -14189,11 +14178,6 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"fvz" = (
-/obj/structure/table/optable{
- name = "Robotics Operating Table"
- },
-/obj/item/tank/internals/anesthetic,
-/obj/item/clothing/mask/breath,
/obj/structure/extinguisher_cabinet{
pixel_y = 30
},
@@ -14355,6 +14339,9 @@
c_tag = "Bathrooms";
dir = 1
},
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/dorms)
"fBG" = (
@@ -14376,9 +14363,6 @@
/turf/open/floor/engine,
/area/engine/atmospherics_engine)
"fCQ" = (
-/obj/structure/toilet/secret/low_loot{
- pixel_y = 14
- },
/obj/machinery/button/door{
id = "Bath2";
name = "Door Bolt Control";
@@ -14391,6 +14375,7 @@
dir = 8
},
/obj/effect/landmark/blobstart,
+/obj/machinery/recharge_station,
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/dorms)
"fDi" = (
@@ -14416,6 +14401,13 @@
"fDJ" = (
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
+"fEz" = (
+/obj/machinery/computer/operating,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"fET" = (
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/camera{
@@ -14514,7 +14506,18 @@
dir = 4
},
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
+"fIk" = (
+/obj/machinery/button/door{
+ id = "holoprivacy";
+ name = "Holodeck Privacy";
+ pixel_x = 24;
+ pixel_y = 7
+ },
+/turf/open/floor/engine{
+ name = "Holodeck Projector Floor"
+ },
+/area/holodeck/rec_center)
"fIu" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -14733,11 +14736,11 @@
pixel_y = -28
},
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"fNh" = (
/obj/structure/cable,
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"fNC" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -14869,6 +14872,9 @@
dir = 8;
name = "west facing firelock"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/crew_quarters/dorms)
"fPN" = (
@@ -14955,6 +14961,13 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"fSb" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"fSw" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -14998,8 +15011,14 @@
/obj/machinery/light{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"fUc" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/aft)
"fUm" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -15044,7 +15063,7 @@
icon_state = "2-4"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"fVT" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/engine,
@@ -15273,6 +15292,12 @@
/obj/item/storage/fancy/donut_box,
/turf/open/floor/plasteel,
/area/security/checkpoint/supply)
+"gdH" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/dorms)
"gdL" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -15441,6 +15466,12 @@
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/engine/engineering)
+"gjZ" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
"gkl" = (
/obj/machinery/jukebox,
/turf/open/floor/wood,
@@ -15504,28 +15535,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
-"gls" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/door/window/westright{
- name = "Red Corner"
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"gmf" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment,
@@ -15699,9 +15708,6 @@
/turf/closed/wall,
/area/security/courtroom)
"grZ" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/structure/table,
/obj/item/aiModule/core/full/custom,
/obj/item/aiModule/core/freeformcore,
@@ -15713,6 +15719,9 @@
dir = 1;
network = list("aiupload")
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/circuit,
/area/ai_monitored/turret_protected/ai_upload)
"gsr" = (
@@ -15814,12 +15823,11 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"guI" = (
-/obj/machinery/light/floor,
-/obj/structure/disposalpipe/segment{
- dir = 5
+/obj/structure/cable{
+ icon_state = "0-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/fore)
"guR" = (
/obj/structure/table/glass,
/obj/effect/turf_decal/tile/yellow{
@@ -16063,7 +16071,7 @@
dir = 1
},
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"gCG" = (
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
@@ -16078,15 +16086,10 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"gCO" = (
-/obj/machinery/light,
-/obj/machinery/door/airlock/public/glass{
- name = "Holodeck Door"
- },
-/obj/structure/fans/tiny,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel/white,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"gCS" = (
/obj/structure/bodycontainer/morgue,
@@ -16240,6 +16243,12 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"gIW" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"gJi" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/obj/machinery/atmospherics/pipe/simple/green/visible{
@@ -16486,7 +16495,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"gPE" = (
/obj/machinery/portable_atmospherics/pump,
/obj/machinery/firealarm{
@@ -16662,7 +16671,7 @@
icon_state = "2-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"gTH" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -16692,11 +16701,18 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"gUc" = (
-/obj/machinery/light,
-/turf/open/floor/plasteel/white,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Dorms Central";
+ dir = 1
+ },
+/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"gUw" = (
/obj/structure/plasticflaps,
@@ -16773,7 +16789,8 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/turf/open/floor/plasteel/white,
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"gXE" = (
/obj/structure/table,
@@ -17108,13 +17125,16 @@
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"hiO" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"hjv" = (
@@ -17158,6 +17178,14 @@
},
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors)
+"hlQ" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_x = 30
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"hlT" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -17168,9 +17196,6 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
/turf/open/floor/circuit/off,
/area/ai_monitored/turret_protected/ai)
"hmM" = (
@@ -17195,6 +17220,15 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"hnN" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"hnO" = (
/obj/machinery/atmospherics/components/unary/cryo_cell,
/turf/open/floor/plasteel/white,
@@ -17219,20 +17253,10 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"hop" = (
-/obj/structure/window{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/landmark/start/assistant,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"hoq" = (
@@ -17342,6 +17366,7 @@
/obj/machinery/light{
dir = 1
},
+/obj/machinery/vending/cigarette,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"hrN" = (
@@ -17361,15 +17386,14 @@
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
"hrS" = (
-/obj/effect/turf_decal/tile/neutral,
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"hse" = (
/obj/structure/cable{
- icon_state = "1-4"
+ icon_state = "0-4"
},
-/turf/open/floor/circuit/off,
-/area/ai_monitored/turret_protected/ai)
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"hsl" = (
/turf/open/floor/plating,
/area/maintenance/starboard)
@@ -17419,12 +17443,6 @@
},
/turf/open/floor/wood,
/area/bridge/meeting_room)
-"hsQ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"hta" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -17471,11 +17489,14 @@
/turf/open/floor/engine/co2,
/area/engine/atmos)
"huF" = (
-/obj/machinery/mineral/stacking_unit_console{
- machinedir = 4
+/obj/structure/cable{
+ icon_state = "1-8"
},
-/turf/closed/wall,
-/area/maintenance/disposal)
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"huQ" = (
/obj/machinery/power/terminal{
dir = 1
@@ -17507,6 +17528,14 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"hvG" = (
+/obj/machinery/light,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"hwg" = (
/obj/machinery/computer/teleporter{
dir = 8
@@ -17567,7 +17596,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"hxP" = (
/obj/machinery/door/airlock/medical/glass{
id_tag = "MedbayFoyer";
@@ -17589,6 +17618,18 @@
/obj/structure/closet/secure_closet/personal/cabinet,
/turf/open/floor/carpet,
/area/quartermaster/miningoffice)
+"hyx" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock)
"hyz" = (
/obj/machinery/vending/autodrobe,
/turf/open/floor/plasteel,
@@ -17680,7 +17721,7 @@
dir = 1;
name = "north facing firelock"
},
-/turf/open/floor/carpet,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"hBb" = (
/obj/machinery/camera{
@@ -17710,6 +17751,10 @@
/obj/machinery/vending/medical,
/turf/open/floor/plasteel/white,
/area/medical/virology)
+"hBM" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
"hBQ" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -17720,6 +17765,16 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"hCx" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Dormitory"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8;
+ name = "west facing firelock"
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"hCD" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -17829,7 +17884,7 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"hFG" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -17855,7 +17910,7 @@
icon_state = "0-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"hGU" = (
/obj/structure/closet/secure_closet/personal/cabinet{
pixel_x = -8
@@ -17896,6 +17951,12 @@
},
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
+"hHV" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/dorms)
"hHW" = (
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -18001,7 +18062,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"hKt" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -18127,7 +18188,7 @@
/area/engine/secure_construction)
"hNT" = (
/obj/effect/landmark/event_spawn,
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"hNZ" = (
/obj/effect/turf_decal/tile/yellow{
@@ -18154,7 +18215,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"hOw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
@@ -18403,6 +18464,10 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
+"hUg" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"hUo" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -18554,6 +18619,10 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"hWp" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"hWW" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -18866,28 +18935,6 @@
/obj/machinery/space_heater,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"igK" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/machinery/door/window/eastleft{
- name = "Blue Corner"
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"igO" = (
/obj/machinery/vending/boozeomat,
/turf/open/floor/wood{
@@ -18916,17 +18963,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/flasher{
- id = "AI";
- pixel_x = -26;
- pixel_y = 3
- },
-/obj/machinery/turretid{
- icon_state = "control_stun";
- name = "AI Chamber turret control";
- pixel_x = -25;
- pixel_y = -3
- },
/turf/open/floor/circuit/off,
/area/ai_monitored/turret_protected/ai)
"ihE" = (
@@ -18937,6 +18973,7 @@
dir = 10
},
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/machinery/portable_atmospherics/canister,
/turf/open/floor/plasteel,
/area/science/mixing)
"ihJ" = (
@@ -18970,6 +19007,9 @@
/obj/machinery/power/smes,
/turf/open/floor/plating,
/area/maintenance/department/electrical)
+"ihY" = (
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"iiM" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -19305,6 +19345,12 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
+"iru" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/circuit/off,
+/area/ai_monitored/turret_protected/ai)
"irN" = (
/obj/machinery/requests_console{
department = "AI";
@@ -19363,7 +19409,7 @@
},
/obj/machinery/light,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"itw" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -19437,7 +19483,7 @@
dir = 1;
name = "north facing firelock"
},
-/turf/open/floor/carpet,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"iuP" = (
/obj/machinery/door/airlock/external{
@@ -19446,15 +19492,6 @@
},
/turf/open/floor/engine,
/area/engine/atmospherics_engine)
-"ivM" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock"
- },
-/turf/open/floor/plating,
-/area/hallway/secondary/exit/departure_lounge)
"ivQ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -19488,6 +19525,13 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
+"iwH" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 27
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"ixf" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -19501,6 +19545,12 @@
/obj/item/hand_tele,
/turf/open/floor/plasteel/dark,
/area/teleporter)
+"ixO" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/aft)
"ixZ" = (
/obj/structure/chair/office/dark,
/mob/living/simple_animal/pet/cat/Runtime{
@@ -19791,6 +19841,13 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_x = -28
+ },
+/obj/machinery/light{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"iFl" = (
@@ -19976,7 +20033,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"iJK" = (
/obj/structure/table/reinforced,
@@ -20018,6 +20075,13 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"iMk" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/aisat/service)
"iML" = (
/obj/machinery/light,
/obj/machinery/requests_console{
@@ -20030,14 +20094,15 @@
/turf/open/floor/carpet,
/area/crew_quarters/heads/hop)
"iMX" = (
-/obj/structure/cable,
-/obj/machinery/power/terminal,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/porta_turret/ai{
+ dir = 4
+ },
/turf/open/floor/circuit,
/area/ai_monitored/turret_protected/ai_upload)
"iNi" = (
-/obj/structure/window/plasma/reinforced{
- dir = 8
- },
/obj/machinery/computer/rdconsole/production{
dir = 4
},
@@ -20047,6 +20112,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"iNE" = (
@@ -20062,22 +20130,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
-"iNK" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"iNV" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -20102,12 +20154,6 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -27
},
-/obj/structure/window/plasma/reinforced{
- dir = 8
- },
-/obj/structure/window/plasma/reinforced{
- dir = 1
- },
/obj/machinery/rnd/production/protolathe/department/engineering,
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -20119,6 +20165,12 @@
c_tag = "Engineering Storage";
dir = 4
},
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"iOG" = (
@@ -20163,6 +20215,13 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"iQu" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"iQv" = (
/obj/machinery/door/airlock/public/glass{
name = "Courtroom";
@@ -20204,12 +20263,12 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"iRF" = (
-/obj/machinery/door/airlock/external,
/obj/machinery/door/firedoor/border_only{
dir = 1;
name = "north facing firelock"
},
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/hallway/primary/aft)
"iRO" = (
@@ -20246,9 +20305,13 @@
/turf/open/floor/plasteel/cult,
/area/lawoffice)
"iSB" = (
-/obj/machinery/light/floor,
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
+/obj/structure/cable,
+/obj/machinery/power/solar{
+ id = "auxsolareast";
+ name = "Port Auxiliary Solar Array"
+ },
+/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
+/area/solar/port/fore)
"iTP" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/carpet,
@@ -20404,7 +20467,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"iZu" = (
/obj/machinery/firealarm{
@@ -20709,7 +20772,7 @@
/area/quartermaster/storage)
"jjB" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"jjC" = (
/obj/structure/closet/crate,
@@ -20776,7 +20839,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"jmU" = (
/obj/effect/turf_decal/tile/brown{
dir = 1
@@ -20898,10 +20961,11 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"jso" = (
-/obj/machinery/light/small{
- dir = 8
+/obj/machinery/power/smes{
+ charge = 5e+006
},
-/turf/open/floor/circuit/off,
+/obj/structure/cable,
+/turf/open/floor/circuit,
/area/ai_monitored/turret_protected/ai)
"jsu" = (
/obj/structure/cable{
@@ -20952,11 +21016,11 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"jvV" = (
-/obj/machinery/mineral/stacking_unit_console{
- machinedir = 8
+/obj/structure/cable{
+ icon_state = "0-2"
},
-/turf/closed/wall,
-/area/maintenance/disposal)
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/fore)
"jwc" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -21027,7 +21091,7 @@
name = "Starboard Solar Array"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/aft)
"jxS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/obj/structure/cable{
@@ -21122,22 +21186,6 @@
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
-"jAT" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"jBk" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -21256,6 +21304,12 @@
/obj/effect/landmark/start/paramedic,
/turf/open/floor/plasteel/white,
/area/medical/paramedic)
+"jEm" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"jER" = (
/obj/machinery/vending/kink,
/turf/open/floor/plating,
@@ -21569,7 +21623,7 @@
},
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"jOB" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -21604,6 +21658,12 @@
},
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
+"jPf" = (
+/obj/machinery/computer/rdconsole/core{
+ dir = 8
+ },
+/turf/open/floor/circuit,
+/area/science/lab)
"jPh" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -21824,6 +21884,9 @@
"jWr" = (
/turf/closed/wall/r_wall,
/area/storage/tech)
+"jWw" = (
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"jWx" = (
/obj/structure/table/glass,
/obj/item/stack/sheet/mineral/plasma,
@@ -21882,7 +21945,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"jYS" = (
/obj/structure/chair{
@@ -21941,6 +22004,13 @@
/obj/machinery/smartfridge,
/turf/open/floor/plasteel,
/area/hydroponics)
+"kbE" = (
+/obj/structure/chair/comfy/brown{
+ color = "#596479";
+ dir = 8
+ },
+/turf/open/transparent/glass/reinforced,
+/area/crew_quarters/fitness)
"kbR" = (
/obj/structure/table,
/obj/item/storage/firstaid/regular{
@@ -22027,15 +22097,18 @@
},
/turf/open/floor/plasteel,
/area/storage/auxiliary)
+"kdy" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/dorms)
"kdA" = (
/obj/structure/table/glass,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
},
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
/turf/open/floor/plasteel/white,
/area/science/lab)
"kdM" = (
@@ -22124,24 +22197,11 @@
/turf/open/floor/carpet,
/area/chapel/office)
"kge" = (
-/obj/structure/window{
- dir = 8
- },
-/obj/structure/window{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
+/obj/structure/chair/comfy/brown{
+ color = "#596479";
dir = 4
},
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/plasteel,
+/turf/open/transparent/glass/reinforced,
/area/crew_quarters/fitness)
"kgx" = (
/obj/structure/table,
@@ -22245,6 +22305,14 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
+"kjx" = (
+/obj/machinery/door/window/eastright{
+ dir = 8;
+ name = "Robotics Surgery";
+ req_access_txt = "29"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"kkn" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -22412,7 +22480,7 @@
icon_state = "2-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"kol" = (
/obj/machinery/light{
dir = 1
@@ -22934,6 +23002,13 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"kHJ" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"kHP" = (
/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
dir = 4
@@ -22963,6 +23038,12 @@
},
/turf/open/floor/plating,
/area/maintenance/solars/port/fore)
+"kIV" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"kJk" = (
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 9
@@ -23063,7 +23144,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/door/airlock/external,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
@@ -23071,6 +23151,7 @@
dir = 4
},
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"kMy" = (
@@ -23153,9 +23234,6 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"kPu" = (
-/obj/structure/window/plasma/reinforced{
- dir = 4
- },
/obj/structure/table,
/obj/item/stack/sheet/metal/fifty,
/obj/item/stack/sheet/metal/fifty,
@@ -23166,6 +23244,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"kPA" = (
@@ -23227,9 +23308,6 @@
},
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/maintenance/aft/secondary)
-"kRk" = (
-/turf/open/floor/plasteel/white,
-/area/crew_quarters/dorms)
"kRz" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -23363,6 +23441,13 @@
"kVO" = (
/turf/closed/wall,
/area/hallway/primary/aft)
+"kWz" = (
+/obj/machinery/door/airlock{
+ id_tag = "Dorm6";
+ name = "Room Five"
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"kWC" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -23373,6 +23458,17 @@
/obj/machinery/door/airlock/maintenance,
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
+"kXL" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Snow Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1;
+ name = "north facing firelock"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
"kXY" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -23486,7 +23582,7 @@
name = "Port Auxiliary Solar Array"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"lbv" = (
/obj/machinery/atmospherics/components/binary/pump,
/obj/machinery/door/firedoor/border_only{
@@ -23495,6 +23591,19 @@
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
+"lcv" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"ldt" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -23593,15 +23702,15 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/door/airlock/public/glass{
- name = "Hydroponics";
- req_access_txt = "35"
- },
/obj/machinery/door/firedoor/border_only{
dir = 1;
name = "north facing firelock"
},
/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock{
+ name = "Hydroponics";
+ req_access_txt = "35"
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"lfD" = (
@@ -23621,6 +23730,12 @@
/obj/structure/closet/cardboard,
/turf/open/floor/plating,
/area/maintenance/starboard)
+"lgg" = (
+/obj/structure/fluff/railing{
+ dir = 5
+ },
+/turf/open/transparent/openspace/icemoon,
+/area/engine/atmospherics_engine)
"lgn" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -23673,14 +23788,12 @@
/turf/open/floor/plasteel,
/area/maintenance/aft)
"lhr" = (
-/obj/structure/cable{
- icon_state = "0-8"
+/obj/machinery/mineral/stacking_unit_console{
+ machinedir = 1;
+ pixel_x = -30
},
-/obj/machinery/power/smes{
- charge = 5e+006
- },
-/turf/open/floor/circuit,
-/area/ai_monitored/turret_protected/ai_upload)
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
"lhB" = (
/obj/machinery/camera{
c_tag = "Northwestern Hall 7";
@@ -23710,29 +23823,27 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"liL" = (
-/obj/structure/cable{
- icon_state = "0-2"
- },
/obj/machinery/ai_slipper{
uses = 10
},
-/obj/machinery/power/apc/highcap/five_k{
- areastring = "/area/ai_monitored/turret_protected/ai";
+/obj/machinery/door/window{
+ base_state = "rightsecure";
dir = 4;
- name = "AI Chamber APC";
- pixel_x = 24
+ icon_state = "rightsecure";
+ layer = 4.1;
+ name = "Secondary AI Core Access";
+ obj_integrity = 300;
+ pixel_x = 4;
+ req_access_txt = "16"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
},
/turf/open/floor/circuit/off,
/area/ai_monitored/turret_protected/ai)
@@ -23757,11 +23868,11 @@
/turf/open/floor/pod/dark,
/area/medical/paramedic)
"lki" = (
-/obj/machinery/door/airlock/external,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"lkP" = (
@@ -23992,7 +24103,7 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"lqW" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -24544,7 +24655,12 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
-/obj/structure/weightmachine/stacklifter,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"lJi" = (
@@ -24571,12 +24687,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/icemoon/surface/outdoors)
-"lJN" = (
-/obj/machinery/light{
- dir = 1
- },
-/turf/open/floor/plasteel/white,
-/area/crew_quarters/dorms)
"lKT" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -24591,12 +24701,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/wood,
/area/crew_quarters/theatre)
-"lLv" = (
-/obj/structure/chair/comfy/beige{
- dir = 8
- },
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
"lLD" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -24672,6 +24776,19 @@
},
/turf/open/floor/carpet/orange,
/area/engine/secure_construction)
+"lOa" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Dormitory"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8;
+ name = "west facing firelock"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"lOs" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
@@ -24716,27 +24833,35 @@
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
-"lQp" = (
+"lQd" = (
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "4-8"
},
-/obj/machinery/porta_turret/ai{
- dir = 4
+/obj/structure/cable{
+ icon_state = "1-8"
},
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/ai)
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
+"lQp" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "waste relief valve"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"lQs" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/wood,
/area/hallway/secondary/exit/departure_lounge)
"lQJ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
+/obj/structure/fluff/railing{
+ dir = 9
},
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
+/turf/open/transparent/openspace/icemoon,
+/area/icemoon/surface/outdoors)
"lRx" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -25107,7 +25232,9 @@
dir = 4
},
/obj/effect/turf_decal/tile/green,
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark/side{
+ dir = 5
+ },
/area/hydroponics)
"mbM" = (
/obj/effect/turf_decal/tile/blue{
@@ -25216,6 +25343,13 @@
},
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/cmo)
+"mfU" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Holodeck Door"
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"mgo" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor/border_only{
@@ -25391,7 +25525,7 @@
icon_state = "4-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/fore)
"mmO" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -25475,11 +25609,11 @@
/turf/open/floor/plating,
/area/medical/virology)
"mps" = (
-/obj/machinery/atmospherics/components/binary/valve{
- dir = 4
+/obj/structure/chair/comfy/beige{
+ dir = 8
},
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"mqb" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
@@ -25499,6 +25633,15 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"mqd" = (
+/obj/item/paper/fluff{
+ info = "Crystal has been moved to a lockbox in secure storage until further notice.";
+ name = "Note from an engineer";
+ pixel_x = -5;
+ pixel_y = 3
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter)
"mqm" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -25591,7 +25734,7 @@
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
"mtP" = (
-/turf/open/floor/carpet,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"mtY" = (
/obj/structure/cable{
@@ -25846,17 +25989,28 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
+"mEH" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"mEI" = (
/obj/structure/table/reinforced,
/obj/machinery/door/window/eastright{
base_state = "left";
- dir = 2;
+ dir = 1;
icon_state = "left";
name = "Chemistry Desk";
req_access_txt = "33"
},
/obj/machinery/door/firedoor/border_only,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/door/window/eastright{
+ dir = 2;
+ name = "Chemistry Desk"
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"mFg" = (
@@ -25917,6 +26071,16 @@
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/icemoon/surface/outdoors)
+"mHm" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"mHT" = (
/obj/structure/closet/l3closet/scientist,
/obj/item/extinguisher,
@@ -26527,7 +26691,7 @@
},
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"mWD" = (
/obj/structure/cable{
@@ -26618,6 +26782,10 @@
/obj/machinery/door/firedoor/border_only{
dir = 1
},
+/obj/machinery/door/window/eastright{
+ dir = 1;
+ name = "Chemistry Desk"
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"mZk" = (
@@ -26635,7 +26803,11 @@
name = "Station Intercom (General)";
pixel_x = 30
},
-/turf/open/floor/carpet,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"nbr" = (
/obj/structure/cable{
@@ -26975,13 +27147,13 @@
/turf/open/floor/plating,
/area/security/checkpoint/medical)
"nlF" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Holodeck Door"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel/white,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"nlM" = (
/obj/machinery/light{
@@ -26994,19 +27166,6 @@
/obj/machinery/rnd/production/techfab/department/cargo,
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
-"nmL" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/fitness)
"nmM" = (
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -27147,7 +27306,6 @@
/area/storage/auxiliary)
"nrY" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/door/airlock/external,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
@@ -27155,7 +27313,8 @@
name = "south facing firelock"
},
/obj/structure/fans/tiny,
-/turf/open/floor/carpet,
+/obj/machinery/door/airlock/external/glass,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"nsf" = (
/obj/machinery/door/firedoor,
@@ -27244,6 +27403,12 @@
dir = 4;
network = list("aicore")
},
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/circuit/off,
/area/ai_monitored/turret_protected/ai)
"ntX" = (
@@ -27258,7 +27423,7 @@
},
/obj/machinery/power/tracker,
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"nuJ" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -27362,7 +27527,7 @@
icon_state = "0-2"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"nyT" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
@@ -27450,7 +27615,7 @@
pixel_x = -24;
specialfunctions = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"nBk" = (
/obj/structure/cable{
@@ -27572,16 +27737,26 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"nDd" = (
-/obj/structure/cable{
- icon_state = "4-8"
+/obj/structure/closet/crate/engineering{
+ name = "Antimatter Engine Crate"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/visible,
-/obj/machinery/light/floor,
-/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/obj/machinery/power/am_control_unit,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_shielding_container,
+/obj/item/am_containment,
+/obj/item/am_containment,
+/turf/open/floor/carpet/orange,
+/area/engine/secure_construction)
"nDl" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -27597,8 +27772,21 @@
icon_state = "0-8"
},
/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors)
+"nDN" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"nEa" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -27640,6 +27828,16 @@
},
/turf/open/floor/carpet,
/area/hallway/primary/port)
+"nEH" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"nEI" = (
/obj/structure/dresser,
/obj/machinery/camera{
@@ -27792,6 +27990,13 @@
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
+"nJB" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"nJI" = (
/obj/structure/table/reinforced,
/obj/machinery/door/window/southleft{
@@ -27921,10 +28126,15 @@
/area/hallway/primary/port)
"nOY" = (
/obj/machinery/camera{
- c_tag = "Dorms West";
+ c_tag = "Dorms Northeast";
dir = 8
},
-/turf/open/floor/carpet,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"nPd" = (
/obj/structure/cable{
@@ -28021,6 +28231,13 @@
/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/closed/wall/r_wall,
/area/science/mixing)
+"nRA" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/chair/comfy/beige,
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"nRS" = (
/obj/structure/disposalpipe/segment{
dir = 10
@@ -28184,6 +28401,12 @@
},
/turf/open/floor/plasteel/dark,
/area/security/main)
+"nYd" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"nYv" = (
/obj/structure/chair{
dir = 8
@@ -28639,7 +28862,7 @@
dir = 4;
name = "east facing firelock"
},
-/turf/open/floor/plasteel,
+/turf/open/floor/wood,
/area/crew_quarters/fitness)
"ojs" = (
/obj/structure/cable{
@@ -28824,6 +29047,18 @@
},
/turf/open/floor/engine/n2,
/area/engine/atmos)
+"onO" = (
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/ai_monitored/turret_protected/ai";
+ dir = 4;
+ name = "AI Chamber APC";
+ pixel_x = 24
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/circuit/off,
+/area/ai_monitored/turret_protected/ai)
"onY" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/green/visible{
@@ -28860,45 +29095,8 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"ooR" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/effect/landmark/start/ai,
-/obj/item/radio/intercom{
- freerange = 1;
- frequency = 1447;
- name = "Private Channel";
- pixel_x = -25;
- pixel_y = -10
- },
-/obj/item/radio/intercom{
- freerange = 1;
- listening = 0;
- name = "Custom Channel";
- pixel_y = 27
- },
-/obj/item/radio/intercom{
- freerange = 1;
- name = "Common Channel";
- pixel_x = -25
- },
-/obj/machinery/button/door{
- id = "AI Chamber entrance shutters";
- name = "AI Chamber entrance shutters control";
- pixel_x = 8;
- pixel_y = 23;
- req_access_txt = "16"
- },
-/obj/machinery/door/window{
- base_state = "rightsecure";
- dir = 4;
- icon_state = "rightsecure";
- name = "Primary AI Core Access";
- obj_integrity = 300;
- req_access_txt = "16"
- },
-/turf/open/floor/circuit,
-/area/ai_monitored/turret_protected/ai)
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/unexplored/rivers/no_monsters)
"opq" = (
/obj/machinery/computer/rdservercontrol{
dir = 1
@@ -28917,11 +29115,8 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
-/obj/machinery/door/airlock/external{
- name = "External Access";
- req_access_txt = "13"
- },
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plasteel,
/area/maintenance/aft)
"opY" = (
@@ -28995,6 +29190,10 @@
},
/turf/open/floor/plasteel,
/area/security/checkpoint/medical)
+"ord" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
"orN" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -29253,10 +29452,7 @@
/area/engine/engineering)
"oBj" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/door/airlock/external{
- name = "External Access";
- req_access_txt = "13"
- },
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plasteel,
/area/maintenance/aft)
"oBl" = (
@@ -29281,7 +29477,7 @@
c_tag = "Dorms South";
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"oBF" = (
/obj/structure/cable{
@@ -29401,6 +29597,12 @@
},
/turf/open/floor/wood,
/area/hallway/primary/central)
+"oGZ" = (
+/obj/structure/fluff/railing{
+ dir = 6
+ },
+/turf/open/transparent/openspace/icemoon,
+/area/engine/atmospherics_engine)
"oHl" = (
/obj/structure/closet/crate/secure/engineering{
name = "TEG crate"
@@ -29601,15 +29803,13 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"oME" = (
-/obj/structure/cable{
- icon_state = "4-8"
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -24
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/obj/machinery/vending/snack/random,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"oNv" = (
/obj/structure/table/wood,
/turf/open/floor/wood,
@@ -29679,17 +29879,27 @@
/obj/effect/landmark/start/head_of_personnel,
/turf/open/floor/carpet,
/area/crew_quarters/heads/hop)
+"oPk" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"oPP" = (
/obj/structure/table/reinforced,
/obj/machinery/door/window/eastright{
base_state = "left";
- dir = 2;
+ dir = 1;
icon_state = "left";
name = "Chemistry Desk";
req_access_txt = "33"
},
/obj/machinery/door/firedoor/border_only,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/door/window/eastright{
+ dir = 2;
+ name = "Chemistry Desk"
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"oPS" = (
@@ -29798,6 +30008,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/engine/storage)
+"oUT" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"oUV" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -29994,17 +30210,7 @@
/turf/open/floor/plasteel,
/area/storage/primary)
"pbf" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
/turf/open/floor/plasteel,
@@ -30085,13 +30291,11 @@
/turf/open/floor/carpet,
/area/hallway/secondary/exit/departure_lounge)
"pce" = (
-/obj/machinery/door/airlock/external{
- name = "Auxiliary Airlock"
- },
/obj/machinery/door/firedoor/border_only{
name = "south facing firelock"
},
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/hallway/secondary/exit/departure_lounge)
"pcl" = (
@@ -30233,23 +30437,11 @@
dir = 4
},
/obj/machinery/disposal/bin,
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"pgk" = (
-/obj/structure/window{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/plasteel,
+/obj/structure/table,
+/turf/open/transparent/glass/reinforced,
/area/crew_quarters/fitness)
"pgp" = (
/turf/closed/wall,
@@ -30419,7 +30611,7 @@
icon_state = "2-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"pkJ" = (
/turf/open/floor/wood{
icon_state = "wood-broken6"
@@ -30553,6 +30745,13 @@
"pqj" = (
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
+"pqm" = (
+/obj/machinery/camera{
+ c_tag = "Dorms Northwest";
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"pqs" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 4
@@ -30692,7 +30891,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"ptv" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1,
@@ -30705,6 +30904,16 @@
},
/turf/open/floor/engine,
/area/engine/atmospherics_engine)
+"ptH" = (
+/obj/machinery/computer/holodeck{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"ptU" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -30718,7 +30927,7 @@
dir = 4
},
/obj/machinery/door/poddoor/preopen{
- id = "xenobio2";
+ id = "xenobiospec";
name = "containment blast door"
},
/turf/open/floor/engine,
@@ -30887,6 +31096,15 @@
},
/turf/open/floor/circuit/telecomms/mainframe,
/area/tcommsat/server)
+"pvP" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"pvV" = (
/obj/machinery/airalarm{
pixel_y = 26
@@ -30923,6 +31141,9 @@
/area/engine/storage)
"pwE" = (
/obj/effect/landmark/start/cyborg,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat/service)
"pwL" = (
@@ -31078,14 +31299,12 @@
/turf/open/floor/plasteel/freezer,
/area/security/prison)
"pze" = (
-/obj/machinery/door/airlock/external{
- name = "Auxiliary Airlock"
- },
/obj/machinery/door/firedoor/border_only{
dir = 1;
name = "north facing firelock"
},
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/quartermaster/miningdock)
"pzk" = (
@@ -31176,6 +31395,11 @@
},
/turf/open/floor/wood,
/area/crew_quarters/heads/captain)
+"pDg" = (
+/obj/structure/table,
+/obj/item/paicard,
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"pDh" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -31346,8 +31570,12 @@
/turf/open/floor/plasteel,
/area/storage/primary)
"pIf" = (
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/obj/machinery/vending/cigarette,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
+"pIs" = (
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/aft)
"pIz" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -31376,6 +31604,18 @@
},
/turf/open/floor/plasteel/dark,
/area/maintenance/department/bridge)
+"pJm" = (
+/obj/structure/table/optable{
+ name = "Robotics Operating Table"
+ },
+/obj/item/tank/internals/anesthetic,
+/obj/item/clothing/mask/breath,
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_y = 29
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"pJS" = (
/turf/closed/wall,
/area/quartermaster/storage)
@@ -31651,6 +31891,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"pQg" = (
@@ -31806,7 +32047,6 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/door/airlock/external,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
@@ -31814,7 +32054,8 @@
name = "south facing firelock"
},
/obj/structure/fans/tiny,
-/turf/open/floor/carpet,
+/obj/machinery/door/airlock/external/glass,
+/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"pXl" = (
/obj/machinery/computer/cloning{
@@ -32022,7 +32263,7 @@
icon_state = "4-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/fore)
"qfT" = (
/obj/machinery/holopad,
/turf/open/floor/carpet,
@@ -32103,6 +32344,10 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
+"qim" = (
+/obj/machinery/light,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"qip" = (
/obj/structure/disposalpipe/trunk{
dir = 8
@@ -32147,6 +32392,18 @@
},
/turf/open/floor/plasteel,
/area/storage/primary)
+"qjF" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"qkg" = (
/obj/effect/turf_decal/tile/green{
dir = 4
@@ -32238,23 +32495,7 @@
/turf/closed/wall,
/area/quartermaster/miningdock)
"qnx" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/plasteel,
+/turf/open/transparent/glass/reinforced,
/area/crew_quarters/fitness)
"qnC" = (
/obj/structure/cable,
@@ -32338,7 +32579,7 @@
},
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"qqo" = (
/obj/machinery/light{
dir = 4
@@ -32704,7 +32945,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"qAI" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -32731,6 +32972,13 @@
},
/turf/open/floor/carpet,
/area/hallway/primary/central)
+"qBl" = (
+/obj/machinery/mineral/ore_redemption{
+ input_dir = 4;
+ output_dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/miningdock)
"qBu" = (
/obj/machinery/atmospherics/components/binary/pump,
/turf/open/floor/plasteel,
@@ -32867,7 +33115,7 @@
name = "Station Intercom (General)";
pixel_y = 29
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"qFZ" = (
/obj/structure/closet/emcloset,
@@ -32948,12 +33196,19 @@
/area/hallway/primary/fore)
"qHC" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/pipe/layer_manifold,
/turf/open/floor/plating,
/area/engine/atmos)
"qHL" = (
-/obj/structure/chair/comfy/beige{
- dir = 1
+/obj/machinery/door/airlock/public/glass{
+ name = "Dormitory"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4;
+ name = "east facing firelock"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
@@ -32988,13 +33243,10 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/chair/stool{
- pixel_y = 8
- },
/obj/machinery/camera{
- c_tag = "Dorms Central"
+ c_tag = "Dorms East"
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"qIR" = (
/obj/machinery/button/massdriver{
@@ -33023,6 +33275,18 @@
/obj/effect/turf_decal/tile/green,
/turf/open/floor/plasteel/white,
/area/medical/virology)
+"qIW" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"qJs" = (
/obj/structure/chair,
/obj/effect/turf_decal/stripes/line{
@@ -33076,9 +33340,6 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"qKA" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -33086,6 +33347,9 @@
dir = 8
},
/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"qKP" = (
@@ -33184,6 +33448,14 @@
},
/turf/open/floor/plasteel/freezer,
/area/medical/surgery)
+"qOJ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"qOL" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/carpet,
@@ -33337,6 +33609,12 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"qSF" = (
+/obj/structure/chair/comfy/beige{
+ dir = 1
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"qSJ" = (
/obj/machinery/airalarm{
pixel_y = 28
@@ -33527,6 +33805,12 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
+"qZb" = (
+/obj/structure/fluff/railing{
+ dir = 10
+ },
+/turf/open/transparent/openspace/icemoon,
+/area/engine/atmospherics_engine)
"qZO" = (
/obj/machinery/atmospherics/pipe/simple/supply/visible{
dir = 4
@@ -33566,14 +33850,20 @@
/turf/closed/wall/r_wall,
/area/maintenance/starboard)
"raM" = (
-/obj/machinery/door/airlock/external,
-/obj/machinery/door/firedoor/border_only{
- dir = 8;
- name = "west facing firelock"
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "holoprivacy";
+ name = "Holodeck Shutters"
},
-/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/crew_quarters/dorms)
+"rbb" = (
+/obj/machinery/space_heater,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
"rbg" = (
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 8;
@@ -34095,7 +34385,7 @@
name = "Starboard Solar Array"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/aft)
"roS" = (
/obj/machinery/computer/card/minor/cmo{
dir = 4
@@ -34327,9 +34617,9 @@
/turf/open/floor/engine,
/area/engine/engineering)
"ruo" = (
-/obj/machinery/atmospherics/pipe/simple/supply/visible,
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
+/obj/machinery/vending/cola/random,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"ruD" = (
/obj/machinery/airalarm{
dir = 1;
@@ -34412,7 +34702,7 @@
name = "Port Solar Array"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"rxJ" = (
/obj/item/stack/cable_coil/random,
/turf/open/floor/plating/asteroid/snow/icemoon,
@@ -34547,7 +34837,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/obj/machinery/portable_atmospherics/canister,
/turf/open/floor/plasteel,
/area/science/mixing)
"rDE" = (
@@ -34570,6 +34859,18 @@
},
/turf/open/floor/plating,
/area/maintenance/department/electrical)
+"rEF" = (
+/obj/structure/bed,
+/obj/effect/spawner/lootdrop/bedsheet,
+/obj/machinery/button/door{
+ id = "Dorm6";
+ name = "Dorm Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_x = 25;
+ specialfunctions = 4
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"rFk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/freezer,
@@ -34705,6 +35006,12 @@
},
/turf/open/floor/circuit/off,
/area/ai_monitored/turret_protected/ai)
+"rKC" = (
+/obj/machinery/camera{
+ c_tag = "Dorms West"
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"rLb" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -34804,28 +35111,16 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"rPU" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "robo1"
+/obj/machinery/light{
+ dir = 8
},
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/glass{
- amount = 20;
- pixel_x = -3;
- pixel_y = 6
- },
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"rQs" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/hallway/primary/fore)
"rQu" = (
-/obj/structure/cable{
- icon_state = "1-8"
- },
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
@@ -34865,9 +35160,27 @@
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"rRk" = (
-/obj/structure/chair/comfy/beige,
+/obj/machinery/door/airlock/public/glass{
+ name = "Dormitory"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4;
+ name = "east facing firelock"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
+"rRQ" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
"rRV" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -34936,6 +35249,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"rTW" = (
@@ -35052,9 +35366,7 @@
/turf/open/floor/wood,
/area/crew_quarters/bar)
"rYc" = (
-/obj/machinery/computer/arcade/battle{
- dir = 8
- },
+/obj/machinery/vending/cigarette,
/turf/open/floor/wood,
/area/crew_quarters/bar)
"rYi" = (
@@ -35100,6 +35412,13 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"sae" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"sat" = (
/obj/machinery/light,
/turf/open/floor/plasteel/white,
@@ -35184,6 +35503,12 @@
/turf/open/floor/plasteel,
/area/maintenance/aft)
"scF" = (
+/obj/machinery/turretid{
+ icon_state = "control_stun";
+ name = "AI Chamber turret control";
+ pixel_x = 24;
+ pixel_y = -3
+ },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -35674,6 +35999,16 @@
},
/turf/open/floor/engine/n2o,
/area/engine/atmos)
+"stP" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"stW" = (
/obj/structure/table/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -35688,7 +36023,7 @@
"sub" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"sup" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -35751,14 +36086,8 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"swQ" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"sxa" = (
/obj/machinery/requests_console{
department = "Medbay";
@@ -35963,20 +36292,16 @@
/turf/closed/wall/r_wall,
/area/crew_quarters/heads/captain)
"sFw" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 1
- },
/obj/machinery/light,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"sGC" = (
@@ -36059,7 +36384,7 @@
/turf/open/floor/engine,
/area/engine/engineering)
"sIT" = (
-/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/recharge_station,
/turf/open/floor/pod/dark,
/area/medical/paramedic)
"sJs" = (
@@ -36091,9 +36416,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/entry)
"sKN" = (
-/obj/structure/window/plasma/reinforced{
- dir = 8
- },
/obj/machinery/rnd/production/circuit_imprinter,
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -36101,6 +36423,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"sLg" = (
@@ -36152,6 +36477,12 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
+"sLF" = (
+/obj/structure/sign/mining{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock)
"sLN" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
@@ -36216,6 +36547,32 @@
name = "Robotics Lab APC";
pixel_x = 25
},
+/obj/structure/table,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = -2;
+ pixel_y = -1
+ },
+/obj/item/storage/toolbox/electrical{
+ pixel_x = 1;
+ pixel_y = 6
+ },
+/obj/item/clothing/head/welding{
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/item/clothing/head/welding{
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/item/clothing/glasses/welding,
+/obj/item/clothing/glasses/welding,
+/obj/item/multitool{
+ pixel_x = 3
+ },
+/obj/item/multitool{
+ pixel_x = 3
+ },
+/obj/item/storage/belt/utility,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"sOi" = (
@@ -36310,6 +36667,15 @@
},
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors)
+"sQk" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"sRh" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -36396,8 +36762,24 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"sTq" = (
+/obj/structure/fluff/railing{
+ dir = 1
+ },
/turf/open/transparent/openspace/icemoon,
/area/engine/atmospherics_engine)
+"sTt" = (
+/obj/structure/table,
+/obj/item/paper_bin{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/pen/fourcolor,
+/obj/item/paper_bin/bundlenatural{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"sTz" = (
/obj/effect/turf_decal/bot_white,
/obj/structure/window/reinforced{
@@ -36884,22 +37266,9 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"tgd" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/window{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"tht" = (
@@ -37181,7 +37550,7 @@
icon_state = "1-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"tod" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -37288,6 +37657,7 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"tqp" = (
@@ -37357,7 +37727,7 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"ttl" = (
/obj/structure/cable{
@@ -37555,6 +37925,18 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
+"tzb" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/turf/open/floor/circuit/off,
+/area/ai_monitored/turret_protected/ai)
"tzB" = (
/obj/machinery/atmospherics/pipe/simple{
dir = 6
@@ -37749,6 +38131,12 @@
/obj/machinery/atmospherics/components/binary/pump/on,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"tEC" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/aft)
"tEQ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -37776,11 +38164,12 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"tFu" = (
-/obj/structure/cable{
- icon_state = "2-4"
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_x = 30
},
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/ai)
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"tFN" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
@@ -37816,11 +38205,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock"
- },
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/carpet,
/area/hallway/primary/port)
"tHr" = (
@@ -37894,9 +38281,12 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"tJi" = (
-/obj/machinery/vending/wardrobe/robo_wardrobe,
-/turf/open/floor/plasteel/white,
-/area/science/robotics/lab)
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"tJA" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -37966,6 +38356,16 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
+"tLb" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"tLA" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -38109,17 +38509,14 @@
/turf/open/floor/plasteel/freezer,
/area/medical/surgery)
"tOz" = (
-/obj/machinery/light{
- dir = 1
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -24
},
-/obj/machinery/door/airlock/public/glass{
- name = "Holodeck Door"
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
},
-/obj/structure/fans/tiny,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"tOE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -38140,10 +38537,12 @@
name = "Fitness Room APC";
pixel_y = -24
},
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"tPB" = (
@@ -38231,18 +38630,11 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/department/bridge)
"tRC" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/structure/window{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
@@ -38270,11 +38662,13 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"tSd" = (
-/obj/structure/cable{
- icon_state = "2-8"
+/obj/item/radio/intercom{
+ dir = 4;
+ name = "Station Intercom (General)";
+ pixel_y = 29
},
-/turf/closed/wall/r_wall,
-/area/ai_monitored/turret_protected/ai)
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"tSB" = (
/obj/machinery/atmospherics/pipe/simple{
dir = 4
@@ -38350,6 +38744,12 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"tUq" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"tUF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38409,6 +38809,17 @@
},
/turf/open/floor/plasteel,
/area/science/robotics/mechbay)
+"tWs" = (
+/obj/machinery/door/airlock/external/glass,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only{
+ name = "south facing firelock"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
"tXn" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -38431,7 +38842,7 @@
pixel_x = -24;
specialfunctions = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"tYT" = (
/obj/structure/cable{
@@ -38720,7 +39131,7 @@
/area/engine/atmos)
"ugk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"uha" = (
/obj/structure/cable{
@@ -38803,7 +39214,7 @@
/obj/machinery/door/firedoor/border_only{
name = "south facing firelock"
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"ukJ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -38814,6 +39225,10 @@
},
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/kitchen)
+"ule" = (
+/obj/structure/sign/departments/botany,
+/turf/closed/wall,
+/area/hydroponics)
"ulh" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -38862,14 +39277,14 @@
/turf/open/floor/plating,
/area/crew_quarters/heads/hop)
"umC" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"umD" = (
@@ -38892,7 +39307,7 @@
dir = 4
},
/obj/structure/closet/wardrobe/white,
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"unA" = (
/obj/effect/spawner/structure/window/reinforced,
@@ -39031,7 +39446,7 @@
/obj/structure/cable,
/obj/machinery/power/smes,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"utS" = (
/obj/structure/table,
/obj/item/clothing/suit/apron/surgical,
@@ -39046,11 +39461,18 @@
},
/turf/open/floor/plasteel/freezer,
/area/medical/surgery)
+"utY" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"uup" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"uut" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
@@ -39105,13 +39527,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
@@ -39194,6 +39612,12 @@
},
/turf/open/floor/plating,
/area/maintenance/solars/starboard/aft)
+"uyV" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/port/aft)
"uyW" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -39384,13 +39808,13 @@
name = "Dormitory APC";
pixel_y = 24
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"uFq" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
-/obj/machinery/door/airlock/external{
+/obj/machinery/door/airlock/external/glass{
name = "Arrivals Airlock"
},
/turf/open/floor/plating,
@@ -39566,12 +39990,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/window/plasma/reinforced{
- dir = 4
- },
-/obj/structure/window/plasma/reinforced{
- dir = 1
- },
/obj/structure/table,
/obj/item/stack/sheet/glass/fifty,
/obj/item/stack/sheet/glass/fifty,
@@ -39582,6 +40000,12 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"uKy" = (
@@ -39769,12 +40193,14 @@
/obj/structure/cable,
/obj/machinery/power/tracker,
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/aft)
"uRg" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/closet/bombcloset,
-/turf/open/floor/plasteel/white,
-/area/science/mixing)
+/obj/machinery/door/airlock{
+ id_tag = "Dorm7";
+ name = "Room Six"
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"uRi" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -39843,8 +40269,14 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"uUi" = (
-/obj/machinery/computer/operating,
-/turf/open/floor/plasteel/white,
+/obj/machinery/mecha_part_fabricator,
+/obj/item/stack/sheet/glass{
+ amount = 20;
+ pixel_x = -3;
+ pixel_y = 6
+ },
+/obj/item/stack/sheet/metal/fifty,
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"uUk" = (
/obj/structure/disposalpipe/segment{
@@ -39937,6 +40369,7 @@
"uWn" = (
/obj/structure/table,
/obj/item/toy/cards/deck,
+/obj/item/storage/crayons,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/fitness/recreation)
"uWo" = (
@@ -39968,6 +40401,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"uWW" = (
@@ -40246,11 +40680,9 @@
/turf/open/floor/circuit,
/area/science/robotics/mechbay)
"vdW" = (
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/turf/closed/wall/r_wall,
-/area/ai_monitored/turret_protected/ai_upload)
+/obj/structure/table/wood,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"vem" = (
/obj/structure/table/wood,
/obj/machinery/keycard_auth{
@@ -40268,7 +40700,7 @@
codes_txt = "patrol;next_patrol=CHW";
location = "Dorm"
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"veF" = (
/obj/structure/table/wood,
@@ -40407,7 +40839,7 @@
/obj/machinery/light{
dir = 1
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"vhf" = (
/obj/effect/spawner/structure/window/reinforced,
@@ -40485,6 +40917,11 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
+"vko" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/light/floor,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors)
"vkw" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -40608,13 +41045,10 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"vow" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Holodeck Door"
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
},
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"voD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -40703,7 +41137,7 @@
pixel_x = -24;
specialfunctions = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"vqZ" = (
/obj/structure/window/plasma/reinforced{
@@ -40736,7 +41170,7 @@
"vrg" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o,
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"vrx" = (
/turf/closed/wall/r_wall,
/area/crew_quarters/dorms)
@@ -40812,7 +41246,7 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"vuk" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
@@ -41015,11 +41449,17 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"vzS" = (
-/obj/machinery/atmospherics/pipe/simple/supply/visible{
- dir = 5
+/obj/structure/bed,
+/obj/effect/spawner/lootdrop/bedsheet,
+/obj/machinery/button/door{
+ id = "Dorm7";
+ name = "Dorm Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_x = 25;
+ specialfunctions = 4
},
-/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"vAh" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -41193,12 +41633,12 @@
icon_state = "4-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/aft)
"vDI" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 6
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"vEd" = (
/obj/effect/landmark/event_spawn,
@@ -41208,7 +41648,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"vEi" = (
/obj/structure/cable{
@@ -41295,6 +41735,7 @@
c_tag = "Northwest Paramedic Post";
network = list("ss13","medbay")
},
+/obj/item/wrench/medical,
/turf/open/floor/plasteel/white,
/area/medical/paramedic)
"vFe" = (
@@ -41306,6 +41747,18 @@
"vFM" = (
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
+"vFT" = (
+/obj/structure/bed,
+/obj/effect/spawner/lootdrop/bedsheet,
+/obj/machinery/button/door{
+ id = "Dorm5";
+ name = "Dorm Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_x = 25;
+ specialfunctions = 4
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms)
"vGi" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -41319,6 +41772,8 @@
/area/medical/virology)
"vGn" = (
/obj/machinery/light,
+/obj/vehicle/ridden/atv/snowmobile,
+/obj/item/key,
/turf/open/floor/pod/dark,
/area/medical/paramedic)
"vHU" = (
@@ -41430,17 +41885,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -6;
- pixel_y = 4
- },
-/obj/item/pen/fourcolor,
-/obj/item/paper_bin/bundlenatural{
- pixel_x = 6;
- pixel_y = 4
- },
-/turf/open/floor/carpet,
+/turf/open/floor/wood,
/area/crew_quarters/dorms)
"vKO" = (
/obj/effect/spawner/structure/window/reinforced,
@@ -41457,16 +41902,15 @@
/turf/open/floor/plating,
/area/bridge)
"vKP" = (
-/obj/structure/weightmachine/stacklifter,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/obj/machinery/computer/security/telescreen/entertainment{
pixel_y = -32
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"vKT" = (
@@ -41477,7 +41921,7 @@
dir = 1
},
/turf/open/floor/plating,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"vLa" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -41601,6 +42045,10 @@
pixel_x = 3;
pixel_y = 3
},
+/obj/item/reagent_containers/glass/beaker/cryoxadone{
+ pixel_x = 5;
+ pixel_y = 9
+ },
/turf/open/floor/plasteel/white,
/area/medical/paramedic)
"vNY" = (
@@ -41669,15 +42117,15 @@
dir = 8
},
/area/chapel/main)
-"vQk" = (
-/obj/machinery/computer/holodeck{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
-/area/crew_quarters/dorms)
"vQo" = (
/turf/closed/wall/r_wall,
/area/engine/supermatter)
+"vQz" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -27
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"vQW" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -41718,13 +42166,11 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 4;
sortType = 26
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"vSg" = (
@@ -41875,6 +42321,22 @@
},
/turf/open/floor/plating,
/area/maintenance/department/electrical)
+"vVJ" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Dormitory"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8;
+ name = "west facing firelock"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"vVN" = (
/obj/effect/turf_decal/bot,
/obj/structure/window/reinforced{
@@ -41887,7 +42349,7 @@
/area/crew_quarters/fitness)
"vVZ" = (
/obj/structure/closet/secure_closet/personal/cabinet,
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"vWg" = (
/obj/effect/turf_decal/delivery,
@@ -42232,11 +42694,11 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"weS" = (
-/obj/machinery/door/airlock/external,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/hallway/primary/aft)
"wfN" = (
@@ -42262,7 +42724,7 @@
/obj/machinery/door/firedoor/border_only{
name = "south facing firelock"
},
-/turf/open/floor/carpet,
+/turf/open/floor/carpet/blue,
/area/crew_quarters/dorms)
"wgu" = (
/obj/machinery/atmospherics/pipe/simple/supply/visible{
@@ -42281,6 +42743,20 @@
/obj/structure/chair/stool/bar,
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"wgM" = (
+/obj/structure/sink{
+ dir = 8;
+ pixel_x = -12;
+ pixel_y = 2
+ },
+/obj/structure/mirror{
+ pixel_x = -28
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/dorms)
"wha" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o{
dir = 1
@@ -42733,7 +43209,7 @@
name = "Port Auxiliary Solar Array"
},
/turf/open/floor/plating/asteroid/snow/ice/icemoon/solarpanel,
-/area/icemoon/surface/outdoors)
+/area/solar/starboard/fore)
"wuQ" = (
/obj/structure/table,
/obj/machinery/plantgenes{
@@ -42925,7 +43401,7 @@
req_access_txt = "12;24"
},
/turf/open/floor/plasteel,
-/area/storage/atmos)
+/area/maintenance/department/electrical)
"wEm" = (
/obj/structure/barricade/wooden{
max_integrity = 10;
@@ -43174,6 +43650,12 @@
/obj/machinery/chem_master/condimaster,
/turf/open/floor/plasteel,
/area/hydroponics)
+"wMH" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/solar/starboard/aft)
"wMJ" = (
/obj/structure/closet/secure_closet/bar{
req_access_txt = "25"
@@ -43229,7 +43711,8 @@
icon_state = "4-8"
},
/obj/effect/landmark/event_spawn,
-/turf/open/floor/plasteel/white,
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"wPT" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
@@ -43331,11 +43814,9 @@
/turf/open/floor/plasteel/dark,
/area/security/prison)
"wSc" = (
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock"
- },
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass,
/turf/open/floor/carpet,
/area/hallway/primary/port)
"wSy" = (
@@ -43562,6 +44043,7 @@
/obj/machinery/light{
dir = 1
},
+/obj/machinery/vending/cigarette,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"xaS" = (
@@ -43613,22 +44095,10 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"xcL" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/window{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"xcY" = (
@@ -43658,6 +44128,14 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"xdr" = (
+/obj/item/storage/backpack/duffelbag/med/surgery,
+/obj/structure/table,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 30
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
"xdD" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
dir = 4
@@ -43666,9 +44144,6 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"xeI" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "robo1"
- },
/obj/structure/disposalpipe/segment{
dir = 9
},
@@ -43680,8 +44155,13 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"xfs" = (
-/obj/structure/table,
-/obj/item/paicard,
+/obj/machinery/door/airlock/public/glass{
+ name = "Dormitory"
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4;
+ name = "east facing firelock"
+ },
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"xfD" = (
@@ -43819,10 +44299,10 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock"
- },
/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external/glass{
+ name = "Arrivals Airlock"
+ },
/turf/open/floor/plating,
/area/hallway/secondary/exit/departure_lounge)
"xka" = (
@@ -43885,6 +44365,7 @@
/obj/machinery/light{
dir = 4
},
+/obj/machinery/vending/wardrobe/robo_wardrobe,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"xmr" = (
@@ -44092,7 +44573,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/open/floor/plasteel/white,
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"xtV" = (
/obj/structure/cable{
@@ -44104,6 +44585,7 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
+/obj/machinery/light/floor,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors)
"xui" = (
@@ -44242,11 +44724,8 @@
/turf/open/floor/engine/plasma,
/area/engine/atmos)
"xAv" = (
-/obj/machinery/atmospherics/pipe/simple/supply/visible{
- dir = 6
- },
-/turf/open/floor/plating/asteroid/snow/icemoon,
-/area/icemoon/surface/outdoors)
+/turf/open/floor/carpet,
+/area/crew_quarters/dorms)
"xBi" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -44857,6 +45336,7 @@
/obj/structure/disposalpipe/trunk{
dir = 4
},
+/obj/machinery/disposal/bin,
/turf/open/floor/wood,
/area/crew_quarters/bar)
"xUD" = (
@@ -44919,6 +45399,10 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"xWI" = (
+/obj/machinery/vending/cigarette,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"xXS" = (
/obj/machinery/rnd/server,
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
@@ -45156,7 +45640,7 @@
icon_state = "2-8"
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
-/area/icemoon/surface/outdoors)
+/area/solar/port/aft)
"ygB" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -45218,6 +45702,9 @@
icon_state = "1-8"
},
/obj/effect/landmark/start/cyborg,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat/service)
"yiZ" = (
@@ -51538,17 +52025,17 @@ qrR
qrR
bTC
avT
-lbu
-aQK
-wuC
+aPE
+fne
+iSB
avT
-lbu
-aQK
-wuC
+aPE
+fne
+iSB
avT
-lbu
-aQK
-wuC
+aPE
+fne
+iSB
avT
wuf
yhx
@@ -51795,17 +52282,17 @@ qrR
qrR
bTC
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
avT
avT
@@ -51853,7 +52340,7 @@ ydp
ydp
buI
hnP
-swQ
+phs
ghq
ghq
ghq
@@ -52052,17 +52539,17 @@ qrR
qrR
bTC
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
avT
avT
@@ -52110,14 +52597,14 @@ ydp
ydp
buI
buJ
-cXI
+ghq
ghq
hfZ
shR
ntV
jso
-shR
-shR
+tzb
+iru
hfZ
ghq
ghq
@@ -52309,17 +52796,17 @@ avT
avT
avT
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
avT
yhx
@@ -52367,14 +52854,14 @@ ydp
bTC
buI
buJ
-cXI
+ghq
ghq
shR
shR
-shR
+onO
liL
scF
-hse
+lfD
shR
ghq
ghq
@@ -52566,17 +53053,17 @@ wuf
wuf
avT
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
-lbu
+aPE
qfJ
-wuC
+iSB
avT
wBg
avT
@@ -52585,12 +53072,12 @@ vrd
vrd
vrd
vrd
+nbC
+nbC
+nbC
+nbC
yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
yhx
yhx
yhx
@@ -52624,12 +53111,12 @@ ydp
buI
fJZ
phs
-cXI
+ghq
ghq
shR
shR
cpe
-cpe
+cUs
cpe
xIJ
shR
@@ -52824,15 +53311,15 @@ avT
avT
avT
avT
-hGK
+guI
avT
avT
avT
-hGK
+guI
avT
avT
avT
-hGK
+guI
avT
aNg
chZ
@@ -52847,12 +53334,12 @@ avT
avT
avT
avT
+nbC
+nbC
+nbC
+nbC
yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
ydp
ydp
ydp
@@ -52881,7 +53368,7 @@ ydp
buI
lGy
ghq
-cXI
+ghq
aJC
shR
qVf
@@ -53077,21 +53564,21 @@ yhx
yhx
wuf
avT
-nuu
-sXy
-sXy
-fNh
-xUL
-nyq
-sXy
-fNh
-xUL
-nyq
-sXy
-fNh
-xUL
-nyq
-sXy
+aKa
+aPC
+aPC
+cXI
+hrS
+jvV
+aPC
+cXI
+hrS
+jvV
+aPC
+cXI
+hrS
+jvV
+aPC
eWw
tnL
iaq
@@ -53138,12 +53625,12 @@ avT
buI
gJx
ghq
-cXI
+ghq
irN
irr
xIJ
cpe
-ooR
+ghq
cpe
xIJ
irr
@@ -53338,15 +53825,15 @@ avT
avT
avT
avT
-clq
+hse
avT
avT
avT
-clq
+hse
avT
avT
avT
-clq
+hse
avT
aNg
chZ
@@ -53395,9 +53882,9 @@ avT
buI
phs
ghq
-cXI
+ghq
+irr
irr
-tFu
hmC
rBA
dfy
@@ -53594,17 +54081,17 @@ fBG
wuf
avT
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
ajl
avT
@@ -53613,10 +54100,10 @@ vrd
vrd
vrd
vrd
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
bBh
avT
avT
@@ -53643,7 +54130,7 @@ avT
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -53652,8 +54139,8 @@ ayq
ghq
ghq
ghq
-tSd
-lQp
+ghq
+vmr
rQu
rKd
gHG
@@ -53851,17 +54338,17 @@ qrR
qrR
avT
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
avT
avT
@@ -53873,7 +54360,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
rUq
sXy
sXy
@@ -54108,17 +54595,17 @@ qrR
qrR
wuf
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
avT
avT
@@ -54130,13 +54617,13 @@ yhx
yhx
yhx
yhx
+nbC
+nbC
+nbC
+nbC
yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
avT
avT
avT
@@ -54152,7 +54639,7 @@ ydp
avT
avT
avT
-avT
+bmX
apJ
apJ
apJ
@@ -54176,7 +54663,7 @@ cwT
aAC
mGl
grZ
-vdW
+cIh
ghq
bUB
bJf
@@ -54365,17 +54852,17 @@ qrR
qrR
wuf
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
-lbu
+aPE
mmM
-wuC
+iSB
avT
avT
avT
@@ -54393,7 +54880,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
@@ -54433,7 +54920,7 @@ hva
vZH
lac
iMX
-lhr
+cIh
ghq
bUB
bJf
@@ -54483,7 +54970,7 @@ wuf
avT
avT
avT
-bBh
+fUc
avT
avT
avT
@@ -54622,17 +55109,17 @@ qrR
qrR
wuf
avT
-lbu
-gTh
-wuC
+aPE
+huF
+iSB
avT
-lbu
-gTh
-wuC
+aPE
+huF
+iSB
avT
-lbu
-gTh
-wuC
+aPE
+huF
+iSB
avT
wuf
avT
@@ -54650,8 +55137,8 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
+nbC
+nbC
ydp
ydp
ydp
@@ -54740,7 +55227,7 @@ avT
avT
avT
avT
-bBh
+fUc
avT
avT
avT
@@ -54997,7 +55484,7 @@ rxI
rxI
rxI
avT
-hGK
+tEC
avT
rxI
rxI
@@ -55206,7 +55693,7 @@ nOG
vEm
fet
avT
-avT
+stP
avT
ydp
ydp
@@ -55253,9 +55740,9 @@ pjD
pjD
pjD
pjD
-fNh
-xUL
-nyq
+cih
+pIs
+ixO
fsh
fsh
fsh
@@ -55461,9 +55948,9 @@ azz
aAF
yiT
pwE
-fet
-avT
-avT
+iMk
+wMr
+bEp
bmX
avT
avT
@@ -55511,7 +55998,7 @@ dfx
dfx
dfx
avT
-clq
+uyV
avT
dfx
dfx
@@ -55720,7 +56207,7 @@ uKG
vEm
fet
avT
-avT
+kHJ
avT
avT
avT
@@ -55768,7 +56255,7 @@ avT
avT
avT
avT
-bBh
+fUc
avT
avT
avT
@@ -56025,7 +56512,7 @@ rxI
rxI
rxI
avT
-hGK
+tEC
avT
rxI
rxI
@@ -56281,9 +56768,9 @@ pjD
pjD
pjD
pjD
-fNh
-xUL
-nyq
+cih
+pIs
+ixO
fsh
fsh
fsh
@@ -56539,7 +57026,7 @@ dfx
dfx
dfx
avT
-clq
+uyV
avT
dfx
dfx
@@ -56796,7 +57283,7 @@ avT
avT
avT
avT
-bBh
+fUc
avT
avT
avT
@@ -57053,7 +57540,7 @@ rxI
rxI
rxI
avT
-hGK
+tEC
avT
rxI
rxI
@@ -57309,9 +57796,9 @@ pjD
pjD
pjD
pjD
-fNh
-xUL
-nyq
+cih
+pIs
+ixO
fsh
fsh
fsh
@@ -57567,7 +58054,7 @@ dfx
dfx
dfx
avT
-clq
+uyV
avT
dfx
dfx
@@ -57824,7 +58311,7 @@ avT
avT
avT
avT
-bBh
+fUc
avT
avT
avT
@@ -58007,7 +58494,7 @@ ydp
ydp
avT
bBh
-bmX
+avT
avT
gLH
ohf
@@ -58081,7 +58568,7 @@ avT
avT
avT
qlH
-bBh
+fUc
qlH
avT
avT
@@ -58286,8 +58773,8 @@ aFI
iek
wRz
erO
-aBK
-dFJ
+tmx
+tmx
kdA
aFI
avT
@@ -58544,8 +59031,8 @@ cwH
lam
erO
aBK
-aDf
-aEG
+aBK
+aBK
aFI
avT
avT
@@ -58800,8 +59287,8 @@ lWb
dfa
obB
aAe
-aBK
-aDf
+eXy
+aEE
aEE
bxM
avT
@@ -59057,8 +59544,8 @@ aFI
ays
mQK
auT
-aBK
-aDf
+hBM
+fol
aEI
bxM
avT
@@ -59314,7 +59801,7 @@ aFI
uJF
lam
jcS
-aBK
+hBM
aDc
aEH
bxM
@@ -59571,8 +60058,8 @@ nEi
jRU
uzT
gWn
-aBK
-aDf
+hBM
+jPf
aEK
bxM
avT
@@ -59828,7 +60315,7 @@ eGO
ayt
nuJ
aAw
-aBK
+rRQ
aEJ
aEJ
aIP
@@ -60135,11 +60622,11 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
xUL
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -60392,11 +60879,11 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
xUL
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -60648,12 +61135,12 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
+nbC
+nbC
xUL
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -60905,12 +61392,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
xUL
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -61159,15 +61646,15 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
euS
sXy
jAq
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -61417,13 +61904,13 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
bBh
xUL
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -61666,21 +62153,21 @@ yhx
yhx
yhx
yhx
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
avT
avT
bBh
xUL
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -61920,10 +62407,10 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
avT
xUL
xUL
@@ -61931,13 +62418,13 @@ xUL
xUL
avT
avT
-yhx
+nbC
xUL
xUL
bBh
xUL
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -62171,11 +62658,11 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
+nbC
yhx
avT
avT
@@ -62193,7 +62680,7 @@ sXy
sXy
jAq
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -62409,9 +62896,9 @@ odR
dPx
sPA
sKh
+dMo
irt
-irt
-guI
+srB
avT
avT
avT
@@ -62425,10 +62912,10 @@ ydp
ydp
ydp
yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
avT
avT
avT
@@ -62441,16 +62928,16 @@ xUL
xUL
xUL
avT
-yhx
+nbC
xUL
xUL
xUL
xUL
xUL
avT
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -62666,7 +63153,7 @@ aLk
aNo
aOo
sKh
-irt
+dMo
srB
bzc
avT
@@ -62682,7 +63169,7 @@ ydp
ydp
ydp
yhx
-yhx
+nbC
avT
avT
avT
@@ -62696,16 +63183,16 @@ xUL
xUL
avT
avT
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -62917,12 +63404,12 @@ aDb
qWM
hIH
nuS
-aPE
+qsD
wDR
fHF
-aPC
-aPE
-aPE
+aVv
+qsD
+qsD
hmM
bzc
bzc
@@ -62949,11 +63436,11 @@ xUL
xUL
xUL
avT
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -63174,12 +63661,12 @@ bxk
bxk
hIH
iFl
-aPC
+aVv
gCC
qAF
hOc
aOp
-aPE
+qsD
hmM
bzc
bzc
@@ -63202,11 +63689,11 @@ avT
euS
jAq
xUL
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -63431,12 +63918,12 @@ hTk
vHU
qTO
aHD
-aPC
+aVv
jOy
lqt
gPb
hFv
-aPC
+aVv
hmM
bzc
bzc
@@ -63458,8 +63945,8 @@ avT
euS
jAq
xUL
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -63688,7 +64175,7 @@ srU
aFO
aFY
aHD
-aPC
+aVv
hxx
vKT
faR
@@ -63714,8 +64201,8 @@ avT
euS
jAq
xUL
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -63945,7 +64432,7 @@ aDm
hLZ
aFY
aHD
-aPC
+aVv
cKK
sub
vrg
@@ -63970,8 +64457,8 @@ avT
euS
jAq
xUL
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -64152,9 +64639,9 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-avT
+bum
+bum
+bum
avT
mpj
gNb
@@ -64202,15 +64689,15 @@ aDp
eZi
aFU
aHD
-aPE
+qsD
jmf
fLW
utp
itp
-aPE
+qsD
aQV
vcG
-wgu
+lzB
avT
avT
ydp
@@ -64226,8 +64713,8 @@ avT
euS
jAq
xUL
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -64410,8 +64897,8 @@ ydp
ydp
ydp
ydp
-ydp
-avT
+bum
+bum
avT
mpj
eSJ
@@ -64459,12 +64946,12 @@ aDe
rJk
aFT
jOj
-aPE
-aKa
-aPE
-aPE
-aPE
-aPE
+qsD
+mSN
+qsD
+qsD
+qsD
+qsD
aQV
vcG
lzB
@@ -64483,7 +64970,7 @@ euS
jAq
xUL
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -64667,7 +65154,7 @@ ydp
ydp
ydp
ydp
-ydp
+bum
ydp
avT
mpj
@@ -64733,14 +65220,14 @@ ydp
ydp
ydp
ydp
-avT
+bmX
avT
avT
bBh
xUL
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -64982,7 +65469,7 @@ xUL
xUL
vcG
lzB
-bmX
+avT
avT
ydp
ydp
@@ -64995,8 +65482,8 @@ avT
avT
bBh
xUL
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -65190,7 +65677,7 @@ avT
avT
avT
xUL
-vBe
+xUL
mbm
iJl
iJl
@@ -65226,7 +65713,7 @@ xeI
rqW
rqW
aGD
-tJi
+rqW
myh
qLm
qTG
@@ -65252,7 +65739,7 @@ avT
avT
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -65479,9 +65966,9 @@ rQJ
fwn
awb
rqW
-ayC
-rPU
-fne
+rqW
+rqW
+rqW
rqW
rqW
fOA
@@ -65509,7 +65996,7 @@ avT
avT
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -65701,7 +66188,7 @@ ydp
ydp
avT
avT
-bmX
+avT
avT
xUL
ace
@@ -65735,12 +66222,12 @@ iPX
rQJ
fpS
wPD
+ihY
+rqW
+rqW
+rqW
rqW
-pIf
-pIf
-pIf
rqW
-aHK
myh
uJx
ikk
@@ -65766,7 +66253,7 @@ avT
avT
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -65993,11 +66480,11 @@ rQJ
fvz
awb
rqW
-ayC
-azH
-fne
rqW
-aCr
+rqW
+rqW
+rqW
+rqW
myh
lHH
oYn
@@ -66008,7 +66495,7 @@ wUr
avT
avT
avT
-vcG
+lcv
wgu
avT
avT
@@ -66023,7 +66510,7 @@ avT
avT
bBh
xUL
-yhx
+nbC
yhx
yhx
yhx
@@ -66218,7 +66705,7 @@ avT
avT
avT
avT
-bGt
+ace
avT
avT
avT
@@ -66475,7 +66962,7 @@ ydp
avT
avT
avT
-ace
+bGt
avT
avT
avT
@@ -66510,8 +66997,8 @@ myh
rQJ
rQJ
rQJ
-myh
-myh
+eXO
+kjx
rQJ
wUr
wUr
@@ -66767,9 +67254,9 @@ xxi
ayD
cGz
sqg
-avT
-ydp
-ydp
+xdr
+ihY
+rQJ
ydp
ydp
ydp
@@ -67023,10 +67510,10 @@ oaS
eqP
tcj
viF
-ayG
-avT
-avT
-ydp
+sqg
+pJm
+ihY
+rQJ
ydp
ydp
ydp
@@ -67281,9 +67768,9 @@ iat
pEF
nez
sqg
-avT
-avT
-avT
+fEz
+sae
+rQJ
ydp
ydp
ydp
@@ -67538,9 +68025,9 @@ axr
ayE
nez
sqg
-ydp
-ydp
-avT
+rQJ
+rQJ
+rQJ
ydp
ydp
ydp
@@ -67807,7 +68294,7 @@ ydp
avT
avT
avT
-vcG
+lcv
wgu
avT
avT
@@ -68042,7 +68529,7 @@ ujE
grz
arP
xWq
-wje
+xWI
nrd
wje
sqg
@@ -68792,7 +69279,7 @@ ace
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -69058,7 +69545,7 @@ avT
avT
avT
vBe
-xnm
+tLb
xUL
rhX
lXR
@@ -69316,12 +69803,12 @@ avT
avT
xUL
xnm
-xUL
+vBe
eTu
kHd
ljT
kHd
-gVo
+kHd
rhX
xUL
xUL
@@ -69573,7 +70060,7 @@ avT
avT
xUL
xnm
-xUL
+vBe
eTu
kHd
apK
@@ -69606,7 +70093,7 @@ ydp
ydp
avT
avT
-vcG
+lcv
wgu
avT
avT
@@ -69829,7 +70316,7 @@ avT
avT
avT
vBe
-xnm
+tLb
xUL
rhX
rhX
@@ -70588,18 +71075,18 @@ avT
avT
avT
ace
-xUL
vBe
xUL
-xUL
-xUL
-xUL
vBe
xUL
xUL
xUL
vBe
xUL
+xUL
+xUL
+xUL
+vBe
xnm
avT
avT
@@ -70626,9 +71113,9 @@ ydp
ydp
ydp
ydp
-avT
-avT
-avT
+ydp
+ydp
+ydp
avT
avT
avT
@@ -70847,11 +71334,11 @@ avT
pQd
kLh
kQr
+qOJ
lZn
lZn
lZn
-lZn
-lZn
+qOJ
lZn
lZn
lZn
@@ -70881,12 +71368,12 @@ ydp
ydp
ydp
avT
-avT
-avT
-avT
-avT
-avT
-avT
+ydp
+ydp
+ydp
+ydp
+ydp
+ydp
avT
avT
avT
@@ -71138,23 +71625,23 @@ ydp
ydp
avT
avT
+ydp
+ydp
+ydp
+ydp
+ydp
+ydp
avT
avT
avT
-avT
-avT
-avT
-avT
-avT
-avT
-avT
+xUL
vcG
lzB
avT
avT
avT
avT
-bmX
+avT
ydp
ydp
ydp
@@ -71360,7 +71847,7 @@ avT
avT
avT
xZL
-qZO
+xBk
avT
avT
avT
@@ -71391,21 +71878,21 @@ ydp
ydp
ydp
ydp
+ydp
avT
avT
+bmX
+ydp
+ydp
+ydp
+ydp
+ydp
+ydp
+avT
avT
avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
-avT
-vcG
+lcv
wgu
xUL
xUL
@@ -71450,7 +71937,7 @@ nxv
kYF
bVM
avT
-bmX
+avT
ydp
ydp
ydp
@@ -71629,7 +72116,7 @@ avT
avT
avT
avT
-bmX
+avT
avT
avT
ydp
@@ -71651,17 +72138,17 @@ ydp
avT
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
+ydp
+ydp
+ydp
+ydp
+ydp
+ydp
avT
+avT
+avT
+avT
+xUL
vcG
lzB
xUL
@@ -71873,8 +72360,8 @@ ydp
avT
avT
avT
-xZL
-xBk
+aez
+qZO
avT
avT
avT
@@ -71907,18 +72394,18 @@ ydp
avT
avT
avT
+avT
+ydp
+ydp
+ydp
+ydp
+ydp
+ydp
+ydp
+avT
+avT
+avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
vcG
lzB
avT
@@ -72164,17 +72651,17 @@ ydp
avT
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
+avT
+avT
+ydp
+ydp
+ydp
+ydp
+ydp
+avT
+avT
+avT
+avT
xUL
vcG
lzB
@@ -72419,20 +72906,20 @@ ydp
ydp
ydp
avT
-bmX
+avT
+avT
+avT
+avT
+avT
+ydp
+ydp
+ydp
+avT
+avT
+avT
+avT
avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
vcG
lzB
avT
@@ -72678,18 +73165,18 @@ ydp
avT
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
avT
+avT
+avT
+avT
+ydp
+avT
+avT
+avT
+avT
+avT
+avT
+xUL
vcG
lzB
avT
@@ -72707,7 +73194,7 @@ avT
avT
avT
avT
-avT
+bmX
wql
wql
vEG
@@ -72935,18 +73422,18 @@ ydp
avT
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+xUL
vcG
lzB
avT
@@ -73192,19 +73679,19 @@ ydp
ydp
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
avT
-vcG
+avT
+avT
+avT
+avT
+avT
+avT
+ydp
+ydp
+avT
+avT
+xUL
+lcv
wgu
avT
avT
@@ -73217,7 +73704,7 @@ ydp
ydp
ydp
ydp
-bmX
+avT
avT
wql
wql
@@ -73429,7 +73916,8 @@ avT
avT
avT
avT
-avT
+bmX
+ydp
ydp
ydp
ydp
@@ -73449,18 +73937,17 @@ ydp
ydp
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
avT
+avT
+avT
+avT
+avT
+avT
+ydp
+ydp
+ydp
+avT
+xUL
vcG
lzB
avT
@@ -73507,7 +73994,7 @@ bUD
bVM
avT
avT
-bmX
+avT
avT
avT
avT
@@ -73704,20 +74191,20 @@ ydp
ydp
ydp
ydp
+ydp
+ydp
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+ydp
+ydp
avT
avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
vcG
lzB
avT
@@ -73929,7 +74416,7 @@ avT
avT
avT
avT
-xZL
+aez
qZO
avT
avT
@@ -73961,20 +74448,20 @@ ydp
ydp
ydp
ydp
+ydp
+ydp
+avT
+avT
+avT
+ydp
+ydp
+avT
+avT
+avT
+avT
avT
avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
vcG
lzB
xUL
@@ -74218,20 +74705,20 @@ ydp
ydp
ydp
ydp
+ydp
+avT
+avT
+avT
+avT
+ydp
+ydp
+ydp
+avT
+avT
+avT
avT
avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
vcG
lzB
xUL
@@ -74477,20 +74964,20 @@ ydp
ydp
avT
avT
+ydp
+ydp
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-vcG
-lzB
+lcv
+nDN
xUL
xUL
xUL
@@ -74733,19 +75220,19 @@ ydp
ydp
avT
avT
+ydp
+ydp
+ydp
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
avT
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-avT
vcG
lzB
xUL
@@ -74800,7 +75287,7 @@ cer
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -74992,19 +75479,19 @@ avT
avT
avT
avT
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+avT
+xUL
vcG
-wgu
+lzB
xUL
xUL
xUL
@@ -75249,17 +75736,17 @@ avT
avT
avT
avT
-avT
xUL
xUL
xUL
-avT
-avT
xUL
xUL
xUL
-avT
-avT
+xUL
+xUL
+xUL
+xUL
+xUL
vcG
lzB
avT
@@ -75512,7 +75999,7 @@ nGx
nGx
nGx
nGx
-nGx
+hnN
nGx
nGx
nGx
@@ -75526,8 +76013,8 @@ avT
avT
bok
unA
-bJQ
-bJQ
+xjZ
+xjZ
unA
avT
avT
@@ -75762,7 +76249,7 @@ avT
avT
avT
avT
-tFr
+vcG
dvc
sLv
sLv
@@ -75985,7 +76472,7 @@ avT
avT
avT
avT
-xZL
+aez
qZO
avT
avT
@@ -76033,7 +76520,7 @@ avT
avT
avT
avT
-bmX
+avT
avT
avT
bok
@@ -76094,7 +76581,7 @@ ruD
clR
avT
avT
-bmX
+avT
avT
avT
avT
@@ -76534,7 +77021,7 @@ gky
vmM
jOo
azc
-lzB
+nDN
avT
avT
avT
@@ -76559,7 +77046,7 @@ wcB
unA
avT
avT
-bmX
+avT
avT
bwt
cTD
@@ -76808,7 +77295,7 @@ ncg
aXh
jHC
bok
-ivM
+uFq
bok
unA
uFq
@@ -77263,12 +77750,12 @@ ydp
ydp
ydp
ydp
-avT
-avT
-avT
-avT
-avT
-avT
+pgp
+iHM
+iHM
+iHM
+iHM
+iHM
avT
xZL
xBk
@@ -77520,15 +78007,15 @@ ydp
ydp
ydp
ydp
+pgp
+sTt
+nRA
+pDg
+qSF
+iHM
avT
-avT
-avT
-bHt
-nZE
-nZE
-nZE
aez
-xBk
+qZO
avT
avT
ydp
@@ -77561,7 +78048,7 @@ kxI
dPM
xNs
wwx
-nDd
+aAh
aDQ
avT
avT
@@ -77777,15 +78264,15 @@ ydp
ydp
ydp
avT
-avT
-avT
-avT
+pgp
+xAv
+xAv
mps
xAv
-ruo
-ruo
+iHM
+avT
acQ
-aUb
+xBk
avT
avT
avT
@@ -78021,28 +78508,28 @@ yhx
yhx
yhx
yhx
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
+nbC
+nbC
+nbC
+pgp
+pgp
+pgp
+pgp
+pgp
+pgp
+pgp
+pgp
+pgp
+pgp
+pgp
+rKC
+bjR
+xAv
+xAv
+pgp
avT
-avT
-avT
-avT
-avT
-avT
-avT
-avT
-avT
-avT
-axL
-aaM
-nZE
-nZE
-abU
-vBe
+xZL
+nYd
avT
avT
avT
@@ -78278,28 +78765,28 @@ yhx
yhx
yhx
yhx
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
+nbC
+nbC
avT
-avT
-avT
-avT
-avT
-avT
-iHM
+pgp
+tJi
+vdW
+pgp
+tJi
+vdW
+pgp
+tJi
+vdW
+pgp
tOz
-iHM
+tUq
gCO
-iHM
-axN
-ruo
-ruo
-aAh
-vzS
+hvG
+pgp
+pgp
+pgp
+xZL
+xBk
avT
ydp
ydp
@@ -78535,27 +79022,27 @@ yhx
yhx
yhx
yhx
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
avT
avT
avT
-avT
-avT
-avT
-iHM
-kRk
-iHM
-kRk
-iHM
-avT
-avT
-avT
-xZL
+pgp
+tSd
+vzS
+pgp
+tSd
+rEF
+pgp
+tSd
+vFT
+pgp
+vow
+swQ
+gCO
+swQ
+kXL
+mtP
+tWs
+aez
xBk
avT
ydp
@@ -78591,13 +79078,13 @@ spa
dIj
pIH
bpT
+dMo
irt
irt
+dMo
irt
irt
-irt
-irt
-irt
+dMo
gZS
uyK
aRt
@@ -78792,27 +79279,27 @@ yhx
yhx
yhx
yhx
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
avT
-avT
-iHM
-iHM
-iHM
-iHM
-iHM
+pgp
+pgp
+pgp
+uRg
+pgp
+pgp
+kWz
+pgp
+pgp
+eCS
+pgp
+pgp
vow
-iHM
-vow
-iHM
-iHM
-iHM
-iHM
-xZL
+swQ
+gCO
+swQ
+kXL
+mtP
+tWs
+aez
xBk
avT
ydp
@@ -79048,26 +79535,26 @@ yhx
yhx
yhx
yhx
-yhx
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
-avT
+ooR
avT
iHM
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
+oME
+rPU
+swQ
+fSb
+pqm
+swQ
+swQ
+rPU
+swQ
+swQ
+vQz
+vow
+swQ
+gCO
+swQ
+iHM
+rbb
iHM
xZL
xBk
@@ -79103,8 +79590,8 @@ cPI
hPe
vAs
ktw
-xZL
-lzB
+aez
+nDN
avT
avT
avT
@@ -79305,26 +79792,26 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
avT
avT
iHM
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
+pIf
+swQ
+swQ
+swQ
+swQ
+jjB
+ugk
+ugk
+ugk
+ugk
+ugk
+fkA
+ugk
+hUg
+qim
+iHM
+iHM
iHM
xZL
xBk
@@ -79346,7 +79833,7 @@ ydp
ydp
ydp
avT
-bmX
+avT
avT
avT
avT
@@ -79360,7 +79847,7 @@ spa
vir
fkr
ktw
-oME
+xZL
lzB
avT
avT
@@ -79562,27 +80049,27 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-ydp
-ydp
-ydp
-ydp
-avT
avT
avT
iHM
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
+ruo
+tFu
+swQ
+swQ
+hWp
+ptH
+iQu
+iQu
+iQu
+iQu
+mHm
+bfo
+swQ
+gCO
iHM
+lJC
+avT
+avT
xZL
xBk
avT
@@ -79820,29 +80307,29 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-ydp
-ydp
-avT
-avT
-avT
avT
+pgp
+pgp
+pgp
+raM
+raM
+raM
+raM
+mfU
+raM
+raM
+raM
+pgp
+vVJ
+hCx
+lOa
iHM
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-iHM
-xZL
-xBk
-vBe
+avT
+avT
+avT
+aez
+qZO
+xUL
ydp
ydp
ydp
@@ -79957,7 +80444,7 @@ jQj
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -80078,25 +80565,25 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-ydp
+pgp
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+raM
+eoH
+xAv
+nJB
+iHM
+avT
+avT
avT
-xUL
-cav
-xUL
-iHM
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-kHD
-iHM
xZL
xBk
xUL
@@ -80125,7 +80612,7 @@ sLv
sLv
sLv
sLv
-sLv
+cEs
sLv
sLv
sLv
@@ -80335,25 +80822,25 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
+raM
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+raM
+nlF
+xAv
+oUT
+iHM
+avT
avT
avT
-xUL
-xUL
-xUL
-iHM
-iHM
-iHM
-iHM
-iHM
-nlF
-iHM
-nlF
-iHM
-iHM
-iHM
-iHM
xZL
xBk
avT
@@ -80592,20 +81079,20 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-avT
-avT
-xUL
-xUL
-xUL
-avT
-avT
-avT
-avT
-iHM
-lJN
-vQk
+raM
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+raM
+nlF
+xAv
gUc
iHM
avT
@@ -80849,21 +81336,21 @@ ydp
ydp
ydp
ydp
-ydp
-ydp
-avT
-pgp
-xUL
-xUL
-xUL
-pgp
-avT
-avT
-avT
-iHM
-kRk
-kRk
-kRk
+raM
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+raM
+nlF
+xAv
+oUT
iHM
avT
avT
@@ -81106,28 +81593,28 @@ ydp
ydp
ydp
ydp
-ydp
-avT
-avT
pgp
-xUL
-bSC
-xUL
-pgp
-avT
-avT
-avT
-iHM
-vow
-iHM
-vow
+kHD
+kHD
+kHD
+fIk
+kHD
+kHD
+kHD
+kHD
+kHD
+kHD
+raM
+eoH
+xAv
+nJB
iHM
avT
avT
avT
-xZL
-xBk
-iSB
+aez
+qZO
+avT
wdv
xUL
xUL
@@ -81363,18 +81850,18 @@ ydp
ydp
ydp
ydp
-avT
-avT
-iHM
-iHM
+pgp
+pgp
pgp
raM
-iHM
pgp
-iHM
-iHM
-iHM
-iHM
+raM
+raM
+mfU
+raM
+raM
+raM
+pgp
rRk
xfs
qHL
@@ -81503,7 +81990,7 @@ avT
avT
avT
avT
-avT
+bmX
ydp
ydp
ydp
@@ -81625,20 +82112,20 @@ xUL
aNL
mtP
dvs
-mtP
-mtP
-dAi
-mtP
-mtP
-mtP
-mtP
-mtP
-lLv
-mtP
+jjB
+kIV
+ugk
+ugk
+ugk
+ugk
+utY
+mEH
+ugk
+hUg
oBD
iHM
-lJC
-lJC
+iHM
+iHM
xZL
xBk
avT
@@ -81661,7 +82148,7 @@ avT
avT
avT
tFr
-lzB
+nDN
avT
avT
avT
@@ -81882,30 +82369,30 @@ xUL
aNL
fTM
dvs
-mtP
+swQ
naE
-mtP
+bqb
aaU
nOY
-mtP
-naE
+iwH
+hlQ
duB
tsK
-tsK
+nEH
tsK
iuC
-tsK
+cTV
pXb
aSE
xBk
xUL
xUL
xUL
+xUL
+xUL
vBe
xUL
xUL
-xUL
-xUL
vBe
xUL
xUL
@@ -81915,7 +82402,7 @@ xUL
vBe
xUL
xUL
-xUL
+vBe
xUL
vcG
lzB
@@ -81975,7 +82462,7 @@ anA
wbT
rTs
hTL
-uRg
+hTL
jab
jFy
qJV
@@ -82140,39 +82627,39 @@ iHM
pgp
pgp
pgp
-pgp
+eyc
fPM
pgp
pgp
pgp
pgp
vhb
-mtP
+swQ
vDI
ugk
hAx
-ugk
+ord
nrY
-vsM
+vko
aUb
xUL
xUL
xUL
xUL
xUL
+vBe
+xUL
+xUL
+vBe
xUL
xUL
xUL
xUL
xUL
+vBe
xUL
xUL
-xUL
-xUL
-xUL
-xUL
-xUL
-xUL
+vBe
xUL
vcG
lzB
@@ -82392,19 +82879,19 @@ xUL
ydp
ydp
ydp
-bmX
+avT
avT
pgp
aab
dZV
-dZV
-gLk
+wgM
+kdy
pgp
qFH
nBd
wfS
iJs
-mtP
+swQ
sgL
qxk
pgp
@@ -82418,7 +82905,7 @@ xUL
xUL
xUL
avT
-bmX
+avT
avT
avT
avT
@@ -82478,7 +82965,7 @@ vAs
vAs
krT
pze
-bEi
+sLF
bEi
lbp
bAs
@@ -82654,25 +83141,25 @@ avT
pgp
aac
gLk
-gLk
-gLk
+hHV
+kdy
pgp
vVZ
mWy
pgp
iJs
-mtP
+swQ
inA
qMn
pgp
-wdv
-wdv
+pgp
+pgp
+xUL
+xUL
+xUL
+xUL
+vBe
vBe
-xUL
-xUL
-xUL
-xUL
-xUL
xUL
avT
avT
@@ -82740,7 +83227,7 @@ bFT
bCO
gRE
thV
-bCO
+qBl
bEa
kxj
aaw
@@ -82911,7 +83398,7 @@ avT
pgp
aab
aad
-gLk
+gdH
fBs
pgp
pgp
@@ -83457,10 +83944,10 @@ ydp
ydp
avT
avT
-bmX
+avT
avT
tFr
-lzB
+nDN
avT
avT
ydp
@@ -84178,7 +84665,7 @@ ydp
ydp
ydp
ydp
-avT
+bmX
avT
ydp
ydp
@@ -84693,7 +85180,7 @@ ydp
ydp
avT
avT
-bmX
+avT
avT
avT
avT
@@ -84795,7 +85282,7 @@ hJE
cmC
aIt
bCO
-bBN
+hyx
vTF
tRe
eVp
@@ -85080,7 +85567,7 @@ bPn
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -85259,7 +85746,7 @@ ydp
avT
avT
tFr
-lzB
+nDN
avT
avT
avT
@@ -85432,23 +85919,23 @@ yhx
wuf
avT
nuu
-sXy
-sXy
+aar
+aar
fNh
-xUL
+abU
nyq
-sXy
+aar
fNh
-xUL
+abU
nyq
-sXy
+aar
fNh
-xUL
+abU
nyq
-sXy
-sXy
-sXy
-sXy
+aar
+aar
+aar
+aar
sDD
eNK
jwc
@@ -86290,7 +86777,7 @@ vcG
lzB
avT
avT
-bmX
+avT
avT
ydp
ydp
@@ -86512,7 +86999,7 @@ mGp
rgm
wAx
wAx
-wAx
+ule
uEz
uEz
wzf
@@ -87026,11 +87513,11 @@ mKv
sAh
sAh
acb
-aar
+urI
+uEz
+uEz
uEz
uEz
-hrS
-lQJ
lia
uvB
tOY
@@ -87058,7 +87545,7 @@ xUL
xUL
avT
tFr
-lzB
+nDN
avT
avT
ydp
@@ -87103,7 +87590,7 @@ avT
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -87285,10 +87772,10 @@ sAh
acb
urI
qkO
-uEz
-blD
+qnx
kge
-gls
+kge
+qnx
tgd
tRC
pJS
@@ -87382,7 +87869,7 @@ avT
avT
avT
avT
-bmX
+avT
avT
avT
ydp
@@ -87542,12 +88029,12 @@ qss
qss
ylW
uoV
-uEz
-blD
+qnx
+pgk
pgk
bKl
-iNK
-chN
+tgd
+tRC
pJS
sWD
bNF
@@ -87799,9 +88286,9 @@ sAh
acb
urI
uoV
-uEz
-blD
-pgk
+qnx
+kbE
+kbE
qnx
pbf
sFw
@@ -87884,7 +88371,7 @@ sXy
ikA
avT
avT
-bmX
+avT
avT
avT
avT
@@ -88056,10 +88543,10 @@ sAh
acb
urI
uoV
-uEz
-blD
-eLl
-igK
+qnx
+kge
+kge
+qnx
xcL
hop
pJS
@@ -88287,14 +88774,14 @@ ydp
ydp
ydp
ydp
-bmX
+avT
avT
avT
bBh
avT
aKf
irQ
-huF
+cfp
cfp
gxY
cfp
@@ -88313,11 +88800,11 @@ qss
oXl
pPz
uoV
-uEz
-hsQ
-cDO
-jAT
-nmL
+qnx
+pgk
+pgk
+qnx
+tgd
vKP
pJS
hNg
@@ -88405,7 +88892,7 @@ ydp
ydp
ydp
ydp
-avT
+bmX
avT
ydp
ydp
@@ -88552,7 +89039,7 @@ avT
aKf
irQ
jLG
-piu
+lhr
piu
xac
gNI
@@ -88570,12 +89057,12 @@ wAx
wAx
wAx
hru
-uEz
-uEz
-uEz
-ejw
-rTv
-eOO
+qnx
+kbE
+kbE
+qnx
+tgd
+tRC
pJS
hNg
bNF
@@ -88802,7 +89289,7 @@ ydp
ydp
ydp
avT
-avT
+bmX
ydp
bBh
avT
@@ -88830,9 +89317,9 @@ pbg
uEz
uEz
uEz
-ejw
-rTv
-eOO
+cvN
+gjZ
+tRC
pJS
jiY
bNF
@@ -88857,7 +89344,7 @@ xUL
xiw
avT
tFr
-lzB
+nDN
avT
avT
avT
@@ -88945,7 +89432,7 @@ ydp
ydp
ydp
avT
-bmX
+avT
avT
ydp
ydp
@@ -90607,7 +91094,7 @@ bBh
avT
aKf
gLO
-jvV
+cfp
evO
cfp
kBe
@@ -90656,7 +91143,7 @@ avT
avT
avT
tFr
-lzB
+nDN
avT
avT
avT
@@ -91422,7 +91909,7 @@ uMF
jsl
gFM
cuY
-nGx
+hnN
nGx
nGx
nGx
@@ -91679,11 +92166,11 @@ dks
nEl
ust
sHJ
+cEs
sLv
sLv
sLv
sLv
-ybT
asr
avT
avT
@@ -91989,12 +92476,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
bBh
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -92195,7 +92682,7 @@ lGB
jJu
avT
avT
-bmX
+avT
avT
avT
avT
@@ -92246,12 +92733,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
bBh
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -92399,8 +92886,8 @@ bqN
avT
xUL
xUL
-bmX
avT
+bmX
bxL
bxL
bxL
@@ -92408,7 +92895,7 @@ xUL
bxL
dri
dri
-dDC
+uot
nQp
kVx
eLQ
@@ -92503,12 +92990,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
bBh
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -92641,7 +93128,7 @@ avT
avT
bzc
xUL
-avT
+bmX
avT
ydp
ydp
@@ -92660,7 +93147,7 @@ avT
avT
bxL
bxL
-bum
+axN
xUL
xUL
dri
@@ -92758,14 +93245,14 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
avT
avT
bBh
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -92895,7 +93382,7 @@ ydp
ydp
ydp
avT
-avT
+bum
bzh
xUL
avT
@@ -92917,7 +93404,7 @@ avT
bxL
bxL
bum
-bum
+axN
xUL
xUL
rww
@@ -92925,7 +93412,7 @@ rww
rww
ttQ
lNU
-bZI
+nDd
bZI
nNV
dBP
@@ -93015,14 +93502,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
avT
bBh
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -93152,9 +93639,9 @@ ydp
ydp
ydp
avT
-avT
-avT
-bmX
+bum
+bum
+bum
avT
avT
ydp
@@ -93174,7 +93661,7 @@ bxL
bxL
bum
bum
-bum
+axN
xUL
xUL
jrq
@@ -93272,14 +93759,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
euS
sXy
sXy
jAq
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -93409,10 +93896,10 @@ ydp
ydp
ydp
ydp
-avT
-avT
-avT
-avT
+bum
+bum
+bum
+bum
ydp
ydp
ydp
@@ -93431,7 +93918,7 @@ bKI
bum
bum
bum
-bum
+axN
xUL
xUL
rww
@@ -93529,14 +94016,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -93667,7 +94154,7 @@ ydp
ydp
avT
avT
-avT
+bum
avT
avT
ydp
@@ -93688,7 +94175,7 @@ bKI
bum
bum
bum
-bum
+axN
xUL
xUL
dri
@@ -93786,14 +94273,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -93945,7 +94432,7 @@ bKI
bum
bum
bum
-bum
+axN
xUL
xUL
wmB
@@ -94043,12 +94530,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -94199,10 +94686,10 @@ bKI
bCC
bCC
bKI
-bum
-bum
-bum
-bum
+azH
+azH
+azH
+aHK
xUL
xUL
fen
@@ -94245,7 +94732,7 @@ qzz
uqa
iIQ
avT
-bmX
+avT
avT
avT
ydp
@@ -94300,12 +94787,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -94557,7 +95044,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
@@ -94709,7 +95196,7 @@ bqN
bqN
bqN
bxL
-bum
+axN
xUL
xUL
xUL
@@ -94814,12 +95301,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -94966,8 +95453,8 @@ bqN
bqN
bxL
bxL
-bum
-bum
+ayC
+aEG
xUL
xUL
bKI
@@ -95071,12 +95558,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -95224,7 +95711,7 @@ bqN
bqN
bxL
bum
-bum
+axN
xUL
xUL
bKI
@@ -95328,12 +95815,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -95481,7 +95968,7 @@ bqN
bxL
bxL
bum
-bum
+axN
xUL
xUL
bKI
@@ -95585,12 +96072,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -95737,8 +96224,8 @@ bqN
bqN
bxL
bxL
-bum
-bum
+azH
+aHK
xUL
xUL
bKI
@@ -95840,14 +96327,14 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -96005,7 +96492,7 @@ bKI
bKI
bMT
fgj
-nOk
+lQp
lfG
sdr
gyE
@@ -96097,14 +96584,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -96359,9 +96846,9 @@ avT
avT
avT
bBh
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -96508,9 +96995,9 @@ bqN
bqN
bxL
bxL
-bum
-bum
-bum
+aCr
+aCr
+aEG
xUL
bOb
bKI
@@ -96611,7 +97098,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
@@ -96767,7 +97254,7 @@ bqN
bxL
bum
bum
-bum
+axN
xUL
bOb
bKI
@@ -96868,12 +97355,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -97024,7 +97511,7 @@ bqN
bxL
bum
bum
-bum
+axN
xUL
bOb
bKI
@@ -97073,7 +97560,7 @@ wFO
mZp
avT
avT
-bmX
+avT
avT
avT
avT
@@ -97125,12 +97612,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -97281,7 +97768,7 @@ bqN
bxL
bum
bum
-bum
+axN
xUL
bOb
bKI
@@ -97382,12 +97869,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -97538,13 +98025,13 @@ bqN
bxL
bum
bum
-bum
+axN
xUL
bOb
-xUL
-xUL
-xUL
-xUL
+dDC
+bum
+bum
+axN
xbp
onY
gNy
@@ -97639,12 +98126,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -97795,13 +98282,13 @@ bxL
bxL
bxL
bum
-bum
+axN
xUL
bOb
-bum
-bum
-bum
-bum
+dFJ
+azH
+azH
+aHK
xbp
fen
eHK
@@ -97896,12 +98383,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -98052,7 +98539,7 @@ bxL
bxL
bxL
bum
-bum
+axN
bDA
bGW
bYY
@@ -98153,12 +98640,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -98309,7 +98796,7 @@ bxL
bxL
bxL
bum
-bum
+axN
bFx
bOb
bKI
@@ -98410,7 +98897,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
@@ -98566,7 +99053,7 @@ bqN
bqN
bxL
bum
-bum
+axN
bFx
bRD
caS
@@ -98667,14 +99154,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -98823,7 +99310,7 @@ bqN
bxL
bxL
bum
-bum
+axN
aEF
bYY
ccD
@@ -98924,14 +99411,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -99079,8 +99566,8 @@ bqN
bqN
bxL
bxL
-bum
-bum
+azH
+aHK
xUL
xUL
bKI
@@ -99181,14 +99668,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -99340,12 +99827,13 @@ xUL
xUL
xUL
xUL
+dDC
bum
bum
-bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -99359,8 +99847,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
rGc
jPj
ucC
@@ -99438,14 +99925,14 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -99597,27 +100084,27 @@ xUL
xUL
xUL
xUL
-bum
-bum
-bum
-bum
+dFJ
+azH
+azH
+aHK
xbp
xUL
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
+dFJ
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+aHK
dQW
jls
ucC
@@ -99697,12 +100184,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -99850,8 +100337,8 @@ bqN
bqN
bxL
bxL
-bum
-bum
+aCr
+aEG
xUL
xUL
xUL
@@ -99954,7 +100441,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
@@ -100108,7 +100595,7 @@ bqN
bxL
bxL
bum
-bum
+axN
xUL
xUL
xUL
@@ -100211,12 +100698,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -100366,24 +100853,24 @@ bxL
bxL
bxL
bum
-bum
-bum
-bum
-bum
-bum
-bum
+aCr
+aCr
+aCr
+aCr
+aCr
+aEG
xbp
xUL
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
+lQJ
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aEG
rGc
tdX
tdX
@@ -100397,7 +100884,7 @@ aNU
kVD
noQ
leT
-leT
+mqd
leT
iCq
leT
@@ -100408,7 +100895,7 @@ wku
xGy
lBH
bnU
-bmX
+avT
avT
ydp
ydp
@@ -100468,12 +100955,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -100628,9 +101115,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -100639,8 +101127,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
dQW
tdX
tdX
@@ -100725,12 +101212,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -100885,9 +101372,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -100896,8 +101384,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
rGc
tdX
tdX
@@ -100982,12 +101469,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -101142,9 +101629,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -101153,8 +101641,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
dQW
tdX
tdX
@@ -101244,7 +101731,7 @@ avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -101399,9 +101886,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -101410,8 +101898,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
rGc
jPj
dQW
@@ -101494,14 +101981,14 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -101656,9 +102143,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -101667,8 +102155,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
dQW
cly
cly
@@ -101751,14 +102238,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -101913,9 +102400,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -101924,8 +102412,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
xUL
xUL
xUL
@@ -102008,14 +102495,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
avT
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -102170,9 +102657,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -102181,8 +102669,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
xUL
xUL
xUL
@@ -102265,14 +102752,14 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -102427,9 +102914,10 @@ bum
bum
bum
bum
-bum
+axN
xbp
xUL
+dDC
bum
bum
bum
@@ -102438,16 +102926,15 @@ bum
bum
bum
bum
-bum
-bum
+axN
xUL
xUL
xUL
xUL
xUL
-bum
-bum
-bum
+lQJ
+aCr
+aCr
hBq
pCv
iuP
@@ -102522,12 +103009,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -102679,24 +103166,24 @@ bqN
bxL
bxL
bxL
-bum
-bum
-bum
-bum
-bum
-bum
+azH
+azH
+azH
+azH
+azH
+aHK
xbp
xUL
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
+dFJ
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+aHK
xUL
xUL
xUL
@@ -102779,12 +103266,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -103036,12 +103523,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -103293,12 +103780,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -103450,27 +103937,27 @@ bqN
bqN
bxL
bxL
-bum
-bum
-bum
-bum
-bum
-bum
+aCr
+aCr
+aCr
+aCr
+aCr
+aEG
xUL
xUL
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
+lQJ
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aEG
xUL
xbp
sTq
@@ -103550,12 +104037,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -103712,9 +104199,10 @@ bum
bum
bum
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -103726,11 +104214,10 @@ bum
bum
bum
bum
-bum
-bum
+axN
xUL
xbp
-sTq
+lgg
hBq
xBV
hBq
@@ -103750,7 +104237,7 @@ avT
avT
avT
avT
-bmX
+avT
ydp
ydp
ydp
@@ -103807,12 +104294,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -103969,9 +104456,10 @@ bum
bum
bum
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -103983,8 +104471,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
rGc
rvf
umD
@@ -104064,12 +104551,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
+nbC
yhx
yhx
yhx
@@ -104226,9 +104713,10 @@ bum
bum
bum
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -104240,8 +104728,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
odg
xbp
bZa
@@ -104321,13 +104808,13 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
avT
avT
bBh
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -104351,7 +104838,7 @@ faJ
rot
avT
jxB
-aQK
+sQk
rot
avT
wuf
@@ -104483,9 +104970,10 @@ bum
bum
bum
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -104497,12 +104985,11 @@ bum
bum
bum
bum
-bum
-bum
+axN
odg
xbp
-sTq
-sTq
+cVa
+qZb
lHa
nQd
umD
@@ -104584,8 +105071,8 @@ avT
avT
bBh
avT
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -104608,7 +105095,7 @@ vDy
rot
avT
jxB
-qfJ
+qjF
rot
avT
wuf
@@ -104740,9 +105227,10 @@ bum
bum
bum
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -104754,12 +105242,11 @@ bum
bum
bum
bum
-bum
-bum
+axN
odg
xbp
-sTq
-sTq
+lgg
+oGZ
pQg
tFN
tFN
@@ -104835,13 +105322,13 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
avT
bBh
avT
-yhx
+nbC
yhx
yhx
yhx
@@ -104865,7 +105352,7 @@ vDy
rot
avT
jxB
-qfJ
+qjF
rot
avT
wuf
@@ -104997,9 +105484,10 @@ bxL
bum
bum
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -105011,8 +105499,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
dQW
rvf
cly
@@ -105094,12 +105581,12 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
-yhx
-yhx
+nbC
+nbC
yhx
yhx
yhx
@@ -105122,7 +105609,7 @@ vDy
rot
avT
jxB
-qfJ
+qjF
rot
avT
avT
@@ -105254,9 +105741,10 @@ bxL
bxL
bxL
bum
-bum
+axN
xUL
xUL
+dDC
bum
bum
bum
@@ -105268,8 +105756,7 @@ bum
bum
bum
bum
-bum
-bum
+axN
xUL
wDd
alE
@@ -105351,7 +105838,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
@@ -105379,7 +105866,7 @@ vDy
rot
avT
jxB
-qfJ
+qjF
rot
avT
avT
@@ -105514,22 +106001,22 @@ bKI
bKI
xUL
xUL
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
+dFJ
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+azH
+aHK
+xUL
+xUL
+xUL
xUL
bOb
xUL
@@ -105608,7 +106095,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
bBh
avT
@@ -105628,15 +106115,15 @@ avT
avT
avT
avT
-hGK
+jEm
avT
avT
avT
-hGK
+jEm
avT
avT
avT
-hGK
+jEm
avT
avT
avT
@@ -105865,7 +106352,7 @@ yhx
yhx
yhx
yhx
-yhx
+nbC
avT
rUq
sXy
@@ -105877,26 +106364,26 @@ oBl
uyM
dUH
fUm
-sXy
-sXy
-sXy
-sXy
-sXy
-sXy
-sXy
-fNh
-xUL
-xUL
-xUL
-xUL
-xUL
-nyq
-sXy
-fNh
-xUL
-nyq
-sXy
-sXy
+wMH
+wMH
+wMH
+wMH
+wMH
+wMH
+wMH
+cWI
+jWw
+jWw
+jWw
+jWw
+jWw
+gIW
+wMH
+cWI
+jWw
+gIW
+wMH
+wMH
uRc
avT
wuf
@@ -106122,8 +106609,8 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
+nbC
+nbC
avT
avT
avT
@@ -106142,15 +106629,15 @@ avT
avT
avT
avT
-clq
+oPk
avT
avT
avT
-clq
+oPk
avT
avT
avT
-clq
+oPk
avT
avT
avT
@@ -106285,24 +106772,24 @@ bKI
bKI
bxL
bxL
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
-bum
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
+aCr
bxL
bqN
bqN
@@ -106311,7 +106798,7 @@ bqN
avT
avT
avT
-bmX
+avT
avT
avT
avT
@@ -106399,15 +106886,15 @@ avT
avT
avT
jxB
-mmM
+qIW
rot
avT
jxB
-mmM
+qIW
rot
avT
jxB
-knR
+lQd
rot
avT
avT
@@ -106637,11 +107124,11 @@ yhx
yhx
yhx
yhx
-yhx
-yhx
-yhx
-yhx
-yhx
+nbC
+nbC
+nbC
+nbC
+nbC
yhx
yhx
yhx
@@ -106656,15 +107143,15 @@ avT
avT
avT
jxB
-mmM
+qIW
rot
avT
jxB
-mmM
+qIW
rot
avT
jxB
-knR
+lQd
rot
avT
avT
@@ -106913,15 +107400,15 @@ avT
avT
avT
jxB
-mmM
+qIW
rot
avT
jxB
-mmM
+qIW
rot
avT
jxB
-knR
+lQd
rot
avT
wuf
@@ -107170,15 +107657,15 @@ avT
avT
avT
jxB
-mmM
+qIW
rot
avT
jxB
-mmM
+qIW
rot
avT
jxB
-knR
+lQd
rot
avT
wuf
@@ -107427,15 +107914,15 @@ avT
avT
avT
jxB
-gTh
+pvP
rot
avT
jxB
-gTh
+pvP
rot
avT
jxB
-gTh
+pvP
rot
avT
wuf
diff --git a/_maps/shuttles/emergency_arena.dmm b/_maps/shuttles/emergency_arena.dmm
index 1314b8a732..2ba9206830 100644
--- a/_maps/shuttles/emergency_arena.dmm
+++ b/_maps/shuttles/emergency_arena.dmm
@@ -43,7 +43,7 @@
},
/area/shuttle/escape/arena)
"l" = (
-/obj/structure/closet/crate/necropolis/tendril,
+/obj/structure/closet/crate/necropolis/tendril/magic,
/turf/open/indestructible/necropolis/air,
/area/shuttle/escape/arena)
"m" = (
@@ -65,10 +65,18 @@
/obj/structure/healingfountain,
/turf/open/indestructible/necropolis/air,
/area/shuttle/escape/arena)
+"t" = (
+/obj/structure/closet/crate/necropolis/tendril/misc,
+/turf/open/indestructible/necropolis/air,
+/area/shuttle/escape/arena)
"z" = (
/obj/effect/landmark/shuttle_arena_safe,
/turf/open/indestructible/necropolis/air,
/area/shuttle/escape/arena)
+"H" = (
+/obj/structure/closet/crate/necropolis/tendril/weapon_armor,
+/turf/open/indestructible/necropolis/air,
+/area/shuttle/escape/arena)
(1,1,1) = {"
a
@@ -264,16 +272,16 @@ m
l
j
m
-l
+H
j
k
-l
+H
j
m
-l
+t
j
m
-j
+t
j
p
g
@@ -524,16 +532,16 @@ m
l
j
m
-l
+H
j
m
-l
+H
j
m
-l
+t
j
m
-j
+t
j
p
g
diff --git a/byond-extools.dll b/byond-extools.dll
index bd6b34c48e..ea5491a741 100644
Binary files a/byond-extools.dll and b/byond-extools.dll differ
diff --git a/code/__DEFINES/_extools.dm b/code/__DEFINES/_extools.dm
new file mode 100644
index 0000000000..4513243aae
--- /dev/null
+++ b/code/__DEFINES/_extools.dm
@@ -0,0 +1 @@
+#define EXTOOLS (world.system_type == MS_WINDOWS ? "byond-extools.dll" : "libbyond-extools.so")
diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm
index 621af2c811..dad2a38afd 100644
--- a/code/__DEFINES/atmospherics.dm
+++ b/code/__DEFINES/atmospherics.dm
@@ -281,8 +281,6 @@ GLOBAL_LIST_INIT(atmos_adjacent_savings, list(0,0))
#define CALCULATE_ADJACENT_TURFS(T) SSadjacent_air.queue[T] = 1
#endif
-#define EXTOOLS (world.system_type == MS_WINDOWS ? "byond-extools.dll" : "libbyond-extools.so")
-
GLOBAL_VAR(atmos_extools_initialized) // this must be an uninitialized (null) one or init_monstermos will be called twice because reasons
#define ATMOS_EXTOOLS_CHECK if(!GLOB.atmos_extools_initialized){\
GLOB.atmos_extools_initialized=TRUE;\
diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index 585e8da7d7..6aca5cd998 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -99,7 +99,8 @@
#define NO_ASS_SLAP (1<<10)
#define BIMBOFICATION (1<<11)
#define NO_AUTO_WAG (1<<12)
-
+#define GENITAL_EXAMINE (1<<13)
+#define VORE_EXAMINE (1<<14)
#define TOGGLES_CITADEL 0
//belly sound pref things
diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index 3d15412efe..2273d34c82 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -2,19 +2,6 @@
#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"
-
-#define COLOR_DARKMODE_INFO_BUTTONS_BG "#40628A"
-#define COLOR_DARKMODE_ISSUE_BUTTON_BG "#A92C2C"
-#define COLOR_DARKMODE_BACKGROUND "#272727"
-#define COLOR_DARKMODE_DARKBACKGROUND "#242424"
-#define COLOR_DARKMODE_TEXT "#E0E0E0"
-
-#define COLOR_WHITEMODE_INFO_BUTTONS_BG "#90B3DD"
-#define COLOR_WHITEMODE_ISSUE_BUTTON_BG "#EF7F7F"
-#define COLOR_WHITEMODE_BACKGROUND "#F0F0F0"
-#define COLOR_WHITEMODE_DARKBACKGROUND "#E6E6E6"
-#define COLOR_WHITEMODE_TEXT "#000000"
-
#define COLOR_FLOORTILE_GRAY "#8D8B8B"
#define COLOR_ALMOST_BLACK "#333333"
#define COLOR_BLACK "#000000"
@@ -64,4 +51,4 @@
#define COLOR_ASSEMBLY_LBLUE "#5D99BE"
#define COLOR_ASSEMBLY_BLUE "#38559E"
#define COLOR_ASSEMBLY_PURPLE "#6F6192"
-#define COLOR_ASSEMBLY_PINK "#ff4adc"
\ No newline at end of file
+#define COLOR_ASSEMBLY_PINK "#ff4adc"
diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm
index a4bf69b2ad..e9881677ba 100644
--- a/code/__DEFINES/configuration.dm
+++ b/code/__DEFINES/configuration.dm
@@ -1,6 +1,7 @@
//config files
#define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X)
#define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y)
+/// Gets the datum of the object, for when editing a const define.
#define CONFIG_GET_ENTRY(X) global.config.GetEntryDatum(/datum/config_entry/##X)
#define CONFIG_MAPS_FILE "maps.txt"
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 65994dda5a..aed6d100d9 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -32,7 +32,7 @@
#define COMSIG_ELEMENT_DETACH "element_detach"
/// sent to the component itself when unregistered from a parent
-#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent"
+#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent"
/// sent to the component itself when registered to a parent
#define COMSIG_COMPONENT_REGISTER_PARENT "component_register_parent"
@@ -43,6 +43,8 @@
// /atom signals
//from base of atom/proc/Initialize(): sent any time a new atom is created
#define COMSIG_ATOM_CREATED "atom_created"
+//from SSatoms InitAtom - Only if the atom was not deleted or failed initialization
+#define COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE "atom_init_success"
#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params)
#define COMPONENT_NO_AFTERATTACK 1 //Return this in response if you don't want afterattack to be called
#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human)
@@ -184,6 +186,7 @@
// #define HEARING_SOURCE 8
#define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source)
#define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination)
+#define COMSIG_MOVABLE_CHASM_DROP "movable_chasm_drop" //from base of /datum/component/chasm/drop() (/datum/component/chasm)
// /mind signals
#define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to() before it's done: (new_character, old_character)
@@ -287,6 +290,10 @@
#define COMPONENT_INTERRUPT_LIFE_BIOLOGICAL 1 // interrupt biological processes
#define COMPONENT_INTERRUPT_LIFE_PHYSICAL 2 // interrupt physical handling
+#define COMSIG_LIVING_BIOLOGICAL_LIFE "biological_life" //from base of mob/living/BiologicalLife() (seconds, times_fired)
+
+#define COMSIG_LIVING_PHYSICAL_LIFE "physical_life" //from base of mob/living/PhysicalLife() (seconds, times_fired)
+
// /mob/living/carbon physiology signals
#define COMSIG_CARBON_GAIN_WOUND "carbon_gain_wound" //from /datum/wound/proc/apply_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L)
#define COMSIG_CARBON_LOSE_WOUND "carbon_lose_wound" //from /datum/wound/proc/remove_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L)
diff --git a/code/__DEFINES/dye_keys.dm b/code/__DEFINES/dye_keys.dm
index 133f9c47d3..a01dcacc18 100644
--- a/code/__DEFINES/dye_keys.dm
+++ b/code/__DEFINES/dye_keys.dm
@@ -4,6 +4,7 @@
#define DYE_REGISTRY_SNEAKERS "sneakers"
#define DYE_REGISTRY_FANNYPACK "fannypack"
#define DYE_REGISTRY_BEDSHEET "bedsheet"
+#define DYE_LAWYER_SPECIAL "lawyer_special"
#define DYE_RED "red"
#define DYE_ORANGE "orange"
@@ -16,6 +17,7 @@
#define DYE_RAINBOW "rainbow"
#define DYE_MIME "mime"
#define DYE_COSMIC "cosmic"
+#define DYE_SYNDICATE "syndicate"
#define DYE_QM "qm"
#define DYE_LAW "law"
#define DYE_CAPTAIN "captain"
@@ -26,3 +28,5 @@
#define DYE_CMO "cmo"
#define DYE_REDCOAT "redcoat"
#define DYE_CLOWN "clown"
+#define DYE_CHAP "chap"
+#define DYE_CENTCOM "centcom"
diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm
index 77e8d82aca..03110ad04e 100644
--- a/code/__DEFINES/food.dm
+++ b/code/__DEFINES/food.dm
@@ -12,6 +12,7 @@
#define TOXIC (1<<11)
#define PINEAPPLE (1<<12)
#define BREAKFAST (1<<13)
+#define ANTITOXIC (1<<14)
#define DRINK_NICE 1
#define DRINK_GOOD 2
diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm
index 0e8e34d20e..df5b7d9f11 100644
--- a/code/__DEFINES/machines.dm
+++ b/code/__DEFINES/machines.dm
@@ -41,11 +41,13 @@
#define MC_HDD "HDD"
#define MC_SDD "SDD"
#define MC_CARD "CARD"
+#define MC_CARD2 "CARD2"
#define MC_NET "NET"
#define MC_PRINT "PRINT"
#define MC_CELL "CELL"
#define MC_CHARGE "CHARGE"
#define MC_AI "AI"
+#define MC_SENSORS "SENSORS"
//NTNet stuff, for modular computers
// NTNet module-configuration values. Do not change these. If you need to add another use larger number (5..6..7 etc)
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 927b661898..0704947dda 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -116,6 +116,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define CRAYON_FONT "Comic Sans MS"
#define PRINTER_FONT "Times New Roman"
#define SIGNFONT "Times New Roman"
+#define CHARCOAL_FONT "Candara"
#define RESIZE_DEFAULT_SIZE 1
@@ -318,9 +319,9 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects"
//debug printing macros
-#define debug_world(msg) if (GLOB.Debug2) to_chat(world, "DEBUG: [msg]")
-#define debug_usr(msg) if (GLOB.Debug2&&usr) to_chat(usr, "DEBUG: [msg]")
-#define debug_admins(msg) if (GLOB.Debug2) to_chat(GLOB.admins, "DEBUG: [msg]")
+#define debug_world(msg) if (GLOB.Debug2) to_chat(world, "DEBUG: [msg]")
+#define debug_usr(msg) if (GLOB.Debug2&&usr) to_chat(usr, "DEBUG: [msg]")
+#define debug_admins(msg) if (GLOB.Debug2) to_chat(GLOB.admins, "DEBUG: [msg]")
#define debug_world_log(msg) if (GLOB.Debug2) log_world("DEBUG: [msg]")
#define INCREMENT_TALLY(L, stat) if(L[stat]){L[stat]++}else{L[stat] = 1}
diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm
new file mode 100644
index 0000000000..35d99a982d
--- /dev/null
+++ b/code/__DEFINES/research/anomalies.dm
@@ -0,0 +1,21 @@
+// Anomaly core types
+/// Bluespace cores
+#define ANOMALY_CORE_BLUESPACE /obj/item/assembly/signaler/anomaly/bluespace
+/// Gravitational cores
+#define ANOMALY_CORE_GRAVITATIONAL /obj/item/assembly/signaler/anomaly/grav
+/// Flux
+#define ANOMALY_CORE_FLUX /obj/item/assembly/signaler/anomaly/flux
+/// Vortex
+#define ANOMALY_CORE_VORTEX /obj/item/assembly/signaler/anomaly/vortex
+/// Pyro
+#define ANOMALY_CORE_PYRO /obj/item/assembly/signaler/anomaly/pyro
+
+// Max amounts of cores you can make
+#define MAX_CORES_BLUESPACE 8
+#define MAX_CORES_GRAVITATIONAL 8
+#define MAX_CORES_FLUX 8
+#define MAX_CORES_VORTEX 8
+#define MAX_CORES_PYRO 8
+
+/// chance supermatter anomalies drop real cores
+#define SUPERMATTER_ANOMALY_DROP_CHANCE 20
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index bfff1dc629..d6db35e68d 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -30,6 +30,8 @@
#define STATUS_EFFECT_FLESHMEND /datum/status_effect/fleshmend //Very fast healing; suppressed by fire, and heals less fire damage
+#define STATUS_EFFECT_PANACEA /datum/status_effect/panacea //Anatomic panacea that directly heals, rather than injecting a small chemical cocktail
+
#define STATUS_EFFECT_EXERCISED /datum/status_effect/exercised //Prevents heart disease
#define STATUS_EFFECT_HIPPOCRATIC_OATH /datum/status_effect/hippocraticOath //Gives you an aura of healing as well as regrowing the Rod of Asclepius if lost
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 81b5c5620f..37ca1c66dd 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -93,7 +93,6 @@
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
#define FIRE_PRIORITY_VORE 5
-#define FIRE_PRIORITY_PING 10
#define FIRE_PRIORITY_IDLE_NPC 10
#define FIRE_PRIORITY_SERVER_MAINT 10
#define FIRE_PRIORITY_RESEARCH 10
diff --git a/code/__DEFINES/tgui.dm b/code/__DEFINES/tgui.dm
index f5adeadade..467058f27a 100644
--- a/code/__DEFINES/tgui.dm
+++ b/code/__DEFINES/tgui.dm
@@ -26,3 +26,10 @@
#define TGUI_WINDOW_ID(index) "tgui-window-[index]"
/// Get a pool index of the provided window id
#define TGUI_WINDOW_INDEX(window_id) text2num(copytext(window_id, 13))
+
+/// Creates a message packet for sending via output()
+#define TGUI_CREATE_MESSAGE(type, payload) ( \
+ url_encode(json_encode(list( \
+ "type" = type, \
+ "payload" = payload, \
+ ))))
\ No newline at end of file
diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm
index 5e57dd5328..a5ffda36f9 100644
--- a/code/__HELPERS/_cit_helpers.dm
+++ b/code/__HELPERS/_cit_helpers.dm
@@ -17,7 +17,7 @@
var/matrix/mtrx=new()
return mtrx.Scale(0.65)
-proc/get_racelist(var/mob/user)//This proc returns a list of species that 'user' has available to them. It searches the list of ckeys attached to the 'whitelist' var for a species and also checks if they're an admin.
+/proc/get_racelist(mob/user)//This proc returns a list of species that 'user' has available to them. It searches the list of ckeys attached to the 'whitelist' var for a species and also checks if they're an admin.
for(var/spath in subtypesof(/datum/species))
var/datum/species/S = new spath()
var/list/wlist = S.whitelist
diff --git a/code/__HELPERS/_extools_api.dm b/code/__HELPERS/_extools_api.dm
new file mode 100644
index 0000000000..af348dc939
--- /dev/null
+++ b/code/__HELPERS/_extools_api.dm
@@ -0,0 +1,5 @@
+#define EXTOOLS_LOGGING // rust_g is used as a fallback if this is undefined
+
+/proc/extools_log_write()
+
+/proc/extools_finalize_logging()
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index 719735392d..0171057286 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -681,3 +681,11 @@
continue
if(istype(D, path))
return TRUE
+
+/proc/safe_json_encode(list/L, default = "")
+ . = default
+ return json_encode(L)
+
+/proc/safe_json_decode(string, default = list())
+ . = default
+ return json_decode(string)
diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index 62e6c4daf9..888c20003f 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -4,10 +4,15 @@
#define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound)
#define SEND_TEXT(target, text) DIRECT_OUTPUT(target, text)
#define WRITE_FILE(file, text) DIRECT_OUTPUT(file, text)
+#ifdef EXTOOLS_LOGGING
+// proc hooked, so we can just put in standard TRUE and FALSE
+#define WRITE_LOG(log, text) extools_log_write(log,text,TRUE)
+#define WRITE_LOG_NO_FORMAT(log, text) extools_log_write(log,text,FALSE)
+#else
//This is an external call, "true" and "false" are how rust parses out booleans
#define WRITE_LOG(log, text) rustg_log_write(log, text, "true")
#define WRITE_LOG_NO_FORMAT(log, text) rustg_log_write(log, text, "false")
-
+#endif
//print a warning message to world.log
#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [UNLINT(src)] usr: [usr].")
/proc/warning(msg)
@@ -216,7 +221,11 @@
/* Close open log handles. This should be called as late as possible, and no logging should hapen after. */
/proc/shutdown_logging()
+#ifdef EXTOOLS_LOGGING
+ extools_finalize_logging()
+#else
rustg_log_close_all()
+#endif
/* Helper procs for building detailed log lines */
diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm
index 8b4f8d5b54..aad5b4cab1 100644
--- a/code/__HELPERS/files.dm
+++ b/code/__HELPERS/files.dm
@@ -71,3 +71,18 @@
/proc/pathflatten(path)
return replacetext(path, "/", "_")
+
+/// Returns the md5 of a file at a given path.
+/proc/md5filepath(path)
+ . = md5(file(path))
+
+/// Save file as an external file then md5 it.
+/// Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
+/proc/md5asfile(file)
+ var/static/notch = 0
+ // its importaint this code can handle md5filepath sleeping instead of hard blocking, if it's converted to use rust_g.
+ var/filename = "tmp/md5asfile.[world.realtime].[world.timeofday].[world.time].[world.tick_usage].[notch]"
+ notch = WRAP(notch+1, 0, 2^15)
+ fcopy(file, filename)
+ . = md5filepath(filename)
+ fdel(filename)
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index 3155fe2548..2bd477d98c 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -1103,24 +1103,36 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
alpha += 25
obj_flags &= ~FROZEN
+/// Save file used in icon2base64. Used for converting icons to base64.
+GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of icons for the browser output
-//Converts an icon to base64. Operates by putting the icon in the iconCache savefile,
-// exporting it as text, and then parsing the base64 from that.
-// (This relies on byond automatically storing icons in savefiles as base64)
-/proc/icon2base64(icon/icon, iconKey = "misc")
+
+/// Generate a filename for this asset
+/// The same asset will always lead to the same asset name
+/// (Generated names do not include file extention.)
+/proc/generate_asset_name(file)
+ return "asset.[md5(fcopy_rsc(file))]"
+
+/**
+ * Converts an icon to base64. Operates by putting the icon in the iconCache savefile,
+ * exporting it as text, and then parsing the base64 from that.
+ * (This relies on byond automatically storing icons in savefiles as base64)
+ */
+/proc/icon2base64(icon/icon)
if (!isicon(icon))
return FALSE
- WRITE_FILE(GLOB.iconCache[iconKey], icon)
- var/iconData = GLOB.iconCache.ExportText(iconKey)
+ WRITE_FILE(GLOB.dummySave["dummy"], icon)
+ var/iconData = GLOB.dummySave.ExportText("dummy")
var/list/partial = splittext(iconData, "{")
return replacetext(copytext_char(partial[2], 3, -5), "\n", "")
-/proc/icon2html(thing, target, icon_state, dir, frame = 1, moving = FALSE)
+/proc/icon2html(thing, target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE)
if (!thing)
return
var/key
var/icon/I = thing
+
if (!target)
return
if (target == world)
@@ -1136,17 +1148,26 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
if (!isicon(I))
if (isfile(thing)) //special snowflake
var/name = sanitize_filename("[generate_asset_name(thing)].png")
- if(!SSassets.cache[name])
- register_asset(name, thing)
+ if (!SSassets.cache[name])
+ SSassets.transport.register_asset(name, thing)
for (var/thing2 in targets)
- send_asset(thing2, key)
- return ""
+ SSassets.transport.send_assets(thing2, name)
+ if(sourceonly)
+ return SSassets.transport.get_asset_url(name)
+ return "
"
var/atom/A = thing
- if (isnull(dir))
- dir = A.dir
+
+ I = A.icon
if (isnull(icon_state))
icon_state = A.icon_state
- I = A.icon
+ if (!(icon_state in icon_states(I, 1)))
+ icon_state = initial(A.icon_state)
+ if (isnull(dir))
+ dir = initial(A.dir)
+
+ if (isnull(dir))
+ dir = A.dir
+
if (ishuman(thing)) // Shitty workaround for a BYOND issue.
var/icon/temp = I
I = icon()
@@ -1162,11 +1183,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
key = "[generate_asset_name(I)].png"
if(!SSassets.cache[key])
- register_asset(key, I)
+ SSassets.transport.register_asset(key, I)
for (var/thing2 in targets)
- send_asset(thing2, key)
+ SSassets.transport.send_assets(thing2, key)
- return "
"
+ return "
"
/proc/icon2base64html(thing)
if (!thing)
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 045ca2c519..1d09057617 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -358,7 +358,7 @@
roundend_report.stylesheets = list()
roundend_report.add_stylesheet("roundend", 'html/browser/roundend.css')
roundend_report.add_stylesheet("font-awesome", 'html/font-awesome/css/all.min.css')
- roundend_report.open(0)
+ roundend_report.open(FALSE)
/datum/controller/subsystem/ticker/proc/personal_report(client/C, popcount)
var/list/parts = list()
@@ -402,7 +402,7 @@
for (var/i in GLOB.ai_list)
var/mob/living/silicon/ai/aiPlayer = i
if(aiPlayer.mind)
- parts += "[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was deactivated"] were:"
+ parts += "[aiPlayer.name][aiPlayer.mind.hide_ckey ? "" : " (Played by: [aiPlayer.mind.key])"]'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was deactivated"] were:"
parts += aiPlayer.laws.get_law_list(include_zeroth=TRUE)
parts += "Total law changes: [aiPlayer.law_change_counter]"
@@ -413,14 +413,14 @@
for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
borg_num--
if(robo.mind)
- robolist += "[robo.name] (Played by: [robo.mind.key])[robo.stat == DEAD ? " (Deactivated)" : ""][borg_num ?", ":""]
"
+ robolist += "[robo.name][robo.mind.hide_ckey ? "" : " (Played by: [robo.mind.key])"] [robo.stat == DEAD ? " (Deactivated)" : ""][borg_num ?", ":""]
"
parts += "[robolist]"
if(!borg_spacer)
borg_spacer = TRUE
for (var/mob/living/silicon/robot/robo in GLOB.silicon_mobs)
if (!robo.connected_ai && robo.mind)
- parts += "[borg_spacer?"
":""][robo.name] (Played by: [robo.mind.key]) [(robo.stat != DEAD)? "survived as an AI-less borg!" : "was unable to survive the rigors of being a cyborg without an AI."] Its laws were:"
+ parts += "[borg_spacer?"
":""][robo.name][robo.mind.hide_ckey ? "" : " (Played by: [robo.mind.key])"] [(robo.stat != DEAD)? "survived as an AI-less borg!" : "was unable to survive the rigors of being a cyborg without an AI."] Its laws were:"
if(robo) //How the hell do we lose robo between here and the world messages directly above this?
parts += robo.laws.get_law_list(include_zeroth=TRUE)
@@ -529,7 +529,7 @@
var/jobtext = ""
if(ply.assigned_role)
jobtext = " the [ply.assigned_role]"
- var/text = "[ply.key] was [ply.name][jobtext] and"
+ var/text = "[ply.hide_ckey ? "[ply.name][jobtext] " : "[ply.key] was [ply.name][jobtext] and "]"
if(ply.current)
if(ply.current.stat == DEAD)
text += " died"
diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm
index 7a18d2ce01..bbbf99c9de 100644
--- a/code/__HELPERS/type2type.dm
+++ b/code/__HELPERS/type2type.dm
@@ -462,16 +462,14 @@
else
. = max(0, min(255, 138.5177312231 * log(temp - 10) - 305.0447927307))
-/proc/fusionpower2text(power) //used when displaying fusion power on analyzers
- switch(power)
- if(0 to 5)
- return "low"
- if(5 to 20)
- return "mid"
- if(20 to 50)
- return "high"
- if(50 to INFINITY)
- return "super"
+/proc/instability2text(instability) //used when displaying fusion power on analyzers
+ switch(instability)
+ if(0 to 2)
+ return "stable, meaning that its heat will always increase."
+ if(2 to 3)
+ return "metastable, meaning that its heat will trend upwards."
+ if (3 to INFINITY)
+ return "unstable, meaning that its heat will trend downwards."
/proc/color2hex(color) //web colors
if(!color)
@@ -620,6 +618,12 @@
else //regex everything else (works for /proc too)
return lowertext(replacetext("[the_type]", "[type2parent(the_type)]/", ""))
+
+/// Return html to load a url.
+/// for use inside of browse() calls to html assets that might be loaded on a cdn.
+/proc/url2htmlloader(url)
+ return {"
"
dat += "Fetish content prefs" dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]" + dat += "Genital examine text:[(cit_toggles & GENITAL_EXAMINE) ? "Enabled" : "Disabled"] " + dat += "Vore examine text:[(cit_toggles & VORE_EXAMINE) ? "Enabled" : "Disabled"] " dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"] " dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"] " dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"] " @@ -1446,6 +1450,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(!isnull(msg)) features["ooc_notes"] = msg + if("hide_ckey") + hide_ckey = !hide_ckey + if(user) + user.mind?.hide_ckey = hide_ckey + if("hair") var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null if(new_hair) @@ -2353,6 +2362,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) parent.mob.hud_used.update_parallax_pref(parent.mob) // Citadel edit - Prefs don't work outside of this. :c + + if("genital_examine") + cit_toggles ^= GENITAL_EXAMINE + + if("vore_examine") + cit_toggles ^= VORE_EXAMINE + if("hound_sleeper") cit_toggles ^= MEDIHOUND_SLEEPER diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 55a594cf21..8591d77e50 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -515,7 +515,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["scars4"] >> scars_list["4"] S["scars5"] >> scars_list["5"] S["chosen_limb_id"] >> chosen_limb_id - + S["hide_ckey"] >> hide_ckey //saved per-character //Custom names for(var/custom_name_id in GLOB.preferences_custom_names) @@ -859,6 +859,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["joblessrole"] , joblessrole) //Write prefs WRITE_FILE(S["job_preferences"] , job_preferences) + WRITE_FILE(S["hide_ckey"] , hide_ckey) //Quirks WRITE_FILE(S["all_quirks"] , all_quirks) @@ -874,6 +875,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["scars4"] , scars_list["4"]) WRITE_FILE(S["scars5"] , scars_list["5"]) + //gear loadout if(chosen_gear.len) var/text_to_save = chosen_gear.Join("|") diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 951e36f9a6..e16a491c61 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -145,8 +145,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglemidis)() to_chat(usr, "You will no longer hear sounds uploaded by admins") usr.stop_sound_channel(CHANNEL_ADMIN) var/client/C = usr.client - if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) - C.chatOutput.stopMusic() + C?.tgui_panel?.stop_music() SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Midis", "[usr.client.prefs.toggles & SOUND_MIDI ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/togglemidis/Get_checked(client/C) return C.prefs.toggles & SOUND_MIDI @@ -234,8 +233,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleprayersounds)() set desc = "Stop Current Sounds" SEND_SOUND(usr, sound(null)) var/client/C = usr.client - if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) - C.chatOutput.stopMusic() + C?.tgui_panel?.stop_music() SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Stop Self Sounds")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index fa1145ecea..99703482b9 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -158,88 +158,6 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") else to_chat(src, "There are no admin notices at the moment.") -/client/verb/fix_chat() - set name = "Fix chat" - set category = "OOC" - if (!chatOutput || !istype(chatOutput)) - var/action = alert(src, "Invalid Chat Output data found!\nRecreate data?", "Wot?", "Recreate Chat Output data", "Cancel") - if (action != "Recreate Chat Output data") - return - chatOutput = new /datum/chatOutput(src) - chatOutput.start() - action = alert(src, "Goon chat reloading, wait a bit and tell me if it's fixed", "", "Fixed", "Nope") - if (action == "Fixed") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by re-creating the chatOutput datum") - else - chatOutput.load() - action = alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No") - if (action == "Yes") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by re-creating the chatOutput datum and forcing a load()") - else - action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.\nWe could also disable fancy chat and re-enable oldchat", "", "Thanks anyways", "Switch to old chat") - if (action == "Switch to old chat") - winset(src, "output", "is-visible=true;is-disabled=false") - winset(src, "browseroutput", "is-visible=false") - log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window after recreating the chatOutput and forcing a load()") - - else if (chatOutput.loaded) - var/action = alert(src, "ChatOutput seems to be loaded\nDo you want me to force a reload, wiping the chat log or just refresh the chat window because it broke/went away?", "Hmmm", "Force Reload", "Refresh", "Cancel") - switch (action) - if ("Force Reload") - chatOutput.loaded = FALSE - chatOutput.start() //this is likely to fail since it asks , but we should try it anyways so we know. - action = alert(src, "Goon chat reloading, wait a bit and tell me if it's fixed", "", "Fixed", "Nope") - if (action == "Fixed") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a start()") - else - chatOutput.load() - action = alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No") - if (action == "Yes") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a load()") - else - action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.\nWe could also disable fancy chat and re-enable oldchat", "", "Thanks anyways", "Switch to old chat") - if (action == "Switch to old chat") - winset(src, "output", "is-visible=true;is-disabled=false") - winset(src, "browseroutput", "is-visible=false") - log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window forcing a start() and forcing a load()") - - if ("Refresh") - chatOutput.showChat() - action = alert(src, "Goon chat refreshing, wait a bit and tell me if it's fixed", "", "Fixed", "Nope, force a reload") - if (action == "Fixed") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a show()") - else - chatOutput.loaded = FALSE - chatOutput.load() - action = alert(src, "How about now? (give it a moment)", "", "Yes", "No") - if (action == "Yes") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a load()") - else - action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.\nWe could also disable fancy chat and re-enable oldchat", "", "Thanks anyways", "Switch to old chat") - if (action == "Switch to old chat") - winset(src, "output", "is-visible=true;is-disabled=false") - winset(src, "browseroutput", "is-visible=false") - log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window forcing a show() and forcing a load()") - return - - else - chatOutput.start() - var/action = alert(src, "Manually loading Chat, wait a bit and tell me if it's fixed", "", "Fixed", "Nope") - if (action == "Fixed") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by manually calling start()") - else - chatOutput.load() - alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No") - if (action == "Yes") - log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by manually calling start() and forcing a load()") - else - action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.\nWe could also disable fancy chat and re-enable oldchat", "", "Thanks anyways", "Switch to old chat") - if (action == "Switch to old chat") - winset(src, "output", list2params(list("on-show" = "", "is-disabled" = "false", "is-visible" = "true"))) - winset(src, "browseroutput", "is-disabled=true;is-visible=false") - log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window after manually calling start() and forcing a load()") - - /client/verb/motd() set name = "MOTD" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index cf7dbc7462..6732f1c86c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -80,7 +80,9 @@ item_state = "hostrench" flags_inv = 0 strip_delay = 80 - unique_reskin = list("Coat" = "hostrench", "Cloak" = "trenchcloak") + unique_reskin = list("Coat" = "hostrench", + "Cloak" = "trenchcloak" + ) /obj/item/clothing/suit/armor/vest/warden name = "warden's jacket" diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 632d59187f..f496468371 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -5,9 +5,9 @@ var/obj/item/clothing/head/hooded/hood var/hoodtype = /obj/item/clothing/head/hooded/winterhood //so the chaplain hoodie or other hoodies can override this -/obj/item/clothing/suit/hooded/New() +/obj/item/clothing/suit/hooded/Initialize() + . = ..() hood = MakeHelmet() - ..() /obj/item/clothing/suit/hooded/Destroy() . = ..() @@ -48,7 +48,7 @@ /obj/item/clothing/suit/hooded/update_icon_state() icon_state = "[initial(icon_state)]" - if(ishuman(hood.loc)) + if(ishuman(hood?.loc)) var/mob/living/carbon/human/H = hood.loc if(H.head == hood) icon_state += "_t" @@ -131,8 +131,8 @@ //Hardsuit toggle code /obj/item/clothing/suit/space/hardsuit/Initialize() - helmet = MakeHelmet() . = ..() + helmet = MakeHelmet() /obj/item/clothing/suit/space/hardsuit/Destroy() if(helmet) diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index 18cd104ff8..f8292738ee 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -267,7 +267,7 @@ mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON|USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/christmas/croptop/green - name = "green feminine christmas suit" + name = "green croptop christmas suit" desc = "A simple green christmas suit. Smells minty!" icon_state = "christmasfemaleg" item_state = "christmasfemaleg" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 27fb0cc00d..85c1d0e114 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -118,7 +118,6 @@ icon_state = "plasmaman" item_state = "plasmaman" armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) - slowdown = 1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS mutantrace_variation = USE_TAUR_CLIP_MASK can_adjust = FALSE diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm index 3fd83899c9..64c07f5a38 100644 --- a/code/modules/emoji/emoji_parse.dm +++ b/code/modules/emoji/emoji_parse.dm @@ -17,7 +17,7 @@ if(search) emoji = lowertext(copytext(text, pos + length(text[pos]), search)) var/isthisapath = (emoji[1] == "/") && text2path(emoji) - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/goonchat) + var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) var/tag = sheet.icon_tag("emoji-[emoji]") if(tag) parsed += "[tag]" //evil way of enforcing 16x16 diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 395b3b88a5..7f0dedaab6 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -4,7 +4,6 @@ max_occurrences = 1 weight = 5 - gamemode_blacklist = list("dynamic") /datum/round_event/anomaly/anomaly_bluespace startWhen = 3 diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index a9a7ed50b9..8047976330 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -5,7 +5,6 @@ min_players = 10 max_occurrences = 5 weight = 20 - gamemode_blacklist = list("dynamic") /datum/round_event/anomaly/anomaly_flux startWhen = 10 diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index cabd7face8..7d2bb33889 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -4,7 +4,6 @@ max_occurrences = 5 weight = 20 - gamemode_blacklist = list("dynamic") /datum/round_event/anomaly/anomaly_grav diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 8c8fbd6d36..350c8fc946 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -4,7 +4,6 @@ max_occurrences = 5 weight = 20 - gamemode_blacklist = list("dynamic") /datum/round_event/anomaly/anomaly_pyro startWhen = 3 diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index 96d084873d..e2a4ceadf3 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -5,7 +5,6 @@ min_players = 20 max_occurrences = 2 weight = 5 - gamemode_blacklist = list("dynamic") /datum/round_event/anomaly/anomaly_vortex startWhen = 10 diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm index 3e8182a827..75c514774c 100644 --- a/code/modules/events/brain_trauma.dm +++ b/code/modules/events/brain_trauma.dm @@ -3,6 +3,13 @@ typepath = /datum/round_event/brain_trauma weight = 25 +/datum/round_event_control/brain_trauma/canSpawnEvent(var/players_amt, var/gamemode) + var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic") + for (var/mob/M in GLOB.alive_mob_list) + if(M.stat != DEAD && (M.mind?.assigned_role in enemy_roles)) + return TRUE + return FALSE + /datum/round_event/brain_trauma fakeable = FALSE @@ -14,19 +21,21 @@ continue if(!H.getorgan(/obj/item/organ/brain)) // If only I had a brain continue - + if(HAS_TRAIT(H,TRAIT_EXEMPT_HEALTH_EVENTS)) + continue + if(!is_station_level(H.z)) + continue traumatize(H) break /datum/round_event/brain_trauma/proc/traumatize(mob/living/carbon/human/H) var/resistance = pick( 65;TRAUMA_RESILIENCE_BASIC, - 30;TRAUMA_RESILIENCE_SURGERY, - 5;TRAUMA_RESILIENCE_LOBOTOMY) + 35;TRAUMA_RESILIENCE_SURGERY) var/trauma_type = pickweight(list( - BRAIN_TRAUMA_MILD = 60, - BRAIN_TRAUMA_SEVERE = 30, + BRAIN_TRAUMA_MILD = 80, + BRAIN_TRAUMA_SEVERE = 10, BRAIN_TRAUMA_SPECIAL = 10 )) diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index 1c88e68377..f0e4bd4a53 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -5,7 +5,6 @@ min_players = 15 max_occurrences = 1 - gamemode_blacklist = list("dynamic") /datum/round_event/brand_intelligence announceWhen = 21 diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 2c553fc8a7..d08e6267a0 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -5,7 +5,6 @@ min_players = 2 earliest_start = 10 MINUTES max_occurrences = 6 - gamemode_blacklist = list("dynamic") /datum/round_event/carp_migration announceWhen = 3 diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index 45fa1c8a01..cb62e0df22 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -2,7 +2,6 @@ name = "Communications Blackout" typepath = /datum/round_event/communications_blackout weight = 30 - gamemode_blacklist = list("dynamic") /datum/round_event/communications_blackout announceWhen = 1 diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index 860685c787..eb7edcafbf 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -5,7 +5,6 @@ max_occurrences = 1000 earliest_start = 0 MINUTES alert_observers = FALSE - gamemode_blacklist = list("dynamic") /datum/round_event/space_dust startWhen = 1 @@ -29,4 +28,4 @@ fakeable = FALSE /datum/round_event/sandstorm/tick() - spawn_meteors(10, GLOB.meteorsC) \ No newline at end of file + spawn_meteors(10, GLOB.meteorsC) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 5e5e318e3c..b850b4db62 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -5,7 +5,6 @@ min_players = 5 weight = 40 alert_observers = FALSE - gamemode_blacklist = list("dynamic") /datum/round_event/electrical_storm var/lightsoutAmount = 1 diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm index 77520198e8..cebf1ed14b 100644 --- a/code/modules/events/fake_virus.dm +++ b/code/modules/events/fake_virus.dm @@ -6,7 +6,7 @@ /datum/round_event/fake_virus/start() var/list/fake_virus_victims = list() for(var/mob/living/carbon/human/H in shuffle(GLOB.player_list)) - if(!H.client || H.stat == DEAD || H.InCritical()) + if(!H.client || H.stat == DEAD || H.InCritical() || HAS_TRAIT(H,TRAIT_EXEMPT_HEALTH_EVENTS)) continue fake_virus_victims += H diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index b3bc571a4a..8c33e69107 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -4,7 +4,6 @@ weight = 20 max_occurrences = 2 min_players = 40 // To avoid shafting lowpop - gamemode_blacklist = list("dynamic") /datum/round_event/heart_attack/start() var/list/heart_attack_contestants = list() @@ -20,4 +19,4 @@ var/mob/living/carbon/human/winner = pickweight(heart_attack_contestants) var/datum/disease/D = new /datum/disease/heart_failure() winner.ForceContractDisease(D, FALSE, TRUE) - announce_to_ghosts(winner) \ No newline at end of file + announce_to_ghosts(winner) diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index b15e9d1f99..c75aff0c4a 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -3,7 +3,6 @@ /datum/round_event_control/ion_storm name = "Ion Storm" typepath = /datum/round_event/ion_storm - gamemode_blacklist = list("dynamic") weight = 15 min_players = 2 diff --git a/code/modules/events/major_dust.dm b/code/modules/events/major_dust.dm index c594d7b3c0..d7d8f1aec8 100644 --- a/code/modules/events/major_dust.dm +++ b/code/modules/events/major_dust.dm @@ -2,7 +2,6 @@ name = "Major Space Dust" typepath = /datum/round_event/meteor_wave/major_dust weight = 8 - gamemode_blacklist = list("dynamic") /datum/round_event/meteor_wave/major_dust wave_name = "space dust" diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 7763f9950d..e69af1df13 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -10,7 +10,6 @@ min_players = 15 max_occurrences = 3 earliest_start = 25 MINUTES - gamemode_blacklist = list("dynamic") /datum/round_event/meteor_wave startWhen = 6 @@ -23,7 +22,7 @@ /datum/round_event/meteor_wave/setup() announceWhen = 1 - startWhen = rand(90, 180) // Apparently it is by 2 seconds, so 90 is actually 180 seconds, and 180 is 360 seconds. So this is 3-6 minutes + startWhen = 150 // 5 minutes if(GLOB.singularity_counter) startWhen *= 1 - min(GLOB.singularity_counter * SINGULO_BEACON_DISTURBANCE, SINGULO_BEACON_MAX_DISTURBANCE) endWhen = startWhen + 60 diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm index 6e5512a617..698f5130f1 100644 --- a/code/modules/events/nightmare.dm +++ b/code/modules/events/nightmare.dm @@ -2,7 +2,6 @@ name = "Spawn Nightmare" typepath = /datum/round_event/ghost_role/nightmare max_occurrences = 1 - gamemode_blacklist = list("dynamic") min_players = 20 /datum/round_event/ghost_role/nightmare diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 9ab5e8d517..4cbfb8ae9a 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -5,7 +5,7 @@ max_occurrences = 1 min_players = 10 earliest_start = 30 MINUTES - gamemode_blacklist = list("nuclear","dynamic") + gamemode_blacklist = list("nuclear") /datum/round_event_control/pirates/preRunEvent() if (!SSmapping.empty_space) diff --git a/code/modules/events/portal_storm.dm b/code/modules/events/portal_storm.dm index 457b5bd4ec..5ef30d0030 100644 --- a/code/modules/events/portal_storm.dm +++ b/code/modules/events/portal_storm.dm @@ -4,7 +4,6 @@ weight = 2 min_players = 15 earliest_start = 30 MINUTES - gamemode_blacklist = list("dynamic") /datum/round_event/portal_storm/syndicate_shocktroop boss_types = list(/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper = 2) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index 22e475a8ef..6bedce6b4b 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -3,7 +3,6 @@ typepath = /datum/round_event/processor_overload weight = 15 min_players = 20 - gamemode_blacklist = list("dynamic") /datum/round_event/processor_overload announceWhen = 1 diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 0a5bedb464..36e16bb2c9 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -2,7 +2,6 @@ name = "Radiation Storm" typepath = /datum/round_event/radiation_storm max_occurrences = 1 - gamemode_blacklist = list("dynamic") /datum/round_event/radiation_storm diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index d1c327e0f7..23ce6ce730 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -2,7 +2,6 @@ name = "Spider Infestation" typepath = /datum/round_event/spider_infestation weight = 5 - gamemode_blacklist = list("dynamic") max_occurrences = 1 min_players = 15 diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index dc672cec45..cd7b23a577 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -3,7 +3,6 @@ typepath = /datum/round_event/vent_clog weight = 10 max_occurrences = 3 - gamemode_blacklist = list("dynamic") min_players = 25 /datum/round_event/vent_clog diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 1b4716b407..0920c9ccb6 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -4,7 +4,6 @@ max_occurrences = 3 weight = 2 min_players = 2 - gamemode_blacklist = list("dynamic") /datum/round_event/wormholes diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 1117dbc3d3..be07826a7f 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -133,7 +133,7 @@ slices_num = 5 bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) - foodtype = GRAIN | DAIRY | FRUIT | SUGAR + foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/cakeslice/lime name = "lime cake slice" @@ -141,7 +141,7 @@ icon_state = "limecake_slice" filling_color = "#00FF00" tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) - foodtype = GRAIN | DAIRY | FRUIT | SUGAR + foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/store/cake/lemon name = "lemon cake" diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 39c9c6c04f..32a89dbd58 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -103,7 +103,7 @@ icon_state = "lime_sc" list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5) tastes = list("ice" = 1, "water" = 1, "limes" = 5) - foodtype = FRUIT + foodtype = FRUIT | ANTITOXIC /obj/item/reagent_containers/food/snacks/snowcones/lemon name = "lemon snowcone" @@ -191,7 +191,7 @@ icon_state = "fruitsalad_sc" list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5, /datum/reagent/consumable/limejuice = 5, /datum/reagent/consumable/orangejuice = 5) tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5) - foodtype = FRUIT + foodtype = FRUIT | ANTITOXIC /obj/item/reagent_containers/food/snacks/snowcones/pineapple name = "pineapple snowcone" diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index e0697cecea..b771a90907 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -232,7 +232,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins filling_color = "#00800" tastes = list("cobwebs" = 1, "sugar" = 2) - foodtype = JUNKFOOD | SUGAR + foodtype = JUNKFOOD | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/tobiko name = "tobiko" @@ -451,7 +451,7 @@ var/mutable_appearance/head var/headcolor = rgb(0, 0, 0) tastes = list("candy" = 1) - foodtype = JUNKFOOD | SUGAR + foodtype = JUNKFOOD | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/lollipop/Initialize() . = ..() @@ -756,4 +756,4 @@ bitesize = 2 name = "hot-cross bun" desc = "The Cross represents the Assistants that died for your sins." - icon_state = "hotcrossbun" \ No newline at end of file + icon_state = "hotcrossbun" diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index d65907daea..13a46395ea 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -509,7 +509,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3) cooked_type = null tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) - foodtype = GRAIN + foodtype = GRAIN | ANTITOXIC /obj/item/reagent_containers/food/snacks/dankpocket name = "\improper Dank-pocket" @@ -556,9 +556,11 @@ name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + foodtype += ANTITOXIC . = ..() if(fey) reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) + foodtype += ANTITOXIC /obj/item/reagent_containers/food/snacks/cracker name = "cracker" diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 81805f5529..24522503c1 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -171,8 +171,10 @@ name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + foodtype += ANTITOXIC if(fey) reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) + foodtype += ANTITOXIC /obj/item/reagent_containers/food/snacks/pie/xemeatpie diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index f30c182963..75cf8ffb82 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -109,7 +109,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket name = "donkpocket pizza slice" @@ -117,7 +117,7 @@ icon_state = "donkpocketpizzaslice" filling_color = "#FFA500" tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizza/dank name = "dank pizza" @@ -127,7 +127,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) - foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY + foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizzaslice/dank name = "dank pizza slice" @@ -135,7 +135,7 @@ icon_state = "dankpizzaslice" filling_color = "#2E8B57" tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) - foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY + foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizza/sassysage name = "sassysage pizza" @@ -187,6 +187,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/arnold bonus_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/iron = 10, /datum/reagent/medicine/omnizine = 30) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2) + /obj/item/reagent_containers/food/snacks/proc/try_break_off(mob/living/M, mob/living/user) //maybe i give you a pizza maybe i break off your arm var/obj/item/bodypart/l_arm = user.get_bodypart(BODY_ZONE_L_ARM) @@ -244,4 +245,4 @@ icon_state = "meatpizzaslice" filling_color = "#A52A2A" tastes = list("cardboard" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT \ No newline at end of file + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index be7c3d25da..8c6eecb829 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -20,7 +20,7 @@ bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6) list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("leaves" = 1) - foodtype = VEGETABLES + foodtype = VEGETABLES | ANTITOXIC /obj/item/reagent_containers/food/snacks/salad/herbsalad name = "herb salad" @@ -38,7 +38,7 @@ bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4) list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1) - foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT + foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT | ANTITOXIC /obj/item/reagent_containers/food/snacks/salad/oatmeal name = "oatmeal" @@ -133,7 +133,7 @@ trash = /obj/item/reagent_containers/glass/bowl list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/medicine/earthsblood = 3, /datum/reagent/medicine/omnizine = 5, /datum/reagent/drug/happiness = 2) tastes = list("hope" = 1) - foodtype = VEGETABLES + foodtype = VEGETABLES | ANTITOXIC /obj/item/reagent_containers/food/snacks/salad/gumbo name = "black eyed gumbo" diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index ffafcc6b1e..eea7cdb87d 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -89,7 +89,7 @@ icon_state = "nettlesoup" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("nettles" = 1) - foodtype = VEGETABLES + foodtype = VEGETABLES | ANTITOXIC /obj/item/reagent_containers/food/snacks/soup/mystery name = "mystery soup" diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index b4c7c89b74..4e8687fc23 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -89,7 +89,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5) filling_color = "#F5F5DC" tastes = list("sweetness" = 3, "cake" = 1) - foodtype = GRAIN | FRUIT | VEGETABLES + foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC custom_price = PRICE_CHEAP /obj/item/reagent_containers/food/snacks/energybar diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm deleted file mode 100644 index ce27dccb74..0000000000 --- a/code/modules/goonchat/browserOutput.dm +++ /dev/null @@ -1,341 +0,0 @@ -/********************************* -For the main html chat area -*********************************/ - -/// Should match the value set in the browser js -#define MAX_COOKIE_LENGTH 5 - -//Precaching a bunch of shit. Someone ship this out of here -GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of icons for the browser output - -//lazy renaming to chat_output, instead renamed to old chatOutput -/** - * The chatOutput datum exists to handle the goonchat browser. - * On client, created on Client/New() - */ -/datum/chatOutput - /// The client that owns us. - var/client/owner - /// How many times client data has been checked - var/total_checks = 0 - /// When to next clear the client data checks counter - var/next_time_to_clear = 0 - /// Has the client loaded the browser output area? - var/loaded = FALSE - /// If they haven't loaded chat, this is where messages will go until they do - var/list/messageQueue - var/cookieSent = FALSE // Has the client sent a cookie for analysis - var/broken = FALSE - var/list/connectionHistory //Contains the connection history passed from chat cookie - var/adminMusicVolume = 25 //This is for the Play Global Sound verb - -/datum/chatOutput/New(client/C) - owner = C - messageQueue = list() - connectionHistory = list() - -/** - * start: Tries to load the chat browser - * Aborts if a problem is encountered. - * Async because this is called from Client/New. - */ -/datum/chatOutput/proc/start() - set waitfor = FALSE - //Check for existing chat - if(!owner) - return FALSE - - if(!winexists(owner, "browseroutput")) // Oh goddamnit. - broken = TRUE - message_admins("Couldn't start chat for [key_name_admin(owner)]!") - . = FALSE - alert(owner.mob, "Updated chat window does not exist. If you are using a custom skin file please allow the game to update.") - return - - if(winget(owner, "browseroutput", "is-visible") == "true") //Already setup - doneLoading() - - else //Not setup - load() - - return TRUE - -/// Loads goonchat and sends assets. -/datum/chatOutput/proc/load() - set waitfor = FALSE - if(!owner) - return - - var/datum/asset/stuff = get_asset_datum(/datum/asset/group/goonchat) - stuff.send(owner) - - owner << browse(file('code/modules/goonchat/browserassets/html/browserOutput.html'), "window=browseroutput") - -/// Interprets input from the client. Will send data back if required. -/datum/chatOutput/Topic(href, list/href_list) - if(usr.client != owner) - return TRUE - - // Build arguments. - // Arguments are in the form "param[paramname]=thing" - var/list/params = list() - for(var/key in href_list) - if(length_char(key) > 7 && findtext(key, "param")) // 7 is the amount of characters in the basic param key template. - var/param_name = copytext_char(key, 7, -1) - var/item = href_list[key] - - params[param_name] = item - - var/data // Data to be sent back to the chat. - switch(href_list["proc"]) - if("doneLoading") - data = doneLoading(arglist(params)) - - if("debug") - data = debug(arglist(params)) - - if("ping") - data = ping(arglist(params)) - - if("analyzeClientData") - data = analyzeClientData(arglist(params)) - - if("setMusicVolume") - data = setMusicVolume(arglist(params)) - if("colorPresetPost") //User just swapped color presets in their goonchat preferences. Do we do anything else? - switch(href_list["preset"]) - if("light") - owner.force_white_theme() - if("dark" || "normal") - owner.force_dark_theme() - // if("swaptodarkmode") - // swaptodarkmode() - // if("swaptolightmode") - // swaptolightmode() - - if(data) - ehjax_send(data = data) - - -/// Called on chat output done-loading by JS. -/datum/chatOutput/proc/doneLoading() - if(loaded) - return - - testing("Chat loaded for [owner.ckey]") - loaded = TRUE - showChat() - - - for(var/message in messageQueue) - // whitespace has already been handled by the original to_chat - to_chat(owner, message, handle_whitespace=FALSE) - - messageQueue = null - sendClientData() - - syncRegex() - - //do not convert to to_chat() - SEND_TEXT(owner, "Failed to load fancy chat, reverting to old chat. Certain features won't work.") - -/// Hides the standard output and makes the browser visible. -/datum/chatOutput/proc/showChat() - winset(owner, "output", "is-visible=false") - winset(owner, "browseroutput", "is-disabled=false;is-visible=true") - -/// Calls syncRegex on all currently owned chatOutput datums -/proc/syncChatRegexes() - for (var/user in GLOB.clients) - var/client/C = user - var/datum/chatOutput/Cchat = C.chatOutput - if (Cchat && !Cchat.broken && Cchat.loaded) - Cchat.syncRegex() - -/// Used to dynamically add regexes to the browser output. Currently only used by the IC filter. -/datum/chatOutput/proc/syncRegex() - var/list/regexes = list() - /* - if (config.ic_filter_regex) - regexes["show_filtered_ic_chat"] = list( - config.ic_filter_regex.name, - "ig", - "$1" - ) - */ - if (regexes.len) - ehjax_send(data = list("syncRegex" = regexes)) - -/// Sends json encoded data to the browser. -/datum/chatOutput/proc/ehjax_send(client/C = owner, window = "browseroutput", data) - if(islist(data)) - data = json_encode(data) - C << output("[data]", "[window]:ehjaxCallback") - -/** - * Sends music data to the browser. If enabled by the browser, it will start playing. - * Arguments: - * music must be a https adress. - * extra_data is a list. The keys "pitch", "start" and "end" are used. - ** "pitch" determines the playback rate - ** "start" determines the start time of the sound - ** "end" determines when the musics stops playing - */ -/datum/chatOutput/proc/sendMusic(music, pitch, list/extra_data) //someone remove pitch - if(!findtext(music, GLOB.is_http_protocol)) - return - var/list/music_data = list("adminMusic" = url_encode(url_encode(music))) - - if(extra_data?.len) - music_data["musicRate"] = extra_data["pitch"] || pitch - music_data["musicSeek"] = extra_data["start"] - music_data["musicHalt"] = extra_data["end"] - - ehjax_send(data = music_data) - -/// Stops music playing throw the browser. -/datum/chatOutput/proc/stopMusic() - ehjax_send(data = "stopMusic") - -/// Setter for adminMusicVolume. Sanitizes the value to between 0 and 100. -/datum/chatOutput/proc/setMusicVolume(volume = "") - if(volume) - adminMusicVolume = clamp(text2num(volume), 0, 100) - -/// Sends client connection details to the chat to handle and save -/datum/chatOutput/proc/sendClientData() - //Get dem deets - var/list/deets = list("clientData" = list()) - deets["clientData"]["ckey"] = owner.ckey - deets["clientData"]["ip"] = owner.address - deets["clientData"]["compid"] = owner.computer_id - var/data = json_encode(deets) - ehjax_send(data = data) - -/// Called by client, sent data to investigate (cookie history so far) -/datum/chatOutput/proc/analyzeClientData(cookie = "") - //Spam check - if(world.time > next_time_to_clear) - next_time_to_clear = world.time + (3 SECONDS) - total_checks = 0 - - total_checks += 1 - - if(total_checks > SPAM_TRIGGER_AUTOMUTE) - message_admins("[key_name(owner)] kicked for goonchat topic spam") - qdel(owner) - return - - if(!cookie) - return - - if(cookie != "none") - var/list/connData = json_decode(cookie) - if (connData && islist(connData) && connData.len > 0 && connData["connData"]) - connectionHistory = connData["connData"] //lol fuck - var/list/found = new() - - if(connectionHistory.len > MAX_COOKIE_LENGTH) - message_admins("[key_name(src.owner)] was kicked for an invalid ban cookie)") - qdel(owner) - return - - for(var/i in connectionHistory.len to 1 step -1) - if(QDELETED(owner)) - //he got cleaned up before we were done - return - var/list/row = src.connectionHistory[i] - if (!row || row.len < 3 || (!row["ckey"] || !row["compid"] || !row["ip"])) //Passed malformed history object - return - if (world.IsBanned(row["ckey"], row["ip"], row["compid"], real_bans_only=TRUE)) - found = row - break - CHECK_TICK - - //Uh oh this fucker has a history of playing on a banned account!! - if (found.len > 0) - message_admins("[key_name(src.owner)] has a cookie from a banned account! (Matched: [found["ckey"]], [found["ip"]], [found["compid"]])") - log_admin_private("[key_name(owner)] has a cookie from a banned account! (Matched: [found["ckey"]], [found["ip"]], [found["compid"]])") - - cookieSent = TRUE - -/// Called by js client every 60 seconds -/datum/chatOutput/proc/ping() - return "pong" - -/// Called by js client on js error -/datum/chatOutput/proc/debug(error) - log_world("\[[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]\] Client: [(src.owner.key ? src.owner.key : src.owner)] triggered JS error: [error]") - -/// Global chat proc. to_chat_immediate will circumvent SSchat and send data as soon as possible. -/proc/to_chat_immediate(target, message, handle_whitespace = TRUE, trailing_newline = TRUE, confidential = FALSE) - if(!target || !message) - return - - if(target == world) - target = GLOB.clients - - var/original_message = message - if(handle_whitespace) - message = replacetext(message, "\n", " ") - message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]") //EIGHT SPACES IN TOTAL!! - if(trailing_newline) - message += " " - - if(islist(target)) - // Do the double-encoding outside the loop to save nanoseconds - var/twiceEncoded = url_encode(url_encode(message)) - for(var/I in target) - var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible - - if (!C) - continue - - //Send it to the old style output window. - SEND_TEXT(C, original_message) - - if(!C.chatOutput || C.chatOutput.broken) // A player who hasn't updated his skin file. - continue - - if(!C.chatOutput.loaded) - //Client still loading, put their messages in a queue - C.chatOutput.messageQueue += message - continue - - C << output(twiceEncoded, "browseroutput:output") - else - var/client/C = CLIENT_FROM_VAR(target) //Grab us a client if possible - - if (!C) - return - - //Send it to the old style output window. - SEND_TEXT(C, original_message) - - if(!C.chatOutput || C.chatOutput.broken) // A player who hasn't updated his skin file. - return - - if(!C.chatOutput.loaded) - //Client still loading, put their messages in a queue - C.chatOutput.messageQueue += message - return - - // url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript. - C << output(url_encode(url_encode(message)), "browseroutput:output") - -/// Sends a text message to the target. -/proc/to_chat(target, message, handle_whitespace = TRUE, trailing_newline = TRUE, confidential = FALSE) - if(Master.current_runlevel == RUNLEVEL_INIT || !SSchat?.initialized) - to_chat_immediate(target, message, handle_whitespace, trailing_newline, confidential) - return - SSchat.queue(target, message, handle_whitespace, trailing_newline, confidential) - -/// Dark mode light mode stuff. Yell at KMC if this breaks! (See darkmode.dm for documentation) -/datum/chatOutput/proc/swaptolightmode() - owner.force_white_theme() - -/// Light mode stuff. (See darkmode.dm for documentation) -/datum/chatOutput/proc/swaptodarkmode() - owner.force_dark_theme() - -#undef MAX_COOKIE_LENGTH diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css deleted file mode 100644 index 2669a3634a..0000000000 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ /dev/null @@ -1,464 +0,0 @@ -/***************************************** -* -* GLOBAL STYLES -* -******************************************/ -html, body { - padding: 0; - margin: 0; - height: 100%; - color: #000000; -} -body { - background: #E0E0E0; /*CIT CHANGE - darkens chatbox a lil*/ - font-family: Verdana, sans-serif; - font-size: 13px; - line-height: 1.2; - overflow-x: hidden; - overflow-y: scroll; - word-wrap: break-word; -} - -em { - font-style: normal; - font-weight: bold; -} - -img { - margin: 0; - padding: 0; - line-height: 1; - -ms-interpolation-mode: nearest-neighbor; - image-rendering: pixelated; -} -img.icon { - height: 1em; - min-height: 16px; - width: auto; - vertical-align: bottom; -} - - -.r:before { /* "repeated" badge class for combined messages */ - content: 'x'; -} -.r { - display: inline-block; - min-width: 0.5em; - font-size: 0.7em; - padding: 0.2em 0.3em; - line-height: 1; - color: white; - text-align: center; - white-space: nowrap; - vertical-align: middle; - background-color: crimson; - border-radius: 10px; -} - -a {color: #0000ff;} -a.visited {color: #ff00ff;} -a:visited {color: #ff00ff;} -a.popt {text-decoration: none;} - -/***************************************** -* -* OUTPUT NOT RELATED TO ACTUAL MESSAGES -* -******************************************/ -#loading { - position: fixed; - width: 300px; - height: 150px; - text-align: center; - left: 50%; - top: 50%; - margin: -75px 0 0 -150px; -} -#loading i {display: block; padding-bottom: 3px;} - -#messages { - font-size: 13px; - padding: 3px; - margin: 0; - word-wrap: break-word; -} -#newMessages { - position: fixed; - display: block; - bottom: 0; - right: 0; - padding: 8px; - background: #d0d0d0; - text-decoration: none; - font-variant: small-caps; - font-size: 1.1em; - font-weight: bold; - color: #333; -} -#newMessages:hover {background: #ccc;} -#newMessages i {vertical-align: middle; padding-left: 3px;} -#ping { - position: fixed; - top: 0; - right: 135px; - width: 45px; - background: #d0d0d0; - height: 30px; - padding: 8px 0 2px 0; -} -#ping i {display: block; text-align: center;} -#ping .ms { - display: block; - text-align: center; - font-size: 8pt; - padding-top: 2px; -} -#userBar { - position: fixed; - top: 0; - right: 0; -} -#userBar .subCell { - background: #d0d0d0; - height: 30px; - padding: 5px 0; - display: block; - color: #333; - text-decoration: none; - line-height: 28px; - border-top: 1px solid #b4b4b4; -} -#userBar .subCell:hover {background: #ccc;} -#userBar .toggle { - width: 45px; - background: #ccc; - border-top: 0; - float: right; - text-align: center; -} -#userBar .sub {clear: both; display: none; width: 180px;} -#userBar .sub.scroll {overflow-y: scroll;} -#userBar .sub.subCell {padding: 3px 0 3px 8px; line-height: 30px; font-size: 0.9em; clear: both;} -#userBar .sub span { - display: block; - line-height: 30px; - float: left; -} -#userBar .sub i { - display: block; - padding: 0 5px; - font-size: 1.1em; - width: 22px; - text-align: center; - line-height: 30px; - float: right; -} -#userBar .sub input { - position: absolute; - padding: 7px 5px; - width: 121px; - line-height: 30px; - float: left; -} -#userBar .topCell {border-top: 0;} - -/* POPUPS */ -.popup { - position: fixed; - top: 50%; - left: 50%; - background: #d0d0d0; -} -.popup .close { - position: absolute; - background: #aaa; - top: 0; - right: 0; - color: #333; - text-decoration: none; - z-index: 2; - padding: 0 10px; - height: 30px; - line-height: 30px; -} -.popup .close:hover {background: #999;} -.popup .head { - background: #999; - color: #d0d0d0; - padding: 0 10px; - height: 30px; - line-height: 30px; - text-transform: uppercase; - font-size: 0.9em; - font-weight: bold; - border-bottom: 2px solid green; -} -.popup input {border: 1px solid #999; background: #fff; margin: 0; padding: 5px; outline: none; color: #333;} -.popup input[type=text]:hover, .popup input[type=text]:active, .popup input[type=text]:focus {border-color: green;} -.popup input[type=submit] {padding: 5px 10px; background: #999; color: #d0d0d0; text-transform: uppercase; font-size: 0.9em; font-weight: bold;} -.popup input[type=submit]:hover, .popup input[type=submit]:focus, .popup input[type=submit]:active {background: #aaa; cursor: pointer;} - -.changeFont {padding: 10px;} -.changeFont a {display: block; text-decoration: none; padding: 3px; color: #333;} -.changeFont a:hover {background: #ccc;} - -.highlightPopup {padding: 10px; text-align: center;} -.highlightPopup input[type=text] {display: block; width: 215px; text-align: left; margin-top: 5px;} -.highlightPopup input.highlightColor {background-color: #FFFF00;} -.highlightPopup input.highlightTermSubmit {margin-top: 5px;} - -/* ADMIN CONTEXT MENU */ -.contextMenu { - background-color: #d0d0d0; - position: fixed; - margin: 2px; - width: 150px; -} -.contextMenu a { - display: block; - padding: 2px 5px; - text-decoration: none; - color: #333; -} - -.contextMenu a:hover { - background-color: #ccc; -} - -/* ADMIN FILTER MESSAGES MENU */ -.filterMessages {padding: 5px;} -.filterMessages div {padding: 2px 0;} -.filterMessages input {} -.filterMessages label {} - -.icon-stack {height: 1em; line-height: 1em; width: 1em; vertical-align: middle; margin-top: -2px;} - - -/***************************************** -* -* OUTPUT ACTUALLY RELATED TO MESSAGES -* -******************************************/ - -/* MOTD */ -.motd {color: #638500; font-family: Verdana, sans-serif;} -.motd h1, .motd h2, .motd h3, .motd h4, .motd h5, .motd h6 {color: #638500; text-decoration: underline;} -.motd a, .motd a:link, .motd a:visited, .motd a:active, .motd a:hover {color: #638500;} - -/* ADD HERE FOR BOLD */ -.bold, .name, .prefix, .ooc, .looc, .adminooc, .admin, .medal, .yell {font-weight: bold;} - -/* ADD HERE FOR ITALIC */ -.italic, .italics, .emote {font-style: italic;} - -/* OUTPUT COLORS */ -.highlight {background: yellow;} - -h1, h2, h3, h4, h5, h6 {color: #0000ff;font-family: Georgia, Verdana, sans-serif;} -h1.alert, h2.alert {color: #000000;} - -em {font-style: normal; font-weight: bold;} - -.ooc {color: #002eb8; font-weight: bold;} -.looc {color: #6699CC; font-weight: bold;} -.antagooc {color: #b8002e; font-weight: bold;} -.adminobserverooc {color: #0099cc; font-weight: bold;} -.adminooc {color: #700038; font-weight: bold;} - -.adminsay {color: #FF4500} -.admin {color: #386aff; font-weight: bold;} - -.name { font-weight: bold;} - -.say {} -.deadsay {color: #5c00e6;} -.binarysay {color: #20c20e; background-color: #000000; display: block;} -.binarysay a {color: #00ff00;} -.binarysay a:active, .binarysay a:visited {color: #88ff88;} -.radio {color: #008000;} -.sciradio {color: #993399;} -.comradio {color: #948f02;} -.secradio {color: #a30000;} -.medradio {color: #337296;} -.engradio {color: #fb5613;} -.suppradio {color: #a8732b;} -.servradio {color: #6eaa2c;} -.syndradio {color: #6d3f40;} -.centcomradio {color: #686868;} -.aiprivradio {color: #ff00ff;} -.redteamradio {color: #ff0000;} -.blueteamradio {color: #0000ff;} - -.yell { font-weight: bold;} - -.alert {color: #ff0000;} -h1.alert, h2.alert {color: #000000;} - -.emote { font-style: italic;} -.selecteddna {color: #ffffff; background-color: #001B1B} - -.attack {color: #ff0000;} -.disarm {color: #990000;} -.passive {color: #660000;} - -.userdanger {color: #ff0000; font-weight: bold; font-size: 185%;} -.bolddanger {color: #c51e1e;font-weight: bold;} -.danger {color: #ff0000;} -.tinydanger {color: #c51e1e; font-size: 85%;} -.smalldanger {color: #c51e1e; font-size: 90%;} -.warning {color: #ff0000; font-style: italic;} -.alertwarning {color: #FF0000; font-weight: bold} -.boldwarning {color: #ff0000; font-style: italic; font-weight: bold} -.announce {color: #228b22; font-weight: bold;} -.boldannounce {color: #ff0000; font-weight: bold;} -.greenannounce {color: #00ff00; font-weight: bold;} -.rose {color: #ff5050;} -.info {color: #0000CC;} -.notice {color: #000099;} -.tinynotice {color: #6685f5; font-style: italic; font-size: 85%;} -.smallnotice {color: #6685f5; font-size: 90%;} -.smallnoticeital {color: #6685f5; font-style: italic; font-size: 90%;} -.boldnotice {color: #000099; font-weight: bold;} -.adminnotice {color: #0000ff;} -.adminhelp {color: #ff0000; font-weight: bold;} -.unconscious {color: #0000ff; font-weight: bold;} -.suicide {color: #ff5050; font-style: italic;} -.green {color: #03ff39;} -.red {color: #FF0000;} -.pink {color: #FF69Bf;} -.blue {color: #0000FF;} -.nicegreen {color: #14a833;} -.userlove {color: #FF1493; font-style: italic; font-weight: bold; text-shadow: 0 0 6px #ff6dbc;} -.love {color: #ff006a; font-style: italic; text-shadow: 0 0 6px #ff6d6d;} -.shadowling {color: #3b2769;} -.cult {color: #960000;} - -.cultitalic {color: #960000; font-style: italic;} -.cultbold {color: #960000; font-style: italic; font-weight: bold;} -.cultboldtalic {color: #960000; font-weight: bold; font-size: 185%;} - -.cultlarge {color: #960000; font-weight: bold; font-size: 185%;} -.narsie {color: #960000; font-weight: bold; font-size: 925%;} -.narsiesmall {color: #960000; font-weight: bold; font-size: 370%;} -.colossus {color: #7F282A; font-size: 310%;} -.hierophant {color: #660099; font-weight: bold; font-style: italic;} -.hierophant_warning {color: #660099; font-style: italic;} -.purple {color: #5e2d79;} -.holoparasite {color: #35333a;} - -.revennotice {color: #1d2953;} -.revenboldnotice {color: #1d2953; font-weight: bold;} -.revenbignotice {color: #1d2953; font-weight: bold; font-size: 185%;} -.revenminor {color: #823abb} -.revenwarning {color: #760fbb; font-style: italic;} -.revendanger {color: #760fbb; font-weight: bold; font-size: 185%;} -.umbra {color: #5000A0;} -.umbra_emphasis {color: #5000A0; font-weight: bold; font-style: italic;} -.umbra_large {color: #5000A0; font-size: 185%; font-weight: bold; font-style: italic;} - -.deconversion_message {color: #5000A0; font-size: 185%; font-style: italic;} - -.brass {color: #BE8700;} -.heavy_brass {color: #BE8700; font-weight: bold; font-style: italic;} -.large_brass {color: #BE8700; font-size: 185%;} -.big_brass {color: #BE8700; font-size: 185%; font-weight: bold; font-style: italic;} -.ratvar {color: #BE8700; font-size: 370%; font-weight: bold; font-style: italic;} -.alloy {color: #42474D;} -.heavy_alloy {color: #42474D; font-weight: bold; font-style: italic;} -.nezbere_large {color: #42474D; font-size: 185%; font-weight: bold; font-style: italic;} -.nezbere {color: #42474D; font-weight: bold; font-style: italic;} -.nezbere_small {color: #42474D;} -.sevtug_large {color: #AF0AAF; font-size: 185%; font-weight: bold; font-style: italic;} -.sevtug {color: #AF0AAF; font-weight: bold; font-style: italic;} -.sevtug_small {color: #AF0AAF;} -.inathneq_large {color: #1E8CE1; font-size: 185%; font-weight: bold; font-style: italic;} -.inathneq {color: #1E8CE1; font-weight: bold; font-style: italic;} -.inathneq_small {color: #1E8CE1;} -.nzcrentr_large {color: #DAAA18; font-size: 185%; font-weight: bold; font-style: italic;} -.nzcrentr {color: #DAAA18; font-weight: bold; font-style: italic;} -.nzcrentr_small {color: #DAAA18;} -.neovgre_large {color: #6E001A; font-size: 185%; font-weight: bold; font-style: italic;} -.neovgre {color: #6E001A; font-weight: bold; font-style: italic;} -.neovgre_small {color: #6E001A;} - -.newscaster {color: #800000;} -.ghostalert {color: #5c00e6; font-style: italic; font-weight: bold;} - -.alien {color: #543354;} -.noticealien {color: #00c000;} -.alertalien {color: #00c000; font-weight: bold;} -.changeling {color: #800080; font-style: italic;} - -.spider {color: #4d004d; font-weight: bold; font-size: 185%;} - -.interface {color: #330033;} - -.sans {font-family: "Comic Sans MS", cursive, sans-serif;} -.papyrus {font-family: "Papyrus", cursive, sans-serif;} -.robot {font-family: "Courier New", cursive, sans-serif;} - -.command_headset {font-weight: bold; font-size: 160%;} -.small {font-size: 60%;} -.big {font-size: 185%;} -.reallybig {font-size: 245%;} -.extremelybig {font-size: 310%;} -.greentext {color: #00FF00; font-size: 185%;} -.redtext {color: #FF0000; font-size: 185%;} -.clown {color: #FF69Bf; font-size: 160%; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} -.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} -.spooky {color: #FF6100;} -.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} - -.lethal {color: #bf3d3d; font-weight: bold;} -.stun {color: #0f81bc; font-weight: bold;} -.ion {color: #d084d6; font-weight: bold;} -.xray {color: #32c025; font-weight: bold;} - -@keyframes velvet { - 0% { color: #400020; } - 40% { color: #FF0000; } - 50% { color: #FF8888; } - 60% { color: #FF0000; } - 100% { color: #400020; } -} - -.hypnophrase {color: #202020; font-weight: bold; animation: hypnocolor 1500ms infinite;} -@keyframes hypnocolor { - 0% { color: #202020; } - 25% { color: #4b02ac; } - 50% { color: #9f41f1; } - 75% { color: #541c9c; } - 100% { color: #7adbf3; } -} - -.phobia {color: #dd0000; font-weight: bold; animation: phobia 750ms infinite;} -@keyframes phobia { - 0% { color: #f75a5a; } - 50% { color: #dd0000; } - 100% { color: #f75a5a; } -} - - -.icon {height: 1em; width: auto;} - -.memo {color: #638500; text-align: center;} -.memoedit {text-align: center; font-size: 125%;} -.abductor {color: #800080; font-style: italic;} -.mind_control {color: #A00D6F; font-size: 100%; font-weight: bold; font-style: italic;} -.slime {color: #00CED1;} -.drone {color: #848482;} -.monkey {color: #975032;} -.swarmer {color: #2C75FF;} -.resonate {color: #298F85;} - -.monkeyhive {color: #774704;} -.monkeylead {color: #774704; font-size: 125%;} - -.connectionClosed, .fatalError {background: red; color: white; padding: 5px;} -.connectionClosed.restored {background: green;} -.internal.boldnshit {color: #000099; font-weight: bold;} - -/* HELPER CLASSES */ -.text-normal {font-weight: normal; font-style: normal;} -.hidden {display: none; visibility: hidden;} diff --git a/code/modules/goonchat/browserassets/css/browserOutput_dark.css b/code/modules/goonchat/browserassets/css/browserOutput_dark.css deleted file mode 100644 index 3377bcf72c..0000000000 --- a/code/modules/goonchat/browserassets/css/browserOutput_dark.css +++ /dev/null @@ -1,159 +0,0 @@ -html, body {color: #E0E0E0;} -body { - background: #171717; - font-color: #E0E0E0; - scrollbar-face-color:#1A1A1A; - scrollbar-track-color:#171717; - scrollbar-highlight-color:#171717; -} - -a {color: #397ea5;} -a.visited {color: #7c00e6;} -a:visited {color: #7c00e6;} - -#newMessages { - background: #242424; - color: #E0E0E0; -} -#newMessages:hover {background: #272727;} - -#ping {background: #272727;} - -#userBar .subCell { - background: #272727; - color: #E0E0E0; - border-top: 1px solid #171717; -} -#userBar .subCell:hover {background: #272727;} -#userBar .toggle {background: #272727;} - -/* MOTD */ -.motd {color: #E0E0E0;} -.motd h1, .motd h2, .motd h3, .motd h4, .motd h5, .motd h6 {color: #E0E0E0;} -.motd a, .motd a:link, .motd a:visited, .motd a:active, .motd a:hover {color: #E0E0E0;} - -h1, h2, h3, h4, h5, h6 {color: #E0E0E0;} -h1.alert, h2.alert {color: #E0E0E0;} - -.ooc {color: #cca300;} -.looc {color: #d8b555;} -.antagooc {color: #ce254f;} -.adminobserverooc {color: #0099cc;} -.adminooc {color: #3d5bc3;} - -.admin {color: #5975da;} - -.deadsay {color: #e2c1ff;} -.radio {color: #1ecc43;} -.sciradio {color: #c68cfa;} -.comradio {color: #5177ff;} -.secradio {color: #dd3535;} -.medradio {color: #57b8f0;} -.engradio {color: #f37746;} -.suppradio {color: #b88646;} -.servradio {color: #6ca729;} -.syndradio {color: #8f4a4b;} -.centcomradio {color: #2681a5;} -.aiprivradio {color: #d65d95;} -.redteamradio {color: #ff4444;} -.blueteamradio {color: #3434fd;} - -.alert {color: #d82020;} -h1.alert, h2.alert {color: #99aab5;} - -.attack {color: #e01c1c;} -.disarm {color: #b42525;} -.passive {color: #a00f0f;} - -.userdanger {color: #c51e1e;} -.danger {color: #c51e1e;} -.warning {color: #c51e1e;} -.alertwarning {color: #c51e1e;} -.boldwarning {color: #c51e1e;} -.announce {color: #c51e1e;} -.boldannounce {color: #c51e1e;} -.greenannounce {color: #059223;} -.info {color: #6685f5;} -.notice {color: #6685f5;} -.boldnotice {color: #6685f5;} -.adminnotice {color: #6685f5;} -.adminhelp {color: #ff0000;} -.unconscious {color: #E0E0E0;} -.red {color: #FF0000;} -.pink {color: #ff70c1;} -.blue {color: #215cff;} -.green {color: #059223;} -.nicegreen {color: #059223;} -.userlove {color: #ff42a6; text-shadow: 0 0 6px #82365e;} -.love {color: #ff4591; text-shadow: 0 0 6px #994449;} -.shadowling {color: #8e8a99;} -.cult {color: #aa1c1c;} - -.cultitalic {color: #aa1c1c;} -.cultbold {color: #aa1c1c;} -.cultboldtalic {color: #aa1c1c;} - -.cultlarge {color: #aa1c1c;} -.narsie {color: #aa1c1c;} -.narsiesmall {color: #aa1c1c;} -.hierophant {color: #b441ee;} -.hierophant_warning {color: #c56bf1;} -.purple {color: #9956d3;} -.holoparasite {color: #88809c;} - -.revennotice {color: #3645aa;} -.revenboldnotice {color: #3645aa;} -.revenbignotice {color: #3645aa;} -.revenminor {color: #823ddd;} -.revenwarning {color: #8911d9;} -.revendanger {color: #8911d9;} -.umbra {color: #7c00e6;} -.umbra_emphasis {color: #7c00e6;} -.umbra_large {color: #7c00e6;} - -.deconversion_message {color: #a947ff;} - -.alloy {color: #545b64;} -.heavy_alloy {color: #545b64;} -.nezbere_large {color: #545b64;} -.nezbere {color: #545b64;} -.nezbere_small {color: #545b64;} -.inathneq_large {color: #1d7dc7;} -.inathneq {color: #1d7dc7;} -.inathneq_small {color: #1d7dc7;} -.neovgre_large {color: #7c0622;} -.neovgre {color: #7c0622;} -.neovgre_small {color: #7c0622;} - -.newscaster {color: #c05d5d;} -.ghostalert {color: #6600ff;} - -.alien {color: #855d85;} -.noticealien {color: #059223;} -.alertalien {color: #059223;} -.changeling {color: #059223;} - -.spider {color: #8800ff;} - -.interface {color: #750e75;} - -.greentext {color: #059223;} -.redtext {color: #c51e1e;} -.clown {color: #ff70c1;} -.velvet {color: #660015;} -@keyframes velvet { - 0% { color: #890020; } - 40% { color: #c51e1e; } - 50% { color: #FF8888; } - 60% { color: #c51e1e; } - 100% { color: #890020; } -} - -.abductor {color: #c204c2;} -.mind_control {color: #df3da9;} -.drone {color: #979795;} - -.monkeyhive {color: #a56408;} -.monkeylead {color: #af6805;} - -.internal.boldnshit {color: #3d5bc3;} diff --git a/code/modules/goonchat/browserassets/css/browserOutput_light.css b/code/modules/goonchat/browserassets/css/browserOutput_light.css deleted file mode 100644 index b7036c74d8..0000000000 --- a/code/modules/goonchat/browserassets/css/browserOutput_light.css +++ /dev/null @@ -1,14 +0,0 @@ -body {background: #F1F1F1;} - -#newMessages {background: #ddd;} -#ping {background: #ddd;} - -#userBar .subCell {background: #ddd;} - -/* POPUPS */ -.popup {background: #ddd;} -.popup .head {color: #ddd;} -.popup input[type=submit] {color: #ddd;} - -/* ADMIN CONTEXT MENU */ -.contextMenu {background-color: #ddd;} diff --git a/code/modules/goonchat/browserassets/html/browserOutput.html b/code/modules/goonchat/browserassets/html/browserOutput.html deleted file mode 100644 index ce51cd8de8..0000000000 --- a/code/modules/goonchat/browserassets/html/browserOutput.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -
-
-
-
- Loading...
- - If this takes longer than 30 seconds, it will automatically reload a maximum of 5 times. - If it still doesn't work, use the bug report button at the top right of the window. -
-
-
-
-
-
-
-
diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js
deleted file mode 100644
index ac30076de4..0000000000
--- a/code/modules/goonchat/browserassets/js/browserOutput.js
+++ /dev/null
@@ -1,1104 +0,0 @@
-
-/*****************************************
-*
-* FUNCTION AND VAR DECLARATIONS
-*
-******************************************/
-
-//DEBUG STUFF
-var escaper = encodeURIComponent || escape;
-var decoder = decodeURIComponent || unescape;
-window.onerror = function(msg, url, line, col, error) {
- if (document.location.href.indexOf("proc=debug") <= 0) {
- var extra = !col ? '' : ' | column: ' + col;
- extra += !error ? '' : ' | error: ' + error;
- extra += !navigator.userAgent ? '' : ' | user agent: ' + navigator.userAgent;
- var debugLine = 'Error: ' + msg + ' | url: ' + url + ' | line: ' + line + extra;
- window.location = '?_src_=chat&proc=debug¶m[error]='+escaper(debugLine);
- }
- return true;
-};
-
-//Globals
-window.status = 'Output';
-var $messages, $subOptions, $subAudio, $selectedSub, $contextMenu, $filterMessages, $last_message;
-var opts = {
- //General
- 'messageCount': 0, //A count...of messages...
- 'messageLimit': 2053, //A limit...for the messages...
- 'scrollSnapTolerance': 10, //If within x pixels of bottom
- 'clickTolerance': 10, //Keep focus if outside x pixels of mousedown position on mouseup
- 'imageRetryDelay': 50, //how long between attempts to reload images (in ms)
- 'imageRetryLimit': 50, //how many attempts should we make?
- 'popups': 0, //Amount of popups opened ever
- 'wasd': false, //Is the user in wasd mode?
- 'priorChatHeight': 0, //Thing for height-resizing detection
- 'restarting': false, //Is the round restarting?
- 'colorPreset': 0, // index in the color presets list.
- //'darkmode':false, //Are we using darkmode? If not WHY ARE YOU LIVING IN 2009??? <- /tg/ take on darktheme
-
- //Options menu
- 'selectedSubLoop': null, //Contains the interval loop for closing the selected sub menu
- 'suppressSubClose': false, //Whether or not we should be hiding the selected sub menu
- 'highlightTerms': [],
- 'highlightLimit': 5,
- 'highlightColor': '#FFFF00', //The color of the highlighted message
- 'pingDisabled': false, //Has the user disabled the ping counter
-
- //Ping display
- 'lastPang': 0, //Timestamp of the last response from the server.
- 'pangLimit': 35000,
- 'pingTime': 0, //Timestamp of when ping sent
- 'pongTime': 0, //Timestamp of when ping received
- 'noResponse': false, //Tracks the state of the previous ping request
- 'noResponseCount': 0, //How many failed pings?
-
- //Clicks
- 'mouseDownX': null,
- 'mouseDownY': null,
- 'preventFocus': false, //Prevents switching focus to the game window
-
- //Client Connection Data
- 'clientDataLimit': 5,
- 'clientData': [],
-
- //Admin music volume update
- 'volumeUpdateDelay': 5000, //Time from when the volume updates to data being sent to the server
- 'volumeUpdating': false, //True if volume update function set to fire
- 'updatedVolume': 0, //The volume level that is sent to the server
- 'musicStartAt': 0, //The position the music starts playing
- 'musicEndAt': 0, //The position the music... stops playing... if null, doesn't apply (so the music runs through)
-
- 'defaultMusicVolume': 25,
-
- 'messageCombining': true,
-
-};
-var replaceRegexes = {};
-
-// Array of names for chat display color presets. CIT SPECIFIC.
-// If not set to normal, a CSS file `browserOutput_${name}.css` will be added to the head.
-var colorPresets = [
- 'normal',
- 'light',
- 'dark'
-]
-
-function clamp(val, min, max) {
- return Math.max(min, Math.min(val, max))
-}
-
-//Polyfill for fucking date now because of course IE8 and below don't support it
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-//Polyfill for trim() (IE8 and below)
-if (typeof String.prototype.trim !== 'function') {
- String.prototype.trim = function () {
- return this.replace(/^\s+|\s+$/g, '');
- };
-}
-
-// CIT SPECIFIC.
-function updateColorPreset() {
- var el = $("#colorPresetLink")[0];
- el.href = "browserOutput_"+colorPresets[opts.colorPreset]+".css";
- runByond('?_src_=chat&proc=colorPresetPost&preset='+colorPresets[opts.colorPreset]);
-}
-
-// Linkify the contents of a node, within its parent.
-function linkify(parent, insertBefore, text) {
- var start = 0;
- var match;
- var regex = /(?:(?:https?:\/\/)|(?:www\.))(?:[^ ]*?\.[^ ]*?)+[-A-Za-z0-9+&@#\/%?=~_|$!:,.;()]+/ig;
- while ((match = regex.exec(text)) !== null) {
- // add the unmatched text
- parent.insertBefore(document.createTextNode(text.substring(start, match.index)), insertBefore);
-
- var href = match[0];
- if (!/^https?:\/\//i.test(match[0])) {
- href = "http://" + match[0];
- }
-
- // add the link
- var link = document.createElement("a");
- link.href = href;
- link.textContent = match[0];
- parent.insertBefore(link, insertBefore);
-
- start = regex.lastIndex;
- }
- if (start !== 0) {
- // add the remaining text and remove the original text node
- parent.insertBefore(document.createTextNode(text.substring(start)), insertBefore);
- parent.removeChild(insertBefore);
- }
-}
-
-// Recursively linkify the children of a given node.
-function linkify_node(node) {
- var children = node.childNodes;
- // work backwards to avoid the risk of looping forever on our own output
- for (var i = children.length - 1; i >= 0; --i) {
- var child = children[i];
- if (child.nodeType == Node.TEXT_NODE) {
- // text is to be linkified
- linkify(node, child, child.textContent);
- } else if (child.nodeName != "A" && child.nodeName != "a") {
- // do not linkify existing links
- linkify_node(child);
- }
- }
-}
-
-//Shit fucking piece of crap that doesn't work god fuckin damn it
-function linkify_fallback(text) {
- var rex = /((?:'+$0+'';
- }
- else {
- return $1 ? $0: ''+$0+'';
- }
- });
-}
-
-function byondDecode(message) {
- // Basically we url_encode twice server side so we can manually read the encoded version and actually do UTF-8.
- // The replace for + is because FOR SOME REASON, BYOND replaces spaces with a + instead of %20, and a plus with %2b.
- // Marvelous.
- message = message.replace(/\+/g, "%20");
- try {
- // This is a workaround for the above not always working when BYOND's shitty url encoding breaks. (byond bug id:2399401)
- if (decodeURIComponent) {
- message = decodeURIComponent(message);
- } else {
- throw new Error("Easiest way to trigger the fallback")
- }
- } catch (err) {
- message = unescape(message);
- }
- return message;
-}
-
-function replaceRegex() {
- var selectedRegex = replaceRegexes[$(this).attr('replaceRegex')];
- if (selectedRegex) {
- var replacedText = $(this).html().replace(selectedRegex[0], selectedRegex[1]);
- $(this).html(replacedText);
- }
- $(this).removeAttr('replaceRegex');
-}
-
-// Get a highlight markup span
-function createHighlightMarkup() {
- var extra = '';
- if (opts.highlightColor) {
- extra += ' style="background-color: ' + opts.highlightColor + '"';
- }
- return '';
-}
-
-// Get all child text nodes that match a regex pattern
-function getTextNodes(elem, pattern) {
- var result = $([]);
- $(elem).contents().each(function(idx, child) {
- if (child.nodeType === 3 && /\S/.test(child.nodeValue) && pattern.test(child.nodeValue)) {
- result = result.add(child);
- }
- else {
- result = result.add(getTextNodes(child, pattern));
- }
- });
- return result;
-}
-
-// Highlight all text terms matching the registered regex patterns
-function highlightTerms(el) {
- var pattern = new RegExp("(" + opts.highlightTerms.join('|') + ")", 'gi');
- var nodes = getTextNodes(el, pattern);
-
- nodes.each(function (idx, node) {
- var content = $(node).text();
- var parent = $(node).parent();
- var pre = $(node.previousSibling);
- $(node).remove();
- content.split(pattern).forEach(function (chunk) {
- // Get our highlighted span/text node
- var toInsert = null;
- if (pattern.test(chunk)) {
- var tmpElem = $(createHighlightMarkup());
- tmpElem.text(chunk);
- toInsert = tmpElem;
- }
- else {
- toInsert = document.createTextNode(chunk);
- }
-
- // Insert back into our element
- if (pre.length == 0) {
- var result = parent.prepend(toInsert);
- pre = $(result[0].firstChild);
- }
- else {
- pre.after(toInsert);
- pre = $(pre[0].nextSibling);
- }
- });
- });
-}
-
-function iconError(E) {
- var that = this;
- setTimeout(function() {
- var attempts = $(that).data('reload_attempts');
- if (typeof attempts === 'undefined' || !attempts) {
- attempts = 1;
- }
- if (attempts > opts.imageRetryLimit)
- return;
- var src = that.src;
- that.src = null;
- that.src = src+'#'+attempts;
- $(that).data('reload_attempts', ++attempts);
- }, opts.imageRetryDelay);
-}
-
-//Send a message to the client
-function output(message, flag) {
- if (typeof message === 'undefined') {
- return;
- }
- if (typeof flag === 'undefined') {
- flag = '';
- }
-
- if (flag !== 'internal')
- opts.lastPang = Date.now();
-
- message = byondDecode(message).trim();
-
- //The behemoth of filter-code (for Admin message filters)
- //Note: This is proooobably hella inefficient
- var filteredOut = false;
- if (opts.hasOwnProperty('showMessagesFilters') && !opts.showMessagesFilters['All'].show) {
- //Get this filter type (defined by class on message)
- var messageHtml = $.parseHTML(message),
- messageClasses;
- if (opts.hasOwnProperty('filterHideAll') && opts.filterHideAll) {
- var internal = false;
- messageClasses = (!!$(messageHtml).attr('class') ? $(messageHtml).attr('class').split(/\s+/) : false);
- if (messageClasses) {
- for (var i = 0; i < messageClasses.length; i++) { //Every class
- if (messageClasses[i] == 'internal') {
- internal = true;
- break;
- }
- }
- }
- if (!internal) {
- filteredOut = 'All';
- }
- } else {
- //If the element or it's child have any classes
- if (!!$(messageHtml).attr('class') || !!$(messageHtml).children().attr('class')) {
- messageClasses = $(messageHtml).attr('class').split(/\s+/);
- if (!!$(messageHtml).children().attr('class')) {
- messageClasses = messageClasses.concat($(messageHtml).children().attr('class').split(/\s+/));
- }
- var tempCount = 0;
- for (var i = 0; i < messageClasses.length; i++) { //Every class
- var thisClass = messageClasses[i];
- $.each(opts.showMessagesFilters, function(key, val) { //Every filter
- if (key !== 'All' && val.show === false && typeof val.match != 'undefined') {
- for (var i = 0; i < val.match.length; i++) {
- var matchClass = val.match[i];
- if (matchClass == thisClass) {
- filteredOut = key;
- break;
- }
- }
- }
- if (filteredOut) return false;
- });
- if (filteredOut) break;
- tempCount++;
- }
- } else {
- if (!opts.showMessagesFilters['Misc'].show) {
- filteredOut = 'Misc';
- }
- }
- }
- }
-
- //Stuff we do along with appending a message
- var atBottom = false;
- if (!filteredOut) {
- var bodyHeight = $('body').height();
- var messagesHeight = $messages.outerHeight();
- var scrollPos = $('body,html').scrollTop();
-
- //Should we snap the output to the bottom?
- if (bodyHeight + scrollPos >= messagesHeight - opts.scrollSnapTolerance) {
- atBottom = true;
- if ($('#newMessages').length) {
- $('#newMessages').remove();
- }
- //If not, put the new messages box in
- } else {
- if ($('#newMessages').length) {
- var messages = $('#newMessages .number').text();
- messages = parseInt(messages);
- messages++;
- $('#newMessages .number').text(messages);
- if (messages == 2) {
- $('#newMessages .messageWord').append('s');
- }
- } else {
- $messages.after('1 new ');
- }
- }
- }
-
- opts.messageCount++;
-
- //Pop the top message off if history limit reached
- if (opts.messageCount >= opts.messageLimit) {
- $messages.children('div.entry:first-child').remove();
- opts.messageCount--; //I guess the count should only ever equal the limit
- }
-
- // Create the element - if combining is off, we use it, and if it's on, we
- // might discard it bug need to check its text content. Some messages vary
- // only in HTML markup, have the same text content, and should combine.
- var entry = document.createElement('div');
- entry.innerHTML = message;
- var trimmed_message = entry.textContent || entry.innerText || "";
-
- var handled = false;
- if (opts.messageCombining) {
- var lastmessages = $messages.children('div.entry:last-child').last();
- if (lastmessages.length && $last_message && $last_message == trimmed_message) {
- var badge = lastmessages.children('.r').last();
- if (badge.length) {
- badge = badge.detach();
- badge.text(parseInt(badge.text()) + 1);
- } else {
- badge = $('', {'class': 'r', 'text': 2});
- }
- lastmessages.html(message);
- lastmessages.find('[replaceRegex]').each(replaceRegex);
- lastmessages.append(badge);
- badge.animate({
- "font-size": "0.9em"
- }, 100, function() {
- badge.animate({
- "font-size": "0.7em"
- }, 100);
- });
- opts.messageCount--;
- handled = true;
- }
- }
-
- if (!handled) {
- //Actually append the message
- entry.className = 'entry';
-
- if (filteredOut) {
- entry.className += ' hidden';
- entry.setAttribute('data-filter', filteredOut);
- }
-
- $(entry).find('[replaceRegex]').each(replaceRegex);
-
- $last_message = trimmed_message;
- $messages[0].appendChild(entry);
- $(entry).find("img.icon").error(iconError);
-
- var to_linkify = $(entry).find(".linkify");
- if (typeof Node === 'undefined') {
- // Linkify fallback for old IE
- for(var i = 0; i < to_linkify.length; ++i) {
- to_linkify[i].innerHTML = linkify_fallback(to_linkify[i].innerHTML);
- }
- } else {
- // Linkify for modern IE versions
- for(var i = 0; i < to_linkify.length; ++i) {
- linkify_node(to_linkify[i]);
- }
- }
-
- //Actually do the snap
- //Stuff we can do after the message shows can go here, in the interests of responsiveness
- if (opts.highlightTerms && opts.highlightTerms.length > 0) {
- highlightTerms($(entry));
- }
- }
-
- if (!filteredOut && atBottom) {
- $('body,html').scrollTop($messages.outerHeight());
- }
-}
-
-function internalOutput(message, flag)
-{
- output(escaper(message), flag)
-}
-
-//Runs a route within byond, client or server side. Consider this "ehjax" for byond.
-function runByond(uri) {
- window.location = uri;
-}
-
-function setCookie(cname, cvalue, exdays) {
- cvalue = escaper(cvalue);
- var d = new Date();
- d.setTime(d.getTime() + (exdays*24*60*60*1000));
- var expires = 'expires='+d.toUTCString();
- document.cookie = cname + '=' + cvalue + '; ' + expires + "; path=/";
-}
-
-function getCookie(cname) {
- var name = cname + '=';
- var ca = document.cookie.split(';');
- for(var i=0; i < ca.length; i++) {
- var c = ca[i];
- while (c.charAt(0)==' ') c = c.substring(1);
- if (c.indexOf(name) === 0) {
- return decoder(c.substring(name.length,c.length));
- }
- }
- return '';
-}
-
-function rgbToHex(R,G,B) {return toHex(R)+toHex(G)+toHex(B);}
-function toHex(n) {
- n = parseInt(n,10);
- if (isNaN(n)) return "00";
- n = Math.max(0,Math.min(n,255));
- return "0123456789ABCDEF".charAt((n-n%16)/16) + "0123456789ABCDEF".charAt(n%16);
-}
-
-/*
-function swap() { //Swap to darkmode
- if (opts.darkmode){
- document.getElementById("sheetofstyles").href = "browserOutput_white.css";
- opts.darkmode = false;
- runByond('?_src_=chat&proc=swaptolightmode');
- } else {
- document.getElementById("sheetofstyles").href = "browserOutput.css";
- opts.darkmode = true;
- runByond('?_src_=chat&proc=swaptodarkmode');
- }
- setCookie('darkmode', (opts.darkmode ? 'true' : 'false'), 365);
-}
-*/
-function handleClientData(ckey, ip, compid) {
- //byond sends player info to here
- var currentData = {'ckey': ckey, 'ip': ip, 'compid': compid};
- if (opts.clientData && !$.isEmptyObject(opts.clientData)) {
- runByond('?_src_=chat&proc=analyzeClientData¶m[cookie]='+JSON.stringify({'connData': opts.clientData}));
-
- for (var i = 0; i < opts.clientData.length; i++) {
- var saved = opts.clientData[i];
- if (currentData.ckey == saved.ckey && currentData.ip == saved.ip && currentData.compid == saved.compid) {
- return; //Record already exists
- }
- }
- //Lets make sure we obey our limit (can connect from server with higher limit)
- while (opts.clientData.length >= opts.clientDataLimit) {
- opts.clientData.shift();
- }
- } else {
- runByond('?_src_=chat&proc=analyzeClientData¶m[cookie]=none');
- }
-
- //Update the cookie with current details
- opts.clientData.push(currentData);
- setCookie('connData', JSON.stringify(opts.clientData), 365);
-}
-
-//Server calls this on ehjax response
-//Or, y'know, whenever really
-function ehjaxCallback(data) {
- opts.lastPang = Date.now();
- if (data == 'softPang') {
- return;
- } else if (data == 'pang') {
- opts.pingCounter = 0; //reset
- opts.pingTime = Date.now();
- runByond('?_src_=chat&proc=ping');
-
- } else if (data == 'pong') {
- if (opts.pingDisabled) {return;}
- opts.pongTime = Date.now();
- var pingDuration = Math.ceil((opts.pongTime - opts.pingTime) / 2);
- $('#pingMs').text(pingDuration+'ms');
- pingDuration = Math.min(pingDuration, 255);
- var red = pingDuration;
- var green = 255 - pingDuration;
- var blue = 0;
- var hex = rgbToHex(red, green, blue);
- $('#pingDot').css('color', '#'+hex);
-
- } else if (data == 'roundrestart') {
- opts.restarting = true;
- internalOutput('The connection has been closed because the server is restarting. Please wait while you automatically reconnect. ', 'internal');
- } else if (data == 'stopMusic') {
- $('#adminMusic').prop('src', '');
- } else {
- //Oh we're actually being sent data instead of an instruction
- var dataJ;
- try {
- dataJ = $.parseJSON(data);
- } catch (e) {
- //But...incorrect :sadtrombone:
- window.onerror('JSON: '+e+'. '+data, 'browserOutput.html', 327);
- return;
- }
- data = dataJ;
-
- if (data.clientData) {
- if (opts.restarting) {
- opts.restarting = false;
- $('.connectionClosed.restarting:not(.restored)').addClass('restored').text('The round restarted and you successfully reconnected!');
- }
- if (!data.clientData.ckey && !data.clientData.ip && !data.clientData.compid) {
- //TODO: Call shutdown perhaps
- return;
- } else {
- handleClientData(data.clientData.ckey, data.clientData.ip, data.clientData.compid);
- }
- sendVolumeUpdate();
- } else if (data.adminMusic) {
- if (typeof data.adminMusic === 'string') {
- var adminMusic = byondDecode(data.adminMusic);
- var bindLoadedData = false;
- adminMusic = adminMusic.match(/https?:\/\/\S+/) || '';
- if (data.musicRate) {
- var newRate = Number(data.musicRate);
- if(newRate) {
- $('#adminMusic').prop('defaultPlaybackRate', newRate);
- }
- } else {
- $('#adminMusic').prop('defaultPlaybackRate', 1.0);
- }
- if (data.musicSeek) {
- opts.musicStartAt = Number(data.musicSeek) || 0;
- bindLoadedData = true;
- } else {
- opts.musicStartAt = 0;
- }
- if (data.musicHalt) {
- opts.musicEndAt = Number(data.musicHalt) || null;
- bindLoadedData = true;
- }
- if (bindLoadedData) {
- $('#adminMusic').one('loadeddata', adminMusicLoadedData);
- }
- $('#adminMusic').prop('src', adminMusic);
- $('#adminMusic').trigger("play");
- }
- } else if (data.syncRegex) {
- for (var i in data.syncRegex) {
-
- var regexData = data.syncRegex[i];
- var regexName = regexData[0];
- var regexFlags = regexData[1];
- var regexReplaced = regexData[2];
-
- replaceRegexes[i] = [new RegExp(regexName, regexFlags), regexReplaced];
- }
- }
- }
-}
-
-function createPopup(contents, width) {
- opts.popups++;
- $('body').append('');
-
- //Attach close popup event
- var $popup = $('#popup'+opts.popups);
- var height = $popup.outerHeight();
- $popup.css({'height': height+'px', 'margin': '-'+(height/2)+'px 0 0 -'+(width/2)+'px'});
-
- $popup.on('click', '.close', function(e) {
- e.preventDefault();
- $popup.remove();
- });
-}
-
-function toggleWasd(state) {
- opts.wasd = (state == 'on' ? true : false);
-}
-
-function sendVolumeUpdate() {
- opts.volumeUpdating = false;
- if(opts.updatedVolume) {
- runByond('?_src_=chat&proc=setMusicVolume¶m[volume]='+opts.updatedVolume);
- }
-}
-
-function adminMusicEndCheck(event) {
- if (opts.musicEndAt) {
- if ($('#adminMusic').prop('currentTime') >= opts.musicEndAt) {
- $('#adminMusic').off(event);
- $('#adminMusic').trigger('pause');
- $('#adminMusic').prop('src', '');
- }
- } else {
- $('#adminMusic').off(event);
- }
-}
-
-function adminMusicLoadedData(event) {
- if (opts.musicStartAt && ($('#adminMusic').prop('duration') === Infinity || (opts.musicStartAt <= $('#adminMusic').prop('duration'))) ) {
- $('#adminMusic').prop('currentTime', opts.musicStartAt);
- }
- if (opts.musicEndAt) {
- $('#adminMusic').on('timeupdate', adminMusicEndCheck);
- }
-}
-
-function subSlideUp() {
- $(this).removeClass('scroll');
- $(this).css('height', '');
-}
-
-function startSubLoop() {
- if (opts.selectedSubLoop) {
- clearInterval(opts.selectedSubLoop);
- }
- return setInterval(function() {
- if (!opts.suppressSubClose && $selectedSub.is(':visible')) {
- $selectedSub.slideUp('fast', subSlideUp);
- clearInterval(opts.selectedSubLoop);
- }
- }, 5000); //every 5 seconds
-}
-
-function handleToggleClick($sub, $toggle) {
- if ($selectedSub !== $sub && $selectedSub.is(':visible')) {
- $selectedSub.slideUp('fast', subSlideUp);
- }
- $selectedSub = $sub
- if ($selectedSub.is(':visible')) {
- $selectedSub.slideUp('fast', subSlideUp);
- clearInterval(opts.selectedSubLoop);
- } else {
- $selectedSub.slideDown('fast', function() {
- var windowHeight = $(window).height();
- var toggleHeight = $toggle.outerHeight();
- var priorSubHeight = $selectedSub.outerHeight();
- var newSubHeight = windowHeight - toggleHeight;
- $(this).height(newSubHeight);
- if (priorSubHeight > (windowHeight - toggleHeight)) {
- $(this).addClass('scroll');
- }
- });
- opts.selectedSubLoop = startSubLoop();
- }
-}
-
-/*****************************************
-*
-* DOM READY
-*
-******************************************/
-
-if (typeof $ === 'undefined') {
- var div = document.getElementById('loading').childNodes[1];
- div += 'ERROR: Jquery did not load.'; -} - -$(function() { - $messages = $('#messages'); - $subOptions = $('#subOptions'); - $subAudio = $('#subAudio'); - $selectedSub = $subOptions; - - //Hey look it's a controller loop! - setInterval(function() { - if (opts.lastPang + opts.pangLimit < Date.now() && !opts.restarting) { //Every pingLimit - if (!opts.noResponse) { //Only actually append a message if the previous ping didn't also fail (to prevent spam) - opts.noResponse = true; - opts.noResponseCount++; - internalOutput(' You are either AFK, experiencing lag or the connection has closed. ', 'internal');
- }
- } else if (opts.noResponse) { //Previous ping attempt failed ohno
- $('.connectionClosed[data-count="'+opts.noResponseCount+'"]:not(.restored)').addClass('restored').text('Your connection has been restored (probably)!');
- opts.noResponse = false;
- }
- }, 2000); //2 seconds
-
-
- /*****************************************
- *
- * LOAD SAVED CONFIG
- *
- ******************************************/
- var savedConfig = {
- fontsize: getCookie('fontsize'), //no need for compatabiliy, cookie name is the same
- lineheight: getCookie('lineheight'),
- 'spingDisabled': getCookie('pingdisabled'),
- 'shighlightTerms': getCookie('highlightterms'),
- 'shighlightColor': getCookie('highlightcolor'),
- 'smusicVolume': getCookie('musicVolume'),
- 'smessagecombining': getCookie('messagecombining'),
- 'sdarkmode': getCookie('darkmode'),
- 'scolorPreset': getCookie('colorpreset'),
- };
-
- if (savedConfig.fontsize) {
- $messages.css('font-size', savedConfig.fontsize);
- internalOutput('Loaded font size setting of: '+savedConfig.fontsize+'', 'internal');
- }
- if (savedConfig.lineheight) {
- $("body").css('line-height', savedConfig.lineheight);
- internalOutput('Loaded line height setting of: '+savedConfig.lineheight+'', 'internal');
- }
- // if(savedConfig.sdarkmode == 'true'){
- // swap();
- // }
- if (savedConfig.scolorPreset) {
- opts.colorPreset = Number(savedConfig.scolorPreset);
- updateColorPreset();
- internalOutput('Loaded color preset of: '+colorPresets[opts.colorPreset]+'', 'internal');
- }
- if (savedConfig.spingDisabled) {
- if (savedConfig.spingDisabled == 'true') {
- opts.pingDisabled = true;
- $('#ping').hide();
- }
- internalOutput('Loaded ping display of: '+(opts.pingDisabled ? 'hidden' : 'visible')+'', 'internal');
- }
- if (savedConfig.shighlightTerms) {
- var savedTerms = $.parseJSON(savedConfig.shighlightTerms).filter(function (entry) {
- return entry !== null && /\S/.test(entry);
- });
- var actualTerms = savedTerms.length != 0 ? savedTerms.join(', ') : null;
- if (actualTerms) {
- internalOutput('Loaded highlight strings of: ' + actualTerms+'', 'internal');
- opts.highlightTerms = savedTerms;
- }
- }
- if (savedConfig.shighlightColor) {
- opts.highlightColor = savedConfig.shighlightColor;
- internalOutput('Loaded highlight color of: '+savedConfig.shighlightColor+'', 'internal');
- }
- if (savedConfig.smusicVolume) {
- var newVolume = clamp(savedConfig.smusicVolume, 0, 100);
- $('#adminMusic').prop('volume', newVolume / 100);
- $('#musicVolume').val(newVolume);
- opts.updatedVolume = newVolume;
- sendVolumeUpdate();
- internalOutput('Loaded music volume of: '+savedConfig.smusicVolume+'', 'internal');
- }
- else{
- $('#adminMusic').prop('volume', opts.defaultMusicVolume / 100);
- }
-
- if (savedConfig.smessagecombining) {
- if (savedConfig.smessagecombining == 'false') {
- opts.messageCombining = false;
- } else {
- opts.messageCombining = true;
- }
- }
- (function() {
- var dataCookie = getCookie('connData');
- if (dataCookie) {
- var dataJ;
- try {
- dataJ = $.parseJSON(dataCookie);
- } catch (e) {
- window.onerror('JSON '+e+'. '+dataCookie, 'browserOutput.html', 434);
- return;
- }
- opts.clientData = dataJ;
- }
- })();
-
-
- /*****************************************
- *
- * BASE CHAT OUTPUT EVENTS
- *
- ******************************************/
-
- $('body').on('click', 'a', function(e) {
- e.preventDefault();
- });
-
- $('body').on('mousedown', function(e) {
- var $target = $(e.target);
-
- if ($contextMenu && opts.hasOwnProperty('contextMenuTarget') && opts.contextMenuTarget) {
- hideContextMenu();
- return false;
- }
-
- if ($target.is('a') || $target.parent('a').length || $target.is('input') || $target.is('textarea')) {
- opts.preventFocus = true;
- } else {
- opts.preventFocus = false;
- opts.mouseDownX = e.pageX;
- opts.mouseDownY = e.pageY;
- }
- });
-
- $messages.on('mousedown', function(e) {
- if ($selectedSub && $selectedSub.is(':visible')) {
- $selectedSub.slideUp('fast', subSlideUp);
- clearInterval(opts.selectedSubLoop);
- }
- });
-
- $('body').on('mouseup', function(e) {
- if (!opts.preventFocus &&
- (e.pageX >= opts.mouseDownX - opts.clickTolerance && e.pageX <= opts.mouseDownX + opts.clickTolerance) &&
- (e.pageY >= opts.mouseDownY - opts.clickTolerance && e.pageY <= opts.mouseDownY + opts.clickTolerance)
- ) {
- opts.mouseDownX = null;
- opts.mouseDownY = null;
- runByond('byond://winset?mapwindow.map.focus=true');
- }
- });
-
- $messages.on('click', 'a', function(e) {
- var href = $(this).attr('href');
- $(this).addClass('visited');
- if (href[0] == '?' || (href.length >= 8 && href.substring(0,8) == 'byond://')) {
- runByond(href);
- } else {
- href = escaper(href);
- runByond('?action=openLink&link='+href);
- }
- runByond('byond://winset?mapwindow.map.focus=true');
- });
-
- $('body').on('keydown', function(e) {
- if (e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA') {
- return;
- }
- if (e.ctrlKey || e.altKey || e.shiftKey) { //Band-aid "fix" for allowing ctrl+c copy paste etc. Needs a proper fix.
- return;
- }
- runByond('byond://winset?mapwindow.map.focus=true');
- });
-
- //Mildly hacky fix for scroll issues on mob change (interface gets resized sometimes, messing up snap-scroll)
- $(window).on('resize', function(e) {
- if ($(this).height() !== opts.priorChatHeight) {
- $('body,html').scrollTop($messages.outerHeight());
- opts.priorChatHeight = $(this).height();
- }
- });
-
-
- /*****************************************
- *
- * OPTIONS INTERFACE EVENTS
- *
- ******************************************/
-
- $('body').on('click', '#newMessages', function(e) {
- var messagesHeight = $messages.outerHeight();
- $('body,html').scrollTop(messagesHeight);
- $('#newMessages').remove();
- runByond('byond://winset?mapwindow.map.focus=true');
- });
-
- $('#toggleOptions').click(function(e) {
- handleToggleClick($subOptions, $(this));
- });
- // $('#darkmodetoggle').click(function(e) {
- // swap();
- // });
- $('#toggleAudio').click(function(e) {
- handleToggleClick($subAudio, $(this));
- });
-
- $('.sub, .toggle').mouseenter(function() {
- opts.suppressSubClose = true;
- });
-
- $('.sub, .toggle').mouseleave(function() {
- opts.suppressSubClose = false;
- });
-
- $('#decreaseFont').click(function(e) {
- savedConfig.fontsize = Math.max(parseInt(savedConfig.fontsize || 13) - 1, 1) + 'px';
- $messages.css({'font-size': savedConfig.fontsize});
- setCookie('fontsize', savedConfig.fontsize, 365);
- internalOutput('Font size set to '+savedConfig.fontsize+'', 'internal');
- });
-
- $('#increaseFont').click(function(e) {
- savedConfig.fontsize = (parseInt(savedConfig.fontsize || 13) + 1) + 'px';
- $messages.css({'font-size': savedConfig.fontsize});
- setCookie('fontsize', savedConfig.fontsize, 365);
- internalOutput('Font size set to '+savedConfig.fontsize+'', 'internal');
- });
-
- $('#decreaseLineHeight').click(function(e) {
- savedConfig.lineheight = Math.max(parseFloat(savedConfig.lineheight || 1.2) - 0.1, 0.1).toFixed(1);
- $("body").css({'line-height': savedConfig.lineheight});
- setCookie('lineheight', savedConfig.lineheight, 365);
- internalOutput('Line height set to '+savedConfig.lineheight+'', 'internal');
- });
-
- $('#increaseLineHeight').click(function(e) {
- savedConfig.lineheight = (parseFloat(savedConfig.lineheight || 1.2) + 0.1).toFixed(1);
- $("body").css({'line-height': savedConfig.lineheight});
- setCookie('lineheight', savedConfig.lineheight, 365);
- internalOutput('Line height set to '+savedConfig.lineheight+'', 'internal');
- });
-
- $('#togglePing').click(function(e) {
- if (opts.pingDisabled) {
- $('#ping').slideDown('fast');
- opts.pingDisabled = false;
- } else {
- $('#ping').slideUp('fast');
- opts.pingDisabled = true;
- }
- setCookie('pingdisabled', (opts.pingDisabled ? 'true' : 'false'), 365);
- });
-
- $('#saveLog').click(function(e) {
- // Requires IE 10+ to issue download commands. Just opening a popup
- // window will cause Ctrl+S to save a blank page, ignoring innerHTML.
- if (!window.Blob) {
- output('This function is only supported on IE 10 and up. Upgrade if possible.', 'internal');
- return;
- }
-
- $.ajax({
- type: 'GET',
- url: 'browserOutput.css', // browserOutput_white.css
- success: function(styleData) {
- var blob = new Blob(['String Highlighting ' +
- '' +
- ' ';
- createPopup(popupContent, 250);
- });
-
- $('body').on('keyup', '#highlightColor', function() {
- var color = $('#highlightColor').val();
- color = color.trim();
- if (!color || color.charAt(0) != '#') return;
- $('#highlightColor').css('background-color', color);
- });
-
- $('body').on('submit', '#highlightTermForm', function(e) {
- e.preventDefault();
-
- opts.highlightTerms = [];
- for (var count = 0; count < opts.highlightLimit; count++) {
- var term = $('#highlightTermInput'+count).val();
- if (term !== null && /\S/.test(term)) {
- opts.highlightTerms.push(term.trim().toLowerCase());
- }
- }
-
- var color = $('#highlightColor').val();
- color = color.trim();
- if (color == '' || color.charAt(0) != '#') {
- opts.highlightColor = '#FFFF00';
- } else {
- opts.highlightColor = color;
- }
- var $popup = $('#highlightPopup').closest('.popup');
- $popup.remove();
-
- setCookie('highlightterms', JSON.stringify(opts.highlightTerms), 365);
- setCookie('highlightcolor', opts.highlightColor, 365);
- });
-
- $('#clearMessages').click(function() {
- $messages.empty();
- opts.messageCount = 0;
- });
-
- $('#changeColorPreset').click(function() { //CIT SPECIFIC
- opts.colorPreset = (opts.colorPreset+1) % colorPresets.length;
- updateColorPreset();
- setCookie('colorpreset', opts.colorPreset, 365);
- internalOutput('Changed color preset to: '+colorPresets[opts.colorPreset]);
- });
-
- $('#musicVolumeSpan').hover(function() {
- $('#musicVolumeText').addClass('hidden');
- $('#musicVolume').removeClass('hidden');
- }, function() {
- $('#musicVolume').addClass('hidden');
- $('#musicVolumeText').removeClass('hidden');
- });
-
- $('#musicVolume').change(function() {
- var newVolume = $('#musicVolume').val();
- newVolume = clamp(newVolume, 0, 100);
- $('#adminMusic').prop('volume', newVolume / 100);
- setCookie('musicVolume', newVolume, 365);
- opts.updatedVolume = newVolume;
- if(!opts.volumeUpdating) {
- setTimeout(sendVolumeUpdate, opts.volumeUpdateDelay);
- opts.volumeUpdating = true;
- }
- });
-
- $('#toggleCombine').click(function(e) {
- opts.messageCombining = !opts.messageCombining;
- setCookie('messagecombining', (opts.messageCombining ? 'true' : 'false'), 365);
- });
-
- $('img.icon').error(iconError);
-
-
-
-
- /*****************************************
- *
- * KICK EVERYTHING OFF
- *
- ******************************************/
-
- runByond('?_src_=chat&proc=doneLoading');
- if ($('#loading').is(':visible')) {
- $('#loading').remove();
- }
- $('#userBar').show();
- opts.priorChatHeight = $(window).height();
-});
diff --git a/code/modules/goonchat/browserassets/js/json2.min.js b/code/modules/goonchat/browserassets/js/json2.min.js
deleted file mode 100644
index d867407f26..0000000000
--- a/code/modules/goonchat/browserassets/js/json2.min.js
+++ /dev/null
@@ -1 +0,0 @@
-"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(t){return 10>t?"0"+t:t}function this_value(){return this.valueOf()}function quote(t){return rx_escapable.lastIndex=0,rx_escapable.test(t)?'"'+t.replace(rx_escapable,function(t){var e=meta[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+t+'"'}function str(t,e){var r,n,o,u,f,a=gap,i=e[t];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(t)),"function"==typeof rep&&(i=rep.call(e,t,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,f=[],"[object Array]"===Object.prototype.toString.apply(i)){for(u=i.length,r=0;u>r;r+=1)f[r]=str(r,i)||"null";return o=0===f.length?"[]":gap?"[\n"+gap+f.join(",\n"+gap)+"\n"+a+"]":"["+f.join(",")+"]",gap=a,o}if(rep&&"object"==typeof rep)for(u=rep.length,r=0;u>r;r+=1)"string"==typeof rep[r]&&(n=rep[r],o=str(n,i),o&&f.push(quote(n)+(gap?": ":":")+o));else for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(o=str(n,i),o&&f.push(quote(n)+(gap?": ":":")+o));return o=0===f.length?"{}":gap?"{\n"+gap+f.join(",\n"+gap)+"\n"+a+"}":"{"+f.join(",")+"}",gap=a,o}}var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=this_value,Number.prototype.toJSON=this_value,String.prototype.toJSON=this_value);var gap,indent,meta,rep;"function"!=typeof JSON.stringify&&(meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(t,e,r){var n;if(gap="",indent="","number"==typeof r)for(n=0;r>n;n+=1)indent+=" ";else"string"==typeof r&&(indent=r);if(rep=e,e&&"function"!=typeof e&&("object"!=typeof e||"number"!=typeof e.length))throw new Error("JSON.stringify");return str("",{"":t})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(t,e){var r,n,o=t[e];if(o&&"object"==typeof o)for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(n=walk(o,r),void 0!==n?o[r]=n:delete o[r]);return reviver.call(t,e,o)}var j;if(text=String(text),rx_dangerous.lastIndex=0,rx_dangerous.test(text)&&(text=text.replace(rx_dangerous,function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})),rx_one.test(text.replace(rx_two,"@").replace(rx_three,"]").replace(rx_four,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();
\ No newline at end of file
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 4561e0ae3e..573b04a296 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -334,8 +334,7 @@
to_chat(C, " You feel an overwhelming desire to [message]")
if(2)
visible_message("[src] waves their arms around, \"If only you had a better upbringing, your ears are now full of my singing!\"")
- var/client/C2 = C.client
- C2.chatOutput.sendMusic("https://puu.sh/ExBbv.mp4", 1)//I hope this works!
+ C.client.tgui_panel?.play_music("https://puu.sh/ExBbv.mp4")
if(3)
visible_message("[src] waves their arms around, \"You're cute little bumpkin, On your head is a pumpkin!\"")
if(C.head)
diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm
index e84025208a..b8480a1901 100644
--- a/code/modules/hydroponics/grown/ambrosia.dm
+++ b/code/modules/hydroponics/grown/ambrosia.dm
@@ -49,6 +49,7 @@
seed = /obj/item/seeds/ambrosia/deus
name = "ambrosia deus branch"
desc = "Eating this makes you feel immortal!"
+ foodtype = VEGETABLES | ANTITOXIC
icon_state = "ambrosiadeus"
filling_color = "#008B8B"
wine_power = 50
diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm
index 6525ac42d4..e4fe7fcdbc 100644
--- a/code/modules/hydroponics/grown/cannabis.dm
+++ b/code/modules/hydroponics/grown/cannabis.dm
@@ -104,6 +104,7 @@
seed = /obj/item/seeds/cannabis/death
name = "death cannabis leaf"
desc = "Looks a bit dark. Oh well."
+ foodtype = VEGETABLES | TOXIC
icon_state = "blackcannabis"
wine_power = 40
@@ -111,6 +112,7 @@
seed = /obj/item/seeds/cannabis/white
name = "white cannabis leaf"
desc = "It feels smooth and nice to the touch."
+ foodtype = VEGETABLES | ANTITOXIC
icon_state = "whitecannabis"
wine_power = 10
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index d130d50aa5..e199c2c6b1 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -29,6 +29,7 @@
seed = /obj/item/seeds/lime
name = "lime"
desc = "It's so sour, your face will twist."
+ foodtype = FRUIT | ANTITOXIC
icon_state = "lime"
filling_color = "#00FF00"
juice_results = list(/datum/reagent/consumable/limejuice = 0)
diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm
index 8c5171667a..e385eed142 100644
--- a/code/modules/instruments/songs/editor.dm
+++ b/code/modules/instruments/songs/editor.dm
@@ -82,7 +82,6 @@
var/datum/browser/popup = new(user, "instrument", parent?.name || "instrument", 700, 500)
popup.set_content(dat.Join(""))
- popup.set_title_image(user.browse_rsc_icon(parent.icon, parent.icon_state))
popup.open()
/datum/song/proc/ParseSong(text)
diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm
index 536bf06e8d..42b439ba03 100644
--- a/code/modules/language/language.dm
+++ b/code/modules/language/language.dm
@@ -35,7 +35,7 @@
return TRUE
/datum/language/proc/get_icon()
- var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/goonchat)
+ var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat)
return sheet.icon_tag("language-[icon_state]")
/datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4, syllable_divisor=2)
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 80ce2522ff..a4d88158e2 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -22,7 +22,7 @@
max_integrity = 200
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
var/state = 0
- var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase
+ var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book, /obj/item/gun/magic/wand/book) //Things allowed in the bookcase
/obj/structure/bookcase/examine(mob/user)
. = ..()
@@ -192,7 +192,7 @@
desc = "Crack it open, inhale the musk of its pages, and learn something new."
throw_speed = 1
throw_range = 5
- w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever)
+ w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever)
attack_verb = list("bashed", "whacked", "educated")
resistance_flags = FLAMMABLE
var/dat //Actual page content
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index f777246453..3953f5e28c 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -66,7 +66,6 @@
dat += "\[Go Back\]Choose up to '+opts.highlightLimit+' strings that will highlight the line when they appear in chat. ' +
- '' +
- '" var/datum/browser/popup = new(user, "publiclibrary", name, 600, 400) popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() /obj/machinery/computer/libraryconsole/Topic(href, href_list) @@ -314,7 +313,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/datum/browser/popup = new(user, "library", name, 600, 400) popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() /obj/machinery/computer/libraryconsole/bookmanagement/proc/findscanner(viewrange) @@ -537,7 +535,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += " " var/datum/browser/popup = new(user, "scanner", name, 600, 400) popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() /obj/machinery/libraryscanner/Topic(href, href_list) diff --git a/code/modules/mapping/minimaps.dm b/code/modules/mapping/minimaps.dm index 7a62e9ab44..e0eb174cb3 100644 --- a/code/modules/mapping/minimaps.dm +++ b/code/modules/mapping/minimaps.dm @@ -4,7 +4,7 @@ // The map icons var/icon/map_icon var/icon/meta_icon - + var/list/color_area_names = list() var/minx @@ -33,7 +33,7 @@ meta_icon = new('html/blank.png') map_icon.Scale(x2 - x1 + 1, y2 - y1 + 1) // arrays start at 1 meta_icon.Scale(x2 - x1 + 1, y2 - y1 + 1) - + var/list/area_to_color = list() for(var/turf/T in block(locate(x1, y1, z_level), locate(x2, y2, z_level))) var/area/A = T.loc @@ -44,7 +44,7 @@ crop_x2 = max(crop_x2, T.x) crop_y1 = min(crop_y1, T.y) crop_y2 = max(crop_y2, T.y) - + var/meta_color = area_to_color[A] if(!meta_color) meta_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) // technically conflicts could happen but it's like very unlikely and it's not that big of a deal if one happens @@ -73,13 +73,15 @@ overlay_icon = new(map_icon) overlay_icon.Scale(16, 16) //we're done baking, now we ship it. - register_asset("minimap-[id].png", map_icon) - register_asset("minimap-[id]-meta.png", meta_icon) + if (!SSassets.cache["minimap-[id].png"]) + SSassets.transport.register_asset("minimap-[id].png", map_icon) + if (!SSassets.cache["minimap-[id]-meta.png"]) + SSassets.transport.register_asset("minimap-[id]-meta.png", meta_icon) /datum/minimap/proc/send(mob/user) if(!id) CRASH("ERROR: send called, but the minimap id is null/missing. ID: [id]") - send_asset_list(user, list("minimap-[id].png" = map_icon, "minimap-[id]-meta.png" = meta_icon)) + SSassets.transport.send_assets(user, list("minimap-[id].png" = map_icon, "minimap-[id]-meta.png" = meta_icon)) /datum/minimap_group var/list/minimaps = list() @@ -100,15 +102,17 @@ var/list/datas = list() var/list/info = list() - + for(var/i in 1 to length(minimaps))// OLD: for(var/i in 1 to length(minimaps)) var/datum/minimap/M = minimaps[i] + var/map_name = "minimap-[M.id].png" + var/meta_name = "minimap-[M.id]-meta.png" M.send(user) info += {"
-
-
+ [round(changeling.chem_charges)] "
- else
- hud_used.lingchemdisplay.invisibility = INVISIBILITY_ABSTRACT
-
-
-/mob/living/carbon/proc/handle_bloodsucker()
- if(mind && AmBloodsucker(src))
- var/datum/antagonist/bloodsucker/B = mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
- B.LifeTick()
-
+ W.handle_process()
/mob/living/carbon/handle_mutations_and_radiation()
if(dna && dna.temporary_mutations.len)
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index a735baceae..55764d8d50 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -1,9 +1,3 @@
-
-/* EMOTE DATUMS */
-/datum/emote/living
- mob_type_allowed_typecache = /mob/living
- mob_type_blacklist_typecache = list(/mob/living/simple_animal/slime, /mob/living/brain)
-
/datum/emote/living/blush
key = "blush"
key_third_person = "blushes"
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 89321082c9..9de75702db 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -43,6 +43,7 @@
* Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
*/
/mob/living/proc/BiologicalLife(seconds, times_fired)
+ SEND_SIGNAL(src,COMSIG_LIVING_BIOLOGICAL_LIFE, seconds, times_fired)
handle_diseases()// DEAD check is in the proc itself; we want it to spread even if the mob is dead, but to handle its disease-y properties only if you're not.
handle_wounds()
@@ -78,6 +79,7 @@
* Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
*/
/mob/living/proc/PhysicalLife(seconds, times_fired)
+ SEND_SIGNAL(src,COMSIG_LIVING_PHYSICAL_LIFE, seconds, times_fired)
if(digitalinvis)
handle_diginvis() //AI becomes unable to see mob
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index aab741edd6..3f11d88668 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -23,6 +23,7 @@
a_intent = INTENT_HARM //so we always get pushed instead of trying to swap
sight = SEE_TURFS | SEE_MOBS | SEE_OBJS
see_in_dark = 8
+ deathsound = 'sound/voice/scream/android_scream.ogg'
hud_type = /datum/hud/ai
med_hud = DATA_HUD_MEDICAL_BASIC
sec_hud = DATA_HUD_SECURITY_BASIC
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index c0fca997f5..c532e44ff5 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -5,7 +5,7 @@
/datum/emote/sound/silicon
mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human)
emote_type = EMOTE_AUDIBLE
- var/unrestricted = FALSE
+ var/unrestricted = TRUE
/datum/emote/sound/silicon/run_emote(mob/user, params)
if(!unrestricted && !(issilicon(user) || isipcperson(user)))
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 6b58988c31..7c4125fbc6 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -361,8 +361,7 @@
"Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmed"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamed"),
"Eyebot" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "eyebotmed"),
- "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed"),
- "Drake" = image(icon = 'icons/mob/cyborg/drakemech.dmi', icon_state = "drakemedbox")
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed")
)
var/list/L = list("Medihound" = "medihound", "Medihound Dark" = "medihounddark", "Vale" = "valemed")
for(var/a in L)
@@ -423,13 +422,6 @@
moduleselect_icon = "medihound"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
dogborg = TRUE
- if("Drake")
- cyborg_base_icon = "drakemed"
- cyborg_icon_override = 'icons/mob/cyborg/drakemech.dmi'
- sleeper_overlay = "drakemedsleeper"
- moduleselect_icon = "medihound"
- moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
- dogborg = TRUE
else
return FALSE
return ..()
@@ -486,8 +478,7 @@
"Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "caneng"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinaeng"),
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidereng"),
- "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng"),
- "Drake" = image(icon = 'icons/mob/cyborg/drakemech.dmi', icon_state = "drakeengbox")
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng")
)
var/list/L = list("Pup Dozer" = "pupdozer", "Vale" = "valeeng")
for(var/a in L)
@@ -545,11 +536,6 @@
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
sleeper_overlay = "alinasleeper"
dogborg = TRUE
- if("Drake")
- cyborg_base_icon = "drakeeng"
- cyborg_icon_override = 'icons/mob/cyborg/drakemech.dmi'
- sleeper_overlay = "drakesecsleeper"
- dogborg = TRUE
else
return FALSE
return ..()
@@ -588,8 +574,7 @@
"Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "cansec"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinasec"),
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidersec"),
- "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavysec"),
- "Drake" = image(icon = 'icons/mob/cyborg/drakemech.dmi', icon_state = "drakesecbox")
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavysec")
)
var/list/L = list("K9" = "k9", "Vale" = "valesec", "K9 Dark" = "k9dark")
for(var/a in L)
@@ -645,11 +630,6 @@
sleeper_overlay = "valesecsleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
dogborg = TRUE
- if("Drake")
- cyborg_base_icon = "drakesec"
- cyborg_icon_override = 'icons/mob/cyborg/drakemech.dmi'
- sleeper_overlay = "drakesecsleeper"
- dogborg = TRUE
else
return FALSE
return ..()
@@ -693,8 +673,7 @@
var/static/list/peace_icons = sortList(list(
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "peace"),
"Borgi" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "borgi"),
- "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "whitespider"),
- "Drake" = image(icon = 'icons/mob/cyborg/drakemech.dmi', icon_state = "drakepeacebox")
+ "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "whitespider")
))
var/peace_borg_icon = show_radial_menu(R, R , peace_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
switch(peace_borg_icon)
@@ -710,11 +689,6 @@
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
- if("Drake")
- cyborg_base_icon = "drakepeace"
- cyborg_icon_override = 'icons/mob/cyborg/drakemech.dmi'
- sleeper_overlay = "drakepeacesleeper"
- dogborg = TRUE
else
return FALSE
return ..()
@@ -853,8 +827,7 @@
"(Janitor) Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinajan"),
"(Janitor) Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekjan"),
"(Janitor) Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canjan"),
- "(Janitor) Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyjan"),
- "(Janitor) Drake" = image(icon = 'icons/mob/cyborg/drakemech.dmi', icon_state = "drakejanitbox")
+ "(Janitor) Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyjan")
)
var/list/L = list("(Service) DarkK9" = "k50", "(Service) Vale" = "valeserv", "(Service) ValeDark" = "valeservdark",
"(Janitor) Scrubpuppy" = "scrubpup")
@@ -926,11 +899,6 @@
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
sleeper_overlay = "jsleeper"
dogborg = TRUE
- if("(Janitor) Drake")
- cyborg_base_icon = "drakejanit"
- cyborg_icon_override = 'icons/mob/cyborg/drakemech.dmi'
- sleeper_overlay = "drakesecsleeper"
- dogborg = TRUE
else
return FALSE
return ..()
@@ -976,8 +944,7 @@
"Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmin"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamin"),
"Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canmin"),
- "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin"),
- "Drake" = image(icon = 'icons/mob/cyborg/drakemech.dmi', icon_state = "drakeminebox")
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin")
)
var/list/L = list("Blade" = "blade", "Vale" = "valemine")
for(var/a in L)
@@ -1021,11 +988,6 @@
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
sleeper_overlay = "valeminesleeper"
dogborg = TRUE
- if("Drake")
- cyborg_base_icon = "drakemine"
- cyborg_icon_override = 'icons/mob/cyborg/drakemech.dmi'
- sleeper_overlay = "drakeminesleeper"
- dogborg = TRUE
else
return FALSE
return ..()
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index c6aee397e4..944b909463 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -13,6 +13,7 @@
mob_biotypes = MOB_ROBOTIC
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
speech_span = SPAN_ROBOT
+ deathsound = 'sound/voice/borg_deathsound.ogg'
flags_1 = PREVENT_CONTENTS_EXPLOSION_1 | HEAR_1
vore_flags = NO_VORE
diff --git a/code/modules/mob/living/simple_animal/astral.dm b/code/modules/mob/living/simple_animal/astral.dm
index f79a2b5b3e..ec2180ccb3 100644
--- a/code/modules/mob/living/simple_animal/astral.dm
+++ b/code/modules/mob/living/simple_animal/astral.dm
@@ -24,6 +24,7 @@
incorporeal_move = 1
alpha = 50
speak_emote = list("echos")
+ rad_flags = RAD_NO_CONTAMINATE
movement_type = FLYING
var/pseudo_death = FALSE
var/posses_safe = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm
index 100db06174..8fb531f1fb 100644
--- a/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm
@@ -1,6 +1,5 @@
/datum/emote/sound/gorilla
mob_type_allowed_typecache = /mob/living/simple_animal/hostile/gorilla
- mob_type_blacklist_typecache = list()
/datum/emote/sound/gorilla/ooga
key = "ooga"
@@ -8,4 +7,3 @@
message = "oogas."
message_param = "oogas at %t."
sound = 'sound/creatures/gorilla.ogg'
-
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 795184bad5..3de4c8b41b 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -141,7 +141,7 @@ Difficulty: Medium
loot = list(/obj/item/staff/storm)
elimination = 0
else if(prob(20))
- loot = list(/obj/structure/closet/crate/necropolis/tendril)
+ loot = list(/obj/structure/closet/crate/necropolis/tendril/random) //This one spawns a chest that could be any of the three types
..()
/obj/item/gps/internal/legion
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index e3edd171c0..e347056924 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -25,6 +25,7 @@
var/list/attack_action_types = list()
var/can_talk = FALSE
var/obj/loot_drop = null
+ var/crate_type = /obj/structure/closet/crate/necropolis/tendril
var/owner
//Gives player-controlled variants the ability to swap attacks
@@ -182,7 +183,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
activator = null
-obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind)
+/obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind)
var/selectedspawn = pick(potentialspawns)
mychild = new selectedspawn(loc)
visible_message("[mychild] emerges from [src]!")
@@ -193,7 +194,7 @@ obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind)
icon_state = "tumor_popped"
INVOKE_ASYNC(src, .proc/arena_checks)
-obj/structure/elite_tumor/proc/return_elite()
+/obj/structure/elite_tumor/proc/return_elite()
mychild.forceMove(loc)
visible_message("[mychild] emerges from [src]!")
playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE)
@@ -271,11 +272,11 @@ obj/structure/elite_tumor/proc/return_elite()
visible_message("[mychild] suddenly reappears above [src]!")
playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE)
-obj/structure/elite_tumor/proc/onEliteLoss()
+/obj/structure/elite_tumor/proc/onEliteLoss()
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, TRUE, TRUE)
visible_message("[src] begins to convulse violently before beginning to dissipate.")
visible_message("As [src] closes, something is forced up from down below.")
- var/obj/structure/closet/crate/necropolis/tendril/lootbox = new /obj/structure/closet/crate/necropolis/tendril(loc)
+ var/obj/structure/closet/crate/necropolis/tendril/lootbox = new mychild.crate_type(loc)
if(!boosted)
mychild = null
activator = null
@@ -290,7 +291,7 @@ obj/structure/elite_tumor/proc/onEliteLoss()
activator = null
qdel(src)
-obj/structure/elite_tumor/proc/onEliteWon()
+/obj/structure/elite_tumor/proc/onEliteWon()
activity = TUMOR_PASSIVE
activator = null
mychild.revive(full_heal = TRUE, admin_revive = TRUE)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index d9f3cfba3d..4e8f4f6160 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -40,6 +40,7 @@
mouse_opacity = MOUSE_OPACITY_ICON
deathmessage = "explodes into gore!"
loot_drop = /obj/item/crusher_trophy/broodmother_tongue
+ crate_type = /obj/structure/closet/crate/necropolis/tendril/weapon_armor
attack_action_types = list(/datum/action/innate/elite_attack/tentacle_patch,
/datum/action/innate/elite_attack/spawn_children,
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
index fce5b636e4..032bc2d60d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
@@ -38,7 +38,7 @@
deathsound = 'sound/magic/demon_dies.ogg'
deathmessage = "begins to shudder as it becomes transparent..."
loot_drop = /obj/item/clothing/neck/cloak/herald_cloak
-
+ crate_type = /obj/structure/closet/crate/necropolis/tendril/magic
can_talk = 1
attack_action_types = list(/datum/action/innate/elite_attack/herald_trishot,
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index 15ed0135fe..6c13bb903e 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -38,7 +38,7 @@
deathsound = 'sound/magic/curse.ogg'
deathmessage = "'s arms reach out before it falls apart onto the floor, lifeless."
loot_drop = /obj/item/crusher_trophy/legionnaire_spine
-
+ crate_type = /obj/structure/closet/crate/necropolis/tendril/misc
attack_action_types = list(/datum/action/innate/elite_attack/legionnaire_charge,
/datum/action/innate/elite_attack/head_detach,
/datum/action/innate/elite_attack/bonfire_teleport,
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
index 7995e4d20f..b3300a86bb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
@@ -38,7 +38,7 @@
deathsound = 'sound/magic/repulse.ogg'
deathmessage = "'s lights flicker, before its top part falls down."
loot_drop = /obj/item/clothing/accessory/pandora_hope
-
+ crate_type = /obj/structure/closet/crate/necropolis/tendril/magic
attack_action_types = list(/datum/action/innate/elite_attack/singular_shot,
/datum/action/innate/elite_attack/magic_box,
/datum/action/innate/elite_attack/pandora_teleport,
@@ -190,4 +190,4 @@
/obj/item/clothing/accessory/pandora_hope/on_uniform_dropped(obj/item/clothing/under/U, user)
var/mob/living/L = user
if(L && L.mind)
- SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "hope_lavaland")
+ SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "hope_lavaland")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/slime/emote.dm b/code/modules/mob/living/simple_animal/slime/emote.dm
index 070cd48a70..9440caf3fc 100644
--- a/code/modules/mob/living/simple_animal/slime/emote.dm
+++ b/code/modules/mob/living/simple_animal/slime/emote.dm
@@ -1,6 +1,5 @@
/datum/emote/slime
mob_type_allowed_typecache = /mob/living/simple_animal/slime
- mob_type_blacklist_typecache = list()
/datum/emote/slime/bounce
key = "bounce"
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 1bdd988694..b74dd6fa20 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -106,6 +106,7 @@
set_colour(new_colour)
. = ..()
AddComponent(/datum/component/footstep, FOOTSTEP_MOB_SLIME, 7.5)
+ set_nutrition(rand(650, 800))
/mob/living/simple_animal/slime/Destroy()
for (var/A in actions)
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 31bfb5621f..0d4afd0915 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -50,6 +50,8 @@
var/datum/callback/CB = foo
CB.Invoke()
+ mind?.hide_ckey = client?.prefs?.hide_ckey
+
log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP)
SEND_SIGNAL(src, COMSIG_MOB_CLIENT_LOGIN, client)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 52b755d926..aa6635f73d 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -431,7 +431,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
/mob/living/getImplant(type)
return locate(type) in implants
-/proc/offer_control(mob/M)
+/proc/offer_control(mob/M,ignore_category=null)
to_chat(M, "Control of your mob has been offered to dead players.")
if(usr)
log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.")
@@ -445,7 +445,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/)
if(A)
poll_message = "[poll_message] Status:[A.name]."
- var/list/mob/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M)
+ var/list/mob/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M, ignore_category)
if(LAZYLEN(candidates))
var/mob/C = pick(candidates)
diff --git a/code/modules/modular_computers/computers/_modular_computer_shared.dm b/code/modules/modular_computers/computers/_modular_computer_shared.dm
index 8ca93e8347..9dde9a0c49 100644
--- a/code/modules/modular_computers/computers/_modular_computer_shared.dm
+++ b/code/modules/modular_computers/computers/_modular_computer_shared.dm
@@ -44,18 +44,20 @@
. += "It has a slot installed for an intelliCard."
var/obj/item/computer_hardware/card_slot/card_slot = get_modular_computer_part(MC_CARD)
+ var/obj/item/computer_hardware/card_slot/card_slot2 = get_modular_computer_part(MC_CARD2)
+ var/multiple_slots = istype(card_slot) && istype(card_slot2)
if(card_slot)
- if(card_slot.stored_card || card_slot.stored_card2)
+ if(card_slot?.stored_card || card_slot2?.stored_card)
var/obj/item/card/id/first_ID = card_slot.stored_card
- var/obj/item/card/id/second_ID = card_slot.stored_card2
+ var/obj/item/card/id/second_ID = card_slot2.stored_card
var/multiple_cards = istype(first_ID) && istype(second_ID)
if(user_is_adjacent)
- . += "It has two slots for identification cards installed[multiple_cards ? " which contain [first_ID] and [second_ID]" : ", one of which contains [first_ID ? first_ID : second_ID]"]."
+ . += "It has [multiple_slots ? "two slots" : "a slot"] for identification cards installed[multiple_cards ? " which contain [first_ID] and [second_ID]" : ", one of which contains [first_ID ? first_ID : second_ID]"]."
else
- . += "It has two slots for identification cards installed, [multiple_cards ? "both of which appear" : "and one of them appears"] to be occupied."
+ . += "It has [multiple_slots ? "two slots" : "a slot"] for identification cards installed, [multiple_cards ? "both of which appear" : "and one of them appears"] to be occupied."
. += "Alt-click [src] to eject the identification card[multiple_cards ? "s":""]."
else
- . += "It has two slots installed for identification cards."
+ . += "It has [multiple_slots ? "two slots" : "a slot"] installed for identification cards."
var/obj/item/computer_hardware/printer/printer_slot = get_modular_computer_part(MC_PRINT)
if(printer_slot)
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 67c04de13f..63cb1cc5fa 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -4,6 +4,12 @@
/obj/item/modular_computer
name = "modular microcomputer"
desc = "A small portable microcomputer."
+ icon = 'icons/obj/computer.dmi'
+ icon_state = "laptop-open"
+ var/light_on = FALSE
+ integrity_failure = 0.5
+ max_integrity = 100
+ armor = list("melee" = 0, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
var/enabled = 0 // Whether the computer is turned on.
var/screen_on = 1 // Whether the computer is active/opened/it's screen is on.
@@ -22,8 +28,6 @@
// must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently
// If you create a program which is limited to Laptops and Consoles you don't have to add it's icon_state overlay for Tablets too, for example.
- icon = 'icons/obj/computer.dmi'
- icon_state = "laptop-open"
var/icon_state_unpowered = null // Icon state when the computer is turned off.
var/icon_state_powered = null // Icon state when the computer is turned on.
var/icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen.
@@ -31,20 +35,16 @@
var/max_hardware_size = 0 // Maximal hardware w_class. Tablets/PDAs have 1, laptops 2, consoles 4.
var/steel_sheet_cost = 5 // Amount of steel sheets refunded when disassembling an empty frame of this computer.
- integrity_failure = 0.5
- max_integrity = 100
- armor = list("melee" = 0, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
-
- // Important hardware (must be installed for computer to work)
-
- // Optional hardware (improves functionality, but is not critical for computer to work)
-
- var/list/all_components = list() // List of "connection ports" in this computer and the components with which they are plugged
+ /// List of "connection ports" in this computer and the components with which they are plugged
+ var/list/all_components = list()
+ /// Lazy List of extra hardware slots that can be used modularly.
+ var/list/expansion_bays
+ /// Number of total expansion bays this computer has available.
+ var/max_bays = 0
var/list/idle_threads // Idle programs on background. They still receive process calls but can't be interacted with.
var/obj/physical = null // Object that represents our computer. It's used for Adjacent() and UI visibility checks.
var/has_light = FALSE //If the computer has a flashlight/LED light/what-have-you installed
- var/light_on = FALSE //If that light is enabled
var/comp_light_luminosity = 3 //The brightness of that light
var/comp_light_color //The color of that light
@@ -71,80 +71,15 @@
physical = null
return ..()
-
-/obj/item/modular_computer/proc/add_verb(var/path)
- switch(path)
- if(MC_CARD)
- verbs += /obj/item/modular_computer/proc/eject_id
- if(MC_SDD)
- verbs += /obj/item/modular_computer/proc/eject_disk
- if(MC_AI)
- verbs += /obj/item/modular_computer/proc/eject_card
-
-/obj/item/modular_computer/proc/remove_verb(path)
- switch(path)
- if(MC_CARD)
- verbs -= /obj/item/modular_computer/proc/eject_id
- if(MC_SDD)
- verbs -= /obj/item/modular_computer/proc/eject_disk
- if(MC_AI)
- verbs -= /obj/item/modular_computer/proc/eject_card
-
-// Eject ID card from computer, if it has ID slot with card inside.
-/obj/item/modular_computer/proc/eject_id()
- set name = "Eject ID"
- set category = "Object"
- set src in view(1)
-
- if(issilicon(usr))
- return
- var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
- if(usr.canUseTopic(src, BE_CLOSE))
- card_slot.try_eject(null, usr)
-
-// Eject ID card from computer, if it has ID slot with card inside.
-/obj/item/modular_computer/proc/eject_card()
- set name = "Eject Intellicard"
- set category = "Object"
-
- if(issilicon(usr))
- return
- var/obj/item/computer_hardware/ai_slot/ai_slot = all_components[MC_AI]
- if(usr.canUseTopic(src, BE_CLOSE))
- ai_slot.try_eject(null, usr,1)
-
-
-// Eject ID card from computer, if it has ID slot with card inside.
-/obj/item/modular_computer/proc/eject_disk()
- set name = "Eject Data Disk"
- set category = "Object"
-
- if(issilicon(usr))
- return
-
- if(usr.canUseTopic(src, BE_CLOSE))
- var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
- if(uninstall_component(portable_drive, usr))
- portable_drive.verb_pickup()
-
/obj/item/modular_computer/AltClick(mob/user)
..()
if(issilicon(user))
return
if(user.canUseTopic(src, BE_CLOSE))
+ var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2]
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
- var/obj/item/computer_hardware/ai_slot/ai_slot = all_components[MC_AI]
- var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
- if(portable_drive)
- if(uninstall_component(portable_drive, user))
- portable_drive.verb_pickup()
- else
- if(card_slot && card_slot.try_eject(null, user))
- return
- if(ai_slot)
- ai_slot.try_eject(null, user)
-
+ return (card_slot2?.try_eject(user) || card_slot?.try_eject(user)) //Try the secondary one first.
// Gets IDs/access levels from card slot. Would be useful when/if PDAs would become modular PCs.
/obj/item/modular_computer/GetAccess()
@@ -160,19 +95,25 @@
return ..()
/obj/item/modular_computer/RemoveID()
+ var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2]
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
- if(!card_slot)
- return
- return card_slot.RemoveID()
+ return (card_slot2?.try_eject() || card_slot?.try_eject()) //Try the secondary one first.
/obj/item/modular_computer/InsertID(obj/item/inserting_item)
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
- if(!card_slot)
+ var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2]
+ if(!(card_slot || card_slot2))
+ //to_chat(user, "There isn't anywhere you can fit a card into on this computer.")
return FALSE
+
var/obj/item/card/inserting_id = inserting_item.RemoveID()
if(!inserting_id)
return FALSE
- return card_slot.try_insert(inserting_id)
+
+ if((card_slot?.try_insert(inserting_id)) || (card_slot2?.try_insert(inserting_id)))
+ return TRUE
+ //to_chat(user, "This computer doesn't have an open card slot.")
+ return FALSE
/obj/item/modular_computer/MouseDrop(obj/over_object, src_location, over_location)
var/mob/M = usr
diff --git a/code/modules/modular_computers/computers/item/computer_components.dm b/code/modules/modular_computers/computers/item/computer_components.dm
index 3c94a66384..8668b279cf 100644
--- a/code/modules/modular_computers/computers/item/computer_components.dm
+++ b/code/modules/modular_computers/computers/item/computer_components.dm
@@ -6,6 +6,14 @@
to_chat(user, "This component is too large for \the [src]!")
return FALSE
+ if(H.expansion_hw)
+ if(LAZYLEN(expansion_bays) >= max_bays)
+ to_chat(user, "All of the computer's expansion bays are filled.")
+ return FALSE
+ if(LAZYACCESS(expansion_bays, H.device_type))
+ to_chat(user, "The computer immediately ejects /the [H] and flashes an error: \"Hardware Address Conflict\".")
+ return FALSE
+
if(all_components[H.device_type])
to_chat(user, "This computer's hardware slot is already occupied by \the [all_components[H.device_type]].")
return FALSE
@@ -20,6 +28,8 @@
if(user && !user.transferItemToLoc(H, src))
return FALSE
+ if(H.expansion_hw)
+ LAZYSET(expansion_bays, H.device_type, H)
all_components[H.device_type] = H
to_chat(user, "You install \the [H] into \the [src].")
@@ -32,7 +42,9 @@
/obj/item/modular_computer/proc/uninstall_component(obj/item/computer_hardware/H, mob/living/user = null)
if(H.holder != src) // Not our component at all.
return FALSE
+ if(H.expansion_hw)
+ LAZYREMOVE(expansion_bays, H.device_type)
all_components.Remove(H.device_type)
to_chat(user, "You remove \the [H] from \the [src].")
@@ -43,6 +55,7 @@
if(enabled && !use_power())
shutdown_computer()
update_icon()
+ return TRUE
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm
index fd017e2b0f..4a985b93c1 100644
--- a/code/modules/modular_computers/computers/item/computer_ui.dm
+++ b/code/modules/modular_computers/computers/item/computer_ui.dm
@@ -44,6 +44,33 @@
/obj/item/modular_computer/ui_data(mob/user)
var/list/data = get_header_data()
data["device_theme"] = device_theme
+
+ data["login"] = list()
+ var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD]
+ if(cardholder)
+ var/obj/item/card/id/stored_card = cardholder.GetID()
+ if(stored_card)
+ var/stored_name = stored_card.registered_name
+ var/stored_title = stored_card.assignment
+ if(!stored_name)
+ stored_name = "Unknown"
+ if(!stored_title)
+ stored_title = "Unknown"
+ data["login"] = list(
+ IDName = stored_name,
+ IDJob = stored_title,
+ )
+
+ data["removable_media"] = list()
+ if(all_components[MC_SDD])
+ data["removable_media"] += "removable storage disk"
+ var/obj/item/computer_hardware/ai_slot/intelliholder = all_components[MC_AI]
+ if(intelliholder?.stored_card)
+ data["removable_media"] += "intelliCard"
+ var/obj/item/computer_hardware/card_slot/secondarycardholder = all_components[MC_CARD2]
+ if(secondarycardholder?.stored_card)
+ data["removable_media"] += "secondary RFID card"
+
data["programs"] = list()
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
for(var/datum/computer_file/program/P in hard_drive.stored_files)
@@ -157,6 +184,36 @@
light_color = new_color
update_light()
return TRUE
+
+ if("PC_Eject_Disk")
+ var/param = params["name"]
+ var/mob/user = usr
+ switch(param)
+ if("removable storage disk")
+ var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
+ if(!portable_drive)
+ return
+ if(uninstall_component(portable_drive, usr))
+ user.put_in_hands(portable_drive)
+ playsound(src, 'sound/machines/card_slide.ogg', 50)
+ if("intelliCard")
+ var/obj/item/computer_hardware/ai_slot/intelliholder = all_components[MC_AI]
+ if(!intelliholder)
+ return
+ if(intelliholder.try_eject(user))
+ playsound(src, 'sound/machines/card_slide.ogg', 50)
+ if("ID")
+ var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD]
+ if(!cardholder)
+ return
+ cardholder.try_eject(user)
+ if("secondary RFID card")
+ var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD2]
+ if(!cardholder)
+ return
+ cardholder.try_eject(user)
+
+
else
return
diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm
index 5927d57a0b..ef83140a8f 100644
--- a/code/modules/modular_computers/computers/item/laptop.dm
+++ b/code/modules/modular_computers/computers/item/laptop.dm
@@ -12,6 +12,7 @@
hardware_flag = PROGRAM_LAPTOP
max_hardware_size = 2
w_class = WEIGHT_CLASS_NORMAL
+ max_bays = 4
// No running around with open laptops in hands.
item_flags = SLOWS_WHILE_IN_HAND
diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm
index c79d7a9361..0d7b567877 100644
--- a/code/modules/modular_computers/computers/item/processor.dm
+++ b/code/modules/modular_computers/computers/item/processor.dm
@@ -8,6 +8,7 @@
icon_state_unpowered = null
icon_state_menu = null
hardware_flag = 0
+ max_bays = 4
var/obj/machinery/modular_computer/machinery_computer = null
@@ -18,7 +19,7 @@
machinery_computer = null
. = ..()
-/obj/item/modular_computer/processor/New(comp) //intentional new probably
+/obj/item/modular_computer/processor/New(comp)
..()
STOP_PROCESSING(SSobj, src) // Processed by its machine
@@ -56,23 +57,5 @@
machinery_computer.update_icon()
return
-/obj/item/modular_computer/processor/add_verb(path)
- switch(path)
- if(MC_CARD)
- machinery_computer.verbs += /obj/machinery/modular_computer/proc/eject_id
- if(MC_SDD)
- machinery_computer.verbs += /obj/machinery/modular_computer/proc/eject_disk
- if(MC_AI)
- machinery_computer.verbs += /obj/machinery/modular_computer/proc/eject_card
-
-/obj/item/modular_computer/processor/remove_verb(path)
- switch(path)
- if(MC_CARD)
- machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_id
- if(MC_SDD)
- machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_disk
- if(MC_AI)
- machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_card
-
/obj/item/modular_computer/processor/attack_ghost(mob/user)
ui_interact(user)
diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm
index 41a256467f..67e8118c7a 100644
--- a/code/modules/modular_computers/computers/item/tablet.dm
+++ b/code/modules/modular_computers/computers/item/tablet.dm
@@ -5,10 +5,11 @@
icon_state_unpowered = "tablet"
icon_state_powered = "tablet"
icon_state_menu = "menu"
- //worn_icon_state = "tablet"
+ // worn_icon_state = "tablet"
hardware_flag = PROGRAM_TABLET
max_hardware_size = 1
w_class = WEIGHT_CLASS_SMALL
+ max_bays = 3
steel_sheet_cost = 1
slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT
has_light = TRUE //LED flashlight!
diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm
index 7cca8ea5b4..8ac669d2bf 100644
--- a/code/modules/modular_computers/computers/item/tablet_presets.dm
+++ b/code/modules/modular_computers/computers/item/tablet_presets.dm
@@ -26,11 +26,21 @@
install_component(new /obj/item/computer_hardware/processor_unit/small)
install_component(new /obj/item/computer_hardware/battery(src, /obj/item/stock_parts/cell/computer))
install_component(hard_drive)
+ install_component(new /obj/item/computer_hardware/card_slot)
install_component(new /obj/item/computer_hardware/network_card)
install_component(new /obj/item/computer_hardware/printer/mini)
hard_drive.store_file(new /datum/computer_file/program/bounty)
//hard_drive.store_file(new /datum/computer_file/program/shipping)
+/obj/item/modular_computer/tablet/preset/advanced/atmos/Initialize() //This will be defunct and will be replaced when NtOS PDAs are done
+ . = ..()
+ install_component(new /obj/item/computer_hardware/sensorpackage)
+
+/obj/item/modular_computer/tablet/preset/advanced/command/Initialize()
+ . = ..()
+ install_component(new /obj/item/computer_hardware/sensorpackage)
+ install_component(new /obj/item/computer_hardware/card_slot/secondary)
+
/// Given by the syndicate as part of the contract uplink bundle - loads in the Contractor Uplink.
/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink/Initialize()
. = ..()
diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm
index 9d29b23e76..12b2f6d25a 100644
--- a/code/modules/modular_computers/computers/machinery/console_presets.dm
+++ b/code/modules/modular_computers/computers/machinery/console_presets.dm
@@ -1,6 +1,6 @@
/obj/machinery/modular_computer/console/preset
// Can be changed to give devices specific hardware
- var/_has_id_slot = FALSE
+ var/_has_second_id_slot = FALSE
var/_has_printer = FALSE
var/_has_battery = FALSE
var/_has_ai = FALSE
@@ -11,8 +11,9 @@
return
cpu.install_component(new /obj/item/computer_hardware/processor_unit)
- if(_has_id_slot)
- cpu.install_component(new /obj/item/computer_hardware/card_slot)
+ cpu.install_component(new /obj/item/computer_hardware/card_slot)
+ if(_has_second_id_slot)
+ cpu.install_component(new /obj/item/computer_hardware/card_slot/secondary)
if(_has_printer)
cpu.install_component(new /obj/item/computer_hardware/printer)
if(_has_battery)
@@ -59,7 +60,7 @@
console_department = "Command"
name = "command console"
desc = "A stationary computer. This one comes preloaded with command programs."
- _has_id_slot = TRUE
+ _has_second_id_slot = TRUE
_has_printer = TRUE
/obj/machinery/modular_computer/console/preset/command/install_programs()
@@ -73,7 +74,7 @@
console_department = "Identification"
name = "identification console"
desc = "A stationary computer. This one comes preloaded with identification modification programs."
- _has_id_slot = TRUE
+ _has_second_id_slot = TRUE
_has_printer = TRUE
/obj/machinery/modular_computer/console/preset/id/install_programs()
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 6f016ad147..0e6f4d161a 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -75,30 +75,6 @@
add_overlay("bsod")
add_overlay("broken")
-// Eject ID card from computer, if it has ID slot with card inside.
-/obj/machinery/modular_computer/proc/eject_id()
- set name = "Eject ID"
- set category = "Object"
-
- if(cpu)
- cpu.eject_id()
-
-// Eject ID card from computer, if it has ID slot with card inside.
-/obj/machinery/modular_computer/proc/eject_disk()
- set name = "Eject Data Disk"
- set category = "Object"
-
- if(cpu)
- cpu.eject_disk()
-
-/obj/machinery/modular_computer/proc/eject_card()
- set name = "Eject Intellicard"
- set category = "Object"
- set src in view(1)
-
- if(cpu)
- cpu.eject_card()
-
/obj/machinery/modular_computer/AltClick(mob/user)
if(cpu)
cpu.AltClick(user)
@@ -136,7 +112,7 @@
return
. = ..()
-/obj/machinery/modular_computer/attackby(var/obj/item/W as obj, mob/user)
+/obj/machinery/modular_computer/attackby(obj/item/W as obj, mob/user)
if(cpu && !(flags_1 & NODECONSTRUCT_1))
return cpu.attackby(W, user)
return ..()
@@ -169,5 +145,4 @@
// "Brute" damage mostly damages the casing.
/obj/machinery/modular_computer/bullet_act(obj/item/projectile/Proj)
if(cpu)
- return cpu.bullet_act(Proj)
- return ..()
+ cpu.bullet_act(Proj)
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index 12e5ef6e95..6d6a48d567 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -25,8 +25,6 @@
var/ntnet_status = 1
/// Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL
var/usage_flags = PROGRAM_ALL
- /// Optional string that describes what NTNet server/system this program connects to. Used in default logging.
- var/network_destination = null
/// Whether the program can be downloaded from NTNet. Set to 0 to disable.
var/available_on_ntnet = 1
/// Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable.
@@ -82,10 +80,18 @@
/datum/computer_file/program/proc/process_tick()
return 1
-// Check if the user can run program. Only humans can operate computer. Automatically called in run_program()
-// User has to wear their ID for ID Scan to work.
-// Can also be called manually, with optional parameter being access_to_check to scan the user's ID
-/datum/computer_file/program/proc/can_run(mob/user, loud = FALSE, access_to_check, transfer = FALSE)
+/**
+ *Check if the user can run program. Only humans can operate computer. Automatically called in run_program()
+ *ID must be inserted into a card slot to be read. If the program is not currently installed (as is the case when
+ *NT Software Hub is checking available software), a list can be given to be used instead.
+ *Arguments:
+ *user is a ref of the mob using the device.
+ *loud is a bool deciding if this proc should use to_chats
+ *access_to_check is an access level that will be checked against the ID
+ *transfer, if TRUE and access_to_check is null, will tell this proc to use the program's transfer_access in place of access_to_check
+ *access can contain a list of access numbers to check against. If access is not empty, it will be used istead of checking any inserted ID.
+*/
+/datum/computer_file/program/proc/can_run(mob/user, loud = FALSE, access_to_check, transfer = FALSE, var/list/access)
// Defaults to required_access
if(!access_to_check)
if(transfer && transfer_access)
@@ -104,29 +110,24 @@
if(issilicon(user))
return TRUE
- if(ishuman(user))
+ if(!length(access))
var/obj/item/card/id/D
var/obj/item/computer_hardware/card_slot/card_slot
- if(computer && card_slot)
+ if(computer)
card_slot = computer.all_components[MC_CARD]
- D = card_slot.GetID()
- var/mob/living/carbon/human/h = user
- var/obj/item/card/id/I = h.get_idcard(TRUE)
+ D = card_slot?.GetID()
- if(!I && !D)
+ if(!D)
if(loud)
to_chat(user, "\The [computer] flashes an \"RFID Error - Unable to scan ID\" warning.")
return FALSE
+ access = D.GetAccess()
- if(I)
- if(access_to_check in I.GetAccess())
- return TRUE
- else if(D)
- if(access_to_check in D.GetAccess())
- return TRUE
- if(loud)
- to_chat(user, "\The [computer] flashes an \"Access Denied\" warning.")
- return 0
+ if(access_to_check in access)
+ return TRUE
+ if(loud)
+ to_chat(user, "\The [computer] flashes an \"Access Denied\" warning.")
+ return FALSE
// This attempts to retrieve header data for UIs. If implementing completely new device of different type than existing ones
// always include the device here in this proc. This proc basically relays the request to whatever is running the program.
@@ -139,8 +140,12 @@
// When implementing new program based device, use this to run the program.
/datum/computer_file/program/proc/run_program(mob/living/user)
if(can_run(user, 1))
- if(requires_ntnet && network_destination)
- generate_network_log("Connection opened to [network_destination].")
+ if(requires_ntnet)
+ var/obj/item/card/id/ID
+ var/obj/item/computer_hardware/card_slot/card_holder = computer.all_components[MC_CARD]
+ if(card_holder)
+ ID = card_holder.GetID()
+ generate_network_log("Connection opened -- Program ID: [filename] User:[ID?"[ID.registered_name]":"None"]")
program_state = PROGRAM_STATE_ACTIVE
return 1
return 0
@@ -162,8 +167,12 @@
// Use this proc to kill the program. Designed to be implemented by each program if it requires on-quit logic, such as the NTNRC client.
/datum/computer_file/program/proc/kill_program(forced = FALSE)
program_state = PROGRAM_STATE_KILLED
- if(network_destination)
- generate_network_log("Connection to [network_destination] closed.")
+ if(requires_ntnet)
+ var/obj/item/card/id/ID
+ var/obj/item/computer_hardware/card_slot/card_holder = computer.all_components[MC_CARD]
+ if(card_holder)
+ ID = card_holder.GetID()
+ generate_network_log("Connection closed -- Program ID: [filename] User:[ID?"[ID.registered_name]":"None"]")
return 1
/datum/computer_file/program/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/modular_computers/file_system/program_events.dm b/code/modules/modular_computers/file_system/program_events.dm
index 3c1daa5af3..1cb74a227b 100644
--- a/code/modules/modular_computers/file_system/program_events.dm
+++ b/code/modules/modular_computers/file_system/program_events.dm
@@ -2,7 +2,7 @@
// Always include a parent call when overriding an event.
// Called when the ID card is removed from computer. ID is removed AFTER this proc.
-/datum/computer_file/program/proc/event_idremoved(background, slot)
+/datum/computer_file/program/proc/event_idremoved(background)
return
// Called when the computer fails due to power loss. Override when program wants to specifically react to power loss.
diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm
index 364ad79737..7ae6dd203a 100644
--- a/code/modules/modular_computers/file_system/programs/airestorer.dm
+++ b/code/modules/modular_computers/file_system/programs/airestorer.dm
@@ -1,8 +1,8 @@
/datum/computer_file/program/aidiag
filename = "aidiag"
- filedesc = "AI Integrity Restorer"
+ filedesc = "NT FRK"
program_icon_state = "generic"
- extended_desc = "This program is capable of reconstructing damaged AI systems. Requires direct AI connection via intellicard slot."
+ extended_desc = "Firmware Restoration Kit, capable of reconstructing damaged AI systems. Requires direct AI connection via intellicard slot."
size = 12
requires_ntnet = FALSE
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP
@@ -48,7 +48,7 @@
if(computer.all_components[MC_AI])
var/obj/item/computer_hardware/ai_slot/ai_slot = computer.all_components[MC_AI]
if(ai_slot && ai_slot.stored_card)
- ai_slot.try_eject(0,usr)
+ ai_slot.try_eject(usr)
return TRUE
/datum/computer_file/program/aidiag/process_tick()
@@ -71,14 +71,19 @@
ai_slot.locked = FALSE
restoring = FALSE
return
- ai_slot.locked =TRUE
+ ai_slot.locked = TRUE
A.adjustOxyLoss(-5, 0)//, FALSE)
A.adjustFireLoss(-5, 0)//, FALSE)
A.adjustToxLoss(-5, 0)
A.adjustBruteLoss(-5, 0)
+
+ // Please don't forget to update health, otherwise the below if statements will probably always fail.
A.updatehealth()
+
if(A.health >= 0 && A.stat == DEAD)
A.revive(full_heal = FALSE, admin_revive = FALSE)
+ cardhold.update_icon()
+
// Finished restoring
if(A.health >= 100)
ai_slot.locked = FALSE
diff --git a/code/modules/modular_computers/file_system/programs/alarm.dm b/code/modules/modular_computers/file_system/programs/alarm.dm
index 577fad83d0..55dea600e3 100644
--- a/code/modules/modular_computers/file_system/programs/alarm.dm
+++ b/code/modules/modular_computers/file_system/programs/alarm.dm
@@ -1,11 +1,10 @@
/datum/computer_file/program/alarm_monitor
filename = "alarmmonitor"
- filedesc = "Alarm Monitor"
+ filedesc = "Canary"
ui_header = "alarm_green.gif"
program_icon_state = "alert-green"
- extended_desc = "This program provides visual interface for station's alarm system."
+ extended_desc = "This program provides visual interface for a station's alarm system."
requires_ntnet = 1
- network_destination = "alarm monitoring network"
size = 5
tgui_id = "NtosStationAlertConsole"
var/has_alert = 0
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm b/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm
index 3accb8e02d..aa361d4544 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm
@@ -14,7 +14,7 @@
var/assigned = FALSE
var/first_load = TRUE
-/datum/computer_file/program/contract_uplink/run_program(var/mob/living/user)
+/datum/computer_file/program/contract_uplink/run_program(mob/living/user)
. = ..(user)
/datum/computer_file/program/contract_uplink/ui_act(action, params)
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
index 2ba3d69fe6..4f1c488b9e 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
@@ -10,7 +10,7 @@
tgui_id = "NtosRevelation"
var/armed = 0
-/datum/computer_file/program/revelation/run_program(var/mob/living/user)
+/datum/computer_file/program/revelation/run_program(mob/living/user)
. = ..(user)
if(armed)
activate()
diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm
index 2503073f9a..87a3f1ec94 100644
--- a/code/modules/modular_computers/file_system/programs/arcade.dm
+++ b/code/modules/modular_computers/file_system/programs/arcade.dm
@@ -1,10 +1,9 @@
/datum/computer_file/program/arcade
- filename = "arcade"
- filedesc = "Nanotrasen Micro Arcade"
+ filename = "dsarcade"
+ filedesc = "Donksoft Micro Arcade"
program_icon_state = "arcade"
extended_desc = "This port of the classic game 'Outbomb Cuban Pete', redesigned to run on tablets, with thrilling graphics and chilling storytelling."
requires_ntnet = FALSE
- network_destination = "arcade network"
size = 6
tgui_id = "NtosArcade"
@@ -25,7 +24,7 @@
/datum/computer_file/program/arcade/proc/game_check(mob/user)
sleep(5)
- //user?.mind?.adjust_experience(/datum/skill/gaming, 1) No gaming(TM) Yet
+ // user?.mind?.adjust_experience(/datum/skill/gaming, 1)
if(boss_hp <= 0)
heads_up = "You have crushed [boss_name]! Rejoice!"
playsound(computer.loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10)
@@ -34,7 +33,7 @@
if(istype(computer))
computer.update_icon()
ticket_count += 1
- //user?.mind?.adjust_experience(/datum/skill/gaming, 50)
+ // user?.mind?.adjust_experience(/datum/skill/gaming, 50)
sleep(10)
else if(player_hp <= 0 || player_mp <= 0)
heads_up = "You have been defeated... how will the station survive?"
@@ -43,7 +42,7 @@
program_icon_state = "arcade_off"
if(istype(computer))
computer.update_icon()
- //user?.mind?.adjust_experience(/datum/skill/gaming, 10)
+ // user?.mind?.adjust_experience(/datum/skill/gaming, 10)
sleep(10)
/datum/computer_file/program/arcade/proc/enemy_check(mob/user)
@@ -98,8 +97,8 @@
if(computer)
printer = computer.all_components[MC_PRINT]
- //var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming)
- //var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER)
+ // var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming)
+ // var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER)
switch(action)
if("Attack")
var/attackamt = 0 //Spam prevention.
@@ -119,8 +118,8 @@
if(pause_state == FALSE)
healamt = rand(6,8)// + rand(0, gamerSkill)
var/maxPointCost = 3
- //if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN)
- // maxPointCost = 2
+ // if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN)
+ // maxPointCost = 2
healcost = rand(1, maxPointCost)
pause_state = TRUE
heads_up = "You heal for [healamt] damage."
diff --git a/code/modules/modular_computers/file_system/programs/atmosscan.dm b/code/modules/modular_computers/file_system/programs/atmosscan.dm
index 2df751bebd..c4b9951838 100644
--- a/code/modules/modular_computers/file_system/programs/atmosscan.dm
+++ b/code/modules/modular_computers/file_system/programs/atmosscan.dm
@@ -1,17 +1,25 @@
/datum/computer_file/program/atmosscan
filename = "atmosscan"
- filedesc = "Atmospheric Scanner"
+ filedesc = "AtmoZphere"
program_icon_state = "air"
extended_desc = "A small built-in sensor reads out the atmospheric conditions around the device."
- network_destination = "atmos scan"
size = 4
tgui_id = "NtosAtmos"
+/datum/computer_file/program/atmosscan/run_program(mob/living/user)
+ . = ..()
+ if (!.)
+ return
+ if(!computer?.get_modular_computer_part(MC_SENSORS)) //Giving a clue to users why the program is spitting out zeros.
+ to_chat(user, "\The [computer] flashes an error: \"hardware\\sensorpackage\\startup.bin -- file not found\".")
+
+
/datum/computer_file/program/atmosscan/ui_data(mob/user)
var/list/data = get_header_data()
var/list/airlist = list()
var/turf/T = get_turf(ui_host())
- if(T)
+ var/obj/item/computer_hardware/sensorpackage/sensors = computer?.get_modular_computer_part(MC_SENSORS)
+ if(T && sensors?.check_functionality())
var/datum/gas_mixture/environment = T.return_air()
var/list/env_gases = environment.get_gases()
var/pressure = environment.return_pressure()
@@ -24,6 +32,10 @@
if(gas_level > 0)
airlist += list(list("name" = "[GLOB.meta_gas_names[id]]", "percentage" = round(gas_level*100, 0.01)))
data["AirData"] = airlist
+ else
+ data["AirPressure"] = 0
+ data["AirTemp"] = 0
+ data["AirData"] = list(list())
return data
/datum/computer_file/program/atmosscan/ui_act(action, list/params)
diff --git a/code/modules/modular_computers/file_system/programs/borg_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_monitor.dm
index c2160a0e92..13caab27ef 100644
--- a/code/modules/modular_computers/file_system/programs/borg_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/borg_monitor.dm
@@ -1,12 +1,11 @@
/datum/computer_file/program/borg_monitor
- filename = "cyborgmonitor"
- filedesc = "Cyborg Remote Monitoring"
+ filename = "siliconnect"
+ filedesc = "SiliConnect"
ui_header = "borg_mon.gif"
program_icon_state = "generic"
extended_desc = "This program allows for remote monitoring of station cyborgs."
requires_ntnet = TRUE
transfer_access = ACCESS_ROBOTICS
- network_destination = "cyborg remote monitoring"
size = 5
tgui_id = "NtosCyborgRemoteMonitor"
@@ -32,7 +31,7 @@
var/list/cyborg_data = list(
name = R.name,
- locked_down = R.lockcharge,
+ locked_down = R.locked_down,
status = R.stat,
shell_discon = shell,
charge = R.cell ? round(R.cell.percent()) : null,
@@ -81,8 +80,8 @@
return ID.registered_name
/datum/computer_file/program/borg_monitor/syndicate
- filename = "scyborgmonitor"
- filedesc = "Mission-Specific Cyborg Remote Monitoring"
+ filename = "roboverlord"
+ filedesc = "Roboverlord"
ui_header = "borg_mon.gif"
program_icon_state = "generic"
extended_desc = "This program allows for remote monitoring of mission-assigned cyborgs."
@@ -90,7 +89,6 @@
available_on_ntnet = FALSE
available_on_syndinet = TRUE
transfer_access = null
- network_destination = "cyborg remote monitoring"
tgui_id = "NtosCyborgRemoteMonitorSyndicate"
/datum/computer_file/program/borg_monitor/syndicate/evaluate_borg(mob/living/silicon/robot/R)
diff --git a/code/modules/modular_computers/file_system/programs/bounty_board.dm b/code/modules/modular_computers/file_system/programs/bounty_board.dm
index 46fde84f65..2e7d3cc87f 100644
--- a/code/modules/modular_computers/file_system/programs/bounty_board.dm
+++ b/code/modules/modular_computers/file_system/programs/bounty_board.dm
@@ -4,7 +4,6 @@
program_icon_state = "bountyboard"
extended_desc = "A multi-platform network for placing requests across the station, with payment across the network being possible.."
requires_ntnet = TRUE
- network_destination = "bounty board interface"
size = 10
tgui_id = "NtosRequestKiosk"
///Reference to the currently logged in user.
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index 842d6e2588..6d45914add 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -7,8 +7,8 @@
#define CARDCON_DEPARTMENT_COMMAND "Command"
/datum/computer_file/program/card_mod
- filename = "cardmod"
- filedesc = "ID Card Modification"
+ filename = "plexagonidwriter"
+ filedesc = "Plexagon Access Management"
program_icon_state = "id"
extended_desc = "Program for programming employee ID cards to access parts of the station."
transfer_access = ACCESS_HEADS
@@ -98,17 +98,19 @@
return TRUE
var/obj/item/computer_hardware/card_slot/card_slot
+ var/obj/item/computer_hardware/card_slot/card_slot2
var/obj/item/computer_hardware/printer/printer
if(computer)
card_slot = computer.all_components[MC_CARD]
+ card_slot2 = computer.all_components[MC_CARD2]
printer = computer.all_components[MC_PRINT]
- if(!card_slot)
+ if(!card_slot || !card_slot2)
return
var/mob/user = usr
- var/obj/item/card/id/user_id_card = user.get_idcard(FALSE)
+ var/obj/item/card/id/user_id_card = card_slot.stored_card
- var/obj/item/card/id/id_card = card_slot.stored_card
+ var/obj/item/card/id/target_id_card = card_slot2.stored_card
switch(action)
if("PRG_authenticate")
@@ -129,14 +131,14 @@
return
var/contents = {"Access ReportPrepared By: [user_id_card && user_id_card.registered_name ? user_id_card.registered_name : "Unknown"]- For: [id_card.registered_name ? id_card.registered_name : "Unregistered"] + For: [target_id_card.registered_name ? target_id_card.registered_name : "Unregistered"] - Assignment: [id_card.assignment] + Assignment: [target_id_card.assignment] Access: "} var/known_access_rights = get_all_accesses() - for(var/A in id_card.access) + for(var/A in target_id_card.access) if(A in known_access_rights) contents += " [get_access_desc(A)]" @@ -148,43 +150,40 @@ computer.visible_message("\The [computer] prints out a paper.") return TRUE if("PRG_eject") - if(!computer || !card_slot) + if(!computer || !card_slot2) return - if(id_card) - GLOB.data_core.manifest_modify(id_card.registered_name, id_card.assignment) - card_slot.try_eject(TRUE, user) + if(target_id_card) + GLOB.data_core.manifest_modify(target_id_card.registered_name, target_id_card.assignment) + return card_slot2.try_eject(user) else var/obj/item/I = user.get_active_held_item() if(istype(I, /obj/item/card/id)) - if(!user.transferItemToLoc(I, computer)) - return - card_slot.stored_card = I - playsound(computer, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - return TRUE + return card_slot2.try_insert(I) + return FALSE if("PRG_terminate") if(!computer || !authenticated) return if(minor) - if(!(id_card.assignment in head_subordinates) && id_card.assignment != "Assistant") + if(!(target_id_card.assignment in head_subordinates) && target_id_card.assignment != "Assistant") return - id_card.access -= get_all_centcom_access() + get_all_accesses() - id_card.assignment = "Unassigned" - id_card.update_label() + target_id_card.access -= get_all_centcom_access() + get_all_accesses() + target_id_card.assignment = "Unassigned" + target_id_card.update_label() playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return TRUE if("PRG_edit") - if(!computer || !authenticated || !id_card) + if(!computer || !authenticated || !target_id_card) return var/new_name = params["name"] if(!new_name) return - id_card.registered_name = new_name - id_card.update_label() + target_id_card.registered_name = new_name + target_id_card.update_label() playsound(computer, "terminal_type", 50, FALSE) return TRUE if("PRG_assign") - if(!computer || !authenticated || !id_card) + if(!computer || !authenticated || !target_id_card) return var/target = params["assign_target"] if(!target) @@ -193,8 +192,8 @@ if(target == "Custom") var/custom_name = params["custom_name"] if(custom_name) - id_card.assignment = custom_name - id_card.update_label() + target_id_card.assignment = custom_name + target_id_card.update_label() else if(minor && !(target in head_subordinates)) return @@ -212,10 +211,10 @@ to_chat(user, "No class exists for this job: [target]") return new_access = job.get_access() - id_card.access -= get_all_centcom_access() + get_all_accesses() - id_card.access |= new_access - id_card.assignment = target - id_card.update_label() + target_id_card.access -= get_all_centcom_access() + get_all_accesses() + target_id_card.access |= new_access + target_id_card.assignment = target + target_id_card.update_label() playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_access") @@ -223,22 +222,22 @@ return var/access_type = text2num(params["access_target"]) if(access_type in (is_centcom ? get_all_centcom_access() : get_all_accesses())) - if(access_type in id_card.access) - id_card.access -= access_type + if(access_type in target_id_card.access) + target_id_card.access -= access_type else - id_card.access |= access_type + target_id_card.access |= access_type playsound(computer, "terminal_type", 50, FALSE) return TRUE if("PRG_grantall") if(!computer || !authenticated || minor) return - id_card.access |= (is_centcom ? get_all_centcom_access() : get_all_accesses()) + target_id_card.access |= (is_centcom ? get_all_centcom_access() : get_all_accesses()) playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_denyall") if(!computer || !authenticated || minor) return - id_card.access.Cut() + target_id_card.access.Cut() playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return TRUE if("PRG_grantregion") @@ -247,7 +246,7 @@ var/region = text2num(params["region"]) if(isnull(region)) return - id_card.access |= get_region_accesses(region) + target_id_card.access |= get_region_accesses(region) playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_denyregion") @@ -256,7 +255,7 @@ var/region = text2num(params["region"]) if(isnull(region)) return - id_card.access -= get_region_accesses(region) + target_id_card.access -= get_region_accesses(region) playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return TRUE @@ -321,17 +320,17 @@ /datum/computer_file/program/card_mod/ui_data(mob/user) var/list/data = get_header_data() - var/obj/item/computer_hardware/card_slot/card_slot + var/obj/item/computer_hardware/card_slot/card_slot2 var/obj/item/computer_hardware/printer/printer if(computer) - card_slot = computer.all_components[MC_CARD] + card_slot2 = computer.all_components[MC_CARD2] printer = computer.all_components[MC_PRINT] data["station_name"] = station_name() if(computer) - data["have_id_slot"] = !!card_slot + data["have_id_slot"] = !!(card_slot2) data["have_printer"] = !!printer else data["have_id_slot"] = FALSE @@ -340,7 +339,7 @@ data["authenticated"] = authenticated if(computer) - var/obj/item/card/id/id_card = card_slot.stored_card + var/obj/item/card/id/id_card = card_slot2.stored_card data["has_id"] = !!id_card data["id_name"] = id_card ? id_card.name : "-----" if(id_card) diff --git a/code/modules/modular_computers/file_system/programs/cargobounty.dm b/code/modules/modular_computers/file_system/programs/cargobounty.dm index d9bc65c98d..74ac44ade3 100644 --- a/code/modules/modular_computers/file_system/programs/cargobounty.dm +++ b/code/modules/modular_computers/file_system/programs/cargobounty.dm @@ -5,7 +5,6 @@ extended_desc = "A basic interface for supply personnel to check and claim bounties." requires_ntnet = TRUE transfer_access = ACCESS_CARGO - network_destination = "cargo claims interface" size = 10 tgui_id = "NtosBountyConsole" ///cooldown var for printing paper sheets. diff --git a/code/modules/modular_computers/file_system/programs/cargoship.dm b/code/modules/modular_computers/file_system/programs/cargoship.dm index 3ba08a3719..db8d6d9f82 100644 --- a/code/modules/modular_computers/file_system/programs/cargoship.dm +++ b/code/modules/modular_computers/file_system/programs/cargoship.dm @@ -1,9 +1,8 @@ /datum/computer_file/program/shipping filename = "shipping" - filedesc = "Nanotrasen Shipping Scanner" + filedesc = "GrandArk Exporter" program_icon_state = "shipping" extended_desc = "A combination printer/scanner app that enables modular computers to print barcodes for easy scanning and shipping." - network_destination = "ship scanner" size = 6 tgui_id = "NtosShipping" ///Account used for creating barcodes. diff --git a/code/modules/modular_computers/file_system/programs/crewmanifest.dm b/code/modules/modular_computers/file_system/programs/crewmanifest.dm index a1503ce3a8..4f2688d8f1 100644 --- a/code/modules/modular_computers/file_system/programs/crewmanifest.dm +++ b/code/modules/modular_computers/file_system/programs/crewmanifest.dm @@ -1,10 +1,10 @@ /datum/computer_file/program/crew_manifest - filename = "crewmani" - filedesc = "Crew Manifest" + filename = "plexagoncrew" + filedesc = "Plexagon Crew List" program_icon_state = "id" extended_desc = "Program for viewing and printing the current crew manifest" transfer_access = ACCESS_HEADS - requires_ntnet = FALSE + requires_ntnet = TRUE size = 4 tgui_id = "NtosCrewManifest" diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm index bccc6e4dbe..b88b793b66 100644 --- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm +++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm @@ -1,10 +1,10 @@ /datum/computer_file/program/job_management - filename = "job_manage" - filedesc = "Job Manager" + filename = "plexagoncore" + filedesc = "Plexagon HR Core" program_icon_state = "id" extended_desc = "Program for viewing and changing job slot avalibility." transfer_access = ACCESS_HEADS - requires_ntnet = 0 + requires_ntnet = TRUE size = 4 tgui_id = "NtosJobManager" diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index 6401d6207f..8fbcfd0b01 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -1,14 +1,14 @@ /datum/computer_file/program/ntnetdownload - filename = "ntndownloader" - filedesc = "Software Download Tool" + filename = "ntsoftwarehub" + filedesc = "NT Software Hub" program_icon_state = "generic" extended_desc = "This program allows downloads of software from official NT repositories" - unsendable = 1 - undeletable = 1 + unsendable = TRUE + undeletable = TRUE size = 4 - requires_ntnet = 1 + requires_ntnet = TRUE requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD - available_on_ntnet = 0 + available_on_ntnet = FALSE ui_header = "downloader_finished.gif" tgui_id = "NtosNetDownloader" @@ -125,6 +125,8 @@ if(!istype(my_computer)) return + var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD] + var/list/access = card_slot?.GetAccess() var/list/data = get_header_data() @@ -146,7 +148,7 @@ for(var/A in main_repo) var/datum/computer_file/program/P = A // Only those programs our user can run will show in the list - if(!P.can_run(user,transfer = 1) || hard_drive.find_file_by_name(P.filename)) + if(!P.can_run(user,transfer = 1, access = access) || hard_drive.find_file_by_name(P.filename)) continue all_entries.Add(list(list( "filename" = P.filename, diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm index 7d6d89f32c..bbbde14780 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm @@ -1,6 +1,6 @@ /datum/computer_file/program/ntnetmonitor - filename = "ntmonitor" - filedesc = "NTNet Diagnostics and Monitoring" + filename = "wirecarp" + filedesc = "WireCarp" //wireshark. program_icon_state = "comm_monitor" extended_desc = "This program monitors stationwide NTNet network, provides access to logging systems, and allows for configuration changes" size = 12 diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index df9b02d8ec..f03ff3f8fd 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -6,7 +6,6 @@ size = 8 requires_ntnet = 1 requires_ntnet_feature = NTNET_COMMUNICATION - network_destination = "NTNRC server" ui_header = "ntnrc_idle.gif" available_on_ntnet = 1 tgui_id = "NtosNetChat" diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm index bd11474858..e87a731a40 100644 --- a/code/modules/modular_computers/file_system/programs/powermonitor.dm +++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm @@ -1,15 +1,14 @@ //normal computer version is located in code\modules\power\monitor.dm, /obj/machinery/computer/monitor /datum/computer_file/program/power_monitor - filename = "powermonitor" - filedesc = "Power Monitor" + filename = "ampcheck" + filedesc = "AmpCheck" program_icon_state = "power_monitor" extended_desc = "This program connects to sensors around the station to provide information about electrical systems" ui_header = "power_norm.gif" transfer_access = ACCESS_ENGINE usage_flags = PROGRAM_CONSOLE requires_ntnet = 0 - network_destination = "power monitoring system" size = 9 tgui_id = "NtosPowerMonitor" diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index 9b0e09ef99..216365d6ea 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -7,7 +7,6 @@ transfer_access = null available_on_ntnet = FALSE usage_flags = PROGRAM_LAPTOP | PROGRAM_TABLET - network_destination = "tracking program" size = 5 tgui_id = "NtosRadar" ///List of trackable entities. Updated by the scan() proc. @@ -207,7 +206,7 @@ ///A program that tracks crew members via suit sensors /datum/computer_file/program/radar/lifeline - filename = "Lifeline" + filename = "lifeline" filedesc = "Lifeline" extended_desc = "This program allows for tracking of crew members via their suit sensors." requires_ntnet = TRUE @@ -252,9 +251,9 @@ //Nuke Disk Finder App// //////////////////////// -///A program that tracks crew members via suit sensors +///A program that tracks nukes and nuclear accessories /datum/computer_file/program/radar/fission360 - filename = "Fission360" + filename = "fission360" filedesc = "Fission360" program_icon_state = "radarsyndicate" extended_desc = "This program allows for tracking of nuclear authorization disks and warheads." @@ -276,8 +275,6 @@ objects = list() for(var/i in GLOB.nuke_list) var/obj/machinery/nuclearbomb/nuke = i - if(!trackable(nuke)) - continue var/list/nukeinfo = list( ref = REF(nuke), @@ -285,9 +282,8 @@ ) objects += list(nukeinfo) var/obj/item/disk/nuclear/disk = locate() in GLOB.poi_list - if(trackable(disk)) - var/list/nukeinfo = list( - ref = REF(disk), - name = disk.name, - ) - objects += list(nukeinfo) + var/list/nukeinfo = list( + ref = REF(disk), + name = "Nuke Auth. Disk", + ) + objects += list(nukeinfo) diff --git a/code/modules/modular_computers/file_system/programs/robocontrol.dm b/code/modules/modular_computers/file_system/programs/robocontrol.dm index 8644ce09b4..c0b82b9c95 100644 --- a/code/modules/modular_computers/file_system/programs/robocontrol.dm +++ b/code/modules/modular_computers/file_system/programs/robocontrol.dm @@ -1,12 +1,11 @@ /datum/computer_file/program/robocontrol - filename = "robocontrol" - filedesc = "Bot Remote Controller" + filename = "botkeeper" + filedesc = "Botkeeper" program_icon_state = "robot" extended_desc = "A remote controller used for giving basic commands to non-sentient robots." transfer_access = ACCESS_ROBOTICS requires_ntnet = TRUE - network_destination = "robotics control network" size = 12 tgui_id = "NtosRoboControl" ///Number of simple robots on-station. @@ -78,7 +77,7 @@ return if(id_card) GLOB.data_core.manifest_modify(id_card.registered_name, id_card.assignment) - card_slot.try_eject(TRUE, current_user) + card_slot.try_eject(current_user) else playsound(get_turf(ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE) return diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm index 32ad102871..e4cf590930 100644 --- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm @@ -1,12 +1,11 @@ /datum/computer_file/program/supermatter_monitor - filename = "smmonitor" - filedesc = "Supermatter Monitoring" + filename = "ntcims" + filedesc = "NT CIMS" ui_header = "smmon_0.gif" program_icon_state = "smmon_0" - extended_desc = "This program connects to specially calibrated supermatter sensors to provide information on the status of supermatter-based engines." + extended_desc = "Crystal Integrity Monitoring System, connects to specially calibrated supermatter sensors to provide information on the status of supermatter-based engines." requires_ntnet = TRUE transfer_access = ACCESS_CONSTRUCTION - network_destination = "supermatter monitoring system" size = 5 tgui_id = "NtosSupermatterMonitor" var/last_status = SUPERMATTER_INACTIVE diff --git a/code/modules/modular_computers/hardware/_hardware.dm b/code/modules/modular_computers/hardware/_hardware.dm index b33442f99b..81555340b2 100644 --- a/code/modules/modular_computers/hardware/_hardware.dm +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -10,9 +10,11 @@ // Computer that holds this hardware, if any. var/power_usage = 0 // If the hardware uses extra power, change this. - var/enabled = 1 // If the hardware is turned off set this to 0. - var/critical = 0 // Prevent disabling for important component, like the CPU. - var/can_install = 1 // Prevents direct installation of removable media. + var/enabled = TRUE // If the hardware is turned off set this to 0. + var/critical = FALSE // Prevent disabling for important component, like the CPU. + var/can_install = TRUE // Prevents direct installation of removable media. + var/expansion_hw = FALSE // Hardware that fits into expansion bays. + var/removable = TRUE // Whether the hardware is removable or not. var/damage = 0 // Current damage level var/max_damage = 100 // Maximal damage level. var/damage_malfunction = 20 // "Malfunction" threshold. When damage exceeds this value the hardware piece will semi-randomly fail and do !!FUN!! things @@ -20,7 +22,7 @@ var/malfunction_probability = 10// Chance of malfunction when the component is damaged var/device_type -/obj/item/computer_hardware/New(var/obj/L) +/obj/item/computer_hardware/New(obj/L) ..() pixel_x = rand(-8, 8) pixel_y = rand(-8, 8) @@ -56,7 +58,7 @@ return TRUE // Called on multitool click, prints diagnostic information to the user. -/obj/item/computer_hardware/proc/diagnostics(var/mob/user) +/obj/item/computer_hardware/proc/diagnostics(mob/user) to_chat(user, "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]") // Handles damage checks @@ -73,7 +75,7 @@ return TRUE // Good to go. -/obj/item/computer_hardware/examine(var/mob/user) +/obj/item/computer_hardware/examine(mob/user) . = ..() if(damage > damage_failure) . += "It seems to be severely damaged!" diff --git a/code/modules/modular_computers/hardware/ai_slot.dm b/code/modules/modular_computers/hardware/ai_slot.dm index 0ad157afcb..c874d786a0 100644 --- a/code/modules/modular_computers/hardware/ai_slot.dm +++ b/code/modules/modular_computers/hardware/ai_slot.dm @@ -5,6 +5,7 @@ icon_state = "card_mini" w_class = WEIGHT_CLASS_SMALL device_type = MC_AI + expansion_hw = TRUE var/obj/item/aicard/stored_card = null var/locked = FALSE @@ -19,12 +20,6 @@ if(stored_card) . += "There appears to be an intelliCard loaded. There appears to be a pinhole protecting a manual eject button. A screwdriver could probably press it." -/obj/item/computer_hardware/ai_slot/on_install(obj/item/modular_computer/M, mob/living/user = null) - M.add_verb(device_type) - -/obj/item/computer_hardware/ai_slot/on_remove(obj/item/modular_computer/M, mob/living/user = null) - M.remove_verb(device_type) - /obj/item/computer_hardware/ai_slot/try_insert(obj/item/I, mob/living/user = null) if(!holder) return FALSE @@ -44,7 +39,7 @@ return TRUE -/obj/item/computer_hardware/ai_slot/try_eject(slot=0,mob/living/user = null,forced = 0) +/obj/item/computer_hardware/ai_slot/try_eject(mob/living/user = null,forced = FALSE) if(!stored_card) to_chat(user, "There is no card in \the [src].") return FALSE diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index 6e3193abfd..0668248315 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -21,7 +21,7 @@ /obj/item/computer_hardware/battery/handle_atom_del(atom/A) if(A == battery) - try_eject(0, null, TRUE) + try_eject(forced = TRUE) . = ..() /obj/item/computer_hardware/battery/try_insert(obj/item/I, mob/living/user = null) @@ -48,7 +48,7 @@ return TRUE -/obj/item/computer_hardware/battery/try_eject(slot=0, mob/living/user = null, forced = 0) +/obj/item/computer_hardware/battery/try_eject(mob/living/user = null, forced = FALSE) if(!battery) to_chat(user, "There is no power cell connected to \the [src].") return FALSE diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm index 18b423a42e..c243bf7db1 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -7,13 +7,10 @@ device_type = MC_CARD var/obj/item/card/id/stored_card = null - var/obj/item/card/id/stored_card2 = null /obj/item/computer_hardware/card_slot/handle_atom_del(atom/A) if(A == stored_card) - try_eject(1, null, TRUE) - if(A == stored_card2) - try_eject(2, null, TRUE) + try_eject(null, TRUE) . = ..() /obj/item/computer_hardware/card_slot/Destroy() @@ -21,37 +18,25 @@ return ..() /obj/item/computer_hardware/card_slot/GetAccess() - if(stored_card && stored_card2) // Best of both worlds - return (stored_card.GetAccess() | stored_card2.GetAccess()) - else if(stored_card) - return stored_card.GetAccess() - else if(stored_card2) - return stored_card2.GetAccess() - return ..() + var/list/total_access + if(stored_card) + total_access = stored_card.GetAccess() + var/obj/item/computer_hardware/card_slot/card_slot2 = holder?.all_components[MC_CARD2] //Best of both worlds + if(card_slot2?.stored_card) + total_access |= card_slot2.stored_card.GetAccess() + return total_access /obj/item/computer_hardware/card_slot/GetID() if(stored_card) return stored_card - else if(stored_card2) - return stored_card2 return ..() /obj/item/computer_hardware/card_slot/RemoveID() if(stored_card) . = stored_card - if(!try_eject(1)) + if(!try_eject()) return null return - if(stored_card2) - . = stored_card2 - if(!try_eject(2)) - return null - -/obj/item/computer_hardware/card_slot/on_install(obj/item/modular_computer/M, mob/living/user = null) - M.add_verb(device_type) - -/obj/item/computer_hardware/card_slot/on_remove(obj/item/modular_computer/M, mob/living/user = null) - M.remove_verb(device_type) /obj/item/computer_hardware/card_slot/try_insert(obj/item/I, mob/living/user = null) if(!holder) @@ -60,8 +45,7 @@ if(!istype(I, /obj/item/card/id)) return FALSE - if(stored_card && stored_card2) - to_chat(user, "You try to insert \the [I] into \the [src], but its slots are occupied.") + if(stored_card) return FALSE if(user) if(!user.transferItemToLoc(I, src)) @@ -69,11 +53,8 @@ else I.forceMove(src) - if(!stored_card) - stored_card = I - else - stored_card2 = I - to_chat(user, "You insert \the [I] into \the [src].") + stored_card = I + to_chat(user, "You insert \the [I] into \the [expansion_hw ? "secondary":"primary"] [src].") playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) if(ishuman(user)) var/mob/living/carbon/human/H = user @@ -82,53 +63,58 @@ return TRUE -/obj/item/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null, forced = 0) - if(!stored_card && !stored_card2) +/obj/item/computer_hardware/card_slot/try_eject(mob/living/user = null, forced = FALSE) + if(!stored_card) to_chat(user, "There are no cards in \the [src].") return FALSE - var/ejected = 0 - if(stored_card && (!slot || slot == 1)) - if(user) - user.put_in_hands(stored_card) - else - stored_card.forceMove(drop_location()) - stored_card = null - ejected++ + if(user) + user.put_in_hands(stored_card) + else + stored_card.forceMove(drop_location()) + stored_card = null - if(stored_card2 && (!slot || slot == 2)) - if(user) - user.put_in_hands(stored_card2) - else - stored_card2.forceMove(drop_location()) - stored_card2 = null - ejected++ + if(holder) + if(holder.active_program) + holder.active_program.event_idremoved(0) - if(ejected) - if(holder) - if(holder.active_program) - holder.active_program.event_idremoved(0, slot) - - for(var/I in holder.idle_threads) - var/datum/computer_file/program/P = I - P.event_idremoved(1, slot) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.sec_hud_set_ID() - to_chat(user, "You remove the card[ejected>1 ? "s" : ""] from \the [src].") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - return TRUE - return FALSE + for(var/p in holder.idle_threads) + var/datum/computer_file/program/computer_program = p + computer_program.event_idremoved(1) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + human_user.sec_hud_set_ID() + to_chat(user, "You remove the card from \the [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + return TRUE /obj/item/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user) if(..()) return if(I.tool_behaviour == TOOL_SCREWDRIVER) - to_chat(user, "You press down on the manual eject button with \the [I].") - try_eject(0,user) - return + if(stored_card) + to_chat(user, "You press down on the manual eject button with \the [I].") + try_eject(user) + return + swap_slot() + to_chat(user, "You adjust the connecter to fit into [expansion_hw ? "an expansion bay" : "the primary ID bay"].") + +/** + *Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay. +*/ +/obj/item/computer_hardware/card_slot/proc/swap_slot() + expansion_hw = !expansion_hw + if(expansion_hw) + device_type = MC_CARD2 + else + device_type = MC_CARD /obj/item/computer_hardware/card_slot/examine(mob/user) . = ..() - if(stored_card || stored_card2) + . += "The connector is set to fit into [expansion_hw ? "an expansion bay" : "a computer's primary ID bay"], but can be adjusted with a screwdriver." + if(stored_card) . += "There appears to be something loaded in the card slots." + +/obj/item/computer_hardware/card_slot/secondary + device_type = MC_CARD2 + expansion_hw = TRUE diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index b8b9624388..e5c133de20 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -22,14 +22,14 @@ . = ..() . += "It has [max_capacity] GQ of storage capacity." -/obj/item/computer_hardware/hard_drive/diagnostics(var/mob/user) +/obj/item/computer_hardware/hard_drive/diagnostics(mob/user) ..() // 999 is a byond limit that is in place. It's unlikely someone will reach that many files anyway, since you would sooner run out of space. to_chat(user, "NT-NFS File Table Status: [stored_files.len]/999") to_chat(user, "Storage capacity: [used_capacity]/[max_capacity]GQ") // Use this proc to add file to the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks. -/obj/item/computer_hardware/hard_drive/proc/store_file(var/datum/computer_file/F) +/obj/item/computer_hardware/hard_drive/proc/store_file(datum/computer_file/F) if(!F || !istype(F)) return 0 @@ -52,7 +52,7 @@ return 1 // Use this proc to remove file from the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks. -/obj/item/computer_hardware/hard_drive/proc/remove_file(var/datum/computer_file/F) +/obj/item/computer_hardware/hard_drive/proc/remove_file(datum/computer_file/F) if(!F || !istype(F)) return 0 @@ -78,7 +78,7 @@ used_capacity = total_size // Checks whether file can be stored on the hard drive. We can only store unique files, so this checks whether we wouldn't get a duplicity by adding a file. -/obj/item/computer_hardware/hard_drive/proc/can_store_file(var/datum/computer_file/F) +/obj/item/computer_hardware/hard_drive/proc/can_store_file(datum/computer_file/F) if(!F || !istype(F)) return 0 @@ -101,7 +101,7 @@ // Tries to find the file by filename. Returns null on failure -/obj/item/computer_hardware/hard_drive/proc/find_file_by_name(var/filename) +/obj/item/computer_hardware/hard_drive/proc/find_file_by_name(filename) if(!check_functionality()) return null diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index fe1b1879cb..04bf494fe4 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -11,7 +11,7 @@ device_type = MC_NET var/static/ntnet_card_uid = 1 -/obj/item/computer_hardware/network_card/diagnostics(var/mob/user) +/obj/item/computer_hardware/network_card/diagnostics(mob/user) ..() to_chat(user, "NIX Unique ID: [identification_id]") to_chat(user, "NIX User Tag: [identification_string]") @@ -22,7 +22,7 @@ if(ethernet) to_chat(user, "OpenEth (Physical Connection) - Physical network connection port") -/obj/item/computer_hardware/network_card/New(var/l) +/obj/item/computer_hardware/network_card/New(l) ..() identification_id = ntnet_card_uid++ @@ -31,7 +31,7 @@ return "[identification_string] (NID [identification_id])" // 0 - No signal, 1 - Low signal, 2 - High signal. 3 - Wired Connection -/obj/item/computer_hardware/network_card/proc/get_signal(var/specific_action = 0) +/obj/item/computer_hardware/network_card/proc/get_signal(specific_action = 0) if(!holder) // Hardware is not installed in anything. No signal. How did this even get called? return 0 diff --git a/code/modules/modular_computers/hardware/portable_disk.dm b/code/modules/modular_computers/hardware/portable_disk.dm index b5a957be04..89b0382e86 100644 --- a/code/modules/modular_computers/hardware/portable_disk.dm +++ b/code/modules/modular_computers/hardware/portable_disk.dm @@ -8,12 +8,8 @@ max_capacity = 16 device_type = MC_SDD -/obj/item/computer_hardware/hard_drive/portable/on_install(obj/item/modular_computer/M, mob/living/user = null) - M.add_verb(device_type) - -/obj/item/computer_hardware/hard_drive/portable/on_remove(obj/item/modular_computer/M, mob/living/user = null) - ..() - M.remove_verb(device_type) +/obj/item/computer_hardware/hard_drive/portable/on_remove(obj/item/modular_computer/MC, mob/user) + return //this is a floppy disk, let's not shut the computer down when it gets pulled out. /obj/item/computer_hardware/hard_drive/portable/install_default_programs() return // Empty by default diff --git a/code/modules/modular_computers/hardware/printer.dm b/code/modules/modular_computers/hardware/printer.dm index ebe40c1922..3bd5946435 100644 --- a/code/modules/modular_computers/hardware/printer.dm +++ b/code/modules/modular_computers/hardware/printer.dm @@ -5,6 +5,7 @@ icon_state = "printer" w_class = WEIGHT_CLASS_NORMAL device_type = MC_PRINT + expansion_hw = TRUE var/stored_paper = 20 var/max_paper = 30 diff --git a/code/modules/modular_computers/hardware/sensor_package.dm b/code/modules/modular_computers/hardware/sensor_package.dm new file mode 100644 index 0000000000..c0363bc809 --- /dev/null +++ b/code/modules/modular_computers/hardware/sensor_package.dm @@ -0,0 +1,8 @@ +//This item doesn't do much on its own, but is required by apps such as AtmoZphere. +/obj/item/computer_hardware/sensorpackage + name = "sensor package" + desc = "An integrated sensor package allowing a computer to take readings from the environment. Required by certain programs." + icon_state = "servo" + w_class = WEIGHT_CLASS_TINY + device_type = MC_SENSORS + expansion_hw = TRUE diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index a8d30bad21..83bb057d66 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -52,6 +52,7 @@ var/obj/item/computer_hardware/battery/battery_module = null if(fabricate) fabricated_laptop = new /obj/item/modular_computer/laptop/buildable(src) + fabricated_laptop.install_component(new /obj/item/computer_hardware/card_slot) fabricated_laptop.install_component(new /obj/item/computer_hardware/battery) battery_module = fabricated_laptop.all_components[MC_CELL] total_price = 99 @@ -107,7 +108,7 @@ if(dev_card) total_price += 199 if(fabricate) - fabricated_laptop.install_component(new /obj/item/computer_hardware/card_slot) + fabricated_laptop.install_component(new /obj/item/computer_hardware/card_slot/secondary) return total_price else if(devtype == 2) // Tablet, more expensive, not everyone could probably afford this. @@ -116,6 +117,7 @@ fabricated_tablet = new(src) fabricated_tablet.install_component(new /obj/item/computer_hardware/battery) fabricated_tablet.install_component(new /obj/item/computer_hardware/processor_unit/small) + fabricated_tablet.install_component(new/obj/item/computer_hardware/card_slot) battery_module = fabricated_tablet.all_components[MC_CELL] total_price = 199 switch(dev_battery) @@ -154,11 +156,11 @@ if(dev_printer) total_price += 99 if(fabricate) - fabricated_tablet.install_component(new/obj/item/computer_hardware/printer) + fabricated_tablet.install_component(new/obj/item/computer_hardware/printer/mini) if(dev_card) total_price += 199 if(fabricate) - fabricated_tablet.install_component(new/obj/item/computer_hardware/card_slot) + fabricated_tablet.install_component(new/obj/item/computer_hardware/card_slot/secondary) return total_price return FALSE @@ -257,7 +259,7 @@ say("Insufficient credits on card to purchase!") return credits += target_credits - say("[target_credits] cr has been deposited from your account.") + say("[target_credits] cr have been withdrawn from your account.") return return ..() diff --git a/code/modules/newscaster/newscaster_machine.dm b/code/modules/newscaster/newscaster_machine.dm index 470b34e82c..7e515bf0f5 100644 --- a/code/modules/newscaster/newscaster_machine.dm +++ b/code/modules/newscaster/newscaster_machine.dm @@ -340,7 +340,6 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="Return" var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[unit_no]", 400, 600) popup.set_content(dat) - popup.set_title_image(human_or_robot_user.browse_rsc_icon(icon, icon_state)) popup.open() /obj/machinery/newscaster/Topic(href, href_list) diff --git a/code/modules/paperwork/carbonpaper.dm b/code/modules/paperwork/carbonpaper.dm new file mode 100644 index 0000000000..dc8f172069 --- /dev/null +++ b/code/modules/paperwork/carbonpaper.dm @@ -0,0 +1,45 @@ +/obj/item/paper/carbon + name = "sheet of carbon" + icon_state = "paper_stack" + item_state = "paper" + // inhand_icon_state = "paper" + show_written_words = FALSE + var/copied = FALSE + var/iscopy = FALSE + +/obj/item/paper/carbon/update_icon_state() + if(iscopy) + icon_state = "cpaper" + else if(copied) + icon_state = "paper" + else + icon_state = "paper_stack" + if(info) + icon_state = "[icon_state]_words" + +/obj/item/paper/carbon/proc/removecopy(mob/living/user) + if(!copied) + var/obj/item/paper/carbon/C = src + var/copycontents = C.info + var/obj/item/paper/carbon/Copy = new /obj/item/paper/carbon(user.loc) + + if(info) + copycontents = replacetext(copycontents, "" + Copy.name = "Copy - [C.name]" + to_chat(user, "You tear off the carbon-copy!") + C.copied = TRUE + Copy.iscopy = TRUE + Copy.update_icon_state() + C.update_icon_state() + user.put_in_hands(Copy) + else + to_chat(user, "There are no more carbon copies attached to this paper!") + +/obj/item/paper/carbon/on_attack_hand(mob/living/user) + if(loc == user && user.is_holding(src)) + removecopy(user) + return + return ..() diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 1a93661c76..5b576a2438 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -3,6 +3,8 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "clipboard" item_state = "clipboard" + // inhand_icon_state = "clipboard" + // worn_icon_state = "clipboard" throwforce = 0 w_class = WEIGHT_CLASS_SMALL throw_speed = 3 @@ -34,7 +36,6 @@ . += "clipboard_pen" . += "clipboard_over" - /obj/item/clipboard/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/paper)) if(!user.transferItemToLoc(W, src)) @@ -92,14 +93,14 @@ to_chat(usr, "You slot [W] into [src].") if(href_list["write"]) - var/obj/item/P = locate(href_list["write"]) - if(istype(P) && P.loc == src) + var/obj/item/P = locate(href_list["write"]) in src + if(istype(P)) if(usr.get_active_held_item()) P.attackby(usr.get_active_held_item(), usr) if(href_list["remove"]) - var/obj/item/P = locate(href_list["remove"]) - if(istype(P) && P.loc == src) + var/obj/item/P = locate(href_list["remove"]) in src + if(istype(P)) P.forceMove(usr.loc) usr.put_in_hands(P) if(P == toppaper) @@ -111,13 +112,13 @@ toppaper = null if(href_list["read"]) - var/obj/item/paper/P = locate(href_list["read"]) - if(istype(P) && P.loc == src) + var/obj/item/paper/P = locate(href_list["read"]) in src + if(istype(P)) usr.examinate(P) if(href_list["top"]) - var/obj/item/P = locate(href_list["top"]) - if(istype(P) && P.loc == src) + var/obj/item/P = locate(href_list["top"]) in src + if(istype(P)) toppaper = P to_chat(usr, "You move [P.name] to the top.") diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index b8f2c95762..390cd0cf83 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -35,7 +35,7 @@ . = ..() if(mapload) for(var/obj/item/I in loc) - if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo)) + if(I.w_class < WEIGHT_CLASS_NORMAL) //there probably shouldn't be anything placed ontop of filing cabinets in a map that isn't meant to go in them I.forceMove(src) /obj/structure/filingcabinet/deconstruct(disassembled = TRUE) @@ -46,7 +46,12 @@ qdel(src) /obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/paper) || istype(P, /obj/item/folder) || istype(P, /obj/item/photo) || istype(P, /obj/item/documents)) + if(P.tool_behaviour == TOOL_WRENCH && user.a_intent != INTENT_HELP) + to_chat(user, "You begin to [anchored ? "unwrench" : "wrench"] [src].") + if(P.use_tool(src, user, 20, volume=50)) + to_chat(user, "You successfully [anchored ? "unwrench" : "wrench"] [src].") + anchored = !anchored + else if(P.w_class < WEIGHT_CLASS_NORMAL) if(!user.transferItemToLoc(P, src)) return to_chat(user, "You put [P] in [src].") @@ -54,11 +59,6 @@ sleep(5) icon_state = initial(icon_state) updateUsrDialog() - else if(istype(P, /obj/item/wrench)) - to_chat(user, "You begin to [anchored ? "unwrench" : "wrench"] [src].") - if(P.use_tool(src, user, 20, volume=50)) - to_chat(user, "You successfully [anchored ? "unwrench" : "wrench"] [src].") - anchored = !anchored else if(user.a_intent != INTENT_HARM) to_chat(user, "You can't put [P] in [src]!") else @@ -67,9 +67,6 @@ /obj/structure/filingcabinet/ui_interact(mob/user) . = ..() - if(isobserver(user)) - return - if(contents.len <= 0) to_chat(user, "[src] is empty.") return @@ -100,16 +97,17 @@ to_chat(user, "You find nothing in [src].") /obj/structure/filingcabinet/Topic(href, href_list) + if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr))) + return if(href_list["retrieve"]) usr << browse("", "window=filingcabinet") // Close the menu - var/obj/item/P = locate(href_list["retrieve"])//contents[retrieveindex] - if(istype(P) && P.loc == src && in_range(src, usr)) + var/obj/item/P = locate(href_list["retrieve"]) in src //contents[retrieveindex] + if(istype(P) && in_range(src, usr)) usr.put_in_hands(P) updateUsrDialog() icon_state = "[initial(icon_state)]-open" - sleep(5) - icon_state = initial(icon_state) + addtimer(VARSET_CALLBACK(src, icon_state, initial(icon_state)), 5) /* @@ -170,6 +168,7 @@ virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. +//ATTACK HAND IGNORING PARENT RETURN VALUE /obj/structure/filingcabinet/medical/on_attack_hand() populate() . = ..() diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index c32afab342..305099d115 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -33,7 +33,10 @@ if(contents.len) . += "folder_paper" + /obj/item/folder/attackby(obj/item/W, mob/user, params) + if(burn_paper_product_attackby_check(W, user)) + return if(istype(W, /obj/item/paper) || istype(W, /obj/item/photo) || istype(W, /obj/item/documents)) if(!user.transferItemToLoc(W, src)) return @@ -43,11 +46,14 @@ if(!user.is_literate()) to_chat(user, "You scribble illegibly on the cover of [src]!") return + var/inputvalue = stripped_input(user, "What would you like to label the folder?", "Folder Labelling", "", MAX_NAME_LEN) + if(!inputvalue) return + if(user.canUseTopic(src, BE_CLOSE)) - name = "folder - '[inputvalue]'" + name = "folder[(inputvalue ? " - '[inputvalue]'" : null)]" /obj/item/folder/Destroy() @@ -76,14 +82,14 @@ if(usr.contents.Find(src)) if(href_list["remove"]) - var/obj/item/I = locate(href_list["remove"]) - if(istype(I) && I.loc == src) + var/obj/item/I = locate(href_list["remove"]) in src + if(istype(I)) I.forceMove(usr.loc) usr.put_in_hands(I) if(href_list["read"]) - var/obj/item/I = locate(href_list["read"]) - if(istype(I) && I.loc == src) + var/obj/item/I = locate(href_list["read"]) in src + if(istype(I)) usr.examinate(I) //Update everything diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index d054e5ff12..da9fdc4ca4 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -1,9 +1,10 @@ /obj/item/hand_labeler name = "hand labeler" - desc = "A combined label printer and applicator in a portable device, designed to be easy to operate and use." + desc = "A combined label printer, applicator, and remover, all in a single portable device. Designed to be easy to operate and use." icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler0" item_state = "flight" + // inhand_icon_state = "flight" var/label = null var/labels_left = 30 var/mode = 0 @@ -55,9 +56,10 @@ to_chat(user, "You can't label creatures!") // use a collar return - user.visible_message("[user] labels [A] as [label].", \ - "You label [A] as [label].") - A.name = "[A.name] ([label])" + user.visible_message("[user] labels [A] with \"[label]\".", \ + "You label [A] with \"[label]\".") + A.AddComponent(/datum/component/label, label) + // playsound(A, 'sound/items/handling/component_pickup.ogg', 20, TRUE) labels_left-- @@ -90,7 +92,9 @@ name = "cyborg-hand labeler" /obj/item/hand_labeler/borg/afterattack(atom/A, mob/user, proximity) - . = ..(A, user, proximity) + . = ..() + if(!proximity) + return if(!iscyborg(user)) return @@ -114,6 +118,7 @@ desc = "A roll of paper. Use it on a hand labeler to refill it." icon_state = "labeler_refill" item_state = "electropack" + // inhand_icon_state = "electropack" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 5d842ef11a..20ec678e45 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -11,41 +11,6 @@ #define MODE_WRITING 1 #define MODE_STAMPING 2 -/** - * This is a custom ui state. All it really does is keep track of pen - * being used and if they are editing it or not. This way we can keep - * the data with the ui rather than on the paper - */ -/datum/ui_state/default/paper_state - /// What edit mode we are in and who is - /// writing on it right now - var/edit_mode = MODE_READING - /// Setup for writing to a sheet - var/pen_color = "black" - var/pen_font = "" - var/is_crayon = FALSE - /// Setup for stamping a sheet - // Why not the stamp obj? I have no idea - // what happens to states out of scope so - // don't want to put instances in this - var/stamp_icon_state = "" - var/stamp_name = "" - var/stamp_class = "" - -/datum/ui_state/default/paper_state/proc/copy_from(datum/ui_state/default/paper_state/from) - switch(from.edit_mode) - if(MODE_READING) - edit_mode = MODE_READING - if(MODE_WRITING) - edit_mode = MODE_WRITING - pen_color = from.pen_color - pen_font = from.pen_font - is_crayon = from.is_crayon - if(MODE_STAMPING) - edit_mode = MODE_STAMPING - stamp_icon_state = from.stamp_icon_state - stamp_class = from.stamp_class - stamp_name = from.stamp_name /** * Paper is now using markdown (like in github pull notes) for ALL rendering @@ -58,6 +23,9 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "paper" item_state = "paper" + // inhand_icon_state = "paper" + // worn_icon_state = "paper" + // custom_fire_overlay = "paper_onfire_overlay" throwforce = 0 w_class = WEIGHT_CLASS_TINY throw_range = 1 @@ -80,34 +48,19 @@ var/list/stamps /// Positioning for the stamp in tgui var/list/stamped /// Overlay info - /// This REALLY should be a componenet. Basicly used during, april fools - /// to honk at you - var/rigged = 0 - var/spam_flag = 0 - var/contact_poison // Reagent ID to transfer on contact var/contact_poison_volume = 0 - // Ok, so WHY are we caching the ui's? - // Since we are not using autoupdate we - // need some way to update the ui's of - // other people looking at it and if - // its been updated. Yes yes, lame - // but canot be helped. However by - // doing it this way, we can see - // live updates and have multipule - // people look at it - var/list/viewing_ui = list() - /// When the sheet can be "filled out" /// This is an associated list var/list/form_fields = list() var/field_counter = 1 /obj/item/paper/Destroy() - close_all_ui() stamps = null stamped = null + form_fields = null + stamped = null . = ..() /** @@ -162,7 +115,7 @@ set category = "Object" set src in usr - if(usr.incapacitated() || !usr.is_literate()) + if(!usr.can_read(src) || usr.incapacitated(TRUE, TRUE) || (isobserver(usr) && !IsAdminGhost(usr))) return if(ishuman(usr)) var/mob/living/carbon/human/H = usr @@ -180,18 +133,6 @@ user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...") return (BRUTELOSS) -/// ONLY USED FOR APRIL FOOLS -/obj/item/paper/proc/reset_spamflag() - spam_flag = FALSE - -/obj/item/paper/attack_self(mob/user) - if(rigged && (SSevents.holidays && SSevents.holidays[APRIL_FOOLS])) - if(!spam_flag) - spam_flag = TRUE - playsound(loc, 'sound/items/bikehorn.ogg', 50, TRUE) - addtimer(CALLBACK(src, .proc/reset_spamflag), 20) - . = ..() - /obj/item/paper/proc/clearpaper() info = "" stamps = null @@ -199,28 +140,39 @@ cut_overlays() update_icon_state() -/obj/item/paper/examine_more(mob/user) - ui_interact(user) - return list("You try to read [src]...") +/obj/item/paper/examine(mob/user) + . = ..() + if(!in_range(user, src) && !isobserver(user)) + . += "You're too far away to read it!" + return + if(user.can_read(src)) + ui_interact(user) + return + . += "You cannot read it!" + +/obj/item/paper/ui_status(mob/user,/datum/ui_state/state) + // Are we on fire? Hard ot read if so + if(resistance_flags & ON_FIRE) + return UI_CLOSE + if(!in_range(user,src)) + return UI_CLOSE + if(user.incapacitated(TRUE, TRUE) || (isobserver(user) && !IsAdminGhost(user))) + return UI_UPDATE + // Even harder to read if your blind...braile? humm + // .. or if you cannot read + if(!user.can_read(src)) + return UI_CLOSE + if(in_contents_of(/obj/machinery/door/airlock)) + return UI_INTERACTIVE + return ..() + + /obj/item/paper/can_interact(mob/user) - if(!..()) - return FALSE - // Are we on fire? Hard ot read if so - if(resistance_flags & ON_FIRE) - return FALSE - // Even harder to read if your blind...braile? humm - if(user.is_blind()) - return FALSE - // checks if the user can read. - return user.can_read(src) + if(in_contents_of(/obj/machinery/door/airlock)) + return TRUE + return ..() -/** - * This creates the ui, since we are using a custom state but not much else - * just makes it easyer to make it. - */ -/obj/item/paper/proc/create_ui(mob/user, datum/ui_state/default/paper_state/state) - ui_interact(user, state = state) /obj/item/proc/burn_paper_product_attackby_check(obj/item/I, mob/living/user, bypass_clumsy) var/ignition_message = I.ignition_effect(src, user) @@ -244,49 +196,22 @@ /obj/item/paper/attackby(obj/item/P, mob/living/user, params) if(burn_paper_product_attackby_check(P, user)) - close_all_ui() + SStgui.close_uis(src) return if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) if(length(info) >= MAX_PAPER_LENGTH) // Sheet must have less than 1000 charaters to_chat(user, "This sheet of paper is full!") return - - var/datum/ui_state/default/paper_state/state = new - state.edit_mode = MODE_WRITING - // should a crayon be in the same subtype as a pen? How about a brush or charcoal? - // TODO: Convert all writing stuff to one type, /obj/item/art_tool maybe? - state.is_crayon = istype(P, /obj/item/toy/crayon); - if(state.is_crayon) - var/obj/item/toy/crayon/PEN = P - state.pen_font = CRAYON_FONT - state.pen_color = PEN.paint_color - else - var/obj/item/pen/PEN = P - state.pen_font = PEN.font - state.pen_color = PEN.colour - - create_ui(user, state) + ui_interact(user) return else if(istype(P, /obj/item/stamp)) - - var/datum/ui_state/default/paper_state/state = new - state.edit_mode = MODE_STAMPING // we are read only becausse the sheet is full - state.stamp_icon_state = P.icon_state - state.stamp_name = P.name - - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) - state.stamp_class = sheet.icon_class_name(P.icon_state) - to_chat(user, "You ready your stamp over the paper! ") - - create_ui(user, state) + ui_interact(user) return /// Normaly you just stamp, you don't need to read the thing else // cut paper? the sky is the limit! - var/datum/ui_state/default/paper_state/state = new - state.edit_mode = MODE_READING - create_ui(user, state) // The other ui will be created with just read mode outside of this + ui_interact(user) // The other ui will be created with just read mode outside of this return ..() @@ -301,68 +226,64 @@ get_asset_datum(/datum/asset/spritesheet/simple/paper), ) -/obj/item/paper/ui_interact(mob/user, datum/tgui/ui, - datum/ui_state/default/paper_state/state) - // Update the state - ui = ui || SStgui.get_open_ui(user, src) - if(ui && state) - var/datum/ui_state/default/paper_state/current_state = ui.state - current_state.copy_from(state) +/obj/item/paper/ui_interact(mob/user, datum/tgui/ui) // Update the UI ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "PaperSheet", name) - state = new - ui.set_state(state) - ui.set_autoupdate(FALSE) - viewing_ui[user] = ui ui.open() -/obj/item/paper/ui_close(mob/user) - /// close the editing window and change the mode - viewing_ui[user] = null - . = ..() -// Again, we have to do this as autoupdate is off -/obj/item/paper/proc/update_all_ui() - for(var/datum/tgui/ui in viewing_ui) - ui.process(force = TRUE) +/obj/item/paper/ui_static_data(mob/user) + . = list() + .["text"] = info + .["max_length"] = MAX_PAPER_LENGTH + .["paper_color"] = !color || color == "white" ? "#FFFFFF" : color // color might not be set + .["paper_state"] = icon_state /// TODO: show the sheet will bloodied or crinkling? + .["stamps"] = stamps + -// Again, we have to do this as autoupdate is off -/obj/item/paper/proc/close_all_ui() - for(var/datum/tgui/ui in viewing_ui) - ui.close() - viewing_ui = list() /obj/item/paper/ui_data(mob/user) var/list/data = list() - - var/datum/tgui/ui = viewing_ui[user] - var/datum/ui_state/default/paper_state/state = ui.state - - // Should all this go in static data and just do a forced update? - data["text"] = info - data["max_length"] = MAX_PAPER_LENGTH - data["paper_state"] = icon_state /// TODO: show the sheet will bloodied or crinkling? - data["paper_color"] = !color || color == "white" ? "#FFFFFF" : color // color might not be set - data["stamps"] = stamps - - data["edit_mode"] = state.edit_mode - data["edit_usr"] = "[ui.user]"; - - // pen info for editing - data["is_crayon"] = state.is_crayon - data["pen_font"] = state.pen_font - data["pen_color"] = state.pen_color - // stamping info for..stamping - data["stamp_class"] = state.stamp_class - + var/obj/O = user.get_active_held_item() + if(istype(O, /obj/item/toy/crayon)) + var/obj/item/toy/crayon/PEN = O + data["pen_font"] = CRAYON_FONT + data["pen_color"] = PEN.paint_color + data["edit_mode"] = MODE_WRITING + data["is_crayon"] = TRUE + data["stamp_class"] = "FAKE" + data["stamp_icon_state"] = "FAKE" + else if(istype(O, /obj/item/pen)) + var/obj/item/pen/PEN = O + data["pen_font"] = PEN.font + data["pen_color"] = PEN.colour + data["edit_mode"] = MODE_WRITING + data["is_crayon"] = FALSE + data["stamp_class"] = "FAKE" + data["stamp_icon_state"] = "FAKE" + else if(istype(O, /obj/item/stamp)) + var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) + data["stamp_icon_state"] = O.icon_state + data["stamp_class"] = sheet.icon_class_name(O.icon_state) + data["edit_mode"] = MODE_STAMPING + data["pen_font"] = "FAKE" + data["pen_color"] = "FAKE" + data["is_crayon"] = FALSE + else + data["edit_mode"] = MODE_READING + data["pen_font"] = "FAKE" + data["pen_color"] = "FAKE" + data["is_crayon"] = FALSE + data["stamp_icon_state"] = "FAKE" + data["stamp_class"] = "FAKE" data["field_counter"] = field_counter data["form_fields"] = form_fields return data -/obj/item/paper/ui_act(action, params, datum/tgui/ui, datum/ui_state/default/paper_state/state) +/obj/item/paper/ui_act(action, params,datum/tgui/ui) if(..()) return switch(action) @@ -370,34 +291,33 @@ var/stamp_x = text2num(params["x"]) var/stamp_y = text2num(params["y"]) var/stamp_r = text2num(params["r"]) // rotation in degrees - + var/stamp_icon_state = params["stamp_icon_state"] + var/stamp_class = params["stamp_class"] if (isnull(stamps)) - stamps = new/list() + stamps = list() if(stamps.len < MAX_PAPER_STAMPS) // I hate byond when dealing with freaking lists - stamps += list(list(state.stamp_class, stamp_x, stamp_y,stamp_r)) /// WHHHHY + stamps[++stamps.len] = list(stamp_class, stamp_x, stamp_y, stamp_r) /// WHHHHY /// This does the overlay stuff if (isnull(stamped)) - stamped = new/list() + stamped = list() if(stamped.len < MAX_PAPER_STAMPS_OVERLAYS) - var/mutable_appearance/stampoverlay = mutable_appearance('icons/obj/bureaucracy.dmi', "paper_[state.stamp_icon_state]") + var/mutable_appearance/stampoverlay = mutable_appearance('icons/obj/bureaucracy.dmi', "paper_[stamp_icon_state]") stampoverlay.pixel_x = rand(-2, 2) stampoverlay.pixel_y = rand(-3, 2) add_overlay(stampoverlay) - LAZYADD(stamped, state.stamp_icon_state) + LAZYADD(stamped, stamp_icon_state) - ui.user.visible_message("[ui.user] stamps [src] with [state.stamp_name]!", "You stamp [src] with [state.stamp_name]!") + update_static_data(usr,ui) + ui.user.visible_message("[ui.user] stamps [src] with [stamp_class]!", "You stamp [src] with [stamp_class]!") else to_chat(usr, pick("You try to stamp but you miss!", "There is no where else you can stamp!")) - - update_all_ui() . = TRUE if("save") var/in_paper = params["text"] var/paper_len = length(in_paper) - var/list/fields = params["form_fields"] field_counter = params["field_counter"] ? text2num(params["field_counter"]) : field_counter if(paper_len > MAX_PAPER_LENGTH) @@ -413,14 +333,10 @@ if(info != in_paper) to_chat(ui.user, "You have added to your paper masterpiece!"); info = in_paper - - for(var/key in fields) - form_fields[key] = fields[key]; + update_static_data(usr,ui) - update_all_ui() update_icon() - . = TRUE /** diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index 3937720f74..a3b9b23141 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -26,11 +26,11 @@ var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD) if(BP) BP.drop_limb() - playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) + playsound(loc, pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg'),50, TRUE, -1) return (BRUTELOSS) else user.visible_message("[user] repeatedly bashes [src.name] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) + playsound(loc, 'sound/items/gavel.ogg', 50, TRUE, -1) return (BRUTELOSS) @@ -42,11 +42,12 @@ if(storedpaper) . += "paper" + /obj/item/papercutter/attackby(obj/item/P, mob/user, params) if(istype(P, /obj/item/paper) && !storedpaper) if(!user.transferItemToLoc(P, src)) return - playsound(loc, "pageturn", 60, 1) + playsound(loc, "pageturn", 60, TRUE) to_chat(user, "You place [P] in [src].") storedpaper = P update_icon() @@ -59,17 +60,17 @@ storedcutter = P update_icon() return - if(istype(P, /obj/item/screwdriver) && storedcutter) + if(P.tool_behaviour == TOOL_SCREWDRIVER && storedcutter) P.play_tool_sound(src) to_chat(user, "[storedcutter] has been [cuttersecured ? "unsecured" : "secured"].") cuttersecured = !cuttersecured return ..() -/obj/item/papercutter/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) +/obj/item/papercutter/on_attack_hand(mob/user) add_fingerprint(user) if(!storedcutter) - to_chat(user, "The cutting blade is gone! You can't use [src] now.") + to_chat(user, "The cutting blade is gone! You can't use [src] now.") return if(!cuttersecured) @@ -79,7 +80,7 @@ update_icon() if(storedpaper) - playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1) + playsound(src.loc, 'sound/weapons/slash.ogg', 50, TRUE) to_chat(user, "You neatly cut [storedpaper].") storedpaper = null qdel(storedpaper) @@ -88,6 +89,7 @@ update_icon() /obj/item/papercutter/MouseDrop(atom/over_object) + . = ..() var/mob/M = usr if(M.incapacitated() || !Adjacent(M)) return @@ -98,10 +100,6 @@ else if(istype(over_object, /obj/screen/inventory/hand)) var/obj/screen/inventory/hand/H = over_object M.putItemFromInventoryInHandIfPossible(src, H.held_index) - - else - . = ..() - add_fingerprint(M) /obj/item/paperslip @@ -112,6 +110,12 @@ resistance_flags = FLAMMABLE max_integrity = 50 +/obj/item/paperslip/attackby(obj/item/I, mob/living/user, params) + if(burn_paper_product_attackby_check(I, user)) + return + return ..() + + /obj/item/paperslip/Initialize() . = ..() pixel_x = rand(-5, 5) @@ -124,5 +128,6 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "cutterblade" item_state = "knife" + // inhand_icon_state = "knife" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 392eba5f56..5d6d3d45e8 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -4,53 +4,22 @@ /obj/item/paper/fluff/sop name = "paper- 'Standard Operating Procedure'" - info = {" -Alert Levels: -* Blue - Emergency - * Caused by fire - * Caused by manual interaction - * Action: Close all fire doors. These can only be opened by resetting the alarm -* Red- Ejection/Self Destruct - * Caused by module operating computer. - * Action: After the specified time the module will eject completely. -Engine Maintenance Instructions: -1. Shut off ignition systems: -2. Activate internal power -3. Activate orbital balance matrix -4. Remove volatile liquids from area -5. Wear a fire suit -6. After Decontaminate Visit medical examiner -Toxin Laboratory Procedure: -1. Wear a gas mask regardless -2. Get an oxygen tank. -3. Activate internal atmosphere -4. After Decontaminate Visit medical examiner -Disaster Procedure: -Fire: -1. Activate sector fire alarm. -2. Move to a safe area. -3. Get a fire suit -* After: - 1. Assess Damage - 2. Repair damages - 3. If needed, Evacuate -Meteor Shower: -1. Activate fire alarm -2. Move to the back of ship -* After - 1. Repair damage - 2. If needed, Evacuate -Accidental Reentry: -1. Activate fire alarms in front of ship. -2. Move volatile matter to a fire proof area! -3. Get a fire suit. -4. Stay secure until an emergency ship arrives. -5. If ship does not arrive-Evacuate to a nearby safe area! -"}; + info = "Alert Levels: \nBlue- Emergency \n\t1. Caused by fire \n\t2. Caused by manual interaction \n\tAction: \n\t\tClose all fire doors. These can only be opened by resetting the alarm \nRed- Ejection/Self-Destruct \n\t1. Caused by module operating computer. \n\tAction: \n\t\tAfter the specified time the module will eject completely. \n \nEngine Maintenance Instructions: \n\tShut off ignition systems: \n\tActivate internal power \n\tActivate orbital balance matrix \n\tRemove volatile liquids from area \n\tWear a fire suit \n \n\tAfter \n\t\tDecontaminate \n\t\tVisit medical examiner \n \nToxin Laboratory Procedure: \n\tWear a gas mask regardless \n\tGet an oxygen tank. \n\tActivate internal atmosphere \n \n\tAfter \n\t\tDecontaminate \n\t\tVisit medical examiner \n \nDisaster Procedure: \n\tFire: \n\t\tActivate sector fire alarm. \n\t\tMove to a safe area. \n\t\tGet a fire suit \n\t\tAfter: \n\t\t\tAssess Damage \n\t\t\tRepair damages \n\t\t\tIf needed, Evacuate \n\tMeteor Shower: \n\t\tActivate fire alarm \n\t\tMove to the back of ship \n\t\tAfter \n\t\t\tRepair damage \n\t\t\tIf needed, Evacuate \n\tAccidental Reentry: \n\t\tActivate fire alarms in front of ship. \n\t\tMove volatile matter to a fire proof area! \n\t\tGet a fire suit. \n\t\tStay secure until an emergency ship arrives. \n \n\t\tIf ship does not arrive- \n\t\t\tEvacuate to a nearby safe area!" /obj/item/paper/fluff/shuttles/daniel info = "i love daniel daniel is my best friend you are tearing me apart elise" +/obj/item/paper/fluff/jobs/prisoner/letter + name = "letter from home" + info = {"Dearest sweetheart, + It is truly saddening you must spend your time locked up in an awful prison on that dangerous station. I have spoken to your lawyer who will attempt to appeal to the judge so your sentence may hopefully be reduced. + Regardless, I just want you to understand that all of us out here still love you, and want to see you released safely some day! I know that prison can be a very vicious place, so please promise us you'll avoid getting into any fights or trouble, okay? + We all care for your safety deeply, and could not live with ourselves if you ended up getting hurt. We've scheduled a visit to see you, and with any luck, hopefully our request will be granted soon. + Anyways, please do your best to make it by in that place, and never forget we'll be always here for you, no matter if we're separated. + + Please stay safe, + -Love, Your Dearest"} + //////////// Job guides n' fluff @@ -90,9 +59,42 @@ Accidental Reentry: name = "paper- 'Chemical Information'" info = "Known Onboard Toxins: \n\tGrade A Semi-Liquid Plasma: \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units. \n\t\tA gas mask fails to filter plasma after 50 units. \n\t\tWill attempt to diffuse like a gas. \n\t\tFiltered by scrubbers. \n\t\tThere is a bottled version which is very different \n\t\t\tfrom the version found in canisters! \n \n\t\tWARNING: Highly Flammable. Keep away from heat sources \n\t\texcept in an enclosed fire area! \n\t\tWARNING: It is a crime to use this without authorization. \nKnown Onboard Anti-Toxin: \n\tAnti-Toxin Type 01P: Works against Grade A Plasma. \n\t\tBest if injected directly into bloodstream. \n\t\tA full injection is in every regular Med-Kit. \n\t\tSpecial toxin Kits hold around 7. \n \nKnown Onboard Chemicals (other): \n\tRejuvenation T#001: \n\t\tEven 1 unit injected directly into the bloodstream \n\t\t\twill cure unconscious and sleep toxins. \n\t\tIf administered to a dying patient it will prevent \n\t\t\tfurther damage for about units*3 seconds. \n\t\t\tit will not cure them or allow them to be cured. \n\t\tIt can be administered to a non-dying patient \n\t\t\tbut the chemicals disappear just as fast. \n\tMorphine T#054: \n\t\t5 units will induce precisely 1 minute of sleep. \n\t\t\tThe effect are cumulative. \n\t\tWARNING: It is a crime to use this without authorization" +/obj/item/paper/fluff/jobs/medical/hippocratic + name = "paper- 'Hippocratic Oath'" + info = {"I swear to fulfill, to the best of my ability and judgment, this covenant: + + I will respect the hard-won scientific gains of those physicians in whose steps I walk, + and gladly share such knowledge as is mine with those who are to follow. + + I will apply, for the benefit of the sick, all measures that are required, + avoiding those twin traps of overtreatment and therapeutic nihilism. + + I will remember that there is art to medicine as well as science, + and that warmth, sympathy, and understanding may outweigh the surgeon's knife or the chemist's drug. + + I will not be ashamed to say "I know not," + nor will I fail to call in my colleagues when the skills of another are needed for a patient's recovery. + + I will respect the privacy of my patients, for their problems are not disclosed to me that the world may know. Most especially must I tread with care in matters of life and death. + If it is given me to save a life, all thanks. But it may also be within my power to take a life; + this awesome responsibility must be faced with great humbleness and awareness of my own frailty. Above all, I must not play at God. + + I will remember that I do not treat a fever chart, a cancerous growth, but a sick human being, whose illness may affect the person's family and economic stability. + My responsibility includes these related problems, if I am to care adequately for the sick. + + I will prevent disease whenever I can, for prevention is preferable to cure. + + I will remember that I remain a member of society, with special obligations to all my fellow human beings, + those sound of mind and body as well as the infirm. + + If I do not violate this oath, may I enjoy life and art, respected while I live and remembered with affection thereafter. + May I always act so as to preserve the finest traditions of my calling and may I long experience the joy of healing those who seek my help. + "} + /* * Stations */ +////////// cogstation. /obj/item/paper/guides/cogstation/job_changes name = "MEMO: Job Changes" diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 28cb5ffae9..b8bbd0a30e 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "paper_bin1" item_state = "sheet-metal" + // inhand_icon_state = "sheet-metal" lefthand_file = 'icons/mob/inhands/misc/sheets_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/sheets_righthand.dmi' throwforce = 0 @@ -43,6 +44,7 @@ ..() /obj/item/paper_bin/MouseDrop(atom/over_object) + . = ..() var/mob/living/M = usr if(!istype(M) || M.incapacitated() || !Adjacent(M)) return @@ -54,17 +56,18 @@ var/obj/screen/inventory/hand/H = over_object M.putItemFromInventoryInHandIfPossible(src, H.held_index) - else - . = ..() - add_fingerprint(M) /obj/item/paper_bin/attack_paw(mob/user) return attack_hand(user) -/obj/item/paper_bin/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) - if(user.lying) - return +//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/item/paper_bin/on_attack_hand(mob/user) + if(isliving(user)) + var/mob/living/L = user + if(!(L.mobility_flags & MOBILITY_PICKUP)) + return + // user.changeNext_move(CLICK_CD_MELEE) if(bin_pen) var/obj/item/pen/P = bin_pen P.add_fingerprint(user) @@ -85,8 +88,8 @@ P = new papertype(src) if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) if(prob(30)) - P.info = "*HONK HONK HONK HONK HONK HONK HONK HOOOOOOOOOOOOOOOOOOOOOONK*\n*APRIL FOOLS*\n" - P.rigged = 1 + P.info = "HONK HONK HONK HONK HONK HONK HONK HOOOOOOOOOOOOOOOOOOOOOONK APRIL FOOLS" + P.AddComponent(/datum/component/honkspam) P.add_fingerprint(user) P.forceMove(user.loc) @@ -148,8 +151,7 @@ papertype = /obj/item/paper/natural resistance_flags = FLAMMABLE -/obj/item/paper_bin/bundlenatural/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) - ..() +/obj/item/paper_bin/bundlenatural/on_attack_hand(mob/user) if(total_paper < 1) qdel(src) @@ -173,3 +175,9 @@ qdel(src) else ..() + +/obj/item/paper_bin/carbon + name = "carbon paper bin" + desc = "Contains all the paper you'll ever need, in duplicate!" + icon_state = "paper_bin_carbon" + papertype = /obj/item/paper/carbon diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index c6a1ee1389..53fe886d65 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -1,9 +1,9 @@ - /obj/item/paperplane name = "paper plane" desc = "Paper, folded in the shape of a plane." icon = 'icons/obj/bureaucracy.dmi' icon_state = "paperplane" + // custom_fire_overlay = "paperplane_onfire" throw_range = 7 throw_speed = 1 throwforce = 0 @@ -11,7 +11,7 @@ resistance_flags = FLAMMABLE max_integrity = 50 - var/hit_probability = 2//% + var/hit_probability = 2 //% var/obj/item/paper/internalPaper /obj/item/paperplane/origami @@ -41,6 +41,13 @@ qdel(src) return ..() +/obj/item/paperplane/Exited(atom/movable/AM, atom/newLoc) + . = ..() + if (AM == internalPaper) + internalPaper = null + if(!QDELETED(src)) + qdel(src) + /obj/item/paperplane/Destroy() QDEL_NULL(internalPaper) return ..() @@ -71,31 +78,19 @@ user.put_in_hands(internal_paper_tmp) /obj/item/paperplane/attackby(obj/item/P, mob/living/carbon/human/user, params) - ..() + if(burn_paper_product_attackby_check(P, user)) + return if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) - to_chat(user, "You should unfold [src] before changing it.") + to_chat(user, "You should unfold [src] before changing it!") return else if(istype(P, /obj/item/stamp)) //we don't randomize stamps on a paperplane internalPaper.attackby(P, user) //spoofed attack to update internal paper. update_icon() + add_fingerprint(user) + return - else if(P.get_temperature()) - if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10)) - user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ - "You miss [src] and accidentally light yourself on fire!") - user.dropItemToGround(P) - user.adjust_fire_stacks(1) - user.IgniteMob() - return - - if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper - return - user.dropItemToGround(src) - user.visible_message("[user] lights [src] ablaze with [P]!", "You light [src] on fire!") - fire_act() - - add_fingerprint(user) + return ..() /obj/item/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=FALSE, diagonals_first = FALSE, datum/callback/callback) @@ -112,26 +107,28 @@ if(..() || !ishuman(hit_atom))//if the plane is caught or it hits a nonhuman return var/mob/living/carbon/human/H = hit_atom + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) if(prob(hit_probability)) if(H.is_eyes_covered()) return - var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) - visible_message("\The [src] hits [H] in the eye!") + visible_message("\The [src] hits [H] in the eye[eyes ? "" : " socket"]!") H.adjust_blurriness(6) - if(eyes) - eyes.applyOrganDamage(rand(6,8)) + eyes?.applyOrganDamage(rand(6,8)) H.DefaultCombatKnockdown(40) H.emote("scream") - /obj/item/paper/examine(mob/user) . = ..() . += "Alt-click [src] to fold it into a paper plane." /obj/item/paper/AltClick(mob/living/carbon/user, obj/item/I) - . = ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user), NO_TK)) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return + if(istype(src, /obj/item/paper/carbon)) + var/obj/item/paper/carbon/Carbon = src + if(!Carbon.iscopy && !Carbon.copied) + to_chat(user, "Take off the carbon copy first.") + return to_chat(user, "You fold [src] into the shape of a plane!") user.temporarilyRemoveItemFromInventory(src) var/obj/item/paperplane/plane_type = /obj/item/paperplane @@ -142,4 +139,3 @@ I = new plane_type(user, src) user.put_in_hands(I) - return TRUE diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 91b8a6719b..13890ae69e 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -16,6 +16,8 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "pen" item_state = "pen" + // inhand_icon_state = "pen" + // worn_icon_state = "pen" slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_EARS throwforce = 0 w_class = WEIGHT_CLASS_TINY @@ -76,6 +78,22 @@ icon_state = "pen-fountain" font = FOUNTAIN_PEN_FONT +/obj/item/pen/charcoal + name = "charcoal stylus" + desc = "It's just a wooden stick with some compressed ash on the end. At least it can write." + icon_state = "pen-charcoal" + colour = "dimgray" + font = CHARCOAL_FONT + custom_materials = null + grind_results = list(/datum/reagent/ash = 5, /datum/reagent/cellulose = 10) + +/datum/crafting_recipe/charcoal_stylus + name = "Charcoal Stylus" + result = /obj/item/pen/charcoal + reqs = list(/obj/item/stack/sheet/mineral/wood = 1, /datum/reagent/ash = 30) + time = 30 + category = CAT_PRIMAL + /obj/item/pen/fountain/captain name = "captain's fountain pen" desc = "It's an expensive Oak fountain pen. The nib is quite sharp." @@ -93,6 +111,7 @@ "Black and Silver" = "pen-fountain-b", "Command Blue" = "pen-fountain-cb" ) + embedding = list("embed_chance" = 75) /obj/item/pen/fountain/captain/Initialize() . = ..() @@ -139,20 +158,18 @@ if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE)) return if(oldname == input) - to_chat(user, "You changed \the [O.name] to... well... \the [O.name].") + to_chat(user, "You changed \the [O.name] to... well... \the [O.name].") else O.name = input - to_chat(user, "\The [oldname] has been successfully been renamed to \the [input].") + to_chat(user, "\The [oldname] has been successfully been renamed to \the [input].") O.renamedByPlayer = TRUE - log_game("[user] [key_name(user)] has renamed [O] to [input]") if(penchoice == "Change description") - var/input = stripped_input(user,"Describe \the [O.name] here", ,"", 2048) + var/input = stripped_input(user,"Describe \the [O.name] here", ,"", 100) if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE)) return O.desc = input - to_chat(user, "You have successfully changed \the [O.name]'s description.") - log_game("[user] [key_name(user)] has changed [O]'s description to to [input]") + to_chat(user, "You have successfully changed \the [O.name]'s description.") /* * Sleepypens @@ -181,9 +198,10 @@ */ /obj/item/pen/edagger attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") //these wont show up if the pen is off + // attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts") //these won't show up if the pen is off + // attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") sharpness = SHARP_EDGED var/on = FALSE - embedding = list(embed_chance = EMBED_CHANCE) /obj/item/pen/edagger/ComponentInitialize() . = ..() @@ -193,29 +211,38 @@ /obj/item/pen/edagger/get_sharpness() return on * sharpness +/obj/item/pen/edagger/suicide_act(mob/user) + . = BRUTELOSS + if(on) + user.visible_message("[user] forcefully rams the pen into their mouth!") + else + user.visible_message("[user] is holding a pen up to their mouth! It looks like [user.p_theyre()] trying to commit suicide!") + attack_self(user) + /obj/item/pen/edagger/attack_self(mob/living/user) if(on) on = FALSE force = initial(force) + throw_speed = initial(throw_speed) w_class = initial(w_class) name = initial(name) hitsound = initial(hitsound) - embedding = null + embedding = list(embed_chance = EMBED_CHANCE) throwforce = initial(throwforce) - playsound(user, 'sound/weapons/saberoff.ogg', 5, 1) + playsound(user, 'sound/weapons/saberoff.ogg', 5, TRUE) to_chat(user, "[src] can now be concealed.") - updateEmbedding() else on = TRUE force = 18 + throw_speed = 4 w_class = WEIGHT_CLASS_NORMAL name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' - embedding = list(embed_chance = 100, fall_chance = 0) //rule of cool + embedding = list(embed_chance = 100) //rule of cool throwforce = 35 - playsound(user, 'sound/weapons/saberon.ogg', 5, 1) + playsound(user, 'sound/weapons/saberon.ogg', 5, TRUE) to_chat(user, "[src] is now active.") - updateEmbedding() + updateEmbedding() update_icon() /obj/item/pen/edagger/update_icon_state() @@ -235,6 +262,8 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "digging_pen" item_state = "pen" + // inhand_icon_state = "pen" + // worn_icon_state = "pen" force = 3 w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron=10, /datum/material/diamond=100, /datum/material/titanium = 10) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 0b1f3bb01d..25a9cf0043 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -1,12 +1,20 @@ -/* Photocopiers! - * Contains: - * Photocopier - * Toner Cartridge - */ -/* - * Photocopier - */ +/// For use with the `color_mode` var. Photos will be printed in greyscale while the var has this value. +#define PHOTO_GREYSCALE "Greyscale" +/// For use with the `color_mode` var. Photos will be printed in full color while the var has this value. +#define PHOTO_COLOR "Color" + +/// How much toner is used for making a copy of a paper. +#define PAPER_TONER_USE 0.125 +/// How much toner is used for making a copy of a photo. +#define PHOTO_TONER_USE 0.625 +/// How much toner is used for making a copy of a document. +#define DOCUMENT_TONER_USE 0.75 +/// How much toner is used for making a copy of an ass. +#define ASS_TONER_USE 0.625 +/// The maximum amount of copies you can make with one press of the copy button. +#define MAX_COPIES_AT_ONCE 10 + /obj/machinery/photocopier name = "photocopier" desc = "Used to copy important documents and anatomy studies." @@ -19,183 +27,317 @@ power_channel = EQUIP max_integrity = 300 integrity_failure = 0.33 - var/obj/item/paper/copy = null //what's in the copier! - var/obj/item/photo/photocopy = null - var/obj/item/documents/doccopy = null - var/copies = 1 //how many copies to print! - var/toner = 40 //how much toner is left! woooooo~ - var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier! - var/greytoggle = "Greyscale" - var/mob/living/ass //i can't believe i didn't write a stupid-ass comment about this var when i first coded asscopy. + /// A reference to an `/obj/item/paper` inside the copier, if one is inserted. Otherwise null. + var/obj/item/paper/paper_copy + /// A reference to an `/obj/item/photo` inside the copier, if one is inserted. Otherwise null. + var/obj/item/photo/photo_copy + /// A reference to an `/obj/item/documents` inside the copier, if one is inserted. Otherwise null. + var/obj/item/documents/document_copy + /// A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob. + var/mob/living/ass + /// A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge. + var/obj/item/toner/toner_cartridge + /// How many copies will be printed with one click of the "copy" button. + var/num_copies = 1 + /// Used with photos. Determines if the copied photo will be in greyscale or color. + var/color_mode = PHOTO_COLOR + /// Indicates whether the printer is currently busy copying or not. var/busy = FALSE -/obj/machinery/photocopier/ui_interact(mob/user) +/obj/machinery/photocopier/Initialize() . = ..() - var/list/dat = list("Photocopier ") - if(copy || photocopy || doccopy || (ass && (ass.loc == src.loc))) - dat += "Remove Paper " - if(toner) - dat += "Copy " - dat += "Printing: [copies] copies." - dat += "- " - dat += "+ " - if(photocopy) - dat += "Printing in [greytoggle] " - else if(toner) - dat += "Please insert paper to copy. " - if(isAI(user)) - dat += "Print photo from database " - dat += "Current toner level: [toner]" - if(!toner) - dat +=" Please insert a new toner cartridge!" - user << browse(dat.Join(""), "window=copier") - onclose(user, "copier") + //AddComponent(/datum/component/payment, 5, SSeconomy.get_dep_account(ACCOUNT_CIV), PAYMENT_CLINICAL) + toner_cartridge = new(src) -/obj/machinery/photocopier/Topic(href, href_list) +/obj/machinery/photocopier/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Photocopier") + ui.open() + +/obj/machinery/photocopier/ui_data(mob/user) + var/list/data = list() + data["has_item"] = !copier_empty() + data["num_copies"] = num_copies + + if(photo_copy) + data["is_photo"] = TRUE + data["color_mode"] = color_mode + + if(isAI(user)) + data["isAI"] = TRUE + data["can_AI_print"] = toner_cartridge ? toner_cartridge.charges >= PHOTO_TONER_USE : FALSE + else + data["isAI"] = FALSE + + if(toner_cartridge) + data["has_toner"] = TRUE + data["current_toner"] = toner_cartridge.charges + data["max_toner"] = toner_cartridge.max_charges + data["has_enough_toner"] = has_enough_toner() + else + data["has_toner"] = FALSE + data["has_enough_toner"] = FALSE + + return data + +/obj/machinery/photocopier/ui_act(action, list/params) if(..()) return - if(href_list["copy"]) - if(copy) - for(var/i = 0, i < copies, i++) - if(toner > 0 && !busy && copy) - var/copy_as_paper = 1 - if(istype(copy, /obj/item/paper/contract/employment)) - var/obj/item/paper/contract/employment/E = copy - var/obj/item/paper/contract/employment/C = new /obj/item/paper/contract/employment (loc, E.target.current) - if(C) - copy_as_paper = 0 - if(copy_as_paper) - var/obj/item/paper/c = new /obj/item/paper (loc) - if(length(copy.info) > 0) //Only print and add content if the copied doc has words on it - if(toner > 10) //lots of toner, make it dark - c.info = "" - else //no toner? shitty copies for you! - c.info = "" - var/copied = copy.info - copied = replacetext(copied, "" - c.name = copy.name - c.update_icon() - c.stamps = copy.stamps - if(copy.stamped) - c.stamped = copy.stamped.Copy() - c.copy_overlays(copy, TRUE) - toner-- - busy = TRUE - addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS) - else - break - updateUsrDialog() - else if(photocopy) - for(var/i = 0, i < copies, i++) - if(toner >= 5 && !busy && photocopy) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink - new /obj/item/photo (loc, photocopy.picture.Copy(greytoggle == "Greyscale"? TRUE : FALSE)) - busy = TRUE - addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS) - else - break - else if(doccopy) - for(var/i = 0, i < copies, i++) - if(toner > 5 && !busy && doccopy) - new /obj/item/documents/photocopy(loc, doccopy) - toner-= 6 // the sprite shows 6 papers, yes I checked - busy = TRUE - addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS) - else - break - updateUsrDialog() - else if(ass) //ASS COPY. By Miauw - for(var/i = 0, i < copies, i++) - var/icon/temp_img - if(ishuman(ass) && (ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING))) - to_chat(usr, "You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on." ) - break - else if(toner >= 5 && !busy && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on. - if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. - temp_img = icon('icons/ass/assalien.png') - else if(ishuman(ass)) //Suit checks are in check_ass - temp_img = icon(ass.gender == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png') - else if(isdrone(ass)) //Drones are hot - temp_img = icon('icons/ass/assdrone.png') - else - break - busy = TRUE - sleep(15) - var/obj/item/photo/p = new /obj/item/photo (loc) - var/datum/picture/toEmbed = new(name = "[ass]'s Ass", desc = "You see [ass]'s ass on the photo.", image = temp_img) - p.pixel_x = rand(-10, 10) - p.pixel_y = rand(-10, 10) - toEmbed.psize_x = 128 - toEmbed.psize_y = 128 - p.set_picture(toEmbed, TRUE, TRUE) - toner -= 5 - busy = FALSE - else - break - updateUsrDialog() - else if(href_list["remove"]) - if(copy) - remove_photocopy(copy, usr) - copy = null - else if(photocopy) - remove_photocopy(photocopy, usr) - photocopy = null - else if(doccopy) - remove_photocopy(doccopy, usr) - doccopy = null - else if(check_ass()) - to_chat(ass, "You feel a slight pressure on your ass.") - updateUsrDialog() - else if(href_list["min"]) - if(copies > 1) - copies-- - updateUsrDialog() - else if(href_list["add"]) - if(copies < maxcopies) - copies++ - updateUsrDialog() - else if(href_list["aipic"]) - if(!isAI(usr)) - return - if(toner >= 5 && !busy) + + switch(action) + // Copying paper, photos, documents and asses. + if("make_copy") + if(busy) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") + return FALSE + if(paper_copy) + if(!length(paper_copy.info)) + to_chat(usr, "An error message flashes across [src]'s screen: \"The supplied paper is blank. Aborting.\"") + return FALSE + // Basic paper + if(istype(paper_copy, /obj/item/paper)) + do_copy_loop(CALLBACK(src, .proc/make_paper_copy), usr) + return TRUE + // Devil contract paper. + if(istype(paper_copy, /obj/item/paper/contract/employment)) + do_copy_loop(CALLBACK(src, .proc/make_devil_paper_copy), usr) + return TRUE + // Copying photo. + if(photo_copy) + do_copy_loop(CALLBACK(src, .proc/make_photo_copy), usr) + return TRUE + // Copying Documents. + if(document_copy) + do_copy_loop(CALLBACK(src, .proc/make_document_copy), usr) + return TRUE + // ASS COPY. By Miauw + if(ass) + do_copy_loop(CALLBACK(src, .proc/make_ass_copy), usr) + return TRUE + + // Remove the paper/photo/document from the photocopier. + if("remove") + if(paper_copy) + remove_photocopy(paper_copy, usr) + paper_copy = null + else if(photo_copy) + remove_photocopy(photo_copy, usr) + photo_copy = null + else if(document_copy) + remove_photocopy(document_copy, usr) + document_copy = null + else if(check_ass()) + to_chat(ass, "You feel a slight pressure on your ass.") + return TRUE + + // AI printing photos from their saved images. + if("ai_photo") + if(busy) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") + return FALSE var/mob/living/silicon/ai/tempAI = usr - if(tempAI.aicamera.stored.len == 0) - to_chat(usr, "No images saved") + if(!length(tempAI.aicamera.stored)) + to_chat(usr, "No images saved.") return var/datum/picture/selection = tempAI.aicamera.selectpicture(usr) - var/obj/item/photo/photo = new(loc, selection) - photo.pixel_x = rand(-10, 10) - photo.pixel_y = rand(-10, 10) - toner -= 5 //AI prints color pictures only, thus they can do it more efficiently - busy = TRUE - addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS) - updateUsrDialog() - else if(href_list["colortoggle"]) - if(greytoggle == "Greyscale") - greytoggle = "Color" - else - greytoggle = "Greyscale" - updateUsrDialog() + var/obj/item/photo/photo = new(loc, selection) // AI prints color photos only. + give_pixel_offset(photo) + toner_cartridge.charges -= PHOTO_TONER_USE + return TRUE + // Switch between greyscale and color photos + if("color_mode") + if(params["mode"] in list(PHOTO_GREYSCALE, PHOTO_COLOR)) + color_mode = params["mode"] + return TRUE + + // Remove the toner cartridge from the copier. + if("remove_toner") + if(issilicon(usr) || (ishuman(usr) && !usr.put_in_hands(toner_cartridge))) + toner_cartridge.forceMove(drop_location()) + toner_cartridge = null + return TRUE + + // Set the number of copies to be printed with 1 click of the "copy" button. + if("set_copies") + num_copies = clamp(text2num(params["num_copies"]), 1, MAX_COPIES_AT_ONCE) + return TRUE + +/** + * Determines if the photocopier has enough toner to create `num_copies` amount of copies of the currently inserted item. + */ +/obj/machinery/photocopier/proc/has_enough_toner() + if(paper_copy) + return toner_cartridge.charges >= (PAPER_TONER_USE * num_copies) + else if(document_copy) + return toner_cartridge.charges >= (DOCUMENT_TONER_USE * num_copies) + else if(photo_copy) + return toner_cartridge.charges >= (PHOTO_TONER_USE * num_copies) + else if(ass) + return toner_cartridge.charges >= (ASS_TONER_USE * num_copies) + return FALSE + +/** + * Will invoke the passed in `copy_cb` callback in 1 second intervals, and charge the user 5 credits for each copy made. + * + * Arguments: + * * copy_cb - a callback for which proc to call. Should only be one of the `make_x_copy()` procs, such as `make_paper_copy()`. + * * user - the mob who clicked copy. + */ +/obj/machinery/photocopier/proc/do_copy_loop(datum/callback/copy_cb, mob/user) + busy = TRUE + var/num_loops + for(var/i in 1 to num_copies) + //if(attempt_charge(src, user) & COMPONENT_OBJ_CANCEL_CHARGE) + // break + addtimer(copy_cb, i SECONDS) + num_loops++ + addtimer(CALLBACK(src, .proc/reset_busy), num_loops SECONDS) + +/** + * Sets busy to `FALSE`. Created as a proc so it can be used in callbacks. + */ /obj/machinery/photocopier/proc/reset_busy() busy = FALSE - updateUsrDialog() -/obj/machinery/photocopier/proc/do_insertion(obj/item/O, mob/user) - O.forceMove(src) - to_chat(user, "You insert [O] into [src].") +/** + * Gives items a random x and y pixel offset, between -10 and 10 for each. + * + * This is done that when someone prints multiple papers, we dont have them all appear to be stacked in the same exact location. + * + * Arguments: + * * copied_item - The paper, document, or photo that was just spawned on top of the printer. + */ +/obj/machinery/photocopier/proc/give_pixel_offset(obj/item/copied_item) + copied_item.pixel_x = rand(-10, 10) + copied_item.pixel_y = rand(-10, 10) + +/** + * Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy. + * + * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + * Does not check if it has enough toner because devil contracts cost no toner to print. + */ +/obj/machinery/photocopier/proc/make_devil_paper_copy() + if(!paper_copy) + return + var/obj/item/paper/contract/employment/E = paper_copy + var/obj/item/paper/contract/employment/C = new(loc, E.target.current) + give_pixel_offset(C) + +/** + * Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy. + * + * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + */ +/obj/machinery/photocopier/proc/make_paper_copy() + if(!paper_copy) + return + var/obj/item/paper/copied_paper = new(loc) + give_pixel_offset(copied_paper) + if(toner_cartridge.charges > 10) // Lots of toner, make it dark. + copied_paper.info = "" + else // No toner? shitty copies for you! + copied_paper.info = "" + + var/copied_info = paper_copy.info + copied_info = replacetext(copied_info, "" + copied_paper.name = paper_copy.name + copied_paper.update_icon() + copied_paper.stamps = paper_copy.stamps + if(paper_copy.stamped) + copied_paper.stamped = paper_copy.stamped.Copy() + copied_paper.copy_overlays(paper_copy, TRUE) + toner_cartridge.charges -= PAPER_TONER_USE + +/** + * Handles the copying of photos, which can be printed in either color or greyscale. + * + * Checks first if `photo_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + */ +/obj/machinery/photocopier/proc/make_photo_copy() + if(!photo_copy) + return + var/obj/item/photo/copied_pic = new(loc, photo_copy.picture.Copy(color_mode == PHOTO_GREYSCALE ? TRUE : FALSE)) + give_pixel_offset(copied_pic) + toner_cartridge.charges -= PHOTO_TONER_USE + +/** + * Handles the copying of documents. + * + * Checks first if `document_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + */ +/obj/machinery/photocopier/proc/make_document_copy() + if(!document_copy) + return + var/obj/item/documents/photocopy/copied_doc = new(loc, document_copy) + give_pixel_offset(copied_doc) + toner_cartridge.charges -= DOCUMENT_TONER_USE + +/** + * Handles the copying of an ass photo. + * + * Calls `check_ass()` first to make sure that `ass` exists, among other conditions. Since this proc is called from a timer, it's possible that it was removed. + * Additionally checks that the mob has their clothes off. + */ +/obj/machinery/photocopier/proc/make_ass_copy() + if(!check_ass()) + return + if(ishuman(ass)) //(ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING))) + var/mob/living/carbon/C = ass //have to typecast to this, is_groin_exposed is carbon level + if(C.is_groin_exposed()) + to_chat(usr, "You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on." ) + return + + var/icon/temp_img + if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. + temp_img = icon('icons/ass/assalien.png') + else if(ishuman(ass)) //Suit checks are after check_ass + temp_img = icon(ass.gender == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png') + else if(isdrone(ass)) //Drones are hot + temp_img = icon('icons/ass/assdrone.png') + + var/obj/item/photo/copied_ass = new /obj/item/photo(loc) + var/datum/picture/toEmbed = new(name = "[ass]'s Ass", desc = "You see [ass]'s ass on the photo.", image = temp_img) + give_pixel_offset(copied_ass) + toEmbed.psize_x = 128 + toEmbed.psize_y = 128 + copied_ass.set_picture(toEmbed, TRUE, TRUE) + toner_cartridge.charges -= ASS_TONER_USE + +/** + * Inserts the item into the copier. Called in `attackby()` after a human mob clicked on the copier with a paper, photo, or document. + * + * Arugments: + * * object - the object that got inserted. + * * user - the mob that inserted the object. + */ +/obj/machinery/photocopier/proc/do_insertion(obj/item/object, mob/user) + object.forceMove(src) + to_chat(user, "You insert [object] into [src].") flick("photocopier1", src) - updateUsrDialog() -/obj/machinery/photocopier/proc/remove_photocopy(obj/item/O, mob/user) +/** + * Called when someone hits the "remove item" button on the copier UI. + * + * If the user is a silicon, it drops the object at the location of the copier. If the user is not a silicon, it tries to put the object in their hands first. + * Sets `busy` to `FALSE` because if the inserted item is removed, the copier should halt copying. + * + * Arguments: + * * object - the item we're trying to remove. + * * user - the user removing the item. + */ +/obj/machinery/photocopier/proc/remove_photocopy(obj/item/object, mob/user) if(!issilicon(user)) //surprised this check didn't exist before, putting stuff in AI's hand is bad - O.forceMove(user.loc) - user.put_in_hands(O) + object.forceMove(user.loc) + user.put_in_hands(object) else - O.forceMove(drop_location()) - to_chat(user, "You take [O] out of [src].") + object.forceMove(drop_location()) + to_chat(user, "You take [object] out of [src]. [busy ? "The [src] comes to a halt." : ""]") /obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) if(default_unfasten_wrench(user, O)) @@ -210,7 +352,7 @@ else if(!user.temporarilyRemoveItemFromInventory(O)) return - copy = O + paper_copy = O do_insertion(O, user) else to_chat(user, "There is already something in [src]!") @@ -219,7 +361,7 @@ if(copier_empty()) if(!user.temporarilyRemoveItemFromInventory(O)) return - photocopy = O + photo_copy = O do_insertion(O, user) else to_chat(user, "There is already something in [src]!") @@ -228,38 +370,35 @@ if(copier_empty()) if(!user.temporarilyRemoveItemFromInventory(O)) return - doccopy = O + document_copy = O do_insertion(O, user) else to_chat(user, "There is already something in [src]!") else if(istype(O, /obj/item/toner)) - if(toner <= 0) - if(!user.temporarilyRemoveItemFromInventory(O)) - return - qdel(O) - toner = 40 - to_chat(user, "You insert [O] into [src].") - updateUsrDialog() - else - to_chat(user, "This cartridge is not yet ready for replacement! Use up the rest of the toner.") + if(toner_cartridge) + to_chat(user, "[src] already has a toner cartridge inserted. Remove that one first.") + return + O.forceMove(src) + toner_cartridge = O + to_chat(user, "You insert [O] into [src].") else if(istype(O, /obj/item/areaeditor/blueprints)) - to_chat(user, "The Blueprint is too large to put into the copier. You need to find something else to record the document") + to_chat(user, "The Blueprint is too large to put into the copier. You need to find something else to record the document.") else return ..() /obj/machinery/photocopier/obj_break(damage_flag) . = ..() - if(. && toner > 0) + if(. && toner_cartridge.charges) new /obj/effect/decal/cleanable/oil(get_turf(src)) - toner = 0 + toner_cartridge.charges = 0 /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off. - if (!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE) || target == ass || copier_blocked()) + if(!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE) || target == ass || copier_blocked()) return - src.add_fingerprint(user) + add_fingerprint(user) if(target == user) user.visible_message("[user] starts climbing onto the photocopier!", "You start climbing onto the photocopier...") else @@ -277,49 +416,63 @@ target.forceMove(drop_location()) ass = target - if(photocopy) - photocopy.forceMove(drop_location()) - visible_message("[photocopy] is shoved out of the way by [ass]!") - photocopy = null + if(photo_copy) + photo_copy.forceMove(drop_location()) + visible_message("[photo_copy] is shoved out of the way by [ass]!") + photo_copy = null - else if(copy) - copy.forceMove(drop_location()) - visible_message("[copy] is shoved out of the way by [ass]!") - copy = null - updateUsrDialog() + else if(paper_copy) + paper_copy.forceMove(drop_location()) + visible_message("[paper_copy] is shoved out of the way by [ass]!") + paper_copy = null + else if(document_copy) + document_copy.forceMove(drop_location()) + visible_message("[document_copy] is shoved out of the way by [ass]!") + document_copy = null + +/obj/machinery/photocopier/Exited(atom/movable/AM, atom/newloc) + check_ass() // There was potentially a person sitting on the copier, check if they're still there. + return ..() + +/** + * Checks the living mob `ass` exists and its location is the same as the photocopier. + * + * Returns FALSE if `ass` doesn't exist or is not at the copier's location. Returns TRUE otherwise. + */ /obj/machinery/photocopier/proc/check_ass() //I'm not sure wether I made this proc because it's good form or because of the name. if(!ass) - return 0 - if(ass.loc != src.loc) + return FALSE + if(ass.loc != loc) ass = null - updateUsrDialog() - return 0 - else if(ishuman(ass)) - if(!ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) && !ass.get_item_by_slot(ITEM_SLOT_OCLOTHING)) - return 1 - else - return 0 - else - return 1 + return FALSE + return TRUE +/** + * Checks if the copier is deleted, or has something dense at its location. Called in `MouseDrop_T()` + */ /obj/machinery/photocopier/proc/copier_blocked() if(QDELETED(src)) return if(loc.density) - return 1 + return TRUE for(var/atom/movable/AM in loc) if(AM == src) continue if(AM.density) - return 1 - return 0 + return TRUE + return FALSE +/** + * Checks if there is an item inserted into the copier or a mob sitting on top of it. + * + * Return `FALSE` is the copier has something inside of it. Returns `TRUE` if it doesn't. + */ /obj/machinery/photocopier/proc/copier_empty() - if(copy || photocopy || check_ass()) - return 0 + if(paper_copy || photo_copy || document_copy || check_ass()) + return FALSE else - return 1 + return TRUE /* * Toner cartridge @@ -343,3 +496,11 @@ desc = "Why would ANYONE need THIS MUCH TONER?" charges = 200 max_charges = 200 + +#undef PHOTO_GREYSCALE +#undef PHOTO_COLOR +#undef PAPER_TONER_USE +#undef PHOTO_TONER_USE +#undef DOCUMENT_TONER_USE +#undef ASS_TONER_USE +#undef MAX_COPIES_AT_ONCE diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 241dde13a8..104f70bfdf 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "stamp-ok" item_state = "stamp" + // inhand_icon_state = "stamp" throwforce = 0 w_class = WEIGHT_CLASS_TINY throw_speed = 3 @@ -11,6 +12,8 @@ custom_materials = list(/datum/material/iron=60) pressure_resistance = 2 attack_verb = list("stamped") + // attack_verb_continuous = list("stamps") + // attack_verb_simple = list("stamp") /obj/item/stamp/suicide_act(mob/user) user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.") @@ -66,5 +69,25 @@ icon_state = "stamp-clown" dye_color = DYE_CLOWN +/obj/item/stamp/mime + name = "mime's rubber stamp" + icon_state = "stamp-mime" + dye_color = DYE_MIME + +/obj/item/stamp/chap + name = "chaplain's rubber stamp" + icon_state = "stamp-chap" + dye_color = DYE_CHAP + +/obj/item/stamp/centcom + name = "CentCom rubber stamp" + icon_state = "stamp-centcom" + dye_color = DYE_CENTCOM + +/obj/item/stamp/syndicate + name = "Syndicate rubber stamp" + icon_state = "stamp-syndicate" + dye_color = DYE_SYNDICATE + /obj/item/stamp/attack_paw(mob/user) return attack_hand(user) diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm new file mode 100644 index 0000000000..e46ed64971 --- /dev/null +++ b/code/modules/paperwork/ticketmachine.dm @@ -0,0 +1,231 @@ +//Bureaucracy machine! +//Simply set this up in the hopline and you can serve people based on ticket numbers + +/obj/machinery/ticket_machine + name = "ticket machine" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "ticketmachine" + desc = "A marvel of bureaucratic engineering encased in an efficient plastic shell. It can be refilled with a hand labeler refill roll and linked to buttons with a multitool." + density = FALSE + maptext_height = 26 + maptext_width = 32 + maptext_x = 7 + maptext_y = 10 + layer = HIGH_OBJ_LAYER + var/ticket_number = 0 //Increment the ticket number whenever the HOP presses his button + var/current_number = 0 //What ticket number are we currently serving? + var/max_number = 100 //At this point, you need to refill it. + var/cooldown = 50 + var/ready = TRUE + var/id = "ticket_machine_default" //For buttons + var/list/ticket_holders = list() + var/list/obj/item/ticket_machine_ticket/tickets = list() + +/obj/machinery/ticket_machine/multitool_act(mob/living/user, obj/item/I) + if(!multitool_check_buffer(user, I)) //make sure it has a data buffer + return + var/obj/item/multitool/M = I + M.buffer = src + to_chat(user, "You store linkage information in [I]'s buffer.") + return TRUE + +/obj/machinery/ticket_machine/emag_act(mob/user) //Emag the ticket machine to dispense burning tickets, as well as randomize its number to destroy the HoP's mind. + if(obj_flags & EMAGGED) + return + to_chat(user, "You overload [src]'s bureaucratic logic circuitry to its MAXIMUM setting.") + ticket_number = rand(0,max_number) + current_number = ticket_number + obj_flags |= EMAGGED + if(tickets.len) + for(var/obj/item/ticket_machine_ticket/ticket in tickets) + ticket.audible_message("\the [ticket] disperses!") + qdel(ticket) + tickets.Cut() + update_icon() + +/obj/machinery/ticket_machine/Initialize() + . = ..() + update_icon() + +/obj/machinery/ticket_machine/proc/increment() + if(current_number > ticket_number) + return + if(current_number && !(obj_flags & EMAGGED) && tickets[current_number]) + tickets[current_number].audible_message("\the [tickets[current_number]] disperses!") + qdel(tickets[current_number]) + if(current_number < ticket_number) + current_number ++ //Increment the one we're serving. + playsound(src, 'sound/misc/announce_dig.ogg', 50, FALSE) + say("Now serving ticket #[current_number]!") + if(!(obj_flags & EMAGGED) && tickets[current_number]) + tickets[current_number].audible_message("\the [tickets[current_number]] vibrates!") + update_icon() //Update our icon here rather than when they take a ticket to show the current ticket number being served + +/obj/machinery/button/ticket_machine + name = "increment ticket counter" + desc = "Use this button after you've served someone to tell the next person to come forward." + device_type = /obj/item/assembly/control/ticket_machine + req_access = list() + id = "ticket_machine_default" + +/obj/machinery/button/ticket_machine/Initialize() + . = ..() + if(device) + var/obj/item/assembly/control/ticket_machine/ours = device + ours.id = id + +/obj/machinery/button/ticket_machine/multitool_act(mob/living/user, obj/item/I) + . = ..() + if(I.tool_behaviour == TOOL_MULTITOOL) + var/obj/item/multitool/M = I + if(M.buffer && !istype(M.buffer, /obj/machinery/ticket_machine)) + return + var/obj/item/assembly/control/ticket_machine/controller = device + controller.linked = M.buffer + id = null + controller.id = null + to_chat(user, "You've linked [src] to [controller.linked].") + +/obj/item/assembly/control/ticket_machine + name = "ticket machine controller" + desc = "A remote controller for the HoP's ticket machine." + var/obj/machinery/ticket_machine/linked //To whom are we linked? + +/obj/item/assembly/control/ticket_machine/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/item/assembly/control/ticket_machine/LateInitialize() + find_machine() + +/obj/item/assembly/control/ticket_machine/proc/find_machine() //Locate the one to which we're linked + for(var/obj/machinery/ticket_machine/ticketsplease in GLOB.machines) + if(ticketsplease.id == id) + linked = ticketsplease + if(linked) + return TRUE + else + return FALSE + +/obj/item/assembly/control/ticket_machine/activate() + if(cooldown) + return + if(!linked) + return + cooldown = TRUE + linked.increment() + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) + +/obj/machinery/ticket_machine/update_icon() + switch(ticket_number) //Gives you an idea of how many tickets are left + if(0 to 49) + icon_state = "ticketmachine_100" + if(50 to 99) + icon_state = "ticketmachine_50" + if(100) + icon_state = "ticketmachine_0" + handle_maptext() + +/obj/machinery/ticket_machine/proc/handle_maptext() + switch(ticket_number) //This is here to handle maptext offsets so that the numbers align. + if(0 to 9) + maptext_x = 13 + if(10 to 99) + maptext_x = 10 + if(100) + maptext_x = 8 + maptext = "[current_number]" //Finally, apply the maptext + +/obj/machinery/ticket_machine/attackby(obj/item/I, mob/user, params) + ..() + if(istype(I, /obj/item/hand_labeler_refill)) + if(!(ticket_number >= max_number)) + to_chat(user, "[src] refuses [I]! There [max_number-ticket_number==1 ? "is" : "are"] still [max_number-ticket_number] ticket\s left!") + return + to_chat(user, "You start to refill [src]'s ticket holder (doing this will reset its ticket count!).") + if(do_after(user, 30, target = src)) + to_chat(user, "You insert [I] into [src] as it whirs nondescriptly.") + qdel(I) + ticket_number = 0 + current_number = 0 + if(tickets.len) + for(var/obj/item/ticket_machine_ticket/ticket in tickets) + ticket.audible_message("\the [ticket] disperses!") + qdel(ticket) + tickets.Cut() + max_number = initial(max_number) + update_icon() + return + +/obj/machinery/ticket_machine/proc/reset_cooldown() + ready = TRUE + +/obj/machinery/ticket_machine/attack_hand(mob/living/carbon/user) + . = ..() + if(!ready) + to_chat(user,"You press the button, but nothing happens...") + return + if(ticket_number >= max_number) + to_chat(user,"Ticket supply depleted, please refill this unit with a hand labeller refill cartridge!") + return + if((user in ticket_holders) && !(obj_flags & EMAGGED)) + to_chat(user, "You already have a ticket!") + return + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 100, FALSE) + ticket_number ++ + to_chat(user, "You take a ticket from [src], looks like you're ticket number #[ticket_number]...") + var/obj/item/ticket_machine_ticket/theirticket = new /obj/item/ticket_machine_ticket(get_turf(src)) + theirticket.name = "Ticket #[ticket_number]" + theirticket.maptext = "[ticket_number]" + theirticket.saved_maptext = "[ticket_number]" + theirticket.ticket_number = ticket_number + theirticket.source = src + theirticket.owner = user + user.put_in_hands(theirticket) + ticket_holders += user + tickets += theirticket + if(obj_flags & EMAGGED) //Emag the machine to destroy the HOP's life. + ready = FALSE + addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown)//Small cooldown to prevent piles of flaming tickets + theirticket.fire_act() + user.dropItemToGround(theirticket) + user.adjust_fire_stacks(1) + user.IgniteMob() + return + +/obj/item/ticket_machine_ticket + name = "Ticket" + desc = "A ticket which shows your place in the Head of Personnel's line. Made from Nanotrasen patented NanoPaper®. Though solid, its form seems to shimmer slightly. Feels (and burns) just like the real thing." + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "ticket" + maptext_x = 7 + maptext_y = 10 + w_class = WEIGHT_CLASS_TINY + resistance_flags = FLAMMABLE + max_integrity = 50 + var/saved_maptext = null + var/mob/living/carbon/owner + var/obj/machinery/ticket_machine/source + var/ticket_number + +/obj/item/ticket_machine_ticket/attack_hand(mob/user) + . = ..() + maptext = saved_maptext //For some reason, storage code removes all maptext off objs, this stops its number from being wiped off when taken out of storage. + +/obj/item/ticket_machine_ticket/attackby(obj/item/P, mob/living/carbon/human/user, params) //Stolen from papercode + if(burn_paper_product_attackby_check(P, user)) + return + + return ..() + +/obj/item/paper/extinguish() + ..() + update_icon() + +/obj/item/ticket_machine_ticket/Destroy() + if(owner && source) + source.ticket_holders -= owner + source.tickets[ticket_number] = null + owner = null + source = null + return ..() diff --git a/code/modules/photography/_pictures.dm b/code/modules/photography/_pictures.dm index f667e18f47..6f85cdb3a6 100644 --- a/code/modules/photography/_pictures.dm +++ b/code/modules/photography/_pictures.dm @@ -30,16 +30,16 @@ if(autogenerate_icon && !picture_icon && picture_image) regenerate_small_icon() -/datum/picture/proc/get_small_icon() +/datum/picture/proc/get_small_icon(iconstate) if(!picture_icon) - regenerate_small_icon() + regenerate_small_icon(iconstate) return picture_icon -/datum/picture/proc/regenerate_small_icon() +/datum/picture/proc/regenerate_small_icon(iconstate) if(!picture_image) return var/icon/small_img = icon(picture_image) - var/icon/ic = icon('icons/obj/items_and_weapons.dmi', "photo") + var/icon/ic = icon('icons/obj/items_and_weapons.dmi', iconstate ? iconstate :"photo") small_img.Scale(8, 8) ic.Blend(small_img,ICON_OVERLAY, 13, 13) picture_icon = ic diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 5c78709e9b..c363c549de 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -35,23 +35,23 @@ /obj/item/photo/update_icon_state() if(!istype(picture) || !picture.picture_image) return - var/icon/I = picture.get_small_icon() + var/icon/I = picture.get_small_icon(initial(icon_state)) if(I) icon = I /obj/item/photo/suicide_act(mob/living/carbon/user) user.visible_message("[user] is taking one last look at \the [src]! It looks like [user.p_theyre()] giving in to death!")//when you wanna look at photo of waifu one last time before you die... if (user.gender == MALE) - playsound(user, 'sound/voice/human/manlaugh1.ogg', 50, 1)//EVERY TIME I DO IT MAKES ME LAUGH + playsound(user, 'sound/voice/human/manlaugh1.ogg', 50, TRUE)//EVERY TIME I DO IT MAKES ME LAUGH else if (user.gender == FEMALE) - playsound(user, 'sound/voice/human/womanlaugh.ogg', 50, 1) + playsound(user, 'sound/voice/human/womanlaugh.ogg', 50, TRUE) return OXYLOSS /obj/item/photo/attack_self(mob/user) user.examinate(src) /obj/item/photo/attackby(obj/item/P, mob/user, params) - if(try_burn(P, user)) + if(burn_paper_product_attackby_check(P, user)) return if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) if(!user.is_literate()) @@ -60,31 +60,13 @@ var/txt = stripped_input(user, "What would you like to write on the back?", "Photo Writing", "", 128) if(txt && user.canUseTopic(src, BE_CLOSE)) scribble = txt - ..() - -/obj/item/photo/proc/try_burn(obj/item/I, mob/living/user) - var/ignition_message = I.ignition_effect(src, user) - if(!ignition_message) - return - . = TRUE - if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10) && Adjacent(user)) - user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ - "You miss [src] and accidentally light yourself on fire!") - if(user.is_holding(I)) //checking if they're holding it in case TK is involved - user.dropItemToGround(I) - user.adjust_fire_stacks(1) - user.IgniteMob() - return - - if(user.is_holding(src)) //no TK shit here. - user.dropItemToGround(src) - user.visible_message(ignition_message) - add_fingerprint(user) - fire_act(I.get_temperature()) + else + return ..() /obj/item/photo/examine(mob/user) . = ..() - if(in_range(src, user)) + + if(in_range(src, user) || isobserver(user)) show(user) else . += "You need to get closer to get a good look at this photo!" diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm index 56510fac87..88f56f111d 100644 --- a/code/modules/plumbing/plumbers/pill_press.dm +++ b/code/modules/plumbing/plumbers/pill_press.dm @@ -42,7 +42,7 @@ for (var/x in 1 to PILL_STYLE_COUNT) var/list/SL = list() SL["id"] = x - SL["htmltag"] = assets.icon_tag("pill[x]") + SL["class_name"] = assets.icon_class_name("pill[x]") pill_styles += list(SL) diff --git a/code/modules/pool/pool_controller.dm b/code/modules/pool/pool_controller.dm index c9bc6be3e5..17faa7a3e3 100644 --- a/code/modules/pool/pool_controller.dm +++ b/code/modules/pool/pool_controller.dm @@ -210,7 +210,7 @@ for(var/datum/reagent/R in reagents.reagent_list) if(R.reagent_state == SOLID) R.reagent_state = LIQUID - if(!swimee.reagents.has_reagent(POOL_NO_OVERDOSE_MEDICINE_MAX)) + if(!swimee.reagents.has_reagent(R.type,POOL_NO_OVERDOSE_MEDICINE_MAX)) swimee.reagents.add_reagent(R.type, 0.5) //osmosis reagents.reaction(swimee, VAPOR, 0.03) //3 percent. Need to find a way to prevent this from stacking chems at some point like the above. for(var/obj/objects in W) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 54b1362518..93fd9fe3d9 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -66,7 +66,7 @@ var/energy_transfer = delta_temperature*hot_air_heat_capacity*cold_air_heat_capacity/(hot_air_heat_capacity+cold_air_heat_capacity) var/heat = energy_transfer*(1-efficiency) - lastgen += LOGISTIC_FUNCTION(1000000,0.0034,delta_temperature,2000) + lastgen += LOGISTIC_FUNCTION(1250000,0.0001,delta_temperature,50000) hot_air.set_temperature(hot_air.return_temperature() - energy_transfer/hot_air_heat_capacity) cold_air.set_temperature(cold_air.return_temperature() + heat/cold_air_heat_capacity) @@ -139,7 +139,6 @@ . = ..() var/datum/browser/popup = new(user, "teg", "Thermo-Electric Generator", 460, 300) popup.set_content(get_menu()) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() /obj/machinery/power/generator/Topic(href, href_list) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index fd8f900552..e3fdbd3654 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -639,7 +639,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(produces_gas) env.merge(removed) air_update_turf() - + /********* END CITADEL CHANGES *********/ @@ -985,6 +985,13 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) layer = ABOVE_MOB_LAYER moveable = TRUE +/obj/machinery/power/supermatter_crystal/shard/examine(mob/user) + . = ..() + if(anchored) + . += "[src] is anchored to the floor." + else + . += "[src] is unanchored, but can be bolted down." + /obj/machinery/power/supermatter_crystal/shard/engine name = "anchored supermatter shard" is_main_engine = TRUE @@ -1026,12 +1033,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(L) switch(type) if(FLUX_ANOMALY) - var/obj/effect/anomaly/flux/A = new(L, 300, FALSE) + var/obj/effect/anomaly/flux/A = new(L, 300, SUPERMATTER_ANOMALY_DROP_CHANCE) A.explosive = FALSE if(GRAVITATIONAL_ANOMALY) - new /obj/effect/anomaly/grav(L, 250, FALSE) + new /obj/effect/anomaly/grav(L, 250, SUPERMATTER_ANOMALY_DROP_CHANCE) if(PYRO_ANOMALY) - new /obj/effect/anomaly/pyro(L, 200, FALSE) + new /obj/effect/anomaly/pyro(L, 200, SUPERMATTER_ANOMALY_DROP_CHANCE) /obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart = src, range = 5, zap_str = 4000, zap_flags = ZAP_SUPERMATTER_FLAGS, list/targets_hit = list()) if(QDELETED(zapstart)) diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index eb80548441..be24ea0fef 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -160,6 +160,14 @@ buckle_lying = FALSE buckle_requires_restraints = TRUE +/obj/machinery/power/grounding_rod/Initialize() + GLOB.grounding_rods |= src + return ..() + +/obj/machinery/power/grounding_rod/Destroy() + GLOB.grounding_rods.Remove(src) + return ..() + /obj/machinery/power/grounding_rod/default_unfasten_wrench(mob/user, obj/item/I, time = 20) . = ..() if(. == SUCCESSFUL_UNFASTEN) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 06e5d27f6d..89c5aa3316 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -31,6 +31,7 @@ var/produced_power var/energy_to_raise = 32 var/energy_to_lower = -20 + var/obj/machinery/power/grounding_rod/rodtarget /obj/singularity/energy_ball/Initialize(mapload, starting_energy = 50, is_miniball = FALSE) miniball = is_miniball @@ -60,11 +61,12 @@ return //don't annnounce miniballs ..() - /obj/singularity/energy_ball/process() if(!orbiting) handle_energy() + determine_containment() + move_the_basket_ball(4 + orbiting_balls.len * 1.5) playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, TRUE, extrarange = 30) @@ -87,12 +89,19 @@ if(orbiting_balls.len) . += "There are [orbiting_balls.len] mini-balls orbiting it." - /obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount) //we face the last thing we zapped, so this lets us favor that direction a bit var/move_bias = pick(GLOB.alldirs) + var/move_dir + for(var/rod in GLOB.grounding_rods) // grounding rods pull the tesla ball, picks the nearest one + if(!rodtarget || get_dist(src,rod) Alt-Click to look through the peephole." + //Template Stuff /datum/map_template/hilbertshotel name = "Hilbert's Hotel Room" diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 682a7fa14b..cee83c5b23 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -33,7 +33,6 @@ var/datum/browser/popup = new(user, "computer", M ? M.name : "shuttle", 300, 200) popup.set_content(" 30 August 2020raspy-on-osu updated:+16 September 2020+timothyteakettle updated:+
12 September 2020+BlueWildrose updated:+
DeltaFire15 updated:+
Putnam3145 updated:+
Sonic121x updated:+
TheObserver-sys updated:+
Trilbyspaceclone updated:+
Tupinambis updated:+
lolman360 updated:+
zeroisthebiggay updated:+
11 September 2020+Putnam3145 updated:+
09 September 2020+Putnam3145 updated:+
timothyteakettle updated:+
08 September 2020+Ghommie updated:+
KeRSedChaplain updated:+
silicons updated:+
07 September 2020+DeltaFire15 updated:+
Putnam for debugging ammo loading! Thx!! updated:+
06 September 2020+Putnam3145 updated:+
lolman360, NecromancerAnne updated:+
raspy-on-osu updated:+
05 September 2020+Bhijn updated:+
Putnam3145 updated:+
raspy-on-osu updated:+
04 September 2020+timothyteakettle updated:+
03 September 2020+Ghommie updated:+
02 September 2020+Putnam3145 updated:+
Tupinambis updated:+
raspy-on-osu updated:+
timothyteakettle updated:+
01 September 2020+BlueWildrose updated:+
31 August 2020+Arturlang updated:+
Chiirno updated:+
Couls, ported by NecromancerAnne updated:+
DeltaFire15 updated:+
Detective-Google updated:+
EmeraldSundisk updated:+
ForrestWick updated:+
Ghommie updated:+
LetterN updated:+
Lynxless updated:+
Putnam3145 updated:+
Sonic121x updated:+
kappa-sama updated:+
lolman360 updated:+
raspy-on-osu updated:+
silicons updated:+
timothyteakettle updated:+
zeroisthebiggay updated:+
30 August 2020+raspy-on-osu updated:+
28 August 2020+EmeraldSundisk updated:+
Hatterhat updated:+
lolman360 updated:+
shellspeed1 updated:
+ {children}
+
+ );
+};
+
+const NotificationsItem = props => {
+ const {
+ rightSlot,
+ children,
+ } = props;
+ return (
+ \n'
+ + messagesHtml
+ + ' \n'
+ + '\n'
+ + '\n';
+ // Create and send a nice blob
+ const blob = new Blob([pageHtml]);
+ const timestamp = new Date()
+ .toISOString()
+ .substring(0, 19)
+ .replace(/[-:]/g, '')
+ .replace('T', '-');
+ window.navigator.msSaveBlob(blob, `ss13-chatlog-${timestamp}.html`);
+ }
+}
+
+// Make chat renderer global so that we can continue using the same
+// instance after hot code replacement.
+if (!window.__chatRenderer__) {
+ window.__chatRenderer__ = new ChatRenderer();
+}
+
+/** @type {ChatRenderer} */
+export const chatRenderer = window.__chatRenderer__;
diff --git a/tgui/packages/tgui-panel/chat/replaceInTextNode.js b/tgui/packages/tgui-panel/chat/replaceInTextNode.js
new file mode 100644
index 0000000000..0db2b2193e
--- /dev/null
+++ b/tgui/packages/tgui-panel/chat/replaceInTextNode.js
@@ -0,0 +1,128 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+/**
+ * Replaces text matching a regular expression with a custom node.
+ */
+export const replaceInTextNode = (regex, createNode) => node => {
+ const text = node.textContent;
+ const textLength = text.length;
+ let match;
+ let lastIndex = 0;
+ let fragment;
+ let n = 0;
+ // eslint-disable-next-line no-cond-assign
+ while (match = regex.exec(text)) {
+ n += 1;
+ // Lazy init fragment
+ if (!fragment) {
+ fragment = document.createDocumentFragment();
+ }
+ const matchText = match[0];
+ const matchLength = matchText.length;
+ const matchIndex = match.index;
+ // Insert previous unmatched chunk
+ if (lastIndex < matchIndex) {
+ fragment.appendChild(document.createTextNode(
+ text.substring(lastIndex, matchIndex)));
+ }
+ lastIndex = matchIndex + matchLength;
+ // Create a wrapper node
+ fragment.appendChild(createNode(matchText));
+ }
+ if (fragment) {
+ // Insert the remaining unmatched chunk
+ if (lastIndex < textLength) {
+ fragment.appendChild(document.createTextNode(
+ text.substring(lastIndex, textLength)));
+ }
+ // Commit the fragment
+ node.parentNode.replaceChild(fragment, node);
+ }
+ return n;
+};
+
+
+// Highlight
+// --------------------------------------------------------
+
+/**
+ * Default highlight node.
+ */
+const createHighlightNode = text => {
+ const node = document.createElement('span');
+ node.setAttribute('style',
+ 'background-color:#fd4;color:#000');
+ node.textContent = text;
+ return node;
+};
+
+/**
+ * Highlights the text in the node based on the provided regular expression.
+ *
+ * @param {Node} node Node which you want to process
+ * @param {RegExp} regex Regular expression to highlight
+ * @param {(text: string) => Node} createNode Highlight node creator
+ * @returns {number} Number of matches
+ */
+export const highlightNode = (
+ node,
+ regex,
+ createNode = createHighlightNode,
+) => {
+ if (!createNode) {
+ createNode = createHighlightNode;
+ }
+ let n = 0;
+ const childNodes = node.childNodes;
+ for (let i = 0; i < childNodes.length; i++) {
+ const node = childNodes[i];
+ // Is a text node
+ if (node.nodeType === 3) {
+ n += replaceInTextNode(regex, createNode)(node);
+ }
+ else {
+ n += highlightNode(node, regex, createNode);
+ }
+ }
+ return n;
+};
+
+
+// Linkify
+// --------------------------------------------------------
+
+const URL_REGEX = /(?:(?:https?:\/\/)|(?:www\.))(?:[^ ]*?\.[^ ]*?)+[-A-Za-z0-9+&@#/%?=~_|$!:,.;()]+/ig;
+
+/**
+ * Highlights the text in the node based on the provided regular expression.
+ *
+ * @param {Node} node Node which you want to process
+ * @returns {number} Number of matches
+ */
+export const linkifyNode = node => {
+ let n = 0;
+ const childNodes = node.childNodes;
+ for (let i = 0; i < childNodes.length; i++) {
+ const node = childNodes[i];
+ const tag = String(node.nodeName).toLowerCase();
+ // Is a text node
+ if (node.nodeType === 3) {
+ n += linkifyTextNode(node);
+ }
+ else if (tag !== 'a') {
+ n += linkifyNode(node);
+ }
+ }
+ return n;
+};
+
+const linkifyTextNode = replaceInTextNode(URL_REGEX, text => {
+ const node = document.createElement('a');
+ node.href = text;
+ node.textContent = text;
+ return node;
+});
diff --git a/tgui/packages/tgui-panel/chat/selectors.js b/tgui/packages/tgui-panel/chat/selectors.js
new file mode 100644
index 0000000000..5d630f3e52
--- /dev/null
+++ b/tgui/packages/tgui-panel/chat/selectors.js
@@ -0,0 +1,21 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { map } from 'common/collections';
+
+export const selectChat = state => state.chat;
+
+export const selectChatPages = state => (
+ map(id => state.chat.pageById[id])(state.chat.pages)
+);
+
+export const selectCurrentChatPage = state => (
+ state.chat.pageById[state.chat.currentPage]
+);
+
+export const selectChatPageById = id => state => (
+ state.chat.pageById[id]
+);
diff --git a/tgui/packages/tgui-panel/game/actions.js b/tgui/packages/tgui-panel/game/actions.js
new file mode 100644
index 0000000000..e40014c44b
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/actions.js
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { createAction } from 'common/redux';
+
+export const roundRestarted = createAction('roundrestart');
+export const connectionLost = createAction('game/connectionLost');
+export const connectionRestored = createAction('game/connectionRestored');
diff --git a/tgui/packages/tgui-panel/game/constants.js b/tgui/packages/tgui-panel/game/constants.js
new file mode 100644
index 0000000000..9df3a58d29
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/constants.js
@@ -0,0 +1,7 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+export const CONNECTION_LOST_AFTER = 15000;
diff --git a/tgui/packages/tgui-panel/game/hooks.js b/tgui/packages/tgui-panel/game/hooks.js
new file mode 100644
index 0000000000..e9567b916b
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/hooks.js
@@ -0,0 +1,12 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { useSelector } from 'common/redux';
+import { selectGame } from './selectors';
+
+export const useGame = context => {
+ return useSelector(context, selectGame);
+};
diff --git a/tgui/packages/tgui-panel/game/index.js b/tgui/packages/tgui-panel/game/index.js
new file mode 100644
index 0000000000..3cca2e6557
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/index.js
@@ -0,0 +1,9 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+export { useGame } from './hooks';
+export { gameMiddleware } from './middleware';
+export { gameReducer } from './reducer';
diff --git a/tgui/packages/tgui-panel/game/middleware.js b/tgui/packages/tgui-panel/game/middleware.js
new file mode 100644
index 0000000000..854369dc54
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/middleware.js
@@ -0,0 +1,48 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { pingSuccess } from '../ping/actions';
+import { connectionLost, connectionRestored, roundRestarted } from './actions';
+import { selectGame } from './selectors';
+import { CONNECTION_LOST_AFTER } from './constants';
+
+const withTimestamp = action => ({
+ ...action,
+ meta: {
+ ...action.meta,
+ now: Date.now(),
+ },
+});
+
+export const gameMiddleware = store => {
+ let lastPingedAt;
+ setInterval(() => {
+ const state = store.getState();
+ if (!state) {
+ return;
+ }
+ const game = selectGame(state);
+ const pingsAreFailing = lastPingedAt
+ && Date.now() >= lastPingedAt + CONNECTION_LOST_AFTER;
+ if (!game.connectionLostAt && pingsAreFailing) {
+ store.dispatch(withTimestamp(connectionLost()));
+ }
+ if (game.connectionLostAt && !pingsAreFailing) {
+ store.dispatch(withTimestamp(connectionRestored()));
+ }
+ }, 1000);
+ return next => action => {
+ const { type, payload, meta } = action;
+ if (type === pingSuccess.type) {
+ lastPingedAt = meta.now;
+ return next(action);
+ }
+ if (type === roundRestarted.type) {
+ return next(withTimestamp(action));
+ }
+ return next(action);
+ };
+};
diff --git a/tgui/packages/tgui-panel/game/reducer.js b/tgui/packages/tgui-panel/game/reducer.js
new file mode 100644
index 0000000000..97535524c5
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/reducer.js
@@ -0,0 +1,39 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { connectionLost } from './actions';
+import { connectionRestored } from './actions';
+
+const initialState = {
+ // TODO: This is where round info should be.
+ roundId: null,
+ roundTime: null,
+ roundRestartedAt: null,
+ connectionLostAt: null,
+};
+
+export const gameReducer = (state = initialState, action) => {
+ const { type, payload, meta } = action;
+ if (type === 'roundrestart') {
+ return {
+ ...state,
+ roundRestartedAt: meta.now,
+ };
+ }
+ if (type === connectionLost.type) {
+ return {
+ ...state,
+ connectionLostAt: meta.now,
+ };
+ }
+ if (type === connectionRestored.type) {
+ return {
+ ...state,
+ connectionLostAt: null,
+ };
+ }
+ return state;
+};
diff --git a/tgui/packages/tgui-panel/game/selectors.js b/tgui/packages/tgui-panel/game/selectors.js
new file mode 100644
index 0000000000..dc2d7040f9
--- /dev/null
+++ b/tgui/packages/tgui-panel/game/selectors.js
@@ -0,0 +1,7 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+export const selectGame = state => state.game;
diff --git a/tgui/packages/tgui-panel/index.js b/tgui/packages/tgui-panel/index.js
new file mode 100644
index 0000000000..6dbf5fe8f8
--- /dev/null
+++ b/tgui/packages/tgui-panel/index.js
@@ -0,0 +1,136 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+// Polyfills
+import 'core-js/es';
+import 'core-js/web/immediate';
+import 'core-js/web/queue-microtask';
+import 'core-js/web/timers';
+import 'regenerator-runtime/runtime';
+import 'tgui-polyfill/html5shiv';
+import 'tgui-polyfill/ie8';
+import 'tgui-polyfill/dom4';
+import 'tgui-polyfill/css-om';
+import 'tgui-polyfill/inferno';
+
+// Themes
+import './styles/main.scss';
+import './styles/themes/light.scss';
+
+import { perf } from 'common/perf';
+import { combineReducers } from 'common/redux';
+import { setupHotReloading } from 'tgui-dev-server/link/client';
+import { setupGlobalEvents } from 'tgui/events';
+import { captureExternalLinks } from 'tgui/links';
+import { createRenderer } from 'tgui/renderer';
+import { configureStore, StoreProvider } from 'tgui/store';
+import { audioMiddleware, audioReducer } from './audio';
+import { chatMiddleware, chatReducer } from './chat';
+import { gameMiddleware, gameReducer } from './game';
+import { setupPanelFocusHacks } from './panelFocus';
+import { pingMiddleware, pingReducer } from './ping';
+import { settingsMiddleware, settingsReducer } from './settings';
+import { telemetryMiddleware } from './telemetry';
+
+perf.mark('inception', window.performance?.timing?.navigationStart);
+perf.mark('init');
+
+const store = configureStore({
+ reducer: combineReducers({
+ audio: audioReducer,
+ chat: chatReducer,
+ game: gameReducer,
+ ping: pingReducer,
+ settings: settingsReducer,
+ }),
+ middleware: {
+ pre: [
+ chatMiddleware,
+ pingMiddleware,
+ telemetryMiddleware,
+ settingsMiddleware,
+ audioMiddleware,
+ gameMiddleware,
+ ],
+ },
+});
+
+const renderApp = createRenderer(() => {
+ const { Panel } = require('./Panel');
+ return (
+
+
+ );
+};
diff --git a/tgui/packages/tgui-panel/ping/actions.js b/tgui/packages/tgui-panel/ping/actions.js
new file mode 100644
index 0000000000..ba3582f131
--- /dev/null
+++ b/tgui/packages/tgui-panel/ping/actions.js
@@ -0,0 +1,25 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { createAction } from 'common/redux';
+
+export const pingSuccess = createAction(
+ 'ping/success',
+ ping => {
+ const now = Date.now();
+ const roundtrip = (now - ping.sentAt) * 0.5;
+ return {
+ payload: {
+ lastId: ping.id,
+ roundtrip,
+ },
+ meta: { now },
+ };
+ }
+);
+
+export const pingFail = createAction('ping/fail');
+export const pingReply = createAction('ping/reply');
diff --git a/tgui/packages/tgui-panel/ping/constants.js b/tgui/packages/tgui-panel/ping/constants.js
new file mode 100644
index 0000000000..5d9a0472c5
--- /dev/null
+++ b/tgui/packages/tgui-panel/ping/constants.js
@@ -0,0 +1,12 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+export const PING_INTERVAL = 2500;
+export const PING_TIMEOUT = 2000;
+export const PING_MAX_FAILS = 3;
+export const PING_QUEUE_SIZE = 8;
+export const PING_ROUNDTRIP_BEST = 50;
+export const PING_ROUNDTRIP_WORST = 200;
diff --git a/tgui/packages/tgui-panel/ping/index.js b/tgui/packages/tgui-panel/ping/index.js
new file mode 100644
index 0000000000..1bbbe3ed34
--- /dev/null
+++ b/tgui/packages/tgui-panel/ping/index.js
@@ -0,0 +1,9 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+export { pingMiddleware } from './middleware';
+export { PingIndicator } from './PingIndicator';
+export { pingReducer } from './reducer';
diff --git a/tgui/packages/tgui-panel/ping/middleware.js b/tgui/packages/tgui-panel/ping/middleware.js
new file mode 100644
index 0000000000..fdd8410957
--- /dev/null
+++ b/tgui/packages/tgui-panel/ping/middleware.js
@@ -0,0 +1,50 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { sendMessage } from 'tgui/backend';
+import { pingFail, pingSuccess } from './actions';
+import { PING_INTERVAL, PING_QUEUE_SIZE, PING_TIMEOUT } from './constants';
+
+export const pingMiddleware = store => {
+ let initialized = false;
+ let index = 0;
+ const pings = [];
+ const sendPing = () => {
+ for (let i = 0; i < PING_QUEUE_SIZE; i++) {
+ const ping = pings[i];
+ if (ping && Date.now() - ping.sentAt > PING_TIMEOUT) {
+ pings[i] = null;
+ store.dispatch(pingFail());
+ }
+ }
+ const ping = { index, sentAt: Date.now() };
+ pings[index] = ping;
+ sendMessage({
+ type: 'ping',
+ payload: { index },
+ });
+ index = (index + 1) % PING_QUEUE_SIZE;
+ };
+ return next => action => {
+ const { type, payload } = action;
+ if (!initialized) {
+ initialized = true;
+ setInterval(sendPing, PING_INTERVAL);
+ sendPing();
+ }
+ if (type === 'pingReply') {
+ const { index } = payload;
+ const ping = pings[index];
+ // Received a timed out ping
+ if (!ping) {
+ return;
+ }
+ pings[index] = null;
+ return next(pingSuccess(ping));
+ }
+ return next(action);
+ };
+};
diff --git a/tgui/packages/tgui-panel/ping/reducer.js b/tgui/packages/tgui-panel/ping/reducer.js
new file mode 100644
index 0000000000..22d146f8b8
--- /dev/null
+++ b/tgui/packages/tgui-panel/ping/reducer.js
@@ -0,0 +1,42 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { clamp01, scale } from 'common/math';
+import { pingFail, pingSuccess } from './actions';
+import { PING_MAX_FAILS, PING_ROUNDTRIP_BEST, PING_ROUNDTRIP_WORST } from './constants';
+
+export const pingReducer = (state = {}, action) => {
+ const { type, payload } = action;
+ if (type === pingSuccess.type) {
+ const { roundtrip } = payload;
+ const prevRoundtrip = state.roundtripAvg || roundtrip;
+ const roundtripAvg = Math.round(prevRoundtrip * 0.4 + roundtrip * 0.6);
+ const networkQuality = 1 - scale(roundtripAvg,
+ PING_ROUNDTRIP_BEST, PING_ROUNDTRIP_WORST);
+ return {
+ roundtrip,
+ roundtripAvg,
+ failCount: 0,
+ networkQuality,
+ };
+ }
+ if (type === pingFail.type) {
+ const { failCount = 0 } = state;
+ const networkQuality = clamp01(state.networkQuality
+ - failCount / PING_MAX_FAILS);
+ const nextState = {
+ ...state,
+ failCount: failCount + 1,
+ networkQuality,
+ };
+ if (failCount > PING_MAX_FAILS) {
+ nextState.roundtrip = undefined;
+ nextState.roundtripAvg = undefined;
+ }
+ return nextState;
+ }
+ return state;
+};
diff --git a/tgui/packages/tgui-panel/ping/selectors.js b/tgui/packages/tgui-panel/ping/selectors.js
new file mode 100644
index 0000000000..cfbe95c2f3
--- /dev/null
+++ b/tgui/packages/tgui-panel/ping/selectors.js
@@ -0,0 +1,7 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+export const selectPing = state => state.ping;
diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.js b/tgui/packages/tgui-panel/settings/SettingsPanel.js
new file mode 100644
index 0000000000..7a4c81c2da
--- /dev/null
+++ b/tgui/packages/tgui-panel/settings/SettingsPanel.js
@@ -0,0 +1,142 @@
+/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */
+
+import { toFixed } from 'common/math';
+import { useDispatch, useSelector } from 'common/redux';
+import { Box, Button, ColorBox, Divider, Dropdown, Flex, Input, LabeledList, NumberInput, Section, Tabs, TextArea } from 'tgui/components';
+import { ChatPageSettings } from '../chat';
+import { rebuildChat, saveChatToDisk } from '../chat/actions';
+import { THEMES } from '../themes';
+import { changeSettingsTab, updateSettings } from './actions';
+import { SETTINGS_TABS } from './constants';
+import { selectActiveTab, selectSettings } from './selectors';
+
+export const SettingsPanel = (props, context) => {
+ const activeTab = useSelector(context, selectActiveTab);
+ const dispatch = useDispatch(context);
+ return (
+ {
if (e.keyCode === 13) {
- const value = clamp(e.target.value, minValue, maxValue);
+ const value = clamp(
+ parseFloat(e.target.value),
+ minValue,
+ maxValue);
+ if (Number.isNaN(value)) {
+ this.setState({
+ editing: false,
+ });
+ return;
+ }
this.setState({
editing: false,
value,
diff --git a/tgui/packages/tgui/components/Dropdown.js b/tgui/packages/tgui/components/Dropdown.js
index 67b12c3b38..adbb13de5b 100644
--- a/tgui/packages/tgui/components/Dropdown.js
+++ b/tgui/packages/tgui/components/Dropdown.js
@@ -49,14 +49,14 @@ export class Dropdown extends Component {
buildMenu() {
const { options = [] } = this.props;
const ops = options.map(option => (
-
);
};
@@ -37,20 +37,42 @@ const Tab = props => {
const {
className,
selected,
- altSelection,
+ color,
+ icon,
+ leftSlot,
+ rightSlot,
+ children,
...rest
} = props;
return (
-
+ {...computeBoxProps(rest)}>
+ {canRender(leftSlot) && (
+ {
this.setSelected(option);
}}>
{option}
-
+
));
return ops.length ? ops : 'No Options Found';
}
diff --git a/tgui/packages/tgui/components/Flex.js b/tgui/packages/tgui/components/Flex.js
index 02d2fac314..2477f4c502 100644
--- a/tgui/packages/tgui/components/Flex.js
+++ b/tgui/packages/tgui/components/Flex.js
@@ -50,6 +50,7 @@ Flex.defaultHooks = pureComponentHooks;
export const computeFlexItemProps = props => {
const {
className,
+ style,
grow,
order,
shrink,
@@ -63,10 +64,11 @@ export const computeFlexItemProps = props => {
className: classes([
'Flex__item',
Byond.IS_LTE_IE10 && 'Flex__item--iefix',
+ Byond.IS_LTE_IE10 && grow > 0 && 'Flex__item--iefix--grow',
className,
]),
style: {
- ...rest.style,
+ ...style,
'flex-grow': grow,
'flex-shrink': shrink,
'flex-basis': unit(basis),
diff --git a/tgui/packages/tgui/components/Input.js b/tgui/packages/tgui/components/Input.js
index 623fa92bb4..b0c5f3f0cb 100644
--- a/tgui/packages/tgui/components/Input.js
+++ b/tgui/packages/tgui/components/Input.js
@@ -4,16 +4,16 @@
* @license MIT
*/
-import { classes, isFalsy } from 'common/react';
+import { classes } from 'common/react';
import { Component, createRef } from 'inferno';
import { Box } from './Box';
+import { KEY_ESCAPE, KEY_ENTER } from 'common/keycodes';
-const toInputValue = value => {
- if (isFalsy(value)) {
- return '';
- }
- return value;
-};
+export const toInputValue = value => (
+ typeof value !== 'number' && typeof value !== 'string'
+ ? ''
+ : String(value)
+);
export class Input extends Component {
constructor() {
@@ -50,7 +50,7 @@ export class Input extends Component {
};
this.handleKeyDown = e => {
const { onInput, onChange, onEnter } = this.props;
- if (e.keyCode === 13) {
+ if (e.keyCode === KEY_ENTER) {
this.setEditing(false);
if (onChange) {
onChange(e, e.target.value);
@@ -68,7 +68,7 @@ export class Input extends Component {
}
return;
}
- if (e.keyCode === 27) {
+ if (e.keyCode === KEY_ESCAPE) {
this.setEditing(false);
e.target.value = toInputValue(this.props.value);
e.target.blur();
@@ -83,7 +83,6 @@ export class Input extends Component {
if (input) {
input.value = toInputValue(nextValue);
}
-
if (this.props.autoFocus) {
setTimeout(() => input.focus(), 1);
}
@@ -120,6 +119,7 @@ export class Input extends Component {
const {
className,
fluid,
+ monospace,
...rest
} = boxProps;
return (
@@ -127,6 +127,7 @@ export class Input extends Component {
className={classes([
'Input',
fluid && 'Input--fluid',
+ monospace && 'Input--monospace',
className,
])}
{...rest}>
diff --git a/tgui/packages/tgui/components/Knob.js b/tgui/packages/tgui/components/Knob.js
index 4861e71bf3..c165df46fd 100644
--- a/tgui/packages/tgui/components/Knob.js
+++ b/tgui/packages/tgui/components/Knob.js
@@ -37,7 +37,7 @@ export const Knob = props => {
fillValue,
color,
ranges = {},
- size,
+ size = 1,
bipolar,
children,
...rest
@@ -91,7 +91,7 @@ export const Knob = props => {
])}
{...computeBoxProps({
style: {
- 'font-size': size + 'rem',
+ 'font-size': size + 'em',
...style,
},
...rest,
diff --git a/tgui/packages/tgui/components/NumberInput.js b/tgui/packages/tgui/components/NumberInput.js
index cba6f5025e..306772c8a5 100644
--- a/tgui/packages/tgui/components/NumberInput.js
+++ b/tgui/packages/tgui/components/NumberInput.js
@@ -10,6 +10,8 @@ import { Component, createRef } from 'inferno';
import { AnimatedNumber } from './AnimatedNumber';
import { Box } from './Box';
+const DEFAULT_UPDATE_RATE = 400;
+
export class NumberInput extends Component {
constructor(props) {
super(props);
@@ -64,7 +66,7 @@ export class NumberInput extends Component {
if (dragging && onDrag) {
onDrag(e, value);
}
- }, 500);
+ }, this.props.updateRate || DEFAULT_UPDATE_RATE);
document.addEventListener('mousemove', this.handleDragMove);
document.addEventListener('mouseup', this.handleDragEnd);
};
@@ -215,7 +217,16 @@ export class NumberInput extends Component {
if (!editing) {
return;
}
- const value = clamp(e.target.value, minValue, maxValue);
+ const value = clamp(
+ parseFloat(e.target.value),
+ minValue,
+ maxValue);
+ if (Number.isNaN(value)) {
+ this.setState({
+ editing: false,
+ });
+ return;
+ }
this.setState({
editing: false,
value,
@@ -230,7 +241,16 @@ export class NumberInput extends Component {
}}
onKeyDown={e => {
if (e.keyCode === 13) {
- const value = clamp(e.target.value, minValue, maxValue);
+ const value = clamp(
+ parseFloat(e.target.value),
+ minValue,
+ maxValue);
+ if (Number.isNaN(value)) {
+ this.setState({
+ editing: false,
+ });
+ return;
+ }
this.setState({
editing: false,
value,
diff --git a/tgui/packages/tgui/components/Section.js b/tgui/packages/tgui/components/Section.js
index af59bc4022..a1c78a0f67 100644
--- a/tgui/packages/tgui/components/Section.js
+++ b/tgui/packages/tgui/components/Section.js
@@ -4,48 +4,75 @@
* @license MIT
*/
-import { classes, isFalsy, pureComponentHooks } from 'common/react';
+import { canRender, classes } from 'common/react';
+import { Component, createRef } from 'inferno';
+import { addScrollableNode, removeScrollableNode } from '../events';
import { computeBoxClassName, computeBoxProps } from './Box';
-export const Section = props => {
- const {
- className,
- title,
- level = 1,
- buttons,
- fill,
- children,
- ...rest
- } = props;
- const hasTitle = !isFalsy(title) || !isFalsy(buttons);
- const hasContent = !isFalsy(children);
- return (
-
- {hasTitle && (
-
- );
-};
+export class Section extends Component {
+ constructor(props) {
+ super(props);
+ this.ref = createRef();
+ this.scrollable = props.scrollable;
+ }
-Section.defaultHooks = pureComponentHooks;
+ componentDidMount() {
+ if (this.scrollable) {
+ addScrollableNode(this.ref.current);
+ }
+ }
+
+ componentWillUnmount() {
+ if (this.scrollable) {
+ removeScrollableNode(this.ref.current);
+ }
+ }
+
+ render() {
+ const {
+ className,
+ title,
+ level = 1,
+ buttons,
+ fill,
+ fitted,
+ scrollable,
+ children,
+ ...rest
+ } = this.props;
+ const hasTitle = canRender(title) || canRender(buttons);
+ const hasContent = canRender(children);
+ return (
+
-
- {title}
-
-
- )}
- {hasContent && (
-
- {buttons}
-
-
- {children}
-
- )}
-
+ {hasTitle && (
+
+ );
+ }
+}
diff --git a/tgui/packages/tgui/components/Tabs.js b/tgui/packages/tgui/components/Tabs.js
index be5485d12f..359b00d359 100644
--- a/tgui/packages/tgui/components/Tabs.js
+++ b/tgui/packages/tgui/components/Tabs.js
@@ -4,14 +4,15 @@
* @license MIT
*/
-import { classes } from 'common/react';
+import { canRender, classes } from 'common/react';
import { computeBoxClassName, computeBoxProps } from './Box';
-import { Button } from './Button';
+import { Icon } from './Icon';
export const Tabs = props => {
const {
className,
vertical,
+ fluid,
children,
...rest
} = props;
@@ -22,13 +23,12 @@ export const Tabs = props => {
vertical
? 'Tabs--vertical'
: 'Tabs--horizontal',
+ fluid && 'Tabs--fluid',
className,
computeBoxClassName(rest),
])}
{...computeBoxProps(rest)}>
-
+
+ {title}
+
+
+ )}
+ {fitted && children
+ || hasContent && (
+
+ {buttons}
+
+
+ {children}
+
+ )}
+
- {children}
-
+ {children}
+ {leftSlot}
+
+ ) || !!icon && (
+
+
+ )}
+
+ {children}
+
+ {canRender(rightSlot) && (
+
+ {rightSlot}
+
+ )}
+
);
};
diff --git a/tgui/packages/tgui/components/TextArea.js b/tgui/packages/tgui/components/TextArea.js
index 9495b4f26a..d9d752912d 100644
--- a/tgui/packages/tgui/components/TextArea.js
+++ b/tgui/packages/tgui/components/TextArea.js
@@ -1,23 +1,15 @@
/**
* @file
* @copyright 2020 Aleksej Komarov
- * @author Original Aleksej Komarov
- * @author Changes Warlockd (https://github.com/warlockd)
+ * @author Warlockd
* @license MIT
*/
-
-import { classes, isFalsy } from 'common/react';
+import { classes } from 'common/react';
import { Component, createRef } from 'inferno';
import { Box } from './Box';
-
-
-const toInputValue = value => {
- if (isFalsy(value)) {
- return '';
- }
- return value;
-};
+import { toInputValue } from './Input';
+import { KEY_ESCAPE } from 'common/keycodes';
export class TextArea extends Component {
constructor(props, context) {
@@ -30,15 +22,6 @@ export class TextArea extends Component {
const {
dontUseTabForIndent = false,
} = props;
- // found this hack that expands the text area without
- // having to hard set rows all the time
- // there has GOT to be a better way though
- this.autoresize = () => {
- if (this.fillerRef && this.textareaRef) {
- // this.fillerRef.current.innerHTML =
- // this.textareaRef.current.value.replace(/\n/g, ''); - } - }; this.handleOnInput = e => { const { editing } = this.state; const { onInput } = this.props; @@ -48,7 +31,6 @@ export class TextArea extends Component { if (onInput) { onInput(e, e.target.value); } - this.autoresize(); }; this.handleOnChange = e => { const { editing } = this.state; @@ -59,7 +41,6 @@ export class TextArea extends Component { if (onChange) { onChange(e, e.target.value); } - this.autoresize(); }; this.handleKeyPress = e => { const { editing } = this.state; @@ -70,11 +51,16 @@ export class TextArea extends Component { if (onKeyPress) { onKeyPress(e, e.target.value); } - this.autoresize(); }; this.handleKeyDown = e => { const { editing } = this.state; const { onKeyDown } = this.props; + if (e.keyCode === KEY_ESCAPE) { + this.setEditing(false); + e.target.value = toInputValue(this.props.value); + e.target.blur(); + return; + } if (!editing) { this.setEditing(true); } @@ -82,19 +68,17 @@ export class TextArea extends Component { const keyCode = e.keyCode || e.which; if (keyCode === 9) { e.preventDefault(); - const s = e.target.selectionStart; - e.target.value - = e.target.value.substring(0, e.target.selectionStart) - + "\t" - + e.target.value.substring(e.target.selectionEnd); - e.target.selectionEnd = s +1; + const { value, selectionStart, selectionEnd } = e.target; + e.target.value = ( + value.substring(0, selectionStart) + "\t" + + value.substring(selectionEnd) + ); + e.target.selectionEnd = selectionStart + 1; } } - if (onKeyDown) { onKeyDown(e, e.target.value); } - this.autoresize(); }; this.handleFocus = e => { const { editing } = this.state; @@ -119,7 +103,6 @@ export class TextArea extends Component { const input = this.textareaRef.current; if (input) { input.value = toInputValue(nextValue); - this.autoresize(); } } @@ -130,18 +113,18 @@ export class TextArea extends Component { const input = this.textareaRef.current; if (input && !editing && prevValue !== nextValue) { input.value = toInputValue(nextValue); - this.autoresize(); } } setEditing(editing) { this.setState({ editing }); } + getValue() { return this.textareaRef.current && this.textareaRef.current.value; } + render() { - const { props } = this; // Input only props const { onChange, @@ -167,12 +150,9 @@ export class TextArea extends Component { 'TextArea', fluid && 'TextArea--fluid', className, - ])} {...rest}> - |