diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm
index 2f27c3f747..5f79f64c57 100644
--- a/_maps/map_files/CogStation/CogStation.dmm
+++ b/_maps/map_files/CogStation/CogStation.dmm
@@ -346,9 +346,6 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/turf/open/space/basic,
/area/solar/starboard/fore)
"aaU" = (
@@ -410,10 +407,7 @@
"abc" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "2-4"
- },
-/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "0-4"
},
/turf/open/space/basic,
/area/solar/starboard/fore)
@@ -432,10 +426,7 @@
"abe" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "0-2"
},
/turf/open/space/basic,
/area/solar/starboard/fore)
@@ -1699,10 +1690,10 @@
"aee" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "2-4"
+ icon_state = "0-8"
},
/turf/open/space/basic,
-/area/solar/starboard/fore)
+/area/solar/port)
"aef" = (
/obj/machinery/atmospherics/pipe/manifold/general/visible{
dir = 8
@@ -3426,7 +3417,7 @@
"aiq" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "0-2"
},
/turf/open/space/basic,
/area/solar/port)
@@ -3706,17 +3697,9 @@
/area/maintenance/starboard/fore)
"ajc" = (
/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/structure/cable{
- icon_state = "2-8"
- },
-/obj/structure/cable{
- icon_state = "1-8"
- },
+/obj/structure/cable,
/turf/open/space/basic,
-/area/solar/starboard/fore)
+/area/solar/port)
"ajd" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -6992,14 +6975,9 @@
/area/security/brig)
"aqA" = (
/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
+/obj/structure/cable,
/turf/open/space/basic,
-/area/solar/starboard/fore)
+/area/solar/starboard/aft)
"aqB" = (
/turf/closed/wall,
/area/hydroponics)
@@ -9058,10 +9036,6 @@
/area/hallway/secondary/civilian)
"avg" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Brig";
- req_access_txt = "2"
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -9070,6 +9044,12 @@
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 8
},
+/obj/machinery/turnstile{
+ name = "Genpop Entrance Turnstile";
+ icon_state = "turnstile_map";
+ dir = 8;
+ req_access_txt = "69"
+ },
/turf/open/floor/plasteel,
/area/security/prison)
"avh" = (
@@ -9177,13 +9157,10 @@
"avr" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "1-8"
- },
-/obj/structure/cable{
- icon_state = "1-4"
+ icon_state = "0-8"
},
/turf/open/space/basic,
-/area/solar/starboard/fore)
+/area/solar/starboard/aft)
"avs" = (
/turf/closed/wall,
/area/router/service)
@@ -9743,7 +9720,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 8
},
@@ -9751,6 +9727,12 @@
id = "briglockdown";
name = "Brig Lockdown"
},
+/obj/machinery/turnstile{
+ name = "Genpop Entrance Turnstile";
+ icon_state = "turnstile_map";
+ dir = 8;
+ req_access_txt = "69"
+ },
/turf/open/floor/plasteel,
/area/security/prison)
"awI" = (
@@ -12721,6 +12703,9 @@
pixel_x = 24;
req_access_txt = "2"
},
+/obj/effect/turf_decal/arrows/red{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aCF" = (
@@ -12743,22 +12728,21 @@
/turf/open/floor/plasteel,
/area/security/brig)
"aCH" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Brig";
- req_access_txt = "2"
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
-/obj/effect/turf_decal/delivery,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
+/obj/effect/turf_decal/arrows/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/arrows/red{
+ dir = 1
},
/turf/open/floor/plasteel,
-/area/security/prison)
+/area/security/brig)
"aCI" = (
/obj/effect/turf_decal/tile/green,
/obj/effect/turf_decal/tile/green{
@@ -13411,15 +13395,23 @@
/turf/open/floor/plating,
/area/maintenance/solars/port)
"aDW" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
+/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/poddoor/preopen{
+ id = "briglockdown";
+ name = "Brig Lockdown"
+ },
+/obj/machinery/turnstile{
+ dir = 4;
+ name = "Genpop Exit Turnstile";
+ req_access_txt = "70"
+ },
/turf/open/floor/plasteel,
-/area/security/brig)
+/area/security/prison)
"aDX" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -13431,6 +13423,10 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/poddoor/preopen{
+ id = "briglockdown";
+ name = "Brig Lockdown"
+ },
/turf/open/floor/plasteel,
/area/security/prison)
"aDZ" = (
@@ -22795,12 +22791,6 @@
/area/library)
"aXg" = (
/obj/structure/bookcase/random/reference,
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
/turf/open/floor/wood,
/area/library)
"aXh" = (
@@ -24370,16 +24360,14 @@
/turf/open/floor/carpet,
/area/crew_quarters/bar)
"bau" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/camera{
- c_tag = "Aft Maintenance - Port";
- pixel_x = 22
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+/obj/structure/disposalpipe/junction/flip{
dir = 8
},
-/turf/open/floor/plating,
-/area/maintenance/aft)
+/turf/open/floor/plasteel/white,
+/area/science/lab)
"bav" = (
/obj/structure/chair/sofa/right,
/obj/machinery/firealarm{
@@ -26759,24 +26747,18 @@
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"bga" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/machinery/power/apc/highcap/five_k{
- areastring = "/area/hallway/primary/aft";
- dir = 1;
- name = "Aft Primary Hallway APC";
- pixel_x = 1;
- pixel_y = 24
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
},
/obj/structure/cable{
- icon_state = "2-4"
+ icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 10
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/turf/open/floor/plating,
-/area/maintenance/aft)
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
"bgb" = (
/obj/structure/disposalpipe/sorting/mail{
sortType = 30
@@ -31400,13 +31382,28 @@
/turf/open/space/basic,
/area/space/nearstation)
"bpA" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/plating,
-/area/maintenance/aft)
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
"bpB" = (
-/obj/effect/spawner/lootdrop/maintenance,
-/turf/open/floor/plating,
-/area/maintenance/aft)
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/hallway/primary/aft)
"bpC" = (
/obj/effect/turf_decal/plaque{
icon_state = "L10"
@@ -31726,13 +31723,10 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bqs" = (
-/obj/structure/cable{
- icon_state = "1-8"
+/obj/structure/closet/emcloset,
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/turf/open/floor/plating,
/area/maintenance/aft)
"bqt" = (
@@ -32421,17 +32415,12 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"brJ" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/machinery/door/airlock/maintenance{
- name = "Chemistry Maintenance";
- req_access_txt = "5; 33"
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/plating,
-/area/medical/chemistry)
+/area/maintenance/aft)
"brK" = (
/obj/structure/window/reinforced/spawner/east,
/obj/machinery/chem_dispenser,
@@ -33041,7 +33030,6 @@
/turf/open/space/basic,
/area/space/nearstation)
"bsU" = (
-/obj/structure/window/reinforced,
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bsV" = (
@@ -33482,17 +33470,8 @@
/turf/open/floor/plating,
/area/router)
"bua" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel/dark/side,
-/area/science/robotics/lab)
+/turf/closed/wall/r_wall,
+/area/science/robotics/mechbay)
"bub" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
@@ -34016,16 +33995,12 @@
/turf/open/floor/plating,
/area/maintenance/solars/starboard/fore)
"bvn" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
+/obj/machinery/rnd/production/protolathe/department/science,
/obj/structure/disposalpipe/segment{
- dir = 5
+ dir = 4
},
-/obj/structure/window/reinforced/spawner,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
+/turf/open/floor/plasteel,
+/area/science/lab)
"bvo" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 8
@@ -36857,24 +36832,14 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"bBs" = (
-/obj/structure/cable{
- icon_state = "1-2"
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
},
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/obj/effect/turf_decal/tile/yellow{
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/turf/open/floor/plasteel/white,
-/area/medical/chemistry)
+/turf/open/floor/plating,
+/area/maintenance/aft)
"bBt" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -37564,11 +37529,13 @@
name = "Thermo-Electric Generator"
})
"bCX" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/vending/snack/random,
-/obj/structure/disposalpipe/segment,
+/obj/machinery/rnd/production/circuit_imprinter/department/science,
+/obj/item/reagent_containers/glass/beaker/sulphuric,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
+/area/science/lab)
"bCY" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -37618,12 +37585,19 @@
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
"bDd" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
+/obj/structure/disposalpipe/segment,
+/obj/machinery/camera{
+ c_tag = "Aft Maintenance - Port";
+ pixel_x = 22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 8
},
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
"bDe" = (
/obj/machinery/disposal/bin{
name = "Corpse Delivery"
@@ -37697,19 +37671,27 @@
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"bDm" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/structure/cable{
+ icon_state = "0-4"
},
-/obj/effect/turf_decal/tile/blue{
- dir = 4
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/hallway/primary/aft";
+ dir = 1;
+ name = "Aft Primary Hallway APC";
+ pixel_x = 1;
+ pixel_y = 24
},
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = 26
+/obj/structure/cable{
+ icon_state = "2-4"
},
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
"bDn" = (
/obj/machinery/icecream_vat,
/turf/open/floor/plasteel/freezer,
@@ -37976,8 +37958,9 @@
/turf/open/floor/plasteel/stairs,
/area/crew_quarters/bar)
"bDT" = (
-/obj/machinery/mecha_part_fabricator,
-/turf/open/floor/plasteel/dark,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
/area/science/robotics/lab)
"bDU" = (
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
@@ -38776,25 +38759,11 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bFx" = (
-/obj/structure/table,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 1
+/obj/machinery/mecha_part_fabricator,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
},
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 1
- },
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty,
-/obj/machinery/requests_console{
- department = "Robotics";
- departmentType = 2;
- name = "Robotics RC";
- pixel_y = 31;
- receive_ore_updates = 1
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"bFy" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
@@ -38823,22 +38792,20 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bFB" = (
-/obj/structure/window/reinforced{
- dir = 8
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/obj/structure/bodycontainer/morgue{
- dir = 2
- },
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/closed/wall,
+/area/science/lab)
"bFC" = (
-/obj/structure/table,
-/obj/item/mmi,
-/obj/item/mmi,
-/obj/item/mmi,
-/obj/item/storage/box/bodybags,
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/snack/random,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
"bFD" = (
/obj/structure/disposaloutlet{
dir = 4
@@ -38850,19 +38817,16 @@
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"bFE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
+/obj/structure/cable{
+ icon_state = "1-8"
},
-/obj/structure/table/glass,
-/obj/item/reagent_containers/glass/beaker/large{
- pixel_x = -3;
- pixel_y = 3
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/item/reagent_containers/glass/beaker/large,
-/obj/item/reagent_containers/dropper,
-/obj/item/reagent_containers/dropper,
-/turf/open/floor/plasteel/white,
-/area/medical/chemistry)
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/aft)
"bFF" = (
/obj/machinery/light_switch{
pixel_y = 24
@@ -40035,44 +39999,65 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bIc" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/disposalpipe/junction{
- dir = 8
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "robotics";
- name = "robotics lab shutters"
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 1;
+ sortType = 14
},
-/turf/open/floor/plating,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bId" = (
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/stripes/corner,
-/turf/open/floor/plasteel/dark/side{
- dir = 9
+/obj/structure/table,
+/obj/item/mmi,
+/obj/item/mmi,
+/obj/item/storage/box/bodybags,
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
},
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bIe" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 8
+/obj/structure/table,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = 1
+ },
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = 1
+ },
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/machinery/requests_console{
+ department = "Robotics";
+ departmentType = 2;
+ name = "Robotics RC";
+ pixel_y = 31;
+ receive_ore_updates = 1
},
-/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/loading_area,
-/turf/open/floor/plasteel/dark/side{
- dir = 1
- },
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"bIf" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 8
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel/dark/side{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/door/airlock/maintenance{
+ name = "Chemistry Maintenance";
+ req_access_txt = "5; 33"
},
-/area/science/robotics/lab)
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/medical/chemistry)
"bIg" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/purple{
@@ -40090,10 +40075,11 @@
name = "Research Sector"
})
"bIh" = (
-/obj/structure/window/reinforced{
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/delivery/white,
+/obj/structure/disposalpipe/trunk{
dir = 8
},
-/obj/structure/window/reinforced,
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bIi" = (
@@ -40101,8 +40087,21 @@
/turf/closed/wall,
/area/medical/chemistry)
"bIj" = (
-/obj/machinery/door/window/southright,
-/turf/open/floor/plasteel/dark,
+/obj/structure/table/optable{
+ name = "Robotics Operating Table"
+ },
+/obj/item/tank/internals/anesthetic,
+/obj/item/clothing/mask/breath,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bIk" = (
/turf/closed/wall/r_wall,
@@ -40185,13 +40184,23 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bIt" = (
-/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/obj/effect/turf_decal/tile/yellow{
- dir = 8
+ dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"bIu" = (
@@ -40327,12 +40336,21 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bIL" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/table/glass,
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/glass/beaker/large,
+/obj/item/reagent_containers/dropper,
+/obj/item/reagent_containers/dropper,
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"bIM" = (
@@ -40523,7 +40541,13 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bJd" = (
-/obj/effect/landmark/event_spawn,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"bJe" = (
@@ -40749,47 +40773,42 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bJC" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
- dir = 4
+/obj/machinery/camera{
+ c_tag = "Library";
+ network = list("ss13","rd")
},
-/obj/machinery/button/door{
- id = "robotics2";
- name = "Shutters Control Button";
- pixel_x = 24;
- pixel_y = -24;
- req_access_txt = "29"
+/obj/machinery/airalarm{
+ pixel_y = 24
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/open/floor/wood,
+/area/library)
"bJD" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
+/obj/machinery/disposal/bin{
+ name = "Corpse Disposal Unit"
},
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/stripes/red/full,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bJE" = (
-/obj/structure/table,
-/obj/item/stack/sheet/plasteel{
- amount = 10;
- pixel_x = -5
+/obj/machinery/mecha_part_fabricator,
+/obj/machinery/light{
+ dir = 1
},
-/obj/item/stack/cable_coil/random,
-/obj/item/stack/cable_coil/random{
- pixel_x = -2;
- pixel_y = -2
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
},
-/obj/item/stack/cable_coil/random{
- pixel_x = 2;
- pixel_y = 2
+/obj/machinery/light_switch{
+ pixel_y = 24
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"bJF" = (
/obj/effect/turf_decal/tile/purple{
@@ -41000,40 +41019,33 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bKd" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/button/door{
- id = "robotics";
- name = "Shutters Control Button";
- pixel_y = 8;
- req_access_txt = "29";
- pixel_x = -24
- },
-/turf/open/floor/plasteel/dark/side{
- dir = 8
+/obj/structure/table,
+/obj/item/assembly/flash/handheld,
+/obj/item/assembly/flash/handheld,
+/obj/item/assembly/flash/handheld,
+/obj/item/assembly/flash/handheld,
+/obj/item/assembly/flash/handheld,
+/obj/item/assembly/flash/handheld,
+/obj/item/clothing/glasses/welding,
+/obj/item/clothing/glasses/welding,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
},
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bKe" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 1
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "robotics";
+ name = "robotics lab shutters"
},
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 5
- },
-/turf/open/floor/plasteel/dark/side{
- dir = 4
+/obj/structure/disposalpipe/segment{
+ dir = 9
},
+/turf/open/floor/plating,
/area/science/robotics/lab)
"bKf" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
@@ -41365,101 +41377,30 @@
/area/science/xenobiology)
"bKN" = (
/obj/structure/table,
-/obj/item/book/manual/wiki/robotics_cyborgs{
- pixel_x = -3;
- pixel_y = -2
- },
-/obj/item/book/manual/ripley_build_and_repair{
- pixel_x = 3;
- pixel_y = 2
- },
-/obj/item/mmi/posibrain,
-/turf/open/floor/plasteel/dark,
+/obj/item/storage/backpack/duffelbag/med/surgery,
+/obj/structure/window/reinforced/spawner/west,
+/obj/structure/window/reinforced,
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bKO" = (
-/obj/structure/table,
-/obj/item/storage/belt/utility,
-/obj/item/storage/belt/utility,
-/obj/item/multitool{
- pixel_x = 3
- },
-/obj/item/multitool{
- pixel_x = 3
- },
-/obj/item/storage/toolbox/mechanical{
- pixel_x = 2;
- pixel_y = -1
- },
-/obj/item/storage/toolbox/mechanical{
- pixel_x = 2;
- pixel_y = -1
- },
-/obj/item/storage/toolbox/electrical{
- pixel_x = -1;
- pixel_y = 4
- },
-/obj/item/storage/toolbox/electrical{
- pixel_x = -1;
- pixel_y = 4
- },
-/obj/item/clothing/head/welding{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/clothing/head/welding{
- pixel_x = -3;
- pixel_y = 5
- },
-/turf/open/floor/plasteel/dark,
+/obj/structure/window/reinforced,
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bKP" = (
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/cell/high{
- charge = 100;
- maxcharge = 15000;
- pixel_y = 3;
- pixel_x = 4
- },
-/obj/item/stock_parts/cell/high{
- charge = 100;
- maxcharge = 15000;
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/stock_parts/cell/high{
- charge = 100;
- maxcharge = 15000
- },
-/obj/machinery/button/door{
- id = "robotics3";
- name = "Shutters Control Button";
- pixel_x = 24;
- pixel_y = -24;
- req_access_txt = "29"
- },
-/turf/open/floor/plasteel/dark,
+/obj/machinery/door/window/southright,
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bKQ" = (
-/obj/machinery/droneDispenser,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
-"bKR" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow{
+/obj/structure/disposalpipe/segment,
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/machinery/camera{
- c_tag = "Library";
- network = list("ss13","rd")
- },
-/obj/machinery/airalarm{
- pixel_y = 24
- },
+/turf/open/floor/plasteel/white,
+/area/science/robotics/lab)
+"bKR" = (
+/obj/structure/bookcase/random/religion,
/turf/open/floor/wood,
/area/library)
"bKS" = (
@@ -43005,13 +42946,10 @@
"bOc" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "0-4"
},
/turf/open/space/basic,
-/area/solar/port)
+/area/solar/starboard/aft)
"bOd" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -43032,10 +42970,10 @@
"bOf" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "0-2"
},
/turf/open/space/basic,
-/area/solar/port)
+/area/solar/starboard/aft)
"bOg" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -44395,29 +44333,18 @@
name = "Research Sector"
})
"bQQ" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
+/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/effect/turf_decal/tile/red{
- dir = 1
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
},
-/obj/machinery/disposal/bin,
-/obj/machinery/light,
-/obj/effect/turf_decal/stripes/red/full,
-/obj/structure/disposalpipe/trunk{
- dir = 1
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
},
-/obj/structure/sign/poster/official/cleanliness{
- pixel_y = -32
- },
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/zone2{
- name = "Medbay Treatment Center"
- })
+/area/science/robotics/lab)
"bQR" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/directions/evac{
@@ -44978,26 +44905,24 @@
name = "Research Sector"
})
"bRT" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
+/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
dir = 1
},
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/effect/turf_decal/tile/purple,
-/obj/machinery/power/apc{
- areastring = "/area/science/robotics/lab";
- dir = 8;
- name = "Robotics Lab APC";
- pixel_x = -25
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
},
-/obj/structure/cable{
- icon_state = "0-4"
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
},
-/turf/open/floor/plasteel,
-/area/science/robotics/lab)
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/disposal/bin{
+ name = "Lab Delivery"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
"bRU" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 8
@@ -45005,14 +44930,10 @@
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
"bRV" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "robotics";
- name = "robotics lab shutters"
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel/dark/side{
+ dir = 9
},
-/turf/open/floor/plating,
/area/science/robotics/lab)
"bRW" = (
/obj/effect/turf_decal/bot,
@@ -45028,24 +44949,25 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bRX" = (
-/obj/effect/landmark/start/medical_doctor,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
-"bRY" = (
-/obj/structure/closet/secure_closet/medical3,
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/item/storage/belt/medical,
-/obj/item/clothing/neck/stethoscope,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
-"bRZ" = (
-/obj/structure/closet/l3closet,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bRY" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bRZ" = (
+/obj/structure/bookcase/random/fiction,
+/turf/open/floor/wood,
+/area/library)
"bSa" = (
/obj/structure/closet/secure_closet/medical3,
/obj/effect/turf_decal/tile/blue,
@@ -45068,24 +44990,24 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bSd" = (
-/obj/structure/table,
-/obj/item/assembly/flash/handheld,
-/obj/item/assembly/flash/handheld,
-/obj/item/assembly/flash/handheld,
-/obj/item/assembly/flash/handheld,
-/obj/item/assembly/flash/handheld,
-/obj/item/assembly/flash/handheld,
-/obj/item/clothing/glasses/welding,
-/obj/item/clothing/glasses/welding,
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
-"bSe" = (
-/obj/machinery/computer/rdconsole/robotics{
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/loading_area,
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/science/robotics/lab)
+"bSe" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark/side{
dir = 1
},
-/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bSf" = (
/obj/structure/table,
@@ -45586,23 +45508,36 @@
/turf/open/floor/plasteel/white,
/area/science/lab)
"bTg" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/science/robotics/mechbay";
+ dir = 1;
+ name = "Mech Bay APC";
+ pixel_y = 28
},
-/obj/structure/disposalpipe/segment{
- dir = 10
+/obj/structure/cable{
+ icon_state = "0-2"
},
-/turf/open/floor/plasteel/white,
-/area/science/lab)
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/mechbay)
"bTh" = (
-/obj/machinery/rnd/production/protolathe/department/science,
+/obj/effect/turf_decal/bot,
+/obj/effect/landmark/start/cyborg,
/turf/open/floor/plasteel,
-/area/science/lab)
+/area/science/robotics/lab)
"bTi" = (
-/obj/machinery/rnd/production/circuit_imprinter/department/science,
-/obj/item/reagent_containers/glass/beaker/sulphuric,
-/turf/open/floor/plasteel,
-/area/science/lab)
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark/side{
+ dir = 5
+ },
+/area/science/robotics/lab)
"bTj" = (
/obj/structure/table,
/obj/item/reagent_containers/glass/beaker/large{
@@ -45773,27 +45708,16 @@
},
/area/medical/medbay/lobby)
"bTC" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/turf/open/floor/plasteel/dark/side{
- dir = 5
- },
-/area/science/robotics/lab)
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
"bTD" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/structure/disposalpipe/segment{
- dir = 9
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
},
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
@@ -47758,15 +47682,18 @@
/turf/open/floor/plating,
/area/router)
"bXq" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/structure/disposalpipe/segment{
+ dir = 10
},
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
"bXr" = (
/obj/effect/turf_decal/tile/purple{
dir = 1
@@ -48417,8 +48344,14 @@
name = "Research Sector"
})
"bYB" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"bYC" = (
/obj/structure/disposalpipe/segment,
@@ -48476,28 +48409,25 @@
/turf/open/floor/circuit/green,
/area/science/robotics/mechbay)
"bYI" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 1
+/obj/effect/landmark/start/medical_doctor,
+/obj/structure/disposalpipe/segment{
+ dir = 6
},
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/orange/hidden,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/dark/side{
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bYJ" = (
+/obj/structure/closet/secure_closet/medical3,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/area/science/robotics/lab)
-"bYJ" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
-/obj/structure/cable{
- icon_state = "1-2"
+/obj/item/storage/belt/medical,
+/obj/item/clothing/neck/stethoscope,
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"bYK" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 5
@@ -49012,12 +48942,20 @@
/turf/closed/wall/r_wall,
/area/library)
"bZT" = (
-/obj/structure/table/optable{
- name = "Robotics Operating Table"
+/obj/structure/table,
+/obj/item/book/manual/wiki/robotics_cyborgs{
+ pixel_x = -3;
+ pixel_y = -2
},
-/obj/item/tank/internals/anesthetic,
-/obj/item/clothing/mask/breath,
-/turf/open/floor/plasteel/dark,
+/obj/item/book/manual/ripley_build_and_repair{
+ pixel_x = 3;
+ pixel_y = 2
+ },
+/obj/item/mmi/posibrain,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"bZU" = (
/obj/structure/table/wood,
@@ -49353,8 +49291,19 @@
/turf/open/floor/engine/o2,
/area/engine/atmos)
"caO" = (
-/obj/machinery/rnd/production/circuit_imprinter/department/science,
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
/area/science/robotics/lab)
"caP" = (
/obj/structure/chair/office/light,
@@ -49974,7 +49923,20 @@
/turf/open/floor/plating/airless,
/area/router/aux)
"ccd" = (
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Robotics Lab";
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
/area/science/robotics/lab)
"cce" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
@@ -52022,25 +51984,18 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgf" = (
-/obj/effect/turf_decal/tile/purple{
+/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/purple{
+/obj/effect/turf_decal/tile/blue{
dir = 8
},
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
- dir = 4
- },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plasteel/dark/side{
dir = 4
},
-/area/science/robotics/lab)
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"cgg" = (
/obj/effect/landmark/start/atmospheric_technician,
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
@@ -52140,17 +52095,19 @@
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"cgr" = (
-/obj/machinery/power/apc/highcap/ten_k{
- areastring = "/area/science/robotics/mechbay";
+/obj/machinery/vending/wardrobe/robo_wardrobe,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/airalarm{
dir = 1;
- name = "Mech Bay APC";
- pixel_y = 28
+ pixel_y = -22
},
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/mechbay)
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
"cgs" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -53172,13 +53129,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
-"ciA" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/space/basic,
-/area/solar/port)
"ciB" = (
/obj/structure/frame/computer,
/obj/structure/disposalpipe/segment,
@@ -53308,18 +53258,10 @@
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"ciQ" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/tile/yellow{
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
- dir = 4
- },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"ciR" = (
@@ -53923,23 +53865,30 @@
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
"cka" = (
-/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
- dir = 8
- },
/obj/structure/cable{
icon_state = "1-2"
},
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"ckb" = (
-/obj/machinery/aug_manipulator,
-/obj/machinery/camera/autoname{
+/obj/effect/turf_decal/tile/purple{
dir = 1
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
/area/science/robotics/lab)
"ckc" = (
/obj/machinery/portable_atmospherics/canister/air,
@@ -54062,6 +54011,9 @@
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/landmark/start/chemist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"ckq" = (
@@ -54206,6 +54158,9 @@
pixel_x = 32;
pixel_y = -32
},
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"ckE" = (
@@ -54618,10 +54573,12 @@
},
/area/library)
"clv" = (
-/obj/structure/table,
-/obj/item/storage/backpack/duffelbag/med/surgery,
-/turf/open/floor/plasteel/dark,
-/area/science/robotics/lab)
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"clw" = (
/obj/effect/landmark/start/librarian,
/obj/machinery/newscaster{
@@ -55277,40 +55234,14 @@
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"cmS" = (
-/obj/structure/rack,
-/obj/item/storage/firstaid/regular{
- empty = 1;
- name = "First-Aid (empty)"
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
},
-/obj/item/storage/firstaid/regular{
- empty = 1;
- name = "First-Aid (empty)"
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
},
-/obj/item/storage/firstaid/regular{
- empty = 1;
- name = "First-Aid (empty)"
- },
-/obj/item/healthanalyzer{
- pixel_x = 4;
- pixel_y = -4
- },
-/obj/item/healthanalyzer{
- pixel_x = 4;
- pixel_y = -4
- },
-/obj/item/healthanalyzer{
- pixel_x = 4;
- pixel_y = -4
- },
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/machinery/camera/autoname{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"cmT" = (
/obj/structure/table/reinforced,
@@ -55734,41 +55665,6 @@
icon_state = "panelscorched"
},
/area/maintenance/port/fore)
-"cnG" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/cable{
- icon_state = "2-8"
- },
-/turf/open/space/basic,
-/area/solar/port)
-"cnH" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/space/basic,
-/area/solar/port)
-"cnI" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/space/basic,
-/area/solar/port)
-"cnJ" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/turf/open/space/basic,
-/area/solar/port)
"cnK" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -55778,71 +55674,10 @@
},
/turf/open/floor/plasteel,
/area/engine/teg_hot)
-"cnL" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/space/basic,
-/area/solar/starboard/aft)
-"cnM" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/open/space/basic,
-/area/solar/starboard/aft)
-"cnN" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/turf/open/space/basic,
-/area/solar/starboard/aft)
"cnO" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/engine,
/area/science/storage)
-"cnP" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/turf/open/space/basic,
-/area/solar/starboard/aft)
-"cnQ" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/open/space/basic,
-/area/solar/starboard/aft)
-"cnR" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/space/basic,
-/area/solar/starboard/aft)
"cnS" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -56692,7 +56527,6 @@
icon_state = "2-4"
},
/obj/machinery/holopad,
-/obj/effect/turf_decal/bot,
/turf/open/floor/wood,
/area/library)
"cpv" = (
@@ -56703,16 +56537,17 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cpw" = (
+/obj/machinery/computer/operating,
/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
},
-/turf/open/floor/plasteel/dark/side{
- dir = 8
+/obj/structure/sign/poster/official/space_cops{
+ pixel_y = 32
},
+/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"cpx" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
@@ -57485,6 +57320,13 @@
/area/hallway/secondary/entry)
"cqW" = (
/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cqX" = (
@@ -57807,10 +57649,29 @@
name = "Engine Room"
})
"cry" = (
-/obj/structure/bookcase/random/religion,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/wood,
-/area/library)
+/obj/structure/table,
+/obj/item/stack/sheet/plasteel{
+ amount = 10;
+ pixel_x = -5
+ },
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/stack/cable_coil/random{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Robotics - Surgery";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
"crz" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
@@ -57825,10 +57686,12 @@
/turf/open/floor/plasteel,
/area/tcommsat/computer)
"crA" = (
-/obj/structure/bookcase/random/fiction,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/wood,
-/area/library)
+/obj/machinery/aug_manipulator,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
"crB" = (
/obj/structure/lattice,
/obj/machinery/camera/motion{
@@ -58007,9 +57870,14 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"crW" = (
-/obj/effect/landmark/start/paramedic,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
+/obj/machinery/computer/rdconsole/robotics{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
"crX" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
@@ -58536,12 +58404,20 @@
/turf/open/floor/plating,
/area/storage/tech)
"csV" = (
-/obj/machinery/mecha_part_fabricator,
-/obj/machinery/camera{
- c_tag = "Robotics Lab";
- network = list("ss13","rd")
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/button/door{
+ id = "robotics";
+ name = "Shutters Control Button";
+ pixel_y = 8;
+ req_access_txt = "29";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
},
-/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"csW" = (
/obj/effect/turf_decal/tile/neutral,
@@ -59274,8 +59150,41 @@
name = "Research Observatory"
})
"cum" = (
-/obj/machinery/computer/operating,
-/turf/open/floor/plasteel/dark,
+/obj/structure/rack,
+/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{
+ pixel_x = 4;
+ pixel_y = -4
+ },
+/obj/item/healthanalyzer{
+ pixel_x = 4;
+ pixel_y = -4
+ },
+/obj/item/healthanalyzer{
+ pixel_x = 4;
+ pixel_y = -4
+ },
+/obj/item/assembly/prox_sensor,
+/obj/item/assembly/prox_sensor,
+/obj/item/assembly/prox_sensor,
+/obj/item/assembly/prox_sensor,
+/obj/item/assembly/prox_sensor,
+/obj/machinery/light,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"cun" = (
/obj/structure/table/reinforced,
@@ -59660,16 +59569,17 @@
/area/science/robotics/lab)
"cuZ" = (
/obj/effect/turf_decal/tile/purple{
- dir = 4
+ dir = 1
},
-/obj/effect/turf_decal/stripes/corner{
+/obj/effect/turf_decal/tile/purple{
dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/dark/side{
- dir = 10
+ dir = 4
},
/area/science/robotics/lab)
"cva" = (
@@ -59820,19 +59730,15 @@
/turf/open/floor/plating,
/area/medical/virology)
"cvt" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
-/turf/open/floor/plasteel/dark/side,
+/turf/open/floor/plasteel/dark/side{
+ dir = 10
+ },
/area/science/robotics/lab)
"cvu" = (
/obj/effect/turf_decal/tile/blue{
@@ -60146,11 +60052,8 @@
/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
},
/turf/open/floor/plasteel/dark/side,
/area/science/robotics/lab)
@@ -60174,7 +60077,14 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cvS" = (
-/obj/machinery/vending/wardrobe/robo_wardrobe,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/holopad,
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"cvT" = (
@@ -61467,11 +61377,28 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"cyt" = (
-/obj/machinery/atmospherics/pipe/simple/orange/hidden{
- dir = 5
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
},
-/turf/open/floor/plating,
-/area/maintenance/aft)
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/power/apc{
+ areastring = "/area/science/robotics/lab";
+ dir = 8;
+ name = "Robotics Lab APC";
+ pixel_x = -25
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
"cyu" = (
/obj/structure/closet/wardrobe/chemistry_white{
anchored = 1
@@ -62134,15 +62061,17 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/morgue)
"czH" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 1
+/obj/machinery/button/door{
+ id = "robotics2";
+ name = "Shutters Control Button";
+ pixel_x = 24;
+ pixel_y = -24;
+ req_access_txt = "29"
},
-/obj/effect/turf_decal/stripes/corner{
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel/dark/side{
- dir = 6
- },
+/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"czI" = (
/obj/structure/disposalpipe/segment{
@@ -65270,12 +65199,16 @@
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"cEP" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
-/obj/structure/cable{
- icon_state = "1-2"
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
},
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
/area/science/robotics/lab)
"cEQ" = (
/obj/effect/turf_decal/tile/blue,
@@ -65965,22 +65898,54 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"cFV" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
- dir = 5
+/obj/structure/table,
+/obj/item/storage/belt/utility,
+/obj/item/storage/belt/utility,
+/obj/item/multitool{
+ pixel_x = 3
},
-/obj/structure/cable{
- icon_state = "1-4"
+/obj/item/multitool{
+ pixel_x = 3
},
-/turf/open/floor/plasteel/dark,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = 2;
+ pixel_y = -1
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = 2;
+ pixel_y = -1
+ },
+/obj/item/storage/toolbox/electrical{
+ pixel_x = -1;
+ pixel_y = 4
+ },
+/obj/item/storage/toolbox/electrical{
+ pixel_x = -1;
+ pixel_y = 4
+ },
+/obj/item/clothing/head/welding{
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/item/clothing/head/welding{
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
/area/science/robotics/lab)
"cFW" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "robotics2";
+ name = "robotics lab shutters"
+ },
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plating,
/area/science/robotics/lab)
"cFX" = (
/obj/machinery/chem_heater,
@@ -66496,6 +66461,21 @@
/obj/structure/tank_dispenser,
/turf/open/floor/engine,
/area/science/storage)
+"cGN" = (
+/obj/structure/closet/l3closet,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cGO" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"cGP" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -70724,6 +70704,13 @@
"cPw" = (
/turf/open/floor/plasteel/dark,
/area/science/robotics/mechbay)
+"cPx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"cPy" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -70920,6 +70907,13 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"cPP" = (
+/obj/effect/landmark/start/paramedic,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"cPQ" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -71744,6 +71738,149 @@
/area/science/server{
name = "Computer Core"
})
+"cRi" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/science/robotics/lab)
+"cRj" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 6
+ },
+/area/science/robotics/lab)
+"cRk" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high{
+ charge = 100;
+ maxcharge = 15000;
+ pixel_y = 3;
+ pixel_x = 4
+ },
+/obj/item/stock_parts/cell/high{
+ charge = 100;
+ maxcharge = 15000;
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/stock_parts/cell/high{
+ charge = 100;
+ maxcharge = 15000
+ },
+/obj/machinery/button/door{
+ id = "robotics3";
+ name = "Shutters Control Button";
+ pixel_x = 24;
+ pixel_y = -24;
+ req_access_txt = "29"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"cRl" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cRm" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/effect/turf_decal/stripes/red/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/cleanliness{
+ pixel_y = -32
+ },
+/obj/machinery/disposal/bin{
+ name = "Corpse Disposal Unit"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cRn" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cRo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cRp" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cRq" = (
+/obj/machinery/rnd/production/circuit_imprinter/department/science,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"cRr" = (
+/obj/machinery/droneDispenser,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5;
+ layer = 2.03
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
"cVq" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -86971,7 +87108,7 @@ aaa
aaa
aaa
aaU
-aiq
+aee
aaU
aaa
aaa
@@ -87228,7 +87365,7 @@ aaa
aaa
aaa
aaU
-aiq
+abh
aaU
aaa
aaa
@@ -87485,7 +87622,7 @@ abi
aaa
aaa
aaK
-aaM
+aaL
abi
aaa
aaa
@@ -90050,17 +90187,17 @@ aaa
aaa
aaa
aaU
-bOc
+aee
aaU
aaU
aaU
aaU
-bOc
+aee
aaU
aaU
aaU
aaU
-bOc
+aee
aaU
aaU
aaU
@@ -90307,17 +90444,17 @@ aaa
aaa
aaa
aaU
-bOf
-ciA
-ciA
-ciA
-ciA
-cnG
-cnH
+abh
+abh
+abh
+abh
+abh
+abh
+aiq
aaL
-cnI
-ciA
-cnJ
+ajc
+abh
+abh
abh
abh
abh
@@ -95543,9 +95680,9 @@ ckk
bYF
cct
bFu
-bIc
-btn
-btn
+bKe
+bsM
+bsM
bsM
cuY
bIk
@@ -95799,13 +95936,13 @@ bYp
bYx
cPw
caz
+bsU
+bRV
+bQQ
ccd
-bId
-cpw
-cpw
-bKd
-cuZ
-bKN
+csV
+cvt
+bZT
bIk
aaU
aaU
@@ -96056,13 +96193,13 @@ bYq
cPv
bYH
bYv
-bDT
-bIe
-bYB
+bFx
+bSd
+bTh
bto
-bYB
-cvt
-bSe
+bTh
+cvQ
+crW
ceb
aaU
aaa
@@ -96223,7 +96360,7 @@ aew
axi
atW
aCE
-aDW
+aCH
anU
anU
anU
@@ -96309,17 +96446,17 @@ bXU
aJV
brz
bYv
-cgr
+bTg
bYy
crf
bYv
-bFx
-bIf
+bIe
+bSe
bto
csZ
bto
-cvQ
-caO
+cEP
+cRq
ceb
aaU
aaa
@@ -96480,7 +96617,7 @@ aeJ
aeJ
aeJ
aew
-aCH
+aDW
aew
aIn
aew
@@ -96569,14 +96706,14 @@ bYv
bYv
cwb
bYv
-bYv
-csV
-bIe
-bYB
-cqz
-bYB
bua
-cmS
+bJE
+bSd
+bTh
+cqz
+bTh
+cRi
+cum
ceb
aaU
aaa
@@ -96825,15 +96962,15 @@ bLU
bRM
bRO
bRR
-bRT
-bRV
-bSd
-bTC
-bYI
-cgf
-bKe
-czH
-bKO
+cyt
+bDT
+bKd
+bTi
+caO
+ckb
+cuZ
+cRj
+cFV
ceb
aaU
aaa
@@ -97084,13 +97221,13 @@ cEs
bRS
cEN
cEO
-cEP
-bTD
-bYJ
-cka
+bIc
+bRX
+cRn
+cvS
cmR
-cFV
-bKP
+cRp
+cRk
ceb
aaU
aaa
@@ -97340,14 +97477,14 @@ cfZ
bWX
bWX
ckf
-bIk
-bFB
+btn
bIh
-ccd
-bJC
+bRY
+bTD
+czH
bKf
-cFW
-bKQ
+cRl
+cRr
bIk
aaU
aaa
@@ -97598,10 +97735,10 @@ bXU
bXU
bWa
bIk
-bFC
-bIj
-ccd
-bJD
+bId
+bKN
+bTD
+cmS
ccm
coH
bJH
@@ -97855,10 +97992,10 @@ aaU
aaU
aaU
bIk
-clv
-bsU
-ccd
-bJE
+bIj
+bKO
+bTD
+cry
ccm
cOx
cOA
@@ -98112,10 +98249,10 @@ aaa
aaa
aaU
bIk
-bZT
-bsU
-ccd
-ckb
+cpw
+bKP
+cRo
+crA
cdW
cOy
cOB
@@ -98369,10 +98506,10 @@ aaU
aaU
aaU
bIk
-cum
-bIj
-ccd
-cvS
+bJD
+bKQ
+bYB
+cgr
bIk
cOz
cOC
@@ -98629,7 +98766,7 @@ bIk
bIk
bIk
ccB
-bJH
+cFW
bIk
cGb
bRI
@@ -98886,7 +99023,7 @@ bCh
bRL
bIs
ccC
-bRZ
+cGN
cFn
cGc
bMj
@@ -99143,7 +99280,7 @@ coc
bTz
bTE
ccD
-bTE
+cGO
bTE
cGd
cvT
@@ -99386,7 +99523,7 @@ bSE
bSN
bSU
bTa
-bTg
+bau
bTn
bSC
bRH
@@ -99400,7 +99537,7 @@ bRI
bTA
bVO
cfN
-ckd
+cPx
ckd
cGe
bMj
@@ -99615,7 +99752,7 @@ bWj
baS
bbr
aZy
-bKR
+bJC
bZF
bZF
cjx
@@ -99643,7 +99780,7 @@ bSE
bYV
cEC
cEL
-bTh
+bvn
bSC
bSC
bRJ
@@ -99656,8 +99793,8 @@ cKl
cKm
cKn
cKo
-bRX
-crW
+bYI
+cPP
bIq
cqZ
bMj
@@ -99872,8 +100009,8 @@ bWk
cdE
bbs
aZy
-cry
-crA
+bKR
+bRZ
bZF
cCJ
baE
@@ -99900,7 +100037,7 @@ bSE
bSP
cED
bTb
-bTi
+bCX
bSC
brk
bsp
@@ -99913,7 +100050,7 @@ cel
bCh
cEQ
bXn
-bRY
+bYJ
bSa
bSc
bSg
@@ -100157,7 +100294,7 @@ bSH
bSG
cij
bSG
-bSC
+bFB
bSC
bhx
bqv
@@ -100170,7 +100307,7 @@ cem
bRI
cER
cEU
-bCh
+bSh
bCh
bCh
bSh
@@ -100414,7 +100551,7 @@ coB
bbl
cEF
buD
-bCX
+bFC
bqc
brm
bst
@@ -100427,7 +100564,7 @@ coV
bCh
cES
cEV
-cFj
+cgf
cFj
cFo
cFr
@@ -100671,7 +100808,7 @@ cqe
cqg
cEG
bdv
-bDd
+bqr
bqe
brq
bst
@@ -100684,7 +100821,7 @@ bAo
cuW
cET
cEW
-bQk
+cka
bQk
bQk
bQu
@@ -100928,7 +101065,7 @@ cID
bZm
cEH
bdv
-bDd
+bqr
cyy
cyA
bst
@@ -100941,7 +101078,7 @@ bAq
cuX
bFJ
cEX
-cqW
+clv
bWD
cqb
bKy
@@ -101185,7 +101322,7 @@ cIE
cEz
cEI
bXi
-bXq
+bga
caQ
bXC
bvK
@@ -101198,7 +101335,7 @@ bKi
bPP
bQa
cEY
-bvn
+cqW
bJg
bQl
bYG
@@ -101442,7 +101579,7 @@ cIF
ccp
bqo
buF
-bDm
+bpA
bqe
ceY
bwf
@@ -101699,7 +101836,7 @@ cIF
ccp
bqr
bbh
-bbh
+bpB
bqm
bqm
byw
@@ -101956,7 +102093,7 @@ cIF
ccp
cpH
bbh
-bpA
+bqs
bXz
bqm
byD
@@ -102213,7 +102350,7 @@ cIF
ccp
cJe
bbh
-bpB
+brJ
btv
bqm
bzJ
@@ -102470,7 +102607,7 @@ cIG
ccw
csM
cyo
-cyt
+bBs
blU
bqz
bAD
@@ -102491,7 +102628,7 @@ bot
bot
bjx
bAH
-bQQ
+cRm
cpz
cvs
cwj
@@ -102727,11 +102864,11 @@ cIH
cgv
coE
bxM
-bau
+bDd
bXt
brH
bAE
-bIt
+bIL
cdX
buS
buS
@@ -102984,12 +103121,12 @@ cIF
cgB
bqr
bbh
-bga
-bqs
-brJ
-bBs
-bIL
-ciQ
+bDm
+bFE
+bIf
+bIt
+bJd
+bXq
cmK
cws
czv
@@ -103245,8 +103382,8 @@ bPw
bqz
bqz
bzA
-bFE
-bFG
+bRT
+ciQ
col
cxh
czB
@@ -103759,7 +103896,7 @@ bPw
bqz
brK
bCf
-bJd
+bTC
ckD
cpI
cyF
@@ -112904,10 +113041,10 @@ aaa
aaa
aaa
aaU
-aee
-aeP
-aeP
-aqA
+aaV
+aaV
+aaV
+abe
aeP
agX
ajS
@@ -113161,7 +113298,7 @@ aWj
aWj
aWj
aWj
-adx
+aaV
aaU
aaU
aaU
@@ -113418,7 +113555,7 @@ aaa
aaa
aaa
aaU
-adx
+aaV
aaU
aaa
aaa
@@ -113675,7 +113812,7 @@ aaa
aaa
aaa
aaU
-abe
+abc
aaU
aaa
aaa
@@ -115078,11 +115215,11 @@ bHM
aaa
aaa
aaU
-cnM
+avr
aaU
aaa
aaU
-cnM
+avr
aaU
aaa
aaa
@@ -115335,11 +115472,11 @@ bHM
aaa
aaa
bNK
-bYQ
+bNS
bNU
aaa
bNK
-bYQ
+bNS
bNU
aaa
aaa
@@ -116620,11 +116757,11 @@ bHN
bHN
bHN
bNL
-cnM
+avr
aaU
aaU
aaU
-cnM
+avr
aaU
aaU
aaU
@@ -116876,13 +117013,13 @@ bZy
bHN
bHz
ckn
-cnL
-cnN
-bOk
-bOk
-bOk
-cnP
-cnR
+aqA
+bNL
+bNL
+bNL
+bNL
+bNL
+bOf
bOk
bOk
bOq
@@ -117138,7 +117275,7 @@ aaU
aaU
aaU
aaU
-cnQ
+bOc
aaU
aaU
aaU
@@ -117525,17 +117662,17 @@ adl
abM
aZG
aaU
-abc
-aeP
-aeP
-aeP
-aeP
-ajc
-aeP
-aeP
-aeP
-aeP
-avr
+aaV
+aaV
+aaV
+aaV
+aaV
+aaV
+aaV
+aaV
+aaV
+aaV
+aaV
aaU
aTx
aoK
@@ -117782,17 +117919,17 @@ adw
adH
aaU
aaU
-abe
+abc
aaU
aaU
aaU
aaU
-abe
+abc
aaU
aaU
aaU
aaU
-abe
+abc
aaU
aaU
aoT
@@ -119843,7 +119980,7 @@ aaa
aaa
aaa
aaU
-adx
+aaV
aaU
aaa
aaa
@@ -120100,7 +120237,7 @@ aaa
aaa
aaa
aaU
-abe
+abc
aaU
aaa
aaa
diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm
index c6553c728e..4d2d8cb624 100644
--- a/_maps/map_files/LambdaStation/lambda.dmm
+++ b/_maps/map_files/LambdaStation/lambda.dmm
@@ -33412,6 +33412,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/machinery/gateway/centerstation,
/turf/open/floor/plasteel/dark,
/area/gateway)
"bkm" = (
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 588b55679c..ca155d6e94 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -32918,15 +32918,10 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
/turf/open/floor/plasteel/white,
/area/hallway/secondary/entry)
"bxZ" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 4
- },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/hallway/secondary/entry)
"bya" = (
@@ -34199,9 +34194,8 @@
/obj/structure/transit_tube/curved/flipped{
dir = 4
},
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/hallway/secondary/entry)
+/turf/open/space/basic,
+/area/space/nearstation)
"bAJ" = (
/obj/structure/transit_tube/horizontal,
/obj/structure/window/reinforced/fulltile,
@@ -34871,6 +34865,7 @@
/area/science/xenobiology)
"bBV" = (
/obj/structure/transit_tube/curved,
+/obj/structure/lattice/catwalk,
/turf/open/space,
/area/space/nearstation)
"bBW" = (
@@ -38491,10 +38486,12 @@
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bIY" = (
-/turf/open/floor/plasteel/white{
- heat_capacity = 1e+006
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
},
-/area/hallway/secondary/entry)
+/turf/open/space/basic,
+/area/space)
"bIZ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -39538,9 +39535,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bLp" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 8
- },
+/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bLq" = (
@@ -39563,20 +39558,17 @@
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bLr" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/chapel/dock)
"bLs" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/light,
-/turf/open/floor/plasteel/white{
- heat_capacity = 1e+006
- },
-/area/hallway/secondary/entry)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel/dark,
+/area/chapel/dock)
"bLt" = (
/obj/effect/decal/cleanable/oil{
icon_state = "floor6"
@@ -40049,6 +40041,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
@@ -40092,13 +40085,19 @@
},
/area/chapel/dock)
"bMy" = (
-/obj/structure/window/reinforced{
- dir = 8;
- layer = 2.9
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
},
-/obj/structure/lattice,
-/turf/open/space,
-/area/space/nearstation)
+/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/simple/supply/hidden,
+/turf/open/floor/plasteel/dark,
+/area/chapel/dock)
"bMA" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/engine,
@@ -40520,12 +40519,12 @@
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bNu" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
- },
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bNv" = (
@@ -40945,6 +40944,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bOy" = (
@@ -40958,6 +40958,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bOz" = (
@@ -41226,6 +41229,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bPo" = (
@@ -41242,6 +41246,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/chapel/dock)
"bPp" = (
@@ -41538,6 +41543,7 @@
icon_state = "1-2"
},
/obj/effect/turf_decal/sand,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/chapel/asteroid/monastery)
"bQg" = (
@@ -44734,14 +44740,14 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/dark,
/area/chapel/main/monastery)
"bWX" = (
-/obj/machinery/door/airlock/grunge{
- name = "Chapel"
- },
-/turf/open/floor/plasteel/dark,
-/area/chapel/main/monastery)
+/obj/effect/turf_decal/sand,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/chapel/asteroid/monastery)
"bWZ" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
@@ -45071,6 +45077,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/dark,
/area/chapel/main/monastery)
"bXJ" = (
@@ -45776,6 +45783,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/carpet,
/area/chapel/main/monastery)
"bZo" = (
@@ -46530,6 +46538,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/carpet,
/area/chapel/main/monastery)
"cbO" = (
@@ -46537,6 +46546,7 @@
/obj/item/reagent_containers/food/drinks/trophy{
pixel_y = 8
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/chapel/main/monastery)
"cbP" = (
@@ -46693,15 +46703,15 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 10
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 4
},
/turf/open/floor/carpet,
/area/chapel/main/monastery)
"ccF" = (
/obj/effect/landmark/start/chaplain,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 6
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
},
/turf/open/floor/carpet,
/area/chapel/main/monastery)
@@ -53372,8 +53382,9 @@
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"dpc" = (
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/carpet,
+/area/chapel/main/monastery)
"dps" = (
/obj/machinery/status_display/ai,
/turf/closed/wall,
@@ -53737,13 +53748,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/engine)
-"eit" = (
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space/nearstation)
"eiV" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
@@ -53761,10 +53765,6 @@
/obj/structure/chair/office/dark,
/turf/open/floor/wood,
/area/lawoffice)
-"epg" = (
-/obj/structure/lattice,
-/turf/open/space,
-/area/space)
"epj" = (
/obj/machinery/cryopod{
dir = 8
@@ -54040,12 +54040,6 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
-"eVT" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 1
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"eWi" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -54960,14 +54954,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/cargo)
-"gTy" = (
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/lattice,
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space/nearstation)
"gUb" = (
/obj/structure/chair/office/dark{
dir = 4
@@ -55218,14 +55204,6 @@
},
/turf/open/floor/plating,
/area/maintenance/solars/port)
-"hCb" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Monastery Transit"
- },
-/turf/open/floor/plasteel/white{
- heat_capacity = 1e+006
- },
-/area/hallway/secondary/entry)
"hDG" = (
/obj/machinery/door/airlock/engineering{
name = "Auxillary Base Construction";
@@ -56414,10 +56392,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
-"koE" = (
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space)
"kpK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
@@ -56602,12 +56576,7 @@
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"kIc" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Monastery Transit"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
+/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
@@ -56752,12 +56721,6 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
-"kVy" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 9
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"kWQ" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/obj/structure/cable/yellow{
@@ -57225,11 +57188,6 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/engine/engineering)
-"mgU" = (
-/obj/effect/landmark/carpspawn,
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space)
"mhl" = (
/obj/machinery/power/emitter,
/obj/machinery/light{
@@ -57532,14 +57490,6 @@
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/maintenance/department/science)
-"mSY" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/white{
- heat_capacity = 1e+006
- },
-/area/chapel/dock)
"mTS" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -57549,12 +57499,6 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
-"mVD" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"mVM" = (
/turf/open/floor/plating/airless,
/area/space/nearstation)
@@ -57636,12 +57580,6 @@
/obj/item/chair/stool,
/turf/open/floor/carpet,
/area/maintenance/department/crew_quarters/dorms)
-"nho" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"nih" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/costume,
@@ -58727,17 +58665,6 @@
},
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/exit/departure_lounge)
-"ppY" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Monastery Transit"
- },
-/turf/open/floor/plasteel/white{
- heat_capacity = 1e+006
- },
-/area/chapel/dock)
"prQ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -60222,22 +60149,6 @@
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
-"tbF" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/lattice,
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space/nearstation)
-"tbY" = (
-/obj/structure/closet/emcloset,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"tcY" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -60856,10 +60767,6 @@
/obj/machinery/field/generator,
/turf/open/floor/plating,
/area/maintenance/department/engine)
-"uxI" = (
-/obj/machinery/light,
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"uxP" = (
/obj/structure/disposalpipe/segment{
dir = 9
@@ -61064,10 +60971,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/engine)
-"vaB" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"vco" = (
/obj/machinery/light/small{
dir = 8
@@ -61278,12 +61181,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
-"vxZ" = (
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"vzz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -61721,9 +61618,7 @@
/turf/open/floor/plating,
/area/maintenance/department/crew_quarters/bar)
"wDe" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Monastery Transit"
- },
+/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
@@ -61910,10 +61805,6 @@
icon_state = "platingdmg3"
},
/area/maintenance/department/science)
-"wUc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"wUf" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
@@ -61948,25 +61839,10 @@
},
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
-"wYJ" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"wYK" = (
/obj/machinery/power/supermatter_crystal/engine,
/turf/open/floor/engine,
/area/engine/supermatter)
-"wZs" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/white{
- heat_capacity = 1e+006
- },
-/area/hallway/secondary/entry)
"xah" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -62025,10 +61901,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/wood,
/area/lawoffice)
-"xeN" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel/white,
-/area/hallway/secondary/entry)
"xgh" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -79577,26 +79449,26 @@ bIW
bKc
bOy
bMt
-bLn
-bOy
+bLs
+bMy
bPo
-bQg
-bQg
-bQg
-bQg
-bQg
-bQg
-bQg
-bQg
-bQg
bWX
-bXJ
-bZo
-bZo
-bZo
-bZo
-bZo
-bZo
+bWX
+bWX
+bWX
+bWX
+bWX
+bWX
+bWX
+bWX
+cek
+cdx
+dpc
+dpc
+dpc
+dpc
+dpc
+dpc
cbO
ccF
cdx
@@ -80088,7 +79960,7 @@ aaa
bGI
bHM
bHM
-bHM
+bNw
bLq
bMv
bNw
@@ -80599,11 +80471,11 @@ aaa
aaa
aaa
aaa
-koE
+aht
aqG
bGE
bKf
-mSY
+bKf
bMw
bNy
bNw
@@ -80855,12 +80727,12 @@ aaa
aaa
aaa
aaa
-koE
-koE
+aht
+aht
aqG
bGE
bKf
-mSY
+bKf
bMx
bNz
bHM
@@ -81111,13 +80983,13 @@ aaa
aaa
aaa
aaa
-koE
-koE
-koE
+aaa
+aaa
+aaa
aqG
bGE
wDe
-ppY
+bHM
bHM
bNA
bHM
@@ -81361,23 +81233,23 @@ aZx
aaa
aaa
aaa
-mZE
-bVp
-bVp
-bVp
-bVp
-bVp
-eit
-gTy
-eit
-eit
-tbF
-aZx
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
bIY
-bLs
-aZx
+bIY
+aht
+aht
bNB
-bMy
+abI
abI
aby
abI
@@ -81618,21 +81490,21 @@ aZx
aaa
aaa
aaa
-bGI
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-bIY
-wZs
-aZx
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aht
amC
aaa
aht
@@ -81875,21 +81747,21 @@ aZx
aaa
aaa
aaa
-bGI
-aZx
-tbY
-wYJ
-xeN
-xeN
-xeN
-wYJ
-xeN
-eVT
-dpc
-vxZ
-bIY
-nho
-aZx
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
amB
aht
aht
@@ -82132,21 +82004,21 @@ aZx
aaa
aaa
aaa
-bGI
-aZx
-mVD
-dpc
-dpc
-dpc
-wUc
-vaB
-vaB
-vaB
-vaB
-vaB
-vaB
-kVy
-aZx
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aht
amC
aaa
aht
@@ -82389,21 +82261,21 @@ aZx
aaa
aaa
aaa
-bGI
-aZx
-mVD
-dpc
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
-aZx
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aht
+aht
amB
aht
aht
@@ -82646,21 +82518,21 @@ aZx
aaa
aaa
aaa
-aqG
-aZx
-mVD
-dpc
-aZx
-koE
-koE
-koE
-koE
-koE
-koE
-koE
-koE
-koE
-koE
+aaa
+aaa
+aaa
+aaa
+aaa
+aht
+aaa
+aaa
+aaa
+aaa
+aht
+aht
+aht
+aht
+aht
amD
aaa
aht
@@ -82902,12 +82774,12 @@ bon
aZx
aaa
aaa
-koE
-aqG
-aZx
-mVD
-dpc
-aZx
+aaa
+aaa
+aaa
+aaa
+aaa
+aht
bBV
bDf
bDf
@@ -83162,12 +83034,12 @@ aZx
aZx
aZx
aZx
-mVD
-uxI
+aaa
+aht
bAI
-epg
abI
-koE
+abI
+aht
abI
aaa
bva
@@ -83420,7 +83292,7 @@ bbR
bbR
aZx
kIc
-hCb
+kIc
bAJ
bBX
bBX
@@ -83470,7 +83342,7 @@ cfN
cfN
xYV
cjm
-koE
+aht
aaa
aaa
aaa
@@ -83728,7 +83600,7 @@ cfN
qWo
cjm
cjm
-koE
+aht
aaa
aaa
aaa
@@ -84483,8 +84355,8 @@ bva
bNK
bva
bva
-koE
-mgU
+aht
+aht
kSb
kSb
aht
@@ -84742,7 +84614,7 @@ bQl
cqX
xNx
ctS
-aaa
+cFB
aaa
aaa
aaa
@@ -84754,8 +84626,8 @@ aaa
aaa
kSb
kSb
-koE
-koE
+aht
+aht
nKo
aaa
aaa
diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm
index 6b70eb1e0f..a4bf69b2ad 100644
--- a/code/__DEFINES/configuration.dm
+++ b/code/__DEFINES/configuration.dm
@@ -8,3 +8,12 @@
//flags
#define CONFIG_ENTRY_LOCKED 1 //can't edit
#define CONFIG_ENTRY_HIDDEN 2 //can't see value
+
+// Policy config keys
+// MAKE SURE THESE ARE UPPERCASE
+/// Displayed to cloned patients
+#define POLICYCONFIG_ON_CLONE "ON_CLONE"
+/// Displayed to defibbed/revival surgery'd patients before the memory loss time threshold
+#define POLICYCONFIG_ON_DEFIB_INTACT "ON_DEFIB_INTACT"
+/// Displayed to defibbed/revival surgery'd patients after the memory loss time threshold
+#define POLICYCONFIG_ON_DEFIB_LATE "ON_DEFIB_LATE"
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index d9a6452f38..5c28694005 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -37,12 +37,14 @@
#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human)
#define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" //from base of atom/animal_attack(): (/mob/user)
#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob, list/examine_return_text)
-#define COMSIG_ATOM_GET_EXAMINE_NAME "atom_examine_name" //from base of atom/get_examine_name(): (/mob, list/overrides)
+///from base of atom/get_examine_name(): (/mob, list/overrides)
+#define COMSIG_ATOM_GET_EXAMINE_NAME "atom_examine_name"
+#define COMSIG_PARENT_EXAMINE_MORE "atom_examine_more" ///from base of atom/examine_more(): (/mob)
//Positions for overrides list
- #define EXAMINE_POSITION_ARTICLE 1
- #define EXAMINE_POSITION_BEFORE 2
+ #define EXAMINE_POSITION_ARTICLE (1<<0)
+ #define EXAMINE_POSITION_BEFORE (1<<1)
//End positions
- #define COMPONENT_EXNAME_CHANGED 1
+ #define COMPONENT_EXNAME_CHANGED (1<<0)
#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon" //from base of atom/update_icon(): ()
#define COMSIG_ATOM_NO_UPDATE_ICON_STATE 1
#define COMSIG_ATOM_NO_UPDATE_OVERLAYS 2
@@ -179,6 +181,10 @@
#define COMSIG_MOB_THROW "mob_throw" //from base of /mob/throw_item(): (atom/target)
#define COMSIG_MOB_KEY_CHANGE "mob_key_change" //from base of /mob/transfer_ckey(): (new_character, old_character)
#define COMSIG_MOB_PRE_PLAYER_CHANGE "mob_pre_player_change" //sent to the target mob from base of /mob/transfer_ckey() and /mind/transfer_to(): (our_character, their_character)
+///from /mob/living/handle_eye_contact(): (mob/living/other_mob)
+#define COMSIG_MOB_EYECONTACT "mob_eyecontact"
+ /// return this if you want to block printing this message to this person, if you want to print your own (does not affect the other person's message)
+ #define COMSIG_BLOCK_EYECONTACT (1<<0)
// #define COMPONENT_STOP_MIND_TRANSFER 1
#define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //from base of /mob/update_sight(): ()
#define COMSIG_MOB_ON_NEW_MIND "mob_on_new_mind" //called when a new mind is assigned to a mob: ()
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index fa7758be1f..42139cdeda 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -310,3 +310,9 @@
#define FOV_90_DEGREES 90
#define FOV_180_DEGREES 180
#define FOV_270_DEGREES 270
+
+/// How far away you can be to make eye contact with someone while examining
+#define EYE_CONTACT_RANGE 5
+
+/// If you examine the same atom twice in this timeframe, we call examine_more() instead of examine()
+#define EXAMINE_MORE_TIME 1 SECONDS
\ No newline at end of file
diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm
index 4647b83cd7..7e8b1c8f38 100644
--- a/code/controllers/configuration/config_entry.dm
+++ b/code/controllers/configuration/config_entry.dm
@@ -209,6 +209,8 @@
new_value = new_list
continue_check_value = new_list.len
if(continue_check_value && continue_check_key && ValidateListEntry(new_key, new_value))
+ new_key = preprocess_key(new_key)
+ new_value = preprocess_value(new_value)
config_entry_value[new_key] = new_value
return TRUE
return FALSE
@@ -216,6 +218,12 @@
/datum/config_entry/keyed_list/vv_edit_var(var_name, var_value)
return var_name != "splitter" && ..()
+/datum/config_entry/keyed_list/proc/preprocess_key(key)
+ return key
+
+/datum/config_entry/keyed_list/proc/preprocess_value(value)
+ return value
+
//snowflake for donator things being on one line smh
/datum/config_entry/multi_keyed_flag
vv_VAS = FALSE
diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index 31431ddab9..1c6e96f9e4 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -14,6 +14,7 @@
var/list/modes // allowed modes
var/list/gamemode_cache
var/list/votable_modes // votable modes
+ // var/list/ic_filter_regex
var/list/storyteller_cache
var/list/mode_names
var/list/mode_reports
@@ -414,3 +415,21 @@
continue
runnable_modes[M] = probabilities[M.config_tag]
return runnable_modes
+/*
+/datum/controller/configuration/proc/LoadChatFilter()
+ var/list/in_character_filter = list()
+
+ if(!fexists("[directory]/in_character_filter.txt"))
+ return
+ log_config("Loading config file in_character_filter.txt...")
+ for(var/line in world.file2list("[directory]/in_character_filter.txt"))
+ if(!line)
+ continue
+ if(findtextEx(line,"#",1,2))
+ continue
+ in_character_filter += REGEX_QUOTE(line)
+
+ ic_filter_regex = in_character_filter.len ? regex("\\b([jointext(in_character_filter, "|")])\\b", "i") : null
+
+ syncChatRegexes()
+*/
diff --git a/code/controllers/configuration/entries/policy.dm b/code/controllers/configuration/entries/policy.dm
new file mode 100644
index 0000000000..de611e1813
--- /dev/null
+++ b/code/controllers/configuration/entries/policy.dm
@@ -0,0 +1,11 @@
+/// Seconds for CMD on defib-with-memory-loss policy config to display instead of defib-intact config
+/datum/config_entry/number/defib_cmd_time_limit
+ config_entry_value = 300
+ integer = TRUE
+
+/datum/config_entry/keyed_list/policyconfig
+ key_mode = KEY_MODE_TEXT
+ value_mode = VALUE_MODE_TEXT
+
+/datum/config_entry/keyed_list/policyconfig/preprocess_key(key)
+ return uppertext(..())
diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm
index 8d4de0c091..bbeb0683f0 100644
--- a/code/controllers/subsystem/chat.dm
+++ b/code/controllers/subsystem/chat.dm
@@ -4,6 +4,7 @@ SUBSYSTEM_DEF(chat)
wait = 1
priority = FIRE_PRIORITY_CHAT
init_order = INIT_ORDER_CHAT
+
var/list/payload = list()
@@ -17,7 +18,7 @@ SUBSYSTEM_DEF(chat)
return
-/datum/controller/subsystem/chat/proc/queue(target, message, handle_whitespace = TRUE)
+/datum/controller/subsystem/chat/proc/queue(target, message, handle_whitespace = TRUE, trailing_newline = TRUE, confidential = TRUE)
if(!target || !message)
return
@@ -35,8 +36,8 @@ SUBSYSTEM_DEF(chat)
if(handle_whitespace)
message = replacetext(message, "\n", "
")
message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]")
- message += "
"
-
+ if (trailing_newline)
+ message += "
"
//url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript.
//Do the double-encoding here to save nanoseconds
@@ -47,7 +48,7 @@ SUBSYSTEM_DEF(chat)
var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible
if(!C)
- return
+ continue
//Send it to the old style output window.
SEND_TEXT(C, original_message)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 47bd52a705..31c9581354 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -128,6 +128,8 @@
transfer_martial_arts(new_character)
if(active || force_key_move)
new_character.key = key //now transfer the key to link the client to our new body
+ if(new_character.client)
+ LAZYCLEARLIST(new_character.client.recent_examines)
current.update_atom_languages()
//CIT CHANGE - makes arousal update when transfering bodies
diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm
index 9c2128163f..40b71eec0a 100644
--- a/code/datums/traits/negative.dm
+++ b/code/datums/traits/negative.dm
@@ -314,6 +314,13 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
medical_record_text = "Patient is usually anxious in social encounters and prefers to avoid them."
var/dumb_thing = TRUE
+/datum/quirk/social_anxiety/add()
+ RegisterSignal(quirk_holder, COMSIG_MOB_EYECONTACT, .proc/eye_contact)
+ RegisterSignal(quirk_holder, COMSIG_MOB_EXAMINATE, .proc/looks_at_floor)
+
+/datum/quirk/social_anxiety/remove()
+ UnregisterSignal(quirk_holder, list(COMSIG_MOB_EYECONTACT, COMSIG_MOB_EXAMINATE))
+
/datum/quirk/social_anxiety/on_process()
var/nearby_people = 0
for(var/mob/living/carbon/human/H in oview(3, quirk_holder))
@@ -330,6 +337,45 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
dumb_thing = FALSE //only once per life
if(prob(1))
new/obj/item/reagent_containers/food/snacks/pastatomato(get_turf(H)) //now that's what I call spaghetti code
+// small chance to make eye contact with inanimate objects/mindless mobs because of nerves
+
+
+
+/datum/quirk/social_anxiety/proc/looks_at_floor(datum/source, atom/A)
+ var/mob/living/mind_check = A
+ if(prob(85) || (istype(mind_check) && mind_check.mind))
+ return
+
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, "You make eye contact with [A]."), 3)
+
+/datum/quirk/social_anxiety/proc/eye_contact(datum/source, mob/living/other_mob, triggering_examiner)
+ if(prob(75))
+ return
+ var/msg
+ if(triggering_examiner)
+ msg = "You make eye contact with [other_mob], "
+ else
+ msg = "[other_mob] makes eye contact with you, "
+
+ switch(rand(1,3))
+ if(1)
+ quirk_holder.Jitter(10)
+ msg += "causing you to start fidgeting!"
+ if(2)
+ quirk_holder.stuttering = max(3, quirk_holder.stuttering)
+ msg += "causing you to start stuttering!"
+ if(3)
+ quirk_holder.Stun(2 SECONDS)
+ msg += "causing you to freeze up!"
+
+ SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "anxiety_eyecontact", /datum/mood_event/anxiety_eyecontact)
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, "[msg]"), 3) // so the examine signal has time to fire and this will print after
+ return COMSIG_BLOCK_EYECONTACT
+
+/datum/mood_event/anxiety_eyecontact
+ description = "Sometimes eye contact makes me so nervous...\n"
+ mood_change = -5
+ timeout = 3 MINUTES
/datum/quirk/phobia
name = "Phobia"
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index bbd38e9021..5d29ef1598 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -366,6 +366,20 @@
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .)
+/**
+ * Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds)
+ *
+ * This is where you can put extra information on something that may be superfluous or not important in critical gameplay
+ * moments, while allowing people to manually double-examine to take a closer look
+ *
+ * Produces a signal [COMSIG_PARENT_EXAMINE_MORE]
+ */
+/atom/proc/examine_more(mob/user)
+ . = list()
+ SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE_MORE, user, .)
+ if(!LAZYLEN(.)) // lol ..length
+ return list("You examine [src] closer, but find nothing of interest...")
+
/// Updates the icon of the atom
/atom/proc/update_icon()
// I expect we're going to need more return flags and options in this proc
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 6f798a41ef..512e3108d4 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -411,6 +411,11 @@
to_chat(occupant, "There is a bright flash!
You feel like a new being.")
mob_occupant.flash_act()
+ var/list/policies = CONFIG_GET(keyed_list/policyconfig)
+ var/policy = policies[POLICYCONFIG_ON_CLONE]
+ if(policy)
+ to_chat(occupant, policy)
+ occupant.log_message("revived using cloning.", LOG_GAME)
mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, mob_occupant.getCloneLoss())
occupant.forceMove(T)
diff --git a/code/game/machinery/computer/arcade/battle.dm b/code/game/machinery/computer/arcade/battle.dm
index b906b1afb5..fc99edd3eb 100644
--- a/code/game/machinery/computer/arcade/battle.dm
+++ b/code/game/machinery/computer/arcade/battle.dm
@@ -184,6 +184,15 @@
blocked = FALSE
return
+/obj/machinery/computer/arcade/battle/examine_more(mob/user)
+ to_chat(user, "Scribbled on the side of the Arcade Machine you notice some writing...\
+ \nmagical -> >=50 power\
+ \nsmart -> defend, defend, light attack\
+ \nshotgun -> defend, defend, power attack\
+ \nshort temper -> counter, counter, counter\
+ \npoisonous -> light attack, light attack, light attack\
+ \nchonker -> power attack, power attack, power attack")
+ return ..()
/obj/machinery/computer/arcade/battle/emag_act(mob/user)
. = ..()
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 58d907e14b..60e869815b 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -113,6 +113,26 @@
. = ..()
. += "It has [uses ? uses : "no"] charges left."
+/obj/item/card/id/examine_more(mob/user)
+ var/list/msg = list("You examine [src] closer, and note the following...")
+
+ if(mining_points)
+ msg += "There's [mining_points] mining equipment redemption point\s loaded onto this card."
+ if(registered_account)
+ msg += "The account linked to the ID belongs to '[registered_account.account_holder]' and reports a balance of [registered_account.account_balance] cr."
+ if(registered_account.account_job)
+ var/datum/bank_account/D = SSeconomy.get_dep_account(registered_account.account_job.paycheck_department)
+ if(D)
+ msg += "The [D.account_holder] reports a balance of [D.account_balance] cr."
+ msg += "Alt-Click the ID to pull money from the linked account in the form of holochips."
+ msg += "You can insert credits into the linked account by pressing holochips, cash, or coins against the ID."
+ if(registered_account.account_holder == user.real_name)
+ msg += "If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number."
+ else
+ msg += "There is no registered account linked to this card. Alt-Click to add one."
+
+ return msg
+
/obj/item/card/emag/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/emagrecharge))
var/obj/item/emagrecharge/ER = W
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index b683ea9934..bcae1d750f 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -619,6 +619,13 @@
if(req_defib)
if(defib.healdisk)
H.heal_overall_damage(25, 25)
+ var/list/policies = CONFIG_GET(keyed_list/policyconfig)
+ var/timelimit = CONFIG_GET(number/defib_cmd_time_limit)
+ var/late = timelimit && (tplus > timelimit)
+ var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT]
+ if(policy)
+ to_chat(H, policy)
+ H.log_message("revived using a defibrillator, [tplus] deciseconds from time of death, considered [late? "late" : "memory-intact"] revival under configured policy limits.", LOG_GAME)
if(req_defib)
defib.deductcharge(revivecost)
cooldown = 1
diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm
index 9b5ca2b066..54824940c1 100644
--- a/code/game/objects/items/stacks/telecrystal.dm
+++ b/code/game/objects/items/stacks/telecrystal.dm
@@ -4,6 +4,7 @@
singular_name = "telecrystal"
icon = 'icons/obj/telescience.dmi'
icon_state = "telecrystal"
+ grind_results = list(/datum/reagent/telecrystal = 20)
w_class = WEIGHT_CLASS_TINY
max_amount = 50
item_flags = NOBLUDGEON
diff --git a/code/game/say.dm b/code/game/say.dm
index 35a1b1d072..a5691ad11f 100644
--- a/code/game/say.dm
+++ b/code/game/say.dm
@@ -110,6 +110,8 @@ GLOBAL_LIST_INIT(freqtospan, list(
/// Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when?
/atom/movable/proc/quoteless_say_quote(input, list/spans = list(speech_span), message_mode)
+ if((input[1] == "!") && (length_char(input) > 1))
+ return ""
var/pos = findtext(input, "*")
return pos? copytext(input, pos + 1) : input
@@ -144,6 +146,8 @@ GLOBAL_LIST_INIT(freqtospan, list(
return "[copytext_char("[freq]", 1, 4)].[copytext_char("[freq]", 4, 5)]"
/atom/movable/proc/attach_spans(input, list/spans)
+ if((input[1] == "!") && (length(input) > 2))
+ return
var/customsayverb = findtext(input, "*")
if(customsayverb)
input = capitalize(copytext(input, customsayverb + length(input[customsayverb])))
diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
index 81ad7ddc26..89ed669e7b 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
@@ -113,8 +113,7 @@
for(var/i in 1 to healseverity)
new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1")
if(totaldamage)
- L.adjustBruteLoss(-brutedamage)
- L.adjustFireLoss(-burndamage)
+ L.heal_overall_damage(brutedamage, burndamage, only_organic = FALSE) //Maybe a machine god shouldn't murder augmented followers instead of healing them
L.adjustOxyLoss(-oxydamage)
L.adjustToxLoss(totaldamage * 0.5, TRUE, TRUE)
clockwork_say(ranged_ability_user, text2ratvar("[has_holy_water ? "Heal tainted" : "Mend wounded"] flesh!"))
diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm
index 13a1803188..ba58769d3e 100644
--- a/code/modules/asset_cache/asset_list_items.dm
+++ b/code/modules/asset_cache/asset_list_items.dm
@@ -192,6 +192,7 @@
/datum/asset/spritesheet/goonchat/register()
InsertAll("emoji", 'icons/emoji.dmi')
+ InsertAll("emoji", 'icons/emoji_32.dmi')
// pre-loading all lanugage icons also helps to avoid meta
InsertAll("language", 'icons/misc/language.dmi')
diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
index d506e5fe02..e230ae55bb 100644
--- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
+++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
@@ -198,7 +198,7 @@
//////////////////////////SPACEWIND/////////////////////////////
/turf/open/proc/consider_pressure_difference(turf/T, difference)
- SSair.high_pressure_delta |= src
+ SSair.high_pressure_delta[src] = TRUE
if(difference > pressure_difference)
pressure_direction = get_dir(src, T)
pressure_difference = difference
@@ -304,7 +304,8 @@
if(!thermal_conductivity)
return FALSE
- SSair.active_super_conductivity |= src
+ SSair.active_super_conductivity[src] = TRUE
+
return TRUE
/turf/open/consider_superconductivity(starting)
diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm
index 120bfbe5e4..a562210164 100644
--- a/code/modules/cargo/exports/sheets.dm
+++ b/code/modules/cargo/exports/sheets.dm
@@ -155,3 +155,10 @@
cost = 30
message = "of paperframes"
export_types = list(/obj/item/stack/sheet/paperframes)
+
+/datum/export/stack/telecrystal
+ unit_name = "raw"
+ cost = 1000
+ message = "telecrystals"
+ export_types = list(/obj/item/stack/telecrystal)
+
diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm
index c181d6fb74..08f9a927c6 100644
--- a/code/modules/cargo/packs/costumes_toys.dm
+++ b/code/modules/cargo/packs/costumes_toys.dm
@@ -301,3 +301,36 @@
/obj/item/clothing/head/wizard/fake)
crate_name = "wizard costume crate"
crate_type = /obj/structure/closet/crate/wooden
+
+/datum/supply_pack/costumes_toys/wedding
+ name = "Wedding Crate"
+ desc = "Tie the knot IN SPACE! Hold your own extravagant wedding with this crate of suits and bridal gowns. Complete with champagne, cake, and the luxurious cost you would expect for an event to remember."
+ cost = 10000 // weddings are absurdly expensive and so is this crate
+ contains = list(/obj/item/clothing/under/suit/black_really, //we don't actually need suits since you can vend them but the crate should feel "complete"
+ /obj/item/clothing/under/suit/black_really,
+ /obj/item/clothing/under/suit/charcoal,
+ /obj/item/clothing/under/suit/charcoal,
+ /obj/item/clothing/under/suit/navy,
+ /obj/item/clothing/under/suit/navy,
+ /obj/item/clothing/under/suit/burgundy,
+ /obj/item/clothing/under/suit/burgundy, // A pair of each "fancy suit" color for variety
+ /obj/item/clothing/under/suit/white,
+ /obj/item/clothing/under/suit/white, // white is a weird color for a groom but some people are weird
+ /obj/item/clothing/under/suit/polychromic,
+ /obj/item/clothing/under/suit/polychromic, // in case you can't be satisfied with the most fitting choices, of course.
+ /obj/item/clothing/under/dress/wedding,
+ /obj/item/clothing/under/dress/wedding, // this is what you actually bought the crate for. You can't get these anywhere else.
+ /obj/item/clothing/under/dress/wedding/orange,
+ /obj/item/clothing/under/dress/wedding/orange,
+ /obj/item/clothing/under/dress/wedding/purple,
+ /obj/item/clothing/under/dress/wedding/purple,
+ /obj/item/clothing/under/dress/wedding/blue,
+ /obj/item/clothing/under/dress/wedding/blue,
+ /obj/item/clothing/under/dress/wedding/red,
+ /obj/item/clothing/under/dress/wedding/red, // two of each
+ /obj/item/reagent_containers/food/drinks/bottle/champagne, //appropriate booze for a wedding
+ /obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake, // we don't have a full wedding cake but this will do
+ /obj/item/storage/fancy/ringbox/silver,
+ /obj/item/storage/fancy/ringbox/silver) //diamond rings cost the same price as this crate via cargo so we're not giving you two for free. Wedding rings are traditionally less valuable anyway.
+ crate_name = "wedding crate"
+
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index 7f670e756f..7f1ba86ff5 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -119,6 +119,8 @@
/// Messages currently seen by this client
var/list/seen_messages
+ ///A lazy list of atoms we've examined in the last EXAMINE_MORE_TIME (default 1.5) seconds, so that we will call [atom/proc/examine_more()] instead of [atom/proc/examine()] on them when examining
+ var/list/recent_examines
///When was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns
var/cryo_warned = -5 MINUTES
diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm
index 65e8063ce0..33d32227e1 100644
--- a/code/modules/emoji/emoji_parse.dm
+++ b/code/modules/emoji/emoji_parse.dm
@@ -2,7 +2,8 @@
. = text
if(!CONFIG_GET(flag/emojis))
return
- var/static/list/emojis = icon_states(icon('icons/emoji.dmi'))
+ var/list/emojis = icon_states(icon('icons/emoji.dmi'))
+ emojis |= icon_states(icon('icons/emoji_32.dmi'))
var/parsed = ""
var/pos = 1
var/search = 0
@@ -18,7 +19,7 @@
var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/goonchat)
var/tag = sheet.icon_tag("emoji-[emoji]")
if(tag)
- parsed += tag
+ parsed += "[tag]" //evil way of enforcing 16x16
pos = search + length(text[pos])
else
parsed += copytext(text, pos, search)
@@ -34,7 +35,8 @@
. = text
if(!CONFIG_GET(flag/emojis))
return
- var/static/list/emojis = icon_states(icon('icons/emoji.dmi'))
+ var/list/emojis = icon_states(icon('icons/emoji.dmi'))
+ emojis |= icon_states(icon('icons/emoji_32.dmi'))
var/final = "" //only tags are added to this
var/pos = 1
var/search = 0
diff --git a/code/modules/events/wisdomcow.dm b/code/modules/events/wisdomcow.dm
index 4a50ccb306..553dd8f309 100644
--- a/code/modules/events/wisdomcow.dm
+++ b/code/modules/events/wisdomcow.dm
@@ -2,7 +2,7 @@
name = "Wisdom cow"
typepath = /datum/round_event/wisdomcow
max_occurrences = 1
- weight = 20
+ weight = 10
/datum/round_event/wisdomcow/announce(fake)
priority_announce("A wise cow has been spotted in the area. Be sure to ask for her advice.", "Nanotrasen Cow Ranching Agency")
diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm
index 6d9e141309..ce27dccb74 100644
--- a/code/modules/goonchat/browserOutput.dm
+++ b/code/modules/goonchat/browserOutput.dm
@@ -2,18 +2,30 @@
For the main html chat area
*********************************/
-//Precaching a bunch of shit
+/// 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
-//On client, created on login
+//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
- var/client/owner //client ref
+ /// The client that owns us.
+ var/client/owner
+ /// How many times client data has been checked
var/total_checks = 0
- var/last_check = 0
- var/loaded = FALSE // Has the client loaded the browser output area?
- var/list/messageQueue //If they haven't loaded chat, this is where messages will go until they do
- var/cookieSent = FALSE // Has the client sent a cookie for analysis
- var/broken = FALSE
+ /// 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
@@ -22,13 +34,18 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
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.
- set waitfor = FALSE
broken = TRUE
message_admins("Couldn't start chat for [key_name_admin(owner)]!")
. = FALSE
@@ -43,6 +60,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
return TRUE
+/// Loads goonchat and sends assets.
/datum/chatOutput/proc/load()
set waitfor = FALSE
if(!owner)
@@ -53,6 +71,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
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
@@ -83,20 +102,22 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
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.
+/// Called on chat output done-loading by JS.
/datum/chatOutput/proc/doneLoading()
if(loaded)
return
@@ -113,34 +134,75 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
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")
-/datum/chatOutput/proc/sendMusic(music, pitch)
+/**
+ * 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(pitch)
- music_data["musicRate"] = pitch
+
+ 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
+/// Sends client connection details to the chat to handle and save
/datum/chatOutput/proc/sendClientData()
//Get dem deets
var/list/deets = list("clientData" = list())
@@ -150,11 +212,11 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
var/data = json_encode(deets)
ehjax_send(data = data)
-//Called by client, sent data to investigate (cookie history so far)
+/// Called by client, sent data to investigate (cookie history so far)
/datum/chatOutput/proc/analyzeClientData(cookie = "")
//Spam check
- if(world.time > last_check + (3 SECONDS))
- last_check = world.time
+ if(world.time > next_time_to_clear)
+ next_time_to_clear = world.time + (3 SECONDS)
total_checks = 0
total_checks += 1
@@ -172,12 +234,13 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
if (connData && islist(connData) && connData.len > 0 && connData["connData"])
connectionHistory = connData["connData"] //lol fuck
var/list/found = new()
- if(connectionHistory.len > 5)
+
+ 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 min(connectionHistory.len, 5) to 1 step -1)
+ for(var/i in connectionHistory.len to 1 step -1)
if(QDELETED(owner))
//he got cleaned up before we were done
return
@@ -191,45 +254,33 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
//Uh oh this fucker has a history of playing on a banned account!!
if (found.len > 0)
- //TODO: add a new evasion ban for the CURRENT client details, using the matched row details
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
+/// Called by js client every 60 seconds
/datum/chatOutput/proc/ping()
return "pong"
-//Called by js client on js error
+/// 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 procs
-/proc/to_chat_immediate(target, message, handle_whitespace=TRUE)
+/// 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
- //Ok so I did my best but I accept that some calls to this will be for shit like sound and images
- //It stands that we PROBABLY don't want to output those to the browser output so just handle them here
- if (istype(target, /savefile))
- CRASH("Invalid message! [message]")
-
- if(!istext(message))
- if (istype(message, /image) || istype(message, /sound))
- CRASH("Invalid message! [message]")
- return
-
if(target == world)
target = GLOB.clients
var/original_message = message
- //Some macros remain in the string even after parsing and fuck up the eventual output
- message = replacetext(message, "\improper", "")
- message = replacetext(message, "\proper", "")
if(handle_whitespace)
message = replacetext(message, "\n", "
")
- message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]")
+ 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
@@ -272,14 +323,19 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico
// 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")
-/proc/to_chat(target, message, handle_whitespace = TRUE)
+/// 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)
+ to_chat_immediate(target, message, handle_whitespace, trailing_newline, confidential)
return
- SSchat.queue(target, message, handle_whitespace)
+ SSchat.queue(target, message, handle_whitespace, trailing_newline, confidential)
-/datum/chatOutput/proc/swaptolightmode() //Dark mode light mode stuff. Yell at KMC if this breaks! (See darkmode.dm for documentation)
+/// 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/html/browserOutput.html b/code/modules/goonchat/browserassets/html/browserOutput.html
index 0acb127517..ce51cd8de8 100644
--- a/code/modules/goonchat/browserassets/html/browserOutput.html
+++ b/code/modules/goonchat/browserassets/html/browserOutput.html
@@ -38,10 +38,10 @@