diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index e820b06f61..89e2c553b9 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -1651,7 +1651,7 @@
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
"eD" = (
-/obj/machinery/mecha_part_fabricator,
+/obj/machinery/mecha_part_fabricator/offstation,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
@@ -2010,12 +2010,12 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"fu" = (
-/obj/machinery/rnd/production/protolathe,
+/obj/machinery/rnd/production/protolathe/offstation,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
"fv" = (
-/obj/machinery/rnd/production/circuit_imprinter,
+/obj/machinery/rnd/production/circuit_imprinter/offstation,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/dropper,
/turf/open/floor/plasteel/white,
diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_singulo.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_singulo.dmm
index da0a0036c5..c842479db7 100644
--- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_singulo.dmm
+++ b/_maps/RandomRuins/StationRuins/Box/Engine/engine_singulo.dmm
@@ -6,7 +6,10 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/door/poddoor/shutters/radiation/preopen,
+/obj/machinery/door/poddoor/shutters/radiation/preopen{
+ id = "engsm";
+ name = "Radiation Chamber Shutters"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering)
"ab" = (
@@ -16,28 +19,40 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/machinery/door/poddoor/shutters/radiation/preopen,
+/obj/machinery/door/poddoor/shutters/radiation/preopen{
+ id = "engsm";
+ name = "Radiation Chamber Shutters"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering)
"ac" = (
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/door/poddoor/shutters/radiation/preopen,
+/obj/machinery/door/poddoor/shutters/radiation/preopen{
+ id = "engsm";
+ name = "Radiation Chamber Shutters"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering)
"ad" = (
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/machinery/door/poddoor/shutters/radiation/preopen,
+/obj/machinery/door/poddoor/shutters/radiation/preopen{
+ id = "engsm";
+ name = "Radiation Chamber Shutters"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering)
"ae" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/machinery/door/poddoor/shutters/radiation/preopen,
+/obj/machinery/door/poddoor/shutters/radiation/preopen{
+ id = "engsm";
+ name = "Radiation Chamber Shutters"
+ },
/turf/open/floor/plasteel,
/area/engine/engineering)
"af" = (
diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm.dmm
index e15eda336c..e9f314cd1a 100644
--- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm.dmm
+++ b/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm.dmm
@@ -2718,7 +2718,7 @@ wt
av
kA
qo
-EL
+MP
MP
MP
Cb
diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm
index 37bc2a7dde..a9c5eab318 100644
--- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm
+++ b/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm
@@ -103,10 +103,6 @@
/obj/structure/window/reinforced,
/turf/open/floor/plasteel,
/area/engine/engineering)
-"dw" = (
-/obj/structure/lattice/catwalk,
-/turf/open/space,
-/area/space/nearstation)
"dZ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -1170,7 +1166,8 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{
dir = 1
},
-/turf/open/floor/plating/airless,
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
/area/engine/engineering)
"Hp" = (
/obj/machinery/atmospherics/components/binary/pump{
@@ -1332,7 +1329,8 @@
/area/engine/engineering)
"LS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
-/turf/open/floor/plating/airless,
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
/area/engine/engineering)
"Mf" = (
/obj/structure/closet/secure_closet/engineering_personal,
@@ -2629,7 +2627,7 @@ EN
fq
LS
Hn
-dw
+tw
yf
Rh
yf
@@ -2655,9 +2653,9 @@ XW
ST
Ok
MP
-dw
-dw
-dw
+tw
+tw
+tw
Rh
Rh
Rh
diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/away_mission/Academy.dmm
similarity index 100%
rename from _maps/RandomZLevels/Academy.dmm
rename to _maps/RandomZLevels/away_mission/Academy.dmm
diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/away_mission/Cabin.dmm
similarity index 100%
rename from _maps/RandomZLevels/Cabin.dmm
rename to _maps/RandomZLevels/away_mission/Cabin.dmm
diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/away_mission/TheBeach.dmm
similarity index 100%
rename from _maps/RandomZLevels/TheBeach.dmm
rename to _maps/RandomZLevels/away_mission/TheBeach.dmm
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/away_mission/caves.dmm
similarity index 100%
rename from _maps/RandomZLevels/caves.dmm
rename to _maps/RandomZLevels/away_mission/caves.dmm
diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/away_mission/challenge.dmm
similarity index 100%
rename from _maps/RandomZLevels/challenge.dmm
rename to _maps/RandomZLevels/away_mission/challenge.dmm
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/away_mission/moonoutpost19.dmm
similarity index 100%
rename from _maps/RandomZLevels/moonoutpost19.dmm
rename to _maps/RandomZLevels/away_mission/moonoutpost19.dmm
diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/away_mission/research.dmm
similarity index 100%
rename from _maps/RandomZLevels/research.dmm
rename to _maps/RandomZLevels/away_mission/research.dmm
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/away_mission/snowdin.dmm
similarity index 100%
rename from _maps/RandomZLevels/snowdin.dmm
rename to _maps/RandomZLevels/away_mission/snowdin.dmm
diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/away_mission/spacebattle.dmm
similarity index 100%
rename from _maps/RandomZLevels/spacebattle.dmm
rename to _maps/RandomZLevels/away_mission/spacebattle.dmm
diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm
similarity index 100%
rename from _maps/RandomZLevels/undergroundoutpost45.dmm
rename to _maps/RandomZLevels/away_mission/undergroundoutpost45.dmm
diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/away_mission/wildwest.dmm
similarity index 100%
rename from _maps/RandomZLevels/wildwest.dmm
rename to _maps/RandomZLevels/away_mission/wildwest.dmm
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index e0dfa2ab74..9c2a1a2883 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -5789,6 +5789,12 @@
/obj/effect/turf_decal/tile/red,
/turf/open/floor/plasteel,
/area/security/brig)
+"akE" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"akF" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/red,
@@ -5804,6 +5810,10 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/security/processing)
+"akH" = (
+/obj/machinery/holopad,
+/turf/open/floor/wood,
+/area/crew_quarters/bar)
"akI" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -5823,6 +5833,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/security/brig)
+"akK" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"akL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/meter,
@@ -5856,6 +5870,10 @@
},
/turf/open/floor/plasteel,
/area/security/main)
+"akP" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"akQ" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -5905,6 +5923,31 @@
/obj/machinery/holopad,
/turf/open/floor/plasteel,
/area/security/brig)
+"akV" = (
+/obj/machinery/door/window/southleft{
+ dir = 1;
+ name = "Test Chamber";
+ req_access_txt = "55"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "misclab";
+ name = "test chamber blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"akW" = (
+/obj/machinery/door/window/southleft{
+ name = "Test Chamber";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"akX" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
@@ -5994,6 +6037,10 @@
},
/turf/open/floor/plasteel,
/area/security/courtroom)
+"alf" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"alg" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
@@ -6050,6 +6097,28 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"alm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"aln" = (
+/obj/effect/landmark/start/scientist,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/chair/comfy/black,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"alo" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -6076,6 +6145,21 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/security/warden)
+"alr" = (
+/obj/machinery/computer/camera_advanced/xenobio{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"als" = (
/obj/machinery/door_timer{
id = "Cell 3";
@@ -6159,6 +6243,29 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"alx" = (
+/obj/structure/table/glass,
+/obj/item/paper_bin{
+ pixel_y = 4
+ },
+/obj/item/folder/white{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/pen{
+ pixel_x = -4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"aly" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -6345,11 +6452,35 @@
"alU" = (
/turf/closed/wall,
/area/maintenance/port/fore)
-"alX" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+"alV" = (
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"alW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"alX" = (
+/obj/machinery/button/door{
+ id = "atmos";
+ name = "Atmospherics Lockdown";
+ pixel_x = 24;
+ pixel_y = 4;
+ req_access_txt = "24"
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"alY" = (
@@ -6422,6 +6553,31 @@
},
/turf/open/floor/plasteel/dark,
/area/security/warden)
+"amh" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"ami" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"amj" = (
/obj/machinery/door_timer{
id = "Cell 2";
@@ -6442,6 +6598,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/security/brig)
+"aml" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"amm" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -6464,6 +6626,12 @@
},
/turf/open/floor/plating,
/area/security/brig)
+"amo" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"amp" = (
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -6591,6 +6759,41 @@
/obj/item/coin/diamond,
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"amG" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio3";
+ name = "containment blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"amH" = (
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"amI" = (
/obj/effect/turf_decal/tile/red{
dir = 4
@@ -6663,6 +6866,31 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/dark,
/area/security/brig)
+"amP" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"amQ" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"amR" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -6683,6 +6911,24 @@
},
/turf/closed/wall/r_wall,
/area/security/brig)
+"amT" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio8";
+ name = "containment blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"amU" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -6818,6 +7064,23 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"ano" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"anp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"anq" = (
/obj/structure/chair{
dir = 8
@@ -6869,6 +7132,14 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
+"anx" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"any" = (
/obj/effect/landmark/event_spawn,
/obj/structure/cable{
@@ -7002,6 +7273,17 @@
/obj/item/bedsheet/blue,
/turf/open/floor/plasteel,
/area/security/brig)
+"anN" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"anO" = (
/obj/docking_port/stationary{
dir = 8;
@@ -7190,6 +7472,33 @@
/obj/item/circuitboard/machine/monkey_recycler,
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"aop" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/mob/living/simple_animal/slime,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"aoq" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio2";
+ name = "containment blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"aor" = (
/obj/structure/table,
/obj/item/restraints/handcuffs,
@@ -7200,6 +7509,24 @@
},
/turf/open/floor/plasteel/dark,
/area/security/brig)
+"aos" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio7";
+ name = "containment blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"aot" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
@@ -7469,12 +7796,19 @@
/turf/open/floor/plating,
/area/security/warden)
"apa" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"apb" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/mob/living/simple_animal/slime,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"apc" = (
/obj/structure/chair/office/dark,
/turf/open/floor/plasteel/showroomfloor,
@@ -7632,6 +7966,26 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"apw" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio1";
+ name = "containment blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"apx" = (
/obj/machinery/door/airlock/atmos/abandoned{
name = "Atmospherics Maintenance";
@@ -7700,7 +8054,9 @@
/area/maintenance/starboard/fore)
"apF" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/engine/atmos)
"apG" = (
@@ -7729,13 +8085,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
-"apI" = (
-/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste{
- dir = 1
- },
-/obj/structure/lattice/catwalk,
-/turf/open/space,
-/area/engine/atmos)
"apJ" = (
/turf/closed/wall,
/area/construction/mining/aux_base)
@@ -8135,6 +8484,24 @@
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"aqB" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio6";
+ name = "containment blast door"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"aqC" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -8179,6 +8546,14 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
+"aqG" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"aqH" = (
/obj/machinery/light{
dir = 1;
@@ -8267,6 +8642,11 @@
"aqR" = (
/turf/open/floor/plating,
/area/maintenance/fore)
+"aqS" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"aqT" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -8444,6 +8824,14 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"ars" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"art" = (
/obj/machinery/light/small{
dir = 1
@@ -8918,6 +9306,12 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"asr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"ass" = (
/obj/machinery/door/airlock/security/glass{
name = "Labor Camp Shuttle Airlock"
@@ -8984,6 +9378,13 @@
"asB" = (
/turf/closed/wall,
/area/maintenance/department/electrical)
+"asC" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
"asD" = (
/obj/structure/table/wood,
/mob/living/simple_animal/pet/fox/Renault,
@@ -36897,21 +37298,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/engine,
/area/science/xenobiology)
-"bJL" = (
-/obj/machinery/door/window/southleft{
- dir = 1;
- name = "Test Chamber";
- req_access_txt = "55"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "misclab";
- name = "test chamber blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
"bJM" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -37500,14 +37886,6 @@
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
-"bLa" = (
-/obj/machinery/door/window/southleft{
- name = "Test Chamber";
- req_access_txt = "55"
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"bLb" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -37755,33 +38133,38 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/turf/open/floor/plasteel/checker,
+/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bLI" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bLJ" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/effect/turf_decal/bot,
+/obj/machinery/computer/atmos_control,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bLK" = (
/turf/closed/wall/r_wall,
/area/engine/atmos)
"bLL" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/effect/turf_decal/bot,
+/obj/machinery/computer/station_alert,
+/obj/machinery/airalarm{
+ pixel_y = 23
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bLM" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/obj/effect/turf_decal/bot,
+/obj/machinery/computer/atmos_alert,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bLN" = (
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/obj/effect/turf_decal/bot,
+/obj/machinery/button/door{
+ id = "atmos";
+ name = "Atmospherics Lockdown";
+ pixel_x = 24;
+ pixel_y = 4;
+ req_access_txt = "24"
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bLO" = (
@@ -38146,25 +38529,11 @@
/turf/closed/wall,
/area/engine/atmos)
"bML" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bMM" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 8
- },
-/obj/machinery/airalarm{
- pixel_y = 23
- },
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bMN" = (
-/obj/machinery/atmospherics/components/trinary/filter{
- dir = 4
- },
+/obj/machinery/atmospherics/components/unary/thermomachine/heater,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bMO" = (
@@ -38233,16 +38602,8 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bMY" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
- },
-/turf/closed/wall/r_wall,
-/area/engine/atmos)
"bMZ" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 6
- },
+/obj/machinery/atmospherics/components/unary/thermomachine/heater/on,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bNb" = (
@@ -38522,18 +38883,20 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/effect/turf_decal/tile/yellow{
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/loading_area{
dir = 8
},
-/turf/open/floor/plasteel/dark/corner,
+/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bNP" = (
/obj/structure/disposalpipe/segment{
- dir = 6
+ dir = 4
},
-/obj/item/radio/intercom{
- name = "Station Intercom (General)";
- pixel_x = -30
+/obj/effect/turf_decal/loading_area{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -38548,9 +38911,6 @@
/obj/structure/disposalpipe/trunk{
dir = 8
},
-/obj/machinery/airalarm{
- pixel_y = 23
- },
/obj/machinery/camera{
c_tag = "Atmospherics Monitoring"
},
@@ -38577,6 +38937,9 @@
/obj/machinery/light{
dir = 8
},
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bNU" = (
@@ -38616,17 +38979,11 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
/area/science/misc_lab)
-"bOa" = (
+"bOb" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bOb" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bOc" = (
@@ -38634,6 +38991,9 @@
dir = 1;
name = "Mix to Distro"
},
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bOd" = (
@@ -38653,16 +39013,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/engine/atmos)
-"bOg" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1;
- name = "Mix to Incinerator"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bOh" = (
/obj/structure/grille,
/turf/closed/wall/r_wall,
@@ -38964,15 +39314,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/virology)
-"bOQ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/loading_area{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
"bOR" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -38980,15 +39321,9 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bOS" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
},
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bOT" = (
@@ -39024,9 +39359,6 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bOW" = (
-/obj/machinery/computer/atmos_control{
- dir = 8
- },
/obj/machinery/requests_console{
department = "Atmospherics";
departmentType = 4;
@@ -39036,8 +39368,8 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
+/obj/machinery/computer/atmos_control{
+ dir = 8
},
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
@@ -39086,17 +39418,19 @@
/turf/open/floor/plasteel/white,
/area/science/circuit)
"bPc" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Mix to Waste"
},
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPd" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- name = "Waste In"
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 8
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -39105,19 +39439,16 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPf" = (
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Air to Mix"
- },
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+/obj/machinery/atmospherics/pipe/simple/purple/visible{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPg" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "Mix Outlet Pump"
+/obj/machinery/atmospherics/pipe/simple/purple/visible{
+ dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPh" = (
@@ -39132,7 +39463,6 @@
/obj/machinery/light{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/yellow/visible,
/obj/effect/turf_decal/tile/green{
dir = 1
},
@@ -39140,6 +39470,9 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/purple/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPj" = (
@@ -39255,14 +39588,6 @@
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
-"bPy" = (
-/obj/effect/landmark/start/scientist,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/chair/comfy/black,
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bPz" = (
/obj/structure/table/glass,
/obj/item/storage/box/beakers{
@@ -39298,41 +39623,6 @@
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
-"bPB" = (
-/obj/structure/table/glass,
-/obj/item/paper_bin{
- pixel_y = 4
- },
-/obj/item/folder/white{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/pen{
- pixel_x = -4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bPC" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
-"bPD" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bPE" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -39555,20 +39845,15 @@
},
/turf/open/floor/plasteel,
/area/security/checkpoint/engineering)
-"bQf" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/turf/open/floor/plasteel/checker,
-/area/hallway/primary/aft)
"bQg" = (
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bQh" = (
-/obj/structure/tank_dispenser{
- pixel_x = -1
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/landmark/start/atmospheric_technician,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bQi" = (
@@ -39592,15 +39877,15 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bQl" = (
-/obj/machinery/computer/atmos_control{
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/computer/atmos_alert{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
"bQm" = (
@@ -39613,15 +39898,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/engine/atmos)
-"bQo" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "atmos";
+ name = "Atmospherics Blast Door"
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/engine/atmos)
"bQp" = (
/obj/structure/cable{
@@ -39652,14 +39934,11 @@
},
/turf/open/floor/plasteel,
/area/security/checkpoint/engineering)
-"bQr" = (
-/obj/structure/closet/crate,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bQs" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/components/binary/pump{
dir = 8;
- name = "Mix to Filter"
+ name = "Air to Waste"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -39669,20 +39948,9 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bQu" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 6
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bQv" = (
-/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bQw" = (
-/obj/machinery/atmospherics/pipe/manifold/green/visible{
+/obj/machinery/atmospherics/pipe/simple/purple/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/turf/open/floor/plasteel,
@@ -39706,6 +39974,9 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bQA" = (
@@ -39775,18 +40046,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/tcommsat/computer)
-"bQL" = (
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bQM" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/line{
@@ -39995,14 +40254,15 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/turf/open/floor/plasteel/dark/corner,
+/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bRr" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/landmark/start/atmospheric_technician,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -24
+ },
+/obj/structure/tank_dispenser,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRs" = (
@@ -40025,12 +40285,12 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRu" = (
-/obj/machinery/computer/atmos_alert{
- dir = 8
- },
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/machinery/computer/atmos_alert{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
"bRv" = (
@@ -40044,25 +40304,20 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRw" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
+/obj/effect/turf_decal/bot,
/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRx" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/engine/atmos)
-"bRy" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bRz" = (
-/obj/machinery/atmospherics/components/trinary/mixer{
- dir = 8
+"bRy" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -40073,12 +40328,13 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRB" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 6
- },
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Waste to Filter"
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRC" = (
@@ -40106,18 +40362,8 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRF" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bRG" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 1;
- name = "Unfiltered to Mix"
- },
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
+/obj/machinery/atmospherics/components/binary/pump{
+ name = "Mix to Ports"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -40136,23 +40382,25 @@
/turf/open/floor/plating,
/area/engine/atmos)
"bRJ" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4;
+ name = "Unfiltered & Air to Mix"
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
},
/obj/effect/turf_decal/tile/green,
/obj/effect/turf_decal/tile/green{
dir = 4
},
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bRK" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 6
},
+/obj/structure/lattice,
/turf/open/space,
/area/space/nearstation)
"bRL" = (
@@ -40254,16 +40502,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/engine,
/area/science/xenobiology)
-"bRX" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bRY" = (
/obj/structure/window/reinforced,
/obj/structure/table/reinforced,
@@ -40448,27 +40686,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
-"bSB" = (
-/obj/machinery/firealarm{
- dir = 1;
- pixel_y = -24
- },
-/obj/structure/table,
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = -8
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = -8
- },
-/obj/item/clothing/mask/breath{
- pixel_x = 4
- },
-/obj/item/clothing/mask/breath{
- pixel_x = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bSC" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
@@ -40478,114 +40695,36 @@
/turf/open/floor/plating,
/area/engine/atmos)
"bSD" = (
-/obj/structure/sign/plaques/atmos{
- pixel_y = -32
- },
-/obj/structure/table,
-/obj/item/storage/box,
-/obj/item/storage/box,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bSE" = (
-/obj/machinery/computer/station_alert{
- dir = 8
- },
-/obj/machinery/light{
- dir = 4
- },
-/obj/machinery/button/door{
- id = "atmos";
- name = "Atmospherics Lockdown";
- pixel_x = 24;
- pixel_y = 4;
+/obj/machinery/door/airlock/atmos/glass{
+ name = "Atmospherics Monitoring";
req_access_txt = "24"
},
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/turf/open/floor/plasteel/dark/corner,
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plasteel,
/area/engine/atmos)
"bSF" = (
-/obj/structure/table,
-/obj/item/clothing/head/welding{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/clothing/head/welding{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/machinery/light{
- dir = 8
- },
-/obj/item/multitool,
-/obj/item/clothing/glasses/welding,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bSG" = (
-/obj/structure/table,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/metal/fifty{
- pixel_x = 2;
- pixel_y = 2
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bSH" = (
-/obj/structure/table,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/storage/belt/utility,
-/obj/item/t_scanner,
-/obj/item/t_scanner,
-/obj/item/t_scanner,
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/nitrogen,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bSI" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bSJ" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/engine/atmos)
-"bSK" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 6
},
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel,
/area/engine/atmos)
"bSM" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/engine/atmos)
-"bSN" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/open/floor/plating,
/area/engine/atmos)
"bSP" = (
-/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
- dir = 4
- },
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plating,
/area/engine/atmos)
"bSQ" = (
@@ -40682,71 +40821,6 @@
/obj/machinery/vending/medical,
/turf/open/floor/plasteel/white,
/area/medical/virology)
-"bTa" = (
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bTb" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio3";
- name = "containment blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
-"bTc" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
-"bTd" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bTe" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio8";
- name = "containment blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
"bTf" = (
/obj/structure/rack,
/obj/item/wrench,
@@ -40989,16 +41063,23 @@
/area/engine/atmos)
"bTM" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/closed/wall,
-/area/engine/atmos)
-"bTN" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/atmos/glass{
- name = "Atmospherics Monitoring";
- req_access_txt = "24"
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
+"bTN" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/structure/closet/secure_closet/atmospherics,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/engine/atmos)
"bTO" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 6
@@ -41011,30 +41092,11 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bTQ" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bTR" = (
-/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
- dir = 4
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bTS" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 6
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bTT" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 8
},
+/obj/machinery/meter,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bTU" = (
@@ -41046,11 +41108,12 @@
"bTV" = (
/obj/machinery/atmospherics/components/binary/pump{
dir = 8;
- name = "N2O Outlet Pump"
+ name = "N2O to Pure"
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/open/floor/plasteel/cafeteria,
/area/engine/atmos)
"bTW" = (
@@ -41134,16 +41197,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/engine,
/area/science/xenobiology)
-"bUf" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bUg" = (
/obj/structure/window/reinforced{
dir = 1
@@ -41240,7 +41293,7 @@
/area/science/circuit)
"bUr" = (
/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 10
},
/turf/open/space,
@@ -41383,6 +41436,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/effect/decal/cleanable/oil{
+ icon_state = "floor5"
+ },
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
"bUJ" = (
@@ -41413,31 +41469,19 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
+ dir = 9
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"bUN" = (
-/obj/item/beacon,
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bUO" = (
/obj/machinery/atmospherics/components/binary/pump{
- name = "Mix to Port"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bUP" = (
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Air to Port"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bUQ" = (
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Pure to Port"
+ dir = 8;
+ name = "Ports to External"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -41456,11 +41500,14 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel/white/corner,
/area/engine/atmos)
"bUU" = (
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/obj/machinery/atmospherics/miner/n2o,
+/obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide,
/turf/open/floor/engine/n2o,
/area/engine/atmos)
"bUV" = (
@@ -41471,6 +41518,7 @@
/obj/machinery/light/small{
dir = 4
},
+/obj/machinery/atmospherics/miner/n2o,
/turf/open/floor/engine/n2o,
/area/engine/atmos)
"bUY" = (
@@ -41820,6 +41868,10 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/suit_storage_unit/atmos,
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
"bVS" = (
@@ -41836,17 +41888,10 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bVU" = (
-/obj/structure/reagent_dispensers/watertank/high,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bVV" = (
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bVW" = (
@@ -41866,33 +41911,16 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bVY" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible,
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bVZ" = (
/obj/machinery/atmospherics/pipe/manifold/general/visible{
dir = 8
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bWa" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bWb" = (
+"bWc" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{
dir = 1
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bWc" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
- },
/obj/effect/turf_decal/tile/red{
dir = 4
},
@@ -42175,21 +42203,21 @@
},
/area/engine/atmos)
"bWN" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 4
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
},
-/obj/machinery/door/poddoor/preopen{
- id = "atmos";
- name = "Atmospherics Blast Door"
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
},
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bWO" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+/turf/open/floor/plasteel/dark/corner{
dir = 1
},
-/obj/machinery/meter,
+/area/engine/atmos)
+"bWO" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
/turf/closed/wall/r_wall,
/area/engine/atmos)
"bWP" = (
@@ -42213,42 +42241,15 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bWS" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = 27
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics West";
- dir = 8
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bWT" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27
- },
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Air to Port"
- },
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bWU" = (
/obj/machinery/light{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
- dir = 4
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Mix to Engine"
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bWV" = (
@@ -42335,42 +42336,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/virology)
-"bXe" = (
-/mob/living/simple_animal/slime,
-/turf/open/floor/engine,
-/area/science/xenobiology)
-"bXf" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio2";
- name = "containment blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
-"bXg" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio7";
- name = "containment blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
"bXh" = (
/obj/structure/filingcabinet/chestdrawer,
/turf/open/floor/plasteel,
@@ -42598,23 +42563,10 @@
},
/area/engine/atmos)
"bXK" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 9
- },
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible,
/turf/closed/wall/r_wall,
/area/engine/atmos)
-"bXL" = (
-/obj/structure/sign/warning/securearea,
-/turf/closed/wall/r_wall,
-/area/engine/atmos)
-"bXM" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/atmos{
- name = "Atmospherics";
- req_access_txt = "24"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bXN" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -42654,29 +42606,7 @@
/obj/structure/fireaxecabinet{
pixel_x = -32
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bXR" = (
-/obj/structure/closet/secure_closet/atmospherics,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/item/cartridge/atmos,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bXS" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/machinery/portable_atmospherics/canister,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bXT" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 8
- },
-/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bXU" = (
@@ -42692,11 +42622,19 @@
},
/obj/machinery/atmospherics/components/binary/pump{
dir = 8;
- name = "Plasma Outlet Pump"
+ name = "Plasma to Pure"
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
/obj/effect/turf_decal/stripes/line{
dir = 5
},
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bXW" = (
@@ -42998,31 +42936,19 @@
/obj/effect/turf_decal/tile/yellow,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
-"bYJ" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/turf/open/floor/plasteel/dark/corner{
- dir = 1
- },
-/area/engine/break_room)
-"bYK" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/turf/open/floor/plasteel/checker,
-/area/engine/break_room)
"bYL" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/machinery/door/firedoor/heavy,
+/obj/machinery/door/airlock/atmos{
+ name = "Atmospherics";
+ req_access_txt = "24"
+ },
/turf/open/floor/plasteel/dark/corner{
dir = 1
},
-/area/engine/break_room)
+/area/engine/atmos)
"bYM" = (
/obj/machinery/airalarm{
dir = 1;
@@ -43040,9 +42966,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
-"bYN" = (
-/turf/closed/wall,
-/area/security/checkpoint/engineering)
"bYO" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -43054,35 +42977,27 @@
/turf/closed/wall,
/area/crew_quarters/bar)
"bYQ" = (
-/obj/machinery/suit_storage_unit/atmos,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-8"
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bYR" = (
-/obj/structure/sign/warning/nosmoking,
-/turf/closed/wall,
-/area/engine/atmos)
-"bYS" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 4
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/engine/atmos)
"bYT" = (
/obj/machinery/computer/atmos_control/tank/toxin_tank{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/effect/turf_decal/tile/purple,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bYU" = (
-/obj/machinery/portable_atmospherics/canister/toxins,
-/obj/machinery/atmospherics/miner/toxins,
+/obj/effect/turf_decal/vg_decals/atmos/plasma,
/turf/open/floor/engine/plasma,
/area/engine/atmos)
"bYV" = (
@@ -43093,6 +43008,7 @@
/obj/machinery/light/small{
dir = 4
},
+/obj/machinery/atmospherics/miner/toxins,
/turf/open/floor/engine/plasma,
/area/engine/atmos)
"bYX" = (
@@ -43376,42 +43292,29 @@
/obj/structure/cable{
icon_state = "0-4"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bZG" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bZH" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 4
- },
-/obj/item/wrench,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bZI" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 8
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bZJ" = (
+"bZK" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{
dir = 1
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"bZK" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
- },
/obj/effect/turf_decal/stripes/line{
dir = 6
},
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bZL" = (
@@ -43794,57 +43697,9 @@
},
/turf/closed/wall/r_wall,
/area/security/checkpoint/engineering)
-"caE" = (
-/obj/machinery/requests_console{
- department = "Atmospherics";
- departmentType = 4;
- name = "Atmos RC";
- pixel_x = 30
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"caF" = (
-/obj/machinery/light{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics Central";
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Port to Filter"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"caG" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/heater{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"caH" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 8
- },
-/obj/structure/chair/stool,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"caI" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/maintenance/aft)
"caJ" = (
/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 5
- },
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/space,
/area/space/nearstation)
"caK" = (
@@ -43969,38 +43824,6 @@
},
/turf/open/floor/plating,
/area/maintenance/aft)
-"caV" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio1";
- name = "containment blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
-"caW" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio6";
- name = "containment blast door"
- },
-/turf/open/floor/engine,
-/area/science/xenobiology)
"caX" = (
/obj/machinery/sparker{
id = "testigniter";
@@ -44284,42 +44107,10 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"cbB" = (
-/obj/machinery/space_heater,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cbC" = (
-/obj/machinery/space_heater,
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cbD" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "Port to Filter"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cbE" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cbF" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible,
-/obj/item/cigbutt,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"cbG" = (
/obj/machinery/atmospherics/components/binary/pump{
dir = 8;
- name = "CO2 Outlet Pump"
+ name = "CO2 to Pure"
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -44328,6 +44119,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cbH" = (
@@ -44343,9 +44135,6 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 10
- },
/turf/open/floor/plating,
/area/maintenance/aft)
"cbK" = (
@@ -44428,13 +44217,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/engine,
/area/science/xenobiology)
-"cbT" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"cbU" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -44696,24 +44478,12 @@
dir = 4;
pixel_x = -24
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"ccw" = (
/turf/closed/wall/r_wall,
/area/engine/engineering)
-"ccx" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
- dir = 1
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"ccy" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"ccz" = (
/obj/machinery/atmospherics/components/binary/pump{
dir = 4;
@@ -44729,11 +44499,11 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"ccB" = (
-/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
-/obj/machinery/atmospherics/miner/carbon_dioxide,
+/obj/effect/turf_decal/vg_decals/atmos/carbon_dioxide,
/turf/open/floor/engine/co2,
/area/engine/atmos)
"ccC" = (
@@ -44744,6 +44514,7 @@
/obj/machinery/light/small{
dir = 4
},
+/obj/machinery/atmospherics/miner/carbon_dioxide,
/turf/open/floor/engine/co2,
/area/engine/atmos)
"ccE" = (
@@ -44838,10 +44609,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"ccP" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"ccQ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -45054,52 +44821,24 @@
dir = 4;
pixel_x = -22
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cdx" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"cdy" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
-/obj/machinery/meter,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cdz" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1;
- name = "O2 to Pure"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cdA" = (
-/obj/machinery/atmospherics/components/trinary/mixer/airmix{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cdB" = (
+"cdC" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{
dir = 1
},
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cdC" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 4
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
},
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cdD" = (
@@ -45112,9 +44851,6 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
- },
/turf/open/floor/plating,
/area/maintenance/aft)
"cdF" = (
@@ -45441,6 +45177,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cey" = (
@@ -45464,26 +45201,19 @@
/obj/machinery/light{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 6
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 9
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"ceC" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/turf/open/floor/plating,
-/area/maintenance/aft)
"ceD" = (
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
- },
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/maintenance/aft)
"ceE" = (
@@ -45491,6 +45221,9 @@
pixel_y = -32
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/maintenance/aft)
"ceF" = (
@@ -45693,21 +45426,29 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"cfi" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/n2,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cfj" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
/turf/closed/wall,
/area/maintenance/disposal/incinerator)
"cfk" = (
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/atmos{
name = "Turbine Access";
req_access_txt = "32"
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/maintenance/disposal/incinerator)
"cfl" = (
@@ -45922,17 +45663,8 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/engine/engineering)
-"cfN" = (
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cfO" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/portable_atmospherics/pump,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"cfP" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
+/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse{
dir = 4
},
/turf/open/floor/plasteel,
@@ -45944,22 +45676,11 @@
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"cfR" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
-"cfT" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"cfU" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/maintenance/disposal/incinerator)
"cfW" = (
@@ -45969,7 +45690,6 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/turf/open/floor/plating,
/area/maintenance/aft)
"cfX" = (
@@ -45979,7 +45699,9 @@
pixel_y = -24
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
/turf/open/floor/plating,
/area/maintenance/aft)
"cfY" = (
@@ -45989,14 +45711,15 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/maintenance/disposal/incinerator)
"cfZ" = (
/obj/machinery/light_switch{
pixel_y = 26
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cga" = (
@@ -46335,11 +46058,12 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgW" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/portable_atmospherics/pump,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -46347,11 +46071,17 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgX" = (
/obj/machinery/light,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgY" = (
@@ -46366,6 +46096,9 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cgZ" = (
@@ -46376,17 +46109,22 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cha" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
+/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{
+ dir = 4
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"chb" = (
@@ -46401,6 +46139,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"chc" = (
@@ -46410,6 +46151,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 9
+ },
/turf/open/floor/plasteel/white/corner,
/area/engine/atmos)
"chd" = (
@@ -46417,6 +46161,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel/cafeteria,
/area/engine/atmos)
"che" = (
@@ -46470,15 +46217,17 @@
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"chk" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
/turf/closed/wall,
/area/maintenance/disposal/incinerator)
"chl" = (
/obj/machinery/light{
dir = 1
},
-/obj/machinery/atmospherics/components/binary/pump{
- name = "atmospherics mix pump"
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
@@ -46493,16 +46242,13 @@
/obj/structure/cable/yellow{
icon_state = "0-8"
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/maintenance/disposal/incinerator)
"chn" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable/yellow{
icon_state = "2-4"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 10
- },
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cho" = (
@@ -46543,13 +46289,6 @@
/obj/machinery/atmospherics/pipe/manifold/general/visible,
/turf/open/floor/circuit/telecomms,
/area/science/xenobiology)
-"cht" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"chu" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
@@ -46926,6 +46665,9 @@
"civ" = (
/obj/machinery/atmospherics/pipe/simple/green/visible,
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/engine/atmos)
"cix" = (
@@ -46960,12 +46702,16 @@
/obj/effect/decal/cleanable/cobweb,
/obj/structure/reagent_dispensers/watertank,
/obj/item/extinguisher,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"ciC" = (
/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 6
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 5
},
/turf/open/space,
/area/space/nearstation)
@@ -47296,35 +47042,16 @@
/turf/open/floor/plasteel,
/area/construction)
"cjp" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
- },
/obj/structure/reagent_dispensers/fueltank,
/obj/item/storage/toolbox/emergency,
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
-"cjq" = (
-/obj/machinery/atmospherics/components/binary/valve{
- name = "Mix to Space"
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cjr" = (
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
-"cjs" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
-"cjt" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
"cju" = (
/obj/machinery/atmospherics/components/binary/pump{
dir = 1;
@@ -47333,9 +47060,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cjv" = (
@@ -47345,10 +47069,6 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cjw" = (
@@ -47361,9 +47081,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall,
/area/maintenance/disposal/incinerator)
"cjy" = (
@@ -47628,30 +47346,27 @@
/area/engine/atmos)
"cke" = (
/obj/structure/chair/stool,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"ckf" = (
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/maintenance/disposal/incinerator)
"ckg" = (
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 8
- },
-/obj/machinery/meter,
+/obj/machinery/atmospherics/components/binary/valve,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"ckh" = (
/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "Mix to MiniSat"
- },
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
-"cki" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 4
+ dir = 4;
+ name = "atmospherics mix pump"
},
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
@@ -47662,17 +47377,6 @@
},
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
-"ckk" = (
-/obj/structure/cable/yellow{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/components/binary/valve{
- dir = 4;
- name = "Incinerator to Space"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
"ckl" = (
/obj/machinery/portable_atmospherics/canister,
/obj/effect/decal/cleanable/cobweb,
@@ -47686,11 +47390,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/maintenance/aft)
-"ckn" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/science/xenobiology)
"cko" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall,
@@ -47949,7 +47648,6 @@
/area/engine/atmos)
"cld" = (
/obj/effect/landmark/blobstart,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/components/binary/pump{
dir = 4;
name = "Mix to Incinerator"
@@ -47967,19 +47665,6 @@
/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
-"clg" = (
-/obj/item/radio/intercom{
- name = "Station Intercom (General)";
- pixel_y = -29
- },
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/pen,
-/turf/open/floor/plating,
-/area/maintenance/disposal/incinerator)
"clh" = (
/obj/machinery/light/small,
/obj/structure/extinguisher_cabinet{
@@ -48010,7 +47695,6 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"clk" = (
@@ -48265,16 +47949,14 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"clT" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/machinery/atmospherics/miner/nitrogen,
+/obj/effect/turf_decal/vg_decals/atmos/nitrogen,
/turf/open/floor/engine/n2,
/area/engine/atmos)
"clU" = (
/turf/open/floor/engine/n2,
/area/engine/atmos)
"clV" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/obj/machinery/atmospherics/miner/oxygen,
+/obj/effect/turf_decal/vg_decals/atmos/oxygen,
/turf/open/floor/engine/o2,
/area/engine/atmos)
"clW" = (
@@ -48288,9 +47970,11 @@
/turf/open/floor/engine/air,
/area/engine/atmos)
"cmb" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cmd" = (
/turf/closed/wall/r_wall,
@@ -48300,20 +47984,14 @@
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"cmf" = (
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4;
+ name = "Incinerator to Space"
},
-/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{
- pixel_x = 38;
- pixel_y = 6
- },
-/turf/open/floor/engine,
+/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"cmg" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden{
@@ -48529,10 +48207,12 @@
/area/engine/engineering)
"cmU" = (
/obj/machinery/light/small,
+/obj/machinery/atmospherics/miner/nitrogen,
/turf/open/floor/engine/n2,
/area/engine/atmos)
"cmV" = (
/obj/machinery/light/small,
+/obj/machinery/atmospherics/miner/oxygen,
/turf/open/floor/engine/o2,
/area/engine/atmos)
"cmW" = (
@@ -49808,10 +49488,6 @@
},
/turf/open/space,
/area/space/nearstation)
-"csk" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
"csl" = (
/obj/structure/transit_tube/curved{
dir = 4
@@ -49867,8 +49543,8 @@
/area/ai_monitored/turret_protected/aisat_interior)
"csM" = (
/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/obj/structure/transit_tube/crossing/horizontal,
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/space,
/area/space/nearstation)
"csN" = (
@@ -49934,7 +49610,7 @@
/area/ai_monitored/turret_protected/aisat_interior)
"ctd" = (
/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/space,
/area/space/nearstation)
"ctg" = (
@@ -50199,13 +49875,6 @@
/obj/effect/landmark/start/cyborg,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
-"ctN" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 10
- },
-/obj/structure/lattice,
-/turf/open/space,
-/area/space/nearstation)
"ctP" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -50301,8 +49970,8 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"ctY" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/aisat/atmos)
"ctZ" = (
@@ -50382,11 +50051,11 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"cuh" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/obj/structure/rack,
/obj/item/wrench,
/obj/item/crowbar/red,
/obj/item/clothing/head/welding,
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/aisat/atmos)
"cui" = (
@@ -50419,7 +50088,7 @@
/area/ai_monitored/turret_protected/aisat/service)
"cun" = (
/obj/machinery/atmospherics/components/binary/pump{
- name = "Mix to MiniSat"
+ name = "Incinerator to MiniSat"
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
@@ -52454,23 +52123,12 @@
/turf/open/floor/engine/vacuum,
/area/science/mixing)
"cBF" = (
+/obj/effect/landmark/event_spawn,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
dir = 8
},
-/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/engine/atmos)
-"cBG" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"cBH" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -52483,9 +52141,6 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/engineering)
"cBJ" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
- dir = 9
- },
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -52529,8 +52184,8 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cBP" = (
-/obj/machinery/portable_atmospherics/canister/air,
/obj/effect/landmark/event_spawn,
+/obj/effect/turf_decal/vg_decals/atmos/air,
/turf/open/floor/engine/air,
/area/engine/atmos)
"cBS" = (
@@ -52660,9 +52315,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cCB" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 10
- },
+/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cCC" = (
@@ -52672,18 +52325,16 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cCD" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- name = "Mix to Engine"
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"cCE" = (
-/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/atmospherics/pipe/simple/orange/visible{
+/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"cCF" = (
@@ -53178,6 +52829,10 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"cLS" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/security/vacantoffice/b)
"cMC" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -53869,20 +53524,27 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel,
/area/security/brig)
+"daq" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/machinery/portable_atmospherics/canister,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"daI" = (
-/obj/structure/reagent_dispensers/foamtank,
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"dbb" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste{
dir = 1
},
-/obj/effect/turf_decal/stripes/box,
-/turf/open/floor/plasteel,
+/obj/structure/lattice/catwalk,
+/turf/open/space,
/area/engine/atmos)
"dbU" = (
/obj/structure/light_construct{
@@ -53953,6 +53615,20 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"diH" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/machinery/suit_storage_unit/atmos,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"dly" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -54038,6 +53714,13 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"dAe" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 1
+ },
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"dBm" = (
/obj/machinery/portable_atmospherics/scrubber,
/turf/open/floor/plating,
@@ -54060,6 +53743,16 @@
},
/turf/open/floor/plasteel,
/area/security/range)
+"dEX" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/requests_console{
+ department = "Atmospherics";
+ departmentType = 4;
+ name = "Atmos RC";
+ pixel_x = -30
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"dFX" = (
/turf/closed/wall,
/area/crew_quarters/fitness/pool)
@@ -54082,6 +53775,13 @@
/obj/structure/chair/stool/bar,
/turf/open/floor/wood,
/area/maintenance/bar)
+"dMj" = (
+/obj/machinery/space_heater,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"dMZ" = (
/obj/structure/sign/poster/official/random{
pixel_y = 32
@@ -54114,6 +53814,13 @@
},
/turf/open/floor/plating,
/area/maintenance/fore)
+"dQD" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Incinerator to MiniSat"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal/incinerator)
"dTI" = (
/obj/structure/urinal{
pixel_y = 32
@@ -54193,6 +53900,13 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"eiZ" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/purple/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"elh" = (
/obj/structure/chair/comfy/black{
dir = 8
@@ -54233,6 +53947,12 @@
/obj/item/assembly/signaler,
/turf/open/floor/plating,
/area/security/prison)
+"eqq" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"eqA" = (
/obj/machinery/shower{
dir = 8
@@ -54270,6 +53990,13 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/wood,
/area/library)
+"eus" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"evR" = (
/turf/open/floor/plating,
/area/maintenance/bar)
@@ -54298,6 +54025,24 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
+"eyS" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Air to Pure"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"ezF" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"eAG" = (
/obj/item/clothing/under/misc/pj/blue,
/obj/item/clothing/shoes/sneakers/white,
@@ -54379,12 +54124,6 @@
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating/airless,
/area/space/nearstation)
-"eHI" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
"eJa" = (
/obj/structure/table/wood/poker,
/obj/item/toy/cards/deck{
@@ -54418,6 +54157,13 @@
/obj/structure/closet/secure_closet/personal/cabinet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
+"eUW" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 9
+ },
+/turf/open/space,
+/area/space/nearstation)
"eVC" = (
/obj/effect/spawner/structure/window,
/obj/machinery/door/firedoor,
@@ -54505,10 +54251,23 @@
dir = 4
},
/area/crew_quarters/theatre)
+"fiy" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
"fjS" = (
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
+"fjU" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space,
+/area/space/nearstation)
"flc" = (
/obj/structure/table/reinforced,
/obj/item/storage/fancy/donut_box,
@@ -54740,6 +54499,13 @@
},
/turf/open/floor/plasteel,
/area/hydroponics)
+"fHi" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 10
+ },
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"fHG" = (
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
@@ -54764,6 +54530,12 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/science/circuit)
+"fKC" = (
+/obj/structure/chair/office/dark{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"fMp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
@@ -54784,12 +54556,20 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
-"fPL" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
+"fPi" = (
+/obj/effect/decal/cleanable/oil{
+ icon_state = "floor6"
+ },
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"fSO" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
-/turf/open/floor/wood,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"fTg" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -54910,6 +54690,17 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
+"giT" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"gjl" = (
/turf/closed/wall,
/area/quartermaster/warehouse)
@@ -54940,6 +54731,12 @@
},
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
+"grr" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
"grA" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -54981,6 +54778,11 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
+"gxw" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible,
+/obj/machinery/meter,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
"gyr" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
@@ -54999,6 +54801,16 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/maintenance/fore)
+"gAu" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "External to Waste"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"gBo" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -55062,6 +54874,15 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"gMD" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"gNC" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -55190,6 +55011,13 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plating,
/area/maintenance/port)
+"hgG" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -27
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"hgO" = (
/obj/structure/table,
/obj/item/storage/pill_bottle/dice{
@@ -55256,6 +55084,11 @@
},
/turf/open/floor/plating,
/area/space/nearstation)
+"hxn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/floor/plating,
+/area/engine/atmos)
"hzK" = (
/turf/open/floor/plasteel/yellowsiding/corner{
dir = 1
@@ -55331,6 +55164,15 @@
},
/turf/closed/wall,
/area/quartermaster/warehouse)
+"hQY" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"hRa" = (
/obj/structure/table/reinforced,
/obj/machinery/light{
@@ -55464,6 +55306,13 @@
"ipA" = (
/turf/open/floor/plating,
/area/maintenance/department/medical/morgue)
+"iql" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/item/beacon,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"itD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -55513,6 +55362,14 @@
/obj/effect/turf_decal/tile/green,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"ivJ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/purple/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
"iwB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -55556,6 +55413,14 @@
},
/turf/closed/wall/r_wall,
/area/engine/gravity_generator)
+"iIS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plating,
+/area/engine/atmos)
"iLJ" = (
/obj/item/reagent_containers/glass/bucket,
/mob/living/simple_animal/pet/bumbles,
@@ -55618,10 +55483,15 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
-"iUK" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+"iVJ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel,
-/area/security/vacantoffice/b)
+/area/engine/atmos)
"iVU" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -55753,6 +55623,13 @@
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"jtj" = (
+/obj/machinery/space_heater,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"juG" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -55791,6 +55668,14 @@
},
/turf/open/floor/plasteel,
/area/ai_monitored/security/armory)
+"jzM" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
"jAD" = (
/obj/structure/grille,
/turf/open/floor/plating/airless,
@@ -55823,6 +55708,14 @@
},
/turf/closed/wall/r_wall,
/area/engine/gravity_generator)
+"jBQ" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Pure to Ports"
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"jCq" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -55835,6 +55728,17 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"jDr" = (
+/obj/machinery/door/poddoor/preopen{
+ id = "atmos";
+ name = "Atmospherics Blast Door"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"jEc" = (
/obj/machinery/vr_sleeper{
dir = 8
@@ -55856,6 +55760,12 @@
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
+"jGI" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
"jGW" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -55888,6 +55798,11 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"jIj" = (
+/obj/machinery/portable_atmospherics/scrubber/huge,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"jIs" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -55969,6 +55884,17 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"jVX" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/engine/atmos)
"jZT" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -56004,6 +55930,11 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"kcx" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
"kdO" = (
/obj/machinery/pool/controller,
/turf/open/floor/plasteel/yellowsiding,
@@ -56259,6 +56190,13 @@
/obj/effect/landmark/stationroom/box/engine,
/turf/open/space/basic,
/area/space)
+"kGv" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"kGJ" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -56292,6 +56230,13 @@
},
/turf/open/floor/plasteel,
/area/security/processing)
+"kJE" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"kMt" = (
/obj/machinery/computer/prisoner/gulag_teleporter_computer,
/turf/open/floor/plasteel,
@@ -56431,6 +56376,19 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"lgX" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
+"lhQ" = (
+/obj/machinery/power/floodlight,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
"lip" = (
/obj/structure/closet{
name = "Suit Closet"
@@ -56502,6 +56460,11 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"lzt" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"lAB" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
@@ -56557,6 +56520,12 @@
},
/turf/open/floor/plating,
/area/security/main)
+"lKj" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
"lMg" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -56638,6 +56607,10 @@
},
/turf/closed/wall,
/area/crew_quarters/fitness/pool)
+"maT" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
"mbU" = (
/obj/machinery/vr_sleeper{
dir = 8
@@ -56662,6 +56635,11 @@
/obj/structure/bed,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
+"mfI" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
"mgF" = (
/obj/structure/bed,
/turf/open/floor/plasteel,
@@ -56877,6 +56855,12 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
+"mOG" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/engine/atmos)
"mPk" = (
/obj/structure/bed,
/obj/machinery/button/door{
@@ -56980,12 +56964,6 @@
/obj/machinery/vending/autodrobe,
/turf/open/floor/wood,
/area/maintenance/bar)
-"nfw" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/dorms)
"ngs" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
@@ -57021,6 +56999,19 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"nmZ" = (
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{
+ pixel_x = 38;
+ pixel_y = 6
+ },
+/turf/open/floor/engine,
+/area/maintenance/disposal/incinerator)
"nnp" = (
/obj/structure/closet/secure_closet/medical1,
/obj/effect/decal/cleanable/dirt,
@@ -57076,6 +57067,12 @@
},
/turf/open/floor/plating,
/area/construction)
+"nzR" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
"nBI" = (
/obj/item/cigbutt/cigarbutt,
/obj/effect/decal/cleanable/blood/old,
@@ -57091,6 +57088,13 @@
},
/turf/open/floor/plating,
/area/security/processing)
+"nFj" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
"nGf" = (
/obj/machinery/hydroponics/constructable,
/obj/machinery/light{
@@ -57109,6 +57113,14 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"nJQ" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/obj/machinery/atmospherics/pipe/simple/purple/visible{
+ dir = 4
+ },
+/turf/open/space,
+/area/space/nearstation)
"nLu" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -57166,6 +57178,12 @@
},
/turf/open/floor/plasteel,
/area/security/processing)
+"nTU" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ name = "Air to Ports"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"nUV" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -57192,6 +57210,14 @@
/obj/item/gun/ballistic/revolver/nagant,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/nuke_storage)
+"nYT" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/turf/open/space,
+/area/space/nearstation)
"nZE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
@@ -57314,6 +57340,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"omk" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"omX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -57541,6 +57573,17 @@
/obj/structure/pool/ladder,
/turf/open/pool,
/area/crew_quarters/fitness/pool)
+"oVN" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"oXn" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
"oZl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/closet/wardrobe/pjs,
@@ -57589,21 +57632,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
-"plm" = (
-/obj/structure/reagent_dispensers/watertank/high,
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/box,
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"plC" = (
/obj/machinery/door/airlock/maintenance{
req_access_txt = "12"
@@ -57701,6 +57729,22 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"pzG" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_y = -29
+ },
+/obj/structure/table,
+/obj/item/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/obj/item/pen,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal/incinerator)
"pAK" = (
/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 3";
@@ -57728,6 +57772,11 @@
/obj/effect/landmark/event_spawn,
/turf/closed/wall,
/area/crew_quarters/fitness)
+"pCj" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plating,
+/area/engine/atmos)
"pDe" = (
/obj/machinery/door/window/southright{
name = "Target Storage"
@@ -57849,13 +57898,6 @@
},
/turf/open/floor/plating,
/area/crew_quarters/fitness)
-"pRW" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plating,
-/area/maintenance/fore/secondary)
"pTB" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -57873,6 +57915,12 @@
},
/turf/open/floor/plasteel,
/area/security/processing)
+"pUP" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"qaY" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/tile/bar,
@@ -57983,6 +58031,15 @@
/obj/structure/grille/broken,
/turf/open/space/basic,
/area/space/nearstation)
+"qvf" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms)
"qyj" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
@@ -58005,6 +58062,11 @@
},
/turf/open/space,
/area/solar/port/aft)
+"qJV" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/obj/structure/lattice,
+/turf/open/space,
+/area/space/nearstation)
"qLR" = (
/obj/structure/mirror{
pixel_y = 32
@@ -58098,6 +58160,13 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
+"rdl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
"rdG" = (
/obj/machinery/hydroponics/constructable,
/obj/item/radio/intercom{
@@ -58117,10 +58186,12 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
-"rfW" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
+"rgL" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/dorms)
"rhX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
@@ -58136,6 +58207,13 @@
/obj/structure/chair/comfy/brown,
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"rmQ" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"rmX" = (
/obj/structure/table,
/obj/item/reagent_containers/food/drinks/beer,
@@ -58407,6 +58485,18 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"rVN" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/engine/atmos)
"rXl" = (
/obj/structure/chair/office/light,
/obj/machinery/firealarm{
@@ -58494,6 +58584,13 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/maintenance/department/medical/morgue)
+"smP" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/closet/crate,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"sqg" = (
/obj/structure/table/wood,
/obj/item/clothing/under/misc/pj/red,
@@ -58773,6 +58870,10 @@
"sXV" = (
/turf/closed/wall/r_wall,
/area/security/range)
+"sYm" = (
+/obj/effect/turf_decal/vg_decals/atmos/mix,
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
"sYR" = (
/obj/machinery/door/airlock{
name = "Unisex Restrooms"
@@ -59045,6 +59146,13 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"tSo" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 6
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
"tWj" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -59101,12 +59209,28 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"udT" = (
+/obj/machinery/atmospherics/pipe/manifold/purple/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"uei" = (
/obj/structure/sign/warning/vacuum/external{
pixel_y = 32
},
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
+"ueZ" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_x = -30
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/camera{
+ c_tag = "Atmospherics Central";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"ufD" = (
/obj/machinery/vr_sleeper{
dir = 4
@@ -59122,6 +59246,12 @@
dir = 4
},
/area/crew_quarters/fitness)
+"ugp" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"ugu" = (
/obj/structure/cable{
icon_state = "1-4"
@@ -59316,6 +59446,24 @@
"uGI" = (
/turf/open/floor/grass,
/area/security/prison)
+"uHc" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/disposal/incinerator)
+"uHl" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/engine/atmos)
"uHp" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
@@ -59370,13 +59518,13 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/nuke_storage)
-"uPT" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+"uQR" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "O2 to Pure"
},
-/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"uQS" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1;
@@ -59442,15 +59590,6 @@
},
/turf/open/floor/plating,
/area/space/nearstation)
-"vaW" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/dorms)
"vbi" = (
/obj/structure/table,
/obj/item/instrument/guitar{
@@ -59862,11 +60001,26 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/maintenance/fore)
+"vOC" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
"vOU" = (
/obj/structure/sign/warning/securearea,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/ai_monitored/nuke_storage)
+"vOV" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/turf/open/space,
+/area/space/nearstation)
"vPs" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -59880,6 +60034,24 @@
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"vPQ" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "External to Pumps"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"vQf" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Mix to External"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"vTP" = (
/obj/machinery/door/airlock/external{
name = "Labor Camp Shuttle Airlock";
@@ -60032,6 +60204,13 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
+"wvg" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Ports to Incinerator"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
"wvX" = (
/obj/structure/table/reinforced,
/obj/machinery/light,
@@ -60045,6 +60224,13 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"wyE" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
"wBd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -60190,6 +60376,13 @@
/obj/item/coin/gold,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
+"xcl" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 6
+ },
+/turf/open/space,
+/area/space/nearstation)
"xgk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -60342,6 +60535,12 @@
},
/turf/open/floor/plating,
/area/maintenance/fore)
+"xud" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal/incinerator)
"xxi" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -60403,12 +60602,6 @@
/obj/structure/closet/secure_closet/personal,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
-"xEu" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
- },
-/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
"xEB" = (
/obj/machinery/power/apc{
areastring = "/area/ai_monitored/nuke_storage";
@@ -60455,6 +60648,12 @@
/obj/effect/spawner/lootdrop/grille_or_trash,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"xJC" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
"xJW" = (
/obj/machinery/door/airlock/maintenance{
name = "Security Maintenance";
@@ -60614,6 +60813,14 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
+"yan" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal/incinerator)
"ycd" = (
/obj/structure/toilet/secret/low_loot{
dir = 4
@@ -86226,7 +86433,7 @@ cCi
aqX
arR
asj
-iUK
+cLS
ajr
atY
auo
@@ -89880,7 +90087,6 @@ bGO
bHl
bHS
bLI
-bLI
bOR
bQg
bQg
@@ -89890,6 +90096,7 @@ bQg
bQg
bQg
bQg
+bQg
bYI
bDG
bHP
@@ -90138,17 +90345,17 @@ bKw
bLH
bRq
bNO
-bOQ
-bQf
-bRq
+bQg
bRq
bTK
-bUE
+jVX
+jVX
+uHl
bUE
bWM
bXJ
-bYH
-bYH
+bMK
+bMK
bYH
bYH
bVg
@@ -90394,17 +90601,17 @@ bJs
bKy
bLK
bLK
-bLK
bOT
bQi
bRs
bSC
-bLK
+oXn
+gxw
bUG
bVO
bWO
bXK
-bYH
+bLK
bZz
caw
bYH
@@ -90650,18 +90857,18 @@ bCv
bJs
bKy
bLJ
-bLJ
+bWR
bNP
bOS
bQh
bRr
-bSB
bTL
+rVN
bUF
bVN
bWN
+jDr
bLK
-bYJ
bRi
bZy
cbu
@@ -90907,7 +91114,7 @@ bCv
bJs
bKy
bLM
-bLM
+fKC
bNQ
bOV
bQk
@@ -90915,9 +91122,9 @@ bRt
bSD
bTM
bUH
+bRt
bVQ
-bWN
-bXM
+jDr
bYL
cew
bTh
@@ -91164,18 +91371,18 @@ bCv
bJs
bKy
bLL
-bLL
+bOd
bNQ
bOU
bQj
bOd
-bOd
+bMK
bRx
bTP
bVP
+cbA
bWP
-bXL
-bYK
+bLK
bRj
bTg
bUm
@@ -91420,19 +91627,19 @@ bDr
bCy
bGP
bHn
-bLN
+cbz
bLN
bNS
bOX
bQm
bRv
-bOd
+bSC
bTN
bTP
-bRA
+diH
+bWQ
bWQ
bWQ
-bYN
bRm
bTj
caA
@@ -91683,8 +91890,8 @@ bNR
bOW
bQl
bRu
-bSE
-bRx
+bSC
+bTN
bUI
bVR
bWQ
@@ -91939,9 +92146,9 @@ bMK
bMK
bOY
bQn
-bRx
-bMK
+bSC
bMK
+mOG
bUJ
bVS
bWQ
@@ -92194,8 +92401,8 @@ bKz
bLK
bML
bNT
-bOV
-bQj
+smP
+giT
bRw
bSF
daI
@@ -92452,12 +92659,12 @@ bLK
bMN
bNV
bOV
-bQo
-bRz
-bSH
-plm
-bTP
-bRA
+giT
+bRw
+bSF
+daI
+bUK
+bVT
bWQ
bWQ
bWQ
@@ -92652,7 +92859,7 @@ aqe
arf
aqo
atm
-fPL
+rgL
arf
avv
awu
@@ -92706,29 +92913,29 @@ bHU
bJv
bKB
bLK
-bMM
+bVW
bOd
-bOV
+iql
bQj
-bRy
-bSG
-daI
-bUK
-bVT
-bWR
+bVP
+cbA
+fSO
+kJE
+ugp
+ueZ
bXQ
-bOd
+cbA
bZF
-bPc
-bOd
+ezF
+hgG
ccv
cdw
cex
-bOd
-cfN
-cfN
-bLK
-aaf
+dEX
+cbA
+bQt
+bLQ
+dbb
bOh
bOh
bOh
@@ -92969,20 +93176,20 @@ bJB
bKV
bRB
bSI
-bSI
+vQf
bUM
bVV
-bWS
-bSI
-bSI
+bVV
+bVV
+iVJ
bZG
-caE
-cbA
-ccy
bOd
bOd
-bQu
-cfO
+bOd
+bOd
+bOd
+bOd
+bOd
cgW
cit
cph
@@ -93224,22 +93431,22 @@ bMO
bIF
bOZ
bQp
-bRA
+alk
+gAu
+eqq
+pUP
+bOd
+bOd
bOd
-bTO
-bUL
-bVU
-bMK
-bXR
bYQ
-bXR
-bMK
-cbz
-ccx
-cbA
-cbA
+bOd
+bOd
+bOd
+bOd
+bOd
+dMj
cfi
-bRH
+bOd
cgV
bMQ
aaf
@@ -93480,23 +93687,23 @@ bLK
bMR
bIH
bJF
-bQr
+bVX
bRA
-bOd
bTP
bOd
-bVX
-bMK
-bMK
-bYR
-bMK
-bMK
-cbC
-bRA
+vPQ
+bOd
+bOd
+bOd
+bYQ
+bOd
+bOd
+bOd
+bOd
+bOd
+jtj
+jIj
bTO
-cez
-cez
-cfQ
cgY
ciu
bVu
@@ -93680,7 +93887,7 @@ aqi
arf
ask
atm
-fPL
+rgL
arf
awq
axO
@@ -93739,24 +93946,24 @@ bNY
bPa
bMQ
bRC
-bMQ
-bTP
+rdl
+daq
bUN
-bVW
-bMK
-bXS
-bXS
-bXS
-bMK
-cbB
-alk
-alX
-cbA
-bQt
+bOd
+bOd
+bOd
+bYQ
+bOd
+bOd
+bOd
+bOd
+bOd
+rmQ
+lzt
apa
cgX
apF
-apI
+aaf
bOh
bOh
bOh
@@ -93996,21 +94203,21 @@ bOb
bPd
cBF
bRD
-bSK
-bTR
-bUP
-bVZ
-bWT
-bWa
-bYS
-bZH
-caF
-bQt
-cBJ
-cdy
+rdl
+daq
+bUN
bOd
+bOd
+bOd
+bYQ
+bOd
+bOd
+bOd
+cBJ
+bOd
+eus
bRy
-cfR
+bTP
cha
civ
cph
@@ -94249,27 +94456,27 @@ bvd
bKH
bLK
bMS
-bOa
+bTO
bPc
bQs
-bMZ
-bSJ
-bTQ
+cez
+ceA
+bOd
bUO
-bVY
+bOd
+bOd
+bOd
+lhQ
bOd
bOd
bOd
bOd
bOd
-cbD
bTO
-cdx
-bOd
-bOd
-cfP
+cez
+bUL
cgZ
-bMQ
+rdl
aaf
bQA
ckX
@@ -94506,27 +94713,27 @@ bvd
bKJ
bLR
bMV
-bOd
-bMZ
+bTP
+eiZ
bQv
bRF
bSM
-bTS
-bUQ
-agd
-bUO
bVZ
-bVZ
-bZI
-caH
-cbF
-ccz
-cdA
-cez
+bUN
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+bTP
+bTO
bOe
-cfQ
chb
-ciu
+iIS
bVu
ckb
ckZ
@@ -94705,15 +94912,15 @@ aoa
ajo
apt
aql
-pRW
-pRW
-pRW
-pRW
+wyE
+wyE
+wyE
+wyE
avw
awy
-nfw
-nfw
-vaW
+lgX
+lgX
+qvf
wqF
aAh
aAh
@@ -94764,26 +94971,26 @@ bKH
bLK
bMU
bOc
-bPe
-bQu
-bRE
-bSJ
-bPe
-bOd
+udT
+omk
+nTU
+bSM
+jBQ
+agd
cCB
cCC
-bXT
-bXT
-bXT
-caG
-cbE
-bTU
-cdz
-cez
-bUL
-cfP
bOd
-bMQ
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+ccz
+uQR
+cfP
+cfQ
+ceA
aaf
bOh
bOh
@@ -95020,25 +95227,25 @@ bvd
bKH
bLK
bMX
-bOd
+omk
bPg
-bQx
-bRH
-bSM
-bTU
-bUS
-bUS
+hQY
+bRE
+pCj
+bPe
+wvg
+bOd
cCD
-bXU
-bUS
-bUS
-bUS
-bXU
-bRF
-bMW
-cez
-cez
-cfQ
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+bOd
+bTU
+fPi
+fHi
chd
bQy
cpP
@@ -95277,25 +95484,25 @@ bvd
bKH
bLK
bMW
-bOe
+oVN
bPf
-bQw
-bRG
-bSN
-bTT
-bUR
-bWb
+bQx
+bRH
+bMQ
+bTU
+kGv
+bUS
cCE
bTT
+bUS
+bUS
+bUS
+bXU
+bUS
+bUS
+gMD
+eyS
bUR
-bZJ
-bUR
-bTT
-bUR
-cdB
-bUR
-bUR
-cfT
chc
bMQ
aaf
@@ -95534,11 +95741,11 @@ bvd
bKH
bLK
bMZ
-bOg
+cdx
bPi
bQz
bRJ
-bSM
+hxn
bTV
bUT
bWc
@@ -95546,12 +95753,12 @@ bWU
bXV
bYT
bZK
-bOd
+bUR
cbG
ccA
cdC
ceB
-cez
+dAe
cez
chf
cix
@@ -95790,14 +95997,14 @@ bvj
bvd
bKH
bLK
-bMY
+bLK
bOf
-bPh
+ivJ
bQy
bRI
bSP
bPh
-bQy
+jzM
bRI
cCF
bPh
@@ -95807,8 +96014,8 @@ bQy
bPh
bQy
bRI
-ceA
-bLK
+bSP
+bVO
bLK
che
bLK
@@ -96013,7 +96220,7 @@ aOJ
oIJ
unA
aKR
-aKR
+akH
aUg
bFC
hSZ
@@ -96048,13 +96255,13 @@ bvd
bKH
bzs
bRK
-aaf
-bRK
-aaf
-bVv
-aaf
-bRK
-aaf
+qJV
+nJQ
+qJV
+vOV
+qJV
+nYT
+eUW
bVv
cCG
cCH
@@ -96304,7 +96511,7 @@ bFF
bvd
bKH
bzs
-bRK
+fjU
bOh
bPj
bQA
@@ -96334,8 +96541,8 @@ aaf
aoV
aoV
aoV
-aoV
-aoV
+aaa
+aaa
cCQ
aoV
aaa
@@ -96561,7 +96768,7 @@ bFK
bvd
bKH
bzs
-bRK
+fjU
bOh
bPl
bQB
@@ -96818,10 +97025,10 @@ bvj
bJC
bKH
bzs
-bRK
+fjU
bOh
bPk
-bPm
+sYm
bPm
bOh
bTW
@@ -96837,7 +97044,7 @@ ccB
cbH
bOh
aaf
-aoV
+aaa
aoV
aaf
aoV
@@ -96850,7 +97057,7 @@ aoV
aoV
aoV
aoV
-aaf
+gXs
aoV
aaa
aaa
@@ -97075,7 +97282,7 @@ bIj
bJC
bKH
bzs
-bRK
+fjU
bOh
bPm
bQC
@@ -97107,7 +97314,7 @@ aoV
aoV
aoV
aae
-aaf
+gXs
aoV
aaa
aaa
@@ -97332,7 +97539,7 @@ bIi
bJC
bKH
bzs
-bRK
+fjU
bOh
bOh
bOh
@@ -97350,21 +97557,21 @@ bOh
bOh
bOh
bOh
-aaf
-aaf
-ciC
-bVu
-bVu
-bVu
-bVu
-bVu
+xcl
caJ
+ciC
+gXs
+gXs
+tSo
+kcx
+kcx
+kcx
+ciC
aoV
aoV
aoV
aoV
-aoV
-aaf
+gXs
aoV
aaa
aaa
@@ -97590,52 +97797,52 @@ bJC
bKH
bzs
bUr
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
+qJV
caJ
-aaf
-aaf
-aaf
-aaf
-aaf
+caJ
+caJ
+caJ
+caJ
+eUW
cfj
cfU
-cfj
-cfj
+maT
+maT
ckf
-cfj
-cfj
-bUr
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
-bVu
+maT
+lKj
+nzR
+nFj
+mfI
+mfI
+mfI
+mfI
+mfI
+mfI
+mfI
+mfI
+mfI
+mfI
csM
-bVu
-bVu
+mfI
+mfI
ctd
-bVu
-bVu
-bVu
-bVu
-caJ
+mfI
+mfI
+mfI
+mfI
+vOC
ctZ
ctZ
cuo
@@ -97859,19 +98066,20 @@ bPn
bzs
bzs
bPn
-caI
+bPn
bPn
bzs
bzs
bzs
cfj
-cfj
+chk
cjp
chh
ciy
cke
-clg
-cfj
+cjr
+pzG
+uHc
aoV
aoV
aoV
@@ -97881,7 +98089,6 @@ aoV
aoV
aoV
aaa
-aaa
aaf
aaa
csn
@@ -97892,7 +98099,7 @@ aag
aaa
aaa
aaa
-ctN
+nFj
ctY
cuh
cun
@@ -98043,7 +98250,7 @@ con
uSC
con
con
-eVJ
+akE
wHk
ewu
pQp
@@ -98121,14 +98328,15 @@ bAw
bzs
bAw
caK
-cfj
+uHc
ciB
ckh
chj
ciA
+dQD
cjr
clh
-cfj
+uHc
aoV
aoV
aoV
@@ -98138,7 +98346,6 @@ aoV
aoV
aoV
aaa
-aaa
aaf
aaa
csn
@@ -98374,18 +98581,19 @@ bzs
bzs
bZM
cbJ
-ceC
-ceC
+bWe
+bWe
cfW
cfX
chk
chl
-ciz
+xud
chi
ciz
-cjq
+ciz
ckg
cmb
+yan
cpO
cpQ
cpQ
@@ -98395,7 +98603,6 @@ czJ
aaf
aoV
aaa
-aaa
aaf
aaa
csn
@@ -98635,14 +98842,15 @@ bzs
ccF
cdG
ceE
-cfl
+grr
cfZ
-cki
+cjr
cld
-eHI
-cjt
+cjr
+cjr
+cjr
csq
-xEu
+xJC
wHz
cmd
cmd
@@ -98652,7 +98860,6 @@ aag
aag
aag
aaa
-aaa
aaf
csD
csO
@@ -98894,12 +99101,13 @@ cdF
ceD
cfk
cfY
-rfW
+cjr
ckj
-cjs
+cle
+cle
cle
cli
-uPT
+cme
cmY
cme
cop
@@ -98909,7 +99117,6 @@ cqs
aaa
aag
aaa
-aaa
aaf
csD
csN
@@ -99149,14 +99356,15 @@ cbL
cbL
cdI
ceG
-cfj
+jGI
cgb
chn
ciE
cjv
clj
-ckk
+clj
cmf
+nmZ
cna
cnC
cor
@@ -99166,7 +99374,6 @@ cqt
aaa
aag
aaa
-aaa
aaf
csD
csU
@@ -99406,12 +99613,13 @@ cbK
ccG
cdH
ceF
-cfj
+jGI
cga
chm
ciD
cju
clf
+cle
csr
cme
cmZ
@@ -99423,7 +99631,6 @@ cqs
aaa
aag
aaa
-aaa
aaf
csD
ctb
@@ -99663,13 +99870,14 @@ bzs
bzs
bzs
bzs
-cfj
-cfj
-cfj
-cfj
+fiy
+cfl
+cfl
+cfl
cjx
cfl
cfl
+cfl
dqu
tXL
cmd
@@ -99680,7 +99888,6 @@ aag
aag
aag
aaa
-aaa
aaf
csD
csD
@@ -103248,15 +103455,15 @@ bIP
bPA
bJN
bRU
-bEm
+aml
bEm
bJN
bRU
-bXe
+aop
bEm
bJN
bRU
-bEm
+aml
bEm
bDb
cgi
@@ -103505,15 +103712,15 @@ bOx
bPz
bJN
bRU
-bEm
+amo
bEm
bJN
bRU
-bEm
+amo
bEm
bJN
bRU
-bEm
+amo
cBz
bDb
cgi
@@ -103751,26 +103958,26 @@ bAB
bBV
bDb
bEn
-bEm
-bEm
-bEm
-bJL
-bLa
-bMi
-bNo
-bPy
-bPA
+akK
+akP
+akP
+akV
+akW
+alf
+alm
+aln
+alr
bJN
bRW
-bTb
+amG
bUe
bJN
bWl
-bXf
+aoq
bYg
bJN
bZV
-caV
+apw
cbS
bDb
cgl
@@ -104016,18 +104223,18 @@ bKZ
bMi
bIu
bIO
-bPB
+alx
bLe
bRV
-bTa
+amH
bUd
bVi
bRV
-bTa
+amH
bYf
bVi
bRV
-bTa
+amH
cbR
bDb
cgk
@@ -104273,18 +104480,18 @@ bLc
bMi
bNo
bOx
-bPD
+alV
bQM
bMi
-bMi
+bOx
bRZ
bVj
bMi
-bMi
+bOx
bRZ
bZa
bMi
-bMi
+bOx
bRZ
cTY
cTZ
@@ -104530,24 +104737,24 @@ bLb
bMk
bNn
bIQ
-bPC
-bQL
-cBG
-bTc
-bUf
-bTc
-bRX
-bTc
-bUf
-bTc
-bRX
-bTc
-cbT
-ccP
-ccP
-cht
-ckn
-csk
+alW
+amh
+ami
+amP
+anp
+anx
+anN
+amP
+anp
+anx
+anN
+amP
+aqG
+aqS
+aqS
+ars
+asr
+asC
czQ
czU
czZ
@@ -104790,15 +104997,15 @@ bOx
bMi
bQN
bRZ
-bMi
+bOx
bMi
bVk
bRZ
-bMi
+bOx
bMi
bZb
bRZ
-bMi
+bOx
bMi
cfy
cgn
@@ -105047,15 +105254,15 @@ bIR
bPE
bLe
bRY
-bTd
+amQ
bUg
bVi
bWm
-bTd
+amQ
bUg
bVi
bZW
-bTd
+amQ
bUg
bDb
bDb
@@ -105304,15 +105511,15 @@ bOx
bPH
bJN
bSa
-bTe
+amT
bUh
bJN
bWn
-bXg
+aos
bYh
bJN
bZX
-caW
+aqB
cbU
bDb
aaf
@@ -105561,15 +105768,15 @@ bOz
bPG
bJN
bEm
-bEm
+amo
bRU
bJN
bEm
-bEm
+amo
bRU
bJN
bEm
-bEm
+amo
bRU
bDb
aaf
@@ -105818,15 +106025,15 @@ bOx
bPJ
bJN
bEm
-bEm
+ano
bRU
bJN
bEm
-bXe
+apb
bRU
bJN
bEm
-bEm
+ano
bRU
bDb
aaf
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index 3eaad62714..a87ea077b3 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -39,10 +39,6 @@
/obj/structure/table,
/obj/item/paper_bin,
/obj/item/pen,
-/obj/item/mmi/posibrain{
- pixel_x = 5;
- pixel_y = 8
- },
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"aae" = (
@@ -57,7 +53,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
@@ -165,6 +160,10 @@
/obj/structure/cable{
icon_state = "0-8"
},
+/mob/living/simple_animal/bot/cleanbot{
+ auto_patrol = 1;
+ name = "Sir Cleansworth"
+ },
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai)
"aau" = (
@@ -263,17 +262,6 @@
/area/ai_monitored/turret_protected/ai)
"aaE" = (
/obj/structure/chair,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/machinery/light{
- dir = 1
- },
-/obj/effect/landmark/start/assistant,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"aaF" = (
@@ -287,7 +275,6 @@
dir = 5
},
/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/remains/human,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai)
"aaG" = (
@@ -593,9 +580,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"abd" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -636,10 +620,6 @@
/turf/open/floor/plasteel/dark,
/area/lawoffice)
"abg" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
@@ -733,6 +713,9 @@
name = "Station Intercom (Command)";
pixel_y = -28
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain)
"abr" = (
@@ -873,7 +856,6 @@
pixel_x = 24
},
/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/remains/human,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai)
"abD" = (
@@ -953,9 +935,6 @@
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai)
"abM" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -1132,7 +1111,6 @@
/turf/open/floor/plasteel,
/area/security/warden)
"acg" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/engine,
@@ -1352,7 +1330,6 @@
/turf/open/space,
/area/space/nearstation)
"acz" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
@@ -1363,7 +1340,9 @@
/turf/open/floor/engine,
/area/ai_monitored/storage/satellite)
"acB" = (
-/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/engine,
/area/ai_monitored/storage/satellite)
"acC" = (
@@ -1642,7 +1621,6 @@
/obj/machinery/light_switch{
pixel_y = -24
},
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
@@ -1661,7 +1639,7 @@
dir = 4
},
/turf/open/floor/engine,
-/area/ai_monitored/turret_protected/aisat_interior)
+/area/space)
"acY" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -1828,26 +1806,18 @@
id = "prisonblast";
name = "Prison Blast Door"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"adm" = (
/obj/structure/chair/office{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/engine,
/area/ai_monitored/storage/satellite)
"adn" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
@@ -1890,7 +1860,7 @@
/turf/open/floor/circuit/green{
luminosity = 2
},
-/area/ai_monitored/turret_protected/ai)
+/area/space)
"adr" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
@@ -1912,7 +1882,6 @@
id = "xeno_blastdoor";
name = "Xenobiology Containment Blast Door"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"adt" = (
@@ -1943,10 +1912,6 @@
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"adv" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/decal/cleanable/blood/gibs/limb,
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt,
@@ -1999,6 +1964,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/engine,
/area/ai_monitored/storage/satellite)
"adA" = (
@@ -2086,10 +2054,10 @@
pixel_y = 26
},
/obj/structure/cable{
- icon_state = "0-4"
+ icon_state = "0-8"
},
/obj/structure/cable{
- icon_state = "0-8"
+ icon_state = "4-8"
},
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat/foyer)
@@ -2186,6 +2154,9 @@
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/engine,
/area/ai_monitored/storage/satellite)
"adO" = (
@@ -2212,9 +2183,12 @@
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat/foyer)
"adT" = (
-/obj/structure/sign/warning/securearea,
-/turf/closed/wall/r_wall/rust,
-/area/ai_monitored/turret_protected/aisat_interior)
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"adU" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -2236,7 +2210,6 @@
pixel_y = 24;
req_one_access_txt = "2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/security/warden)
"adW" = (
@@ -2348,7 +2321,6 @@
pixel_y = -24;
req_one_access_txt = "2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"aed" = (
@@ -2395,16 +2367,6 @@
/turf/open/floor/plating,
/area/security/warden)
"aej" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
@@ -2441,7 +2403,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/medical/cryo)
"aeo" = (
@@ -2687,7 +2648,6 @@
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/medical/cryo)
"aeQ" = (
@@ -2800,16 +2760,6 @@
/turf/open/floor/plating,
/area/security/warden)
"aeY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
@@ -3012,16 +2962,6 @@
/turf/closed/wall,
/area/maintenance/port/aft)
"afn" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -3510,13 +3450,16 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"afX" = (
-/obj/structure/grille/broken,
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating{
- icon_state = "platingdmg1"
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
},
-/area/maintenance/starboard/fore)
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/crew_quarters/heads/cmo)
"afY" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
@@ -3626,6 +3569,9 @@
name = "xenobiology camera";
network = list("ss13","rd","xeno")
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/circuit/telecomms,
/area/science/xenobiology)
"agg" = (
@@ -3650,6 +3596,9 @@
external_pressure_bound = 120;
name = "server vent"
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/circuit/telecomms,
/area/science/xenobiology)
"agi" = (
@@ -3666,6 +3615,9 @@
icon_state = "1-2"
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel/showroomfloor,
/area/science/xenobiology)
"agj" = (
@@ -3943,10 +3895,11 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"agF" = (
-/obj/structure/grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
+ dir = 4
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/medbay/central)
"agG" = (
/obj/docking_port/stationary{
dir = 2;
@@ -4581,7 +4534,6 @@
pixel_x = -26
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"ahI" = (
@@ -4662,16 +4614,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -4680,16 +4622,6 @@
"ahQ" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -4803,7 +4735,6 @@
/turf/open/floor/plating,
/area/security/brig)
"ahY" = (
-/obj/effect/turf_decal/tile/neutral,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -4816,37 +4747,21 @@
/turf/open/floor/plasteel,
/area/security/main)
"ahZ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/turf/open/floor/plasteel,
/area/security/main)
"aia" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
/turf/open/floor/plasteel,
/area/security/main)
"aib" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/security/main)
"aic" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/bot,
/obj/machinery/holopad,
/turf/open/floor/plasteel,
@@ -4939,16 +4854,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable{
icon_state = "1-4"
},
@@ -4958,9 +4863,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"aij" = (
-/obj/structure/flora/grass/jungle,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/machinery/light{
dir = 1
},
@@ -5127,10 +5030,6 @@
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"aix" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/security/main)
@@ -5159,16 +5058,6 @@
/area/security/main)
"aiz" = (
/obj/machinery/computer/secure_data,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/security/main)
"aiA" = (
@@ -5322,16 +5211,6 @@
/obj/structure/chair{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/landmark/start/security_officer,
/turf/open/floor/plasteel,
/area/security/main)
@@ -5399,16 +5278,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/brig)
"aiR" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aiS" = (
@@ -5436,28 +5305,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/brig)
-"aiU" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
-"aiV" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/fore)
-"aiW" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/fore)
"aiX" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -5471,12 +5318,6 @@
/area/ai_monitored/turret_protected/aisat_interior)
"aiY" = (
/obj/structure/chair,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -5541,12 +5382,6 @@
/area/ai_monitored/turret_protected/aisat/foyer)
"ajc" = (
/obj/structure/chair,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -5582,22 +5417,11 @@
/turf/open/floor/plasteel,
/area/security/main)
"ajg" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/decal/cleanable/blood/gibs/limb,
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/maintenance/port/fore)
-"ajh" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/fore)
"aji" = (
/obj/structure/chair{
dir = 8
@@ -5607,13 +5431,13 @@
},
/area/maintenance/port/fore)
"ajj" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/remains/human,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating{
- icon_state = "platingdmg3"
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/effect/turf_decal/box,
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/area/maintenance/fore)
+/turf/open/floor/plasteel,
+/area/hallway/primary/fore)
"ajk" = (
/obj/effect/turf_decal/tile/brown{
dir = 1
@@ -5690,16 +5514,6 @@
color = "#c45c57";
dir = 8
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/landmark/start/head_of_security,
/turf/open/floor/plasteel,
/area/security/main)
@@ -5746,17 +5560,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/science/xenobiology)
-"ajs" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/fore)
"ajt" = (
/turf/closed/wall,
/area/crew_quarters/kitchen)
@@ -5915,16 +5718,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/fore)
"ajJ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
@@ -5942,15 +5735,6 @@
},
/turf/open/floor/plasteel/dark,
/area/bridge)
-"ajL" = (
-/obj/machinery/door/poddoor/preopen{
- id = "Biohazard";
- name = "Emergency Research Blast Door"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
-/turf/open/floor/plasteel/dark,
-/area/science/research)
"ajM" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/shard,
@@ -6061,7 +5845,6 @@
/area/hallway/primary/fore)
"ajX" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"ajY" = (
@@ -6114,10 +5897,10 @@
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"akd" = (
-/obj/structure/flora/tree/jungle/small,
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/flora/ausbushes/ppflowers,
/turf/open/floor/grass,
/area/medical/genetics)
"ake" = (
@@ -6323,7 +6106,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/medical/surgery)
"akz" = (
@@ -6379,7 +6161,6 @@
"akF" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/medical/surgery)
"akG" = (
@@ -6405,12 +6186,6 @@
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"akI" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/decal/cleanable/blood/gibs/old,
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt,
@@ -6613,6 +6388,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
+/obj/machinery/shieldwallgen/xenobiologyaccess,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -6766,7 +6542,6 @@
pixel_x = 28
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"all" = (
@@ -6961,9 +6736,6 @@
"alw" = (
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel/dark,
/area/maintenance/port/fore)
"alx" = (
@@ -7031,29 +6803,12 @@
/obj/machinery/status_display/evac{
pixel_y = 32
},
-/obj/item/gun/energy/e_gun/advtaser,
/turf/open/floor/plasteel/dark,
/area/security/brig)
-"alA" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/fore)
"alB" = (
/turf/closed/wall/r_wall,
/area/science/xenobiology)
"alC" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
@@ -7113,13 +6868,6 @@
/obj/vehicle/ridden/secway,
/turf/open/floor/plasteel/showroomfloor,
/area/security/brig)
-"alH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/fore)
"alI" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating{
@@ -7281,8 +7029,22 @@
},
/area/maintenance/fore)
"alV" = (
-/turf/closed/wall/r_wall/rust,
-/area/ai_monitored/turret_protected/aisat_interior)
+/obj/structure/closet/crate/wooden/toy,
+/obj/effect/turf_decal/bot,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/newscaster{
+ pixel_y = 30
+ },
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/theatre)
"alW" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -8493,31 +8255,12 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard)
"anX" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"anY" = (
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -9079,7 +8822,6 @@
/turf/open/floor/wood,
/area/lawoffice)
"aoT" = (
-/obj/effect/turf_decal/tile/neutral,
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/turf_decal/box/corners{
dir = 4
@@ -9537,7 +9279,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/gun/energy/e_gun/advtaser,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"apI" = (
@@ -9713,28 +9454,22 @@
/turf/closed/wall/rust,
/area/maintenance/central)
"apY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+/obj/structure/table/wood,
+/obj/structure/mirror{
+ pixel_x = -26
},
+/obj/item/reagent_containers/food/snacks/pie/cream,
+/obj/item/clothing/under/costume/lobster,
+/obj/item/clothing/head/lobsterhat,
+/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 8;
- icon_state = "intact"
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/fore)
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/theatre)
"apZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -10276,18 +10011,18 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/fore)
"aqQ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/structure/table/wood,
+/obj/item/storage/crayons,
+/obj/item/storage/crayons,
+/obj/item/bikehorn/rubberducky,
+/obj/structure/sign/poster/contraband/clown{
+ pixel_x = -30
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/turf/open/floor/plasteel,
-/area/bridge)
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/theatre)
"aqR" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/delivery,
@@ -10726,7 +10461,6 @@
/obj/structure/sign/warning/electricshock{
pixel_x = -32
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/firedoor,
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -10773,10 +10507,16 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"arD" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/blood/old,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/sign/departments/science{
+ pixel_x = 32
+ },
/turf/open/floor/plasteel,
-/area/crew_quarters/heads/hop)
+/area/hallway/primary/starboard)
"arE" = (
/obj/structure/table,
/obj/item/clipboard,
@@ -11104,28 +10844,17 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain)
"arW" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
/area/bridge)
"arX" = (
-/obj/effect/turf_decal/tile/neutral{
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
+/obj/effect/turf_decal/tile/purple,
/turf/open/floor/plasteel,
-/area/bridge)
+/area/hallway/primary/starboard)
"arY" = (
/obj/effect/turf_decal/bot,
/obj/machinery/holopad,
@@ -11191,16 +10920,6 @@
},
/area/maintenance/port/fore)
"asd" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
@@ -11226,7 +10945,7 @@
icon_state = "4-8"
},
/turf/open/floor/engine,
-/area/ai_monitored/turret_protected/aisat/foyer)
+/area/space)
"asg" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-22"
@@ -11404,7 +11123,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/item/gun/energy/e_gun/advtaser,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"asw" = (
@@ -11977,6 +11695,7 @@
dir = 4;
name = "chapel camera"
},
+/obj/structure/chair/stool,
/turf/open/floor/plasteel/chapel{
dir = 8
},
@@ -12075,16 +11794,9 @@
/turf/open/floor/plasteel,
/area/crew_quarters/heads/hop)
"atF" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/plaque{
icon_state = "L14"
},
@@ -12344,18 +12056,7 @@
},
/area/maintenance/starboard/fore)
"aua" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1,
-/obj/effect/turf_decal/box,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aub" = (
@@ -12538,16 +12239,6 @@
/turf/open/floor/plasteel/dark,
/area/teleporter)
"auo" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -12634,9 +12325,20 @@
/turf/closed/wall/r_wall,
/area/bridge)
"auz" = (
-/obj/structure/sign/warning/vacuum/external,
-/turf/closed/wall/rust,
-/area/maintenance/starboard)
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/starboard)
"auA" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -12738,12 +12440,12 @@
},
/area/maintenance/solars/starboard/fore)
"auK" = (
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
- dir = 8
+ dir = 1
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
-/area/security/courtroom)
+/area/hallway/primary/port)
"auL" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/obj/effect/turf_decal/box/corners{
@@ -12757,16 +12459,6 @@
/turf/open/floor/plasteel/dark,
/area/science/mixing)
"auM" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 8
},
@@ -12910,11 +12602,21 @@
/obj/item/folder/blue,
/obj/item/melee/chainofcommand,
/obj/item/toy/figure/captain,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/item/card/id/captains_spare,
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain)
"ave" = (
/obj/structure/table/wood,
/obj/machinery/computer/security/wooden_tv,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain)
"avf" = (
@@ -12982,7 +12684,6 @@
"avj" = (
/obj/structure/table/wood,
/obj/item/storage/fancy/donut_box,
-/obj/item/card/id/captains_spare,
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain)
"avk" = (
@@ -13023,10 +12724,6 @@
/turf/open/floor/plasteel,
/area/security/courtroom)
"avo" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -13055,9 +12752,6 @@
/turf/closed/wall,
/area/maintenance/aft)
"avr" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/box/corners,
/turf/open/floor/plasteel,
/area/security/courtroom)
@@ -13411,12 +13105,6 @@
/turf/open/floor/plasteel/dark,
/area/medical/virology)
"avQ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -13426,12 +13114,6 @@
/turf/open/floor/plasteel,
/area/bridge)
"avR" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
@@ -13490,35 +13172,16 @@
/obj/structure/chair{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plasteel,
/area/security/courtroom)
"avX" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
@@ -13677,7 +13340,6 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/gun/energy/e_gun/advtaser,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"awl" = (
@@ -13734,10 +13396,6 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -13764,16 +13422,6 @@
/turf/open/floor/plating,
/area/storage/primary)
"awr" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-8"
},
@@ -13784,10 +13432,6 @@
pixel_x = -32;
pixel_y = 32
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -13915,9 +13559,6 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -14015,9 +13656,6 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -14037,20 +13675,6 @@
pixel_x = 32;
pixel_y = 32
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine{
- initial_gas_mix = "n2=100;TEMP=80";
- name = "mainframe floor"
- },
-/area/tcommsat/server)
-"awM" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -14227,6 +13851,7 @@
/obj/item/lighter,
/obj/item/clothing/mask/cigarette/cigar/cohiba,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/suit_storage_unit/ce,
/turf/open/floor/plasteel,
/area/crew_quarters/heads/chief)
"axi" = (
@@ -14692,7 +14317,6 @@
name = "Containment Chamber Blast Door"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden,
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/firedoor,
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -14832,7 +14456,6 @@
/area/medical/morgue)
"ayi" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"ayj" = (
@@ -14844,16 +14467,6 @@
/turf/open/floor/plating,
/area/maintenance/starboard)
"ayk" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -14917,7 +14530,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/bridge)
"ayr" = (
@@ -15156,7 +14768,6 @@
/obj/structure/sign/warning/biohazard{
pixel_x = 32
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/firedoor,
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -15217,7 +14828,6 @@
dir = 1;
pixel_y = 32
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"ayP" = (
@@ -15447,7 +15057,6 @@
/obj/structure/sign/departments/evac{
pixel_y = 32
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"azc" = (
@@ -15639,9 +15248,6 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"azp" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/airalarm{
dir = 4;
@@ -15842,11 +15448,10 @@
},
/area/maintenance/starboard)
"azE" = (
-/obj/effect/turf_decal/loading_area,
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 6
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/engine,
/area/engine/engineering)
"azF" = (
/obj/structure/flora/junglebush/c,
@@ -16179,9 +15784,6 @@
/turf/open/floor/plating,
/area/medical/chemistry)
"aAd" = (
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
/obj/machinery/atmospherics/components/binary/pump{
dir = 1;
name = "External Gas to Loop"
@@ -16190,7 +15792,7 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/engine,
/area/engine/engineering)
"aAe" = (
/obj/machinery/door/firedoor,
@@ -16211,10 +15813,6 @@
dir = 4;
pixel_x = -22
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -16227,7 +15825,6 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -16249,7 +15846,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -16259,10 +15855,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -16278,10 +15870,6 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -16407,7 +15995,6 @@
/turf/open/floor/grass,
/area/chapel/main)
"aAz" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable{
icon_state = "1-2"
},
@@ -16430,9 +16017,11 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/robotics/lab)
"aAD" = (
-/obj/structure/flora/tree/jungle/small,
-/turf/open/floor/grass,
-/area/chapel/main)
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/turf/open/floor/plasteel,
+/area/hallway/primary/starboard)
"aAE" = (
/obj/machinery/light/small{
dir = 8
@@ -16553,16 +16142,6 @@
/turf/open/floor/plasteel/dark,
/area/security/warden)
"aAO" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
@@ -16638,7 +16217,6 @@
/obj/machinery/door/airlock/public/glass{
name = "Docking Hallway"
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"aAV" = (
@@ -17012,7 +16590,6 @@
/area/engine/engineering)
"aBw" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"aBx" = (
@@ -17022,10 +16599,6 @@
/turf/open/floor/engine,
/area/engine/engineering)
"aBy" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/fernybush,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 5
@@ -17160,20 +16733,9 @@
/obj/structure/sign/departments/security{
pixel_x = -32
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"aBN" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
@@ -17187,7 +16749,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"aBP" = (
@@ -17324,10 +16885,6 @@
/obj/item/radio/intercom{
pixel_x = -28
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -17335,7 +16892,6 @@
/area/tcommsat/server)
"aCe" = (
/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -17408,10 +16964,6 @@
name = "telecomms camera";
network = list("ss13","tcomms")
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -17490,7 +17042,6 @@
/obj/machinery/door/airlock/public/glass{
name = "Security Hallway"
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"aCr" = (
@@ -17563,16 +17114,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/break_room)
"aCy" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
@@ -17827,10 +17368,7 @@
/area/medical/cryo)
"aCN" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/extinguisher_cabinet{
pixel_x = 24
@@ -18126,7 +17664,6 @@
"aDh" = (
/obj/structure/flora/grass/jungle/b,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/grass,
/area/chapel/main)
@@ -18191,7 +17728,6 @@
/turf/open/floor/plating,
/area/engine/atmos)
"aDs" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/engine,
/area/security/nuke_storage)
@@ -18305,6 +17841,7 @@
/obj/machinery/atmospherics/miner/nitrogen{
max_ext_kpa = 2500
},
+/obj/machinery/portable_atmospherics/canister/nitrogen,
/turf/open/floor/engine/n2{
initial_gas_mix = "n2=1000;TEMP=293.15"
},
@@ -18321,6 +17858,7 @@
/obj/machinery/atmospherics/miner/oxygen{
max_ext_kpa = 2500
},
+/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/engine/o2{
initial_gas_mix = "o2=1000;TEMP=293.15"
},
@@ -18799,18 +18337,13 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
+/turf/open/floor/plasteel/dark/corner{
+ dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
-/turf/open/floor/plasteel/dark,
-/area/chapel/main)
+/area/hallway/primary/port)
"aEv" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -18951,7 +18484,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"aEG" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
@@ -18981,7 +18513,6 @@
/turf/open/floor/engine,
/area/security/nuke_storage)
"aEI" = (
-/obj/effect/turf_decal/box,
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -19343,6 +18874,7 @@
/obj/machinery/atmospherics/miner/carbon_dioxide{
max_ext_kpa = 2500
},
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
/turf/open/floor/engine/co2{
initial_gas_mix = "co2=1000;TEMP=293.15"
},
@@ -19351,6 +18883,7 @@
/obj/machinery/atmospherics/miner/toxins{
max_ext_kpa = 2500
},
+/obj/machinery/portable_atmospherics/canister/toxins,
/turf/open/floor/engine/plasma{
initial_gas_mix = "plasma=1000;TEMP=293.15"
},
@@ -19359,6 +18892,7 @@
/obj/machinery/atmospherics/miner/n2o{
max_ext_kpa = 2500
},
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
/turf/open/floor/engine/n2o{
initial_gas_mix = "n2o=1000;TEMP=293.15"
},
@@ -19682,15 +19216,19 @@
},
/area/maintenance/port/fore)
"aFY" = (
+/obj/machinery/air_sensor{
+ pixel_x = -32;
+ pixel_y = -32
+ },
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
/obj/machinery/igniter{
id = "Incinerator"
},
-/obj/machinery/atmospherics/pipe/manifold/general/visible{
- dir = 8
- },
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
"aFZ" = (
@@ -19719,16 +19257,17 @@
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/heads/hor)
"aGb" = (
-/obj/machinery/power/turbine{
- luminosity = 2
- },
-/obj/structure/cable,
-/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
-"aGc" = (
/obj/machinery/door/poddoor/incinerator_atmos_main,
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
+"aGc" = (
+/obj/machinery/door/window{
+ dir = 1;
+ name = "Captain's Desk";
+ req_access_txt = "20"
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/heads/captain)
"aGd" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -20096,7 +19635,6 @@
/area/medical/genetics/cloning)
"aGG" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/bridge)
"aGH" = (
@@ -20419,7 +19957,6 @@
/area/security/brig)
"aHq" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"aHr" = (
@@ -20866,7 +20403,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/bridge)
"aHV" = (
@@ -21126,9 +20662,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16"
- },
/obj/effect/turf_decal/box/corners{
dir = 1
},
@@ -21265,9 +20798,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10"
- },
/obj/machinery/button/door{
id = "transittube_ai";
name = "Transit Tube Lockdown Toggle";
@@ -21525,16 +21055,6 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"aIY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/light{
dir = 8
@@ -21728,7 +21248,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"aJs" = (
@@ -21755,7 +21274,6 @@
/area/engine/atmos)
"aJu" = (
/obj/machinery/computer/med_data,
-/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -21768,20 +21286,11 @@
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"aJv" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
-/turf/open/floor/plasteel/showroomfloor,
-/area/medical/medbay/central)
+/obj/structure/bed,
+/obj/item/bedsheet/black,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/wood,
+/area/crew_quarters/locker)
"aJw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
@@ -22136,9 +21645,6 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "applebush"
- },
/turf/open/floor/plasteel/dark/corner{
dir = 1
},
@@ -22665,16 +22171,6 @@
},
/area/maintenance/port)
"aKN" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/box,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 4
@@ -22964,9 +22460,6 @@
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/loading_area{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"aLk" = (
@@ -22988,13 +22481,6 @@
/obj/structure/chair{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"aLn" = (
@@ -23016,16 +22502,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aLo" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 9
},
@@ -23396,11 +22872,10 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/mixing)
"aMa" = (
-/obj/effect/turf_decal/loading_area,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/engine,
/area/engine/engineering)
"aMb" = (
/obj/effect/turf_decal/tile/neutral,
@@ -23622,7 +23097,6 @@
dir = 4
},
/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple,
/obj/machinery/power/apc{
areastring = "/area/science/mixing/chamber";
dir = 4;
@@ -23821,9 +23295,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/effect/turf_decal/loading_area{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"aME" = (
@@ -24180,21 +23651,10 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"aNi" = (
-/obj/machinery/power/compressor{
- comp_id = "incineratorturbine";
- dir = 1;
+/obj/machinery/power/turbine{
luminosity = 2
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/structure/cable,
-/obj/machinery/camera{
- c_tag = "Turbine Chamber";
- dir = 4;
- name = "turbine camera";
- network = list("turbine")
- },
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
"aNj" = (
@@ -24295,7 +23755,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"aNr" = (
@@ -24695,12 +24154,7 @@
},
/turf/open/floor/plasteel/dark,
/area/medical/chemistry)
-"aOa" = (
-/obj/structure/flora/junglebush/b,
-/turf/open/floor/grass,
-/area/medical/genetics)
"aOb" = (
-/obj/structure/flora/junglebush/large,
/turf/open/floor/grass,
/area/medical/genetics)
"aOc" = (
@@ -24757,10 +24211,6 @@
/area/maintenance/port/fore)
"aOh" = (
/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple,
/obj/machinery/atmospherics/pipe/manifold/general/visible{
dir = 8
},
@@ -24822,10 +24272,6 @@
/area/medical/genetics)
"aOn" = (
/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple,
/obj/machinery/atmospherics/components/binary/valve{
dir = 8
},
@@ -24833,14 +24279,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/mixing/chamber)
"aOo" = (
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple,
/obj/machinery/atmospherics/pipe/manifold/general/visible{
dir = 4
},
@@ -25266,22 +24704,6 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/cmo)
-"aOS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/fore)
"aOT" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -25300,16 +24722,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aOU" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1,
/obj/effect/turf_decal/box,
/obj/structure/disposalpipe/sorting/mail{
@@ -25353,16 +24765,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/heads/cmo)
"aOY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/sorting/mail{
dir = 4;
name = "bar sorting disposal pipe";
@@ -25490,19 +24892,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/research)
"aPk" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -25529,7 +24918,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/science/mixing/chamber)
"aPn" = (
@@ -25639,16 +25027,6 @@
/turf/open/floor/plasteel/dark,
/area/medical/genetics)
"aPv" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -25678,18 +25056,10 @@
/turf/open/floor/plating,
/area/medical/storage)
"aPz" = (
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/obj/effect/turf_decal/box,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -25792,16 +25162,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/mixing)
"aPH" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/bot,
/obj/machinery/holopad,
/obj/structure/disposalpipe/segment{
@@ -25998,13 +25358,9 @@
/area/medical/storage)
"aPV" = (
/obj/structure/table/glass,
-/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
/obj/effect/turf_decal/tile/blue,
/obj/item/paper_bin{
pixel_x = -4;
@@ -26215,23 +25571,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/medical/medbay/central)
-"aQm" = (
-/obj/structure/closet/crate/wooden/toy,
-/obj/effect/turf_decal/bot,
-/obj/machinery/airalarm{
- dir = 4;
- pixel_x = -23
- },
-/obj/machinery/newscaster{
- pixel_y = 30
- },
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/crew_quarters/theatre)
"aQn" = (
/obj/structure/closet/secure_closet/medical3,
/obj/item/storage/belt/medical,
@@ -26368,10 +25707,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar/atrium)
"aQy" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/turf/open/floor/plasteel/showroomfloor,
/area/medical/medbay/central)
"aQz" = (
@@ -26629,9 +25964,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/cable{
- icon_state = "1-4"
- },
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment{
@@ -26642,16 +25974,14 @@
},
/area/maintenance/central)
"aRc" = (
-/obj/structure/cable{
- icon_state = "0-8"
+/obj/machinery/door/airlock/maintenance{
+ name = "backstage maintenance";
+ req_access_txt = "46"
},
-/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plating{
- icon_state = "platingdmg3"
- },
+/turf/open/floor/plasteel/dark,
/area/maintenance/central)
"aRd" = (
/obj/machinery/computer/med_data{
@@ -26700,16 +26030,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/storage)
"aRh" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 5
},
@@ -26726,6 +26046,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -27099,16 +26422,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/checkpoint/science/research)
"aRB" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -27151,16 +26464,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/storage)
"aRE" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-8"
},
@@ -27420,7 +26723,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"aRZ" = (
@@ -27629,7 +26931,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/medbay/central)
"aSm" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
@@ -27641,23 +26942,6 @@
},
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai_upload)
-"aSn" = (
-/obj/structure/table/wood,
-/obj/structure/mirror{
- pixel_x = -26
- },
-/obj/item/reagent_containers/food/snacks/pie/cream,
-/obj/item/clothing/under/costume/lobster,
-/obj/item/clothing/head/lobsterhat,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
-/area/crew_quarters/theatre)
"aSo" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
@@ -27811,25 +27095,21 @@
/turf/open/floor/plasteel/dark,
/area/medical/chemistry)
"aSx" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+/obj/structure/chair,
+/obj/machinery/light{
+ dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/item/clipboard,
-/obj/item/storage/firstaid/regular,
+/obj/effect/landmark/start/assistant,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"aSy" = (
/obj/structure/table,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/item/stack/medical/gauze,
/obj/item/stack/medical/ointment,
/obj/item/stack/medical/bruise_pack{
pixel_x = 4
},
+/obj/item/storage/firstaid/regular,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"aSz" = (
@@ -27910,10 +27190,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/lab)
"aSE" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/showroomfloor,
/area/medical/medbay/central)
@@ -28098,16 +27374,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/science/mixing)
"aST" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
@@ -28146,11 +27412,12 @@
},
/area/maintenance/starboard)
"aSW" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/neutral,
-/obj/item/crowbar/red,
-/obj/item/healthanalyzer,
-/turf/open/floor/plasteel/dark,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "cmoprivacy";
+ name = "Office Privacy Shutters"
+ },
+/turf/open/floor/plating,
/area/medical/medbay/central)
"aSX" = (
/obj/machinery/status_display/evac,
@@ -28267,7 +27534,6 @@
/turf/open/floor/grass,
/area/medical/virology)
"aTi" = (
-/obj/structure/flora/junglebush/large,
/obj/structure/flora/ausbushes/ywflowers,
/turf/open/floor/grass,
/area/medical/virology)
@@ -28725,9 +27991,6 @@
/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
/obj/effect/turf_decal/tile/purple,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -28904,7 +28167,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/fore)
"aUc" = (
-/obj/effect/turf_decal/loading_area,
/obj/effect/turf_decal/tile/purple{
dir = 1
},
@@ -29330,9 +28592,6 @@
dir = 1
},
/obj/effect/turf_decal/tile/blue,
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-18"
- },
/turf/open/floor/plasteel/showroomfloor,
/area/medical/storage)
"aUG" = (
@@ -29711,7 +28970,6 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"aVc" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -29751,9 +29009,6 @@
/obj/effect/turf_decal/tile/purple{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-18"
- },
/obj/machinery/light_switch{
pixel_x = -24;
pixel_y = -6
@@ -29872,16 +29127,12 @@
dir = 1
},
/obj/effect/turf_decal/tile/purple,
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 1
},
/turf/open/floor/plasteel/showroomfloor,
/area/science/storage)
"aVm" = (
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
dir = 8
@@ -29956,9 +29207,7 @@
/area/crew_quarters/kitchen)
"aVr" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -30142,7 +29391,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable{
icon_state = "1-8"
},
@@ -30154,7 +29402,6 @@
pixel_x = -6;
pixel_y = 8
},
-/obj/item/restraints/handcuffs,
/obj/item/pen,
/turf/open/floor/plasteel/dark,
/area/medical/virology)
@@ -30226,7 +29473,7 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/janitor)
"aVN" = (
/obj/structure/chair{
@@ -30649,10 +29896,7 @@
/area/security/checkpoint/medical)
"aWs" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 8
},
@@ -30666,10 +29910,6 @@
/turf/open/floor/grass,
/area/hallway/secondary/exit/departure_lounge)
"aWt" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
@@ -30893,22 +30133,18 @@
"aWQ" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/cleanable/blood/old,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/quartermaster/storage)
"aWR" = (
/turf/closed/wall,
/area/science/xenobiology)
"aWS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/machinery/newscaster{
+ pixel_x = 30
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
-/turf/open/floor/plasteel/dark,
-/area/crew_quarters/bar)
+/turf/open/floor/wood,
+/area/crew_quarters/locker)
"aWT" = (
/obj/structure/closet/secure_closet/chemical,
/obj/structure/window/reinforced{
@@ -31061,6 +30297,7 @@
/obj/item/radio/intercom{
pixel_y = 22
},
+/obj/item/mmi/posibrain,
/turf/open/floor/plasteel/dark,
/area/science/robotics/lab)
"aXh" = (
@@ -31070,7 +30307,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/quartermaster/storage)
"aXi" = (
@@ -31122,6 +30358,8 @@
pixel_y = 4
},
/obj/item/stock_parts/cell/high,
+/obj/item/clothing/glasses/science,
+/obj/item/clothing/glasses/science,
/turf/open/floor/plasteel/dark,
/area/science/lab)
"aXo" = (
@@ -31226,20 +30464,14 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/central)
"aXw" = (
-/obj/structure/table,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/folder,
-/obj/item/nanite_scanner{
- pixel_x = -4;
- pixel_y = 4
- },
-/obj/item/nanite_remote,
/obj/machinery/light{
dir = 4
},
+/obj/machinery/computer/nanite_cloud_controller,
/turf/open/floor/plasteel/dark,
/area/science/research)
"aXx" = (
@@ -31303,7 +30535,6 @@
/turf/open/floor/mech_bay_recharge_floor,
/area/science/robotics/mechbay)
"aXD" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
@@ -31325,17 +30556,18 @@
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai_upload)
"aXE" = (
-/obj/machinery/nanite_chamber,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "Cabin_4Privacy";
+ name = "Cabin 4 Privacy Shutter"
},
-/turf/open/floor/plasteel/dark,
-/area/science/research)
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/locker)
"aXF" = (
/obj/effect/turf_decal/bot,
-/obj/machinery/computer/nanite_chamber_control,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
@@ -31351,6 +30583,7 @@
name = "science camera";
network = list("ss13","rd")
},
+/obj/machinery/computer/nanite_chamber_control,
/turf/open/floor/plasteel/dark,
/area/science/research)
"aXG" = (
@@ -31428,11 +30661,6 @@
/area/tcommsat/server)
"aXN" = (
/obj/machinery/igniter/incinerator_toxmix,
-/mob/living/simple_animal/chicken{
- atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0);
- desc = "A timeless classic.";
- name = "Kentucky"
- },
/turf/open/floor/engine/vacuum,
/area/science/mixing/chamber)
"aXO" = (
@@ -31531,13 +30759,9 @@
/area/maintenance/starboard/fore)
"aXX" = (
/obj/structure/chair/office/light{
- dir = 1;
- pixel_y = 3
+ dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/box/red,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -31886,7 +31110,6 @@
id = "emmd";
name = "Emergency Medical Lockdown Shutters"
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
@@ -32013,20 +31236,9 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/chemistry)
"aYM" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aYN" = (
-/obj/machinery/nanite_program_hub,
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -32038,6 +31250,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/table/reinforced,
+/obj/item/nanite_scanner,
+/obj/item/nanite_remote,
/turf/open/floor/plasteel/dark,
/area/science/research)
"aYO" = (
@@ -32064,14 +31279,16 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/bar)
"aYR" = (
-/obj/machinery/computer/nanite_cloud_controller,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "Cabin_3Privacy";
+ name = "Cabin 3 Privacy Shutter"
},
-/turf/open/floor/plasteel/dark,
-/area/science/research)
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/locker)
"aYS" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -32086,7 +31303,6 @@
/turf/open/floor/plasteel/dark,
/area/science/research)
"aYT" = (
-/obj/machinery/nanite_programmer,
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -32098,6 +31314,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/machinery/modular_computer/console/preset/civilian{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/science/research)
"aYV" = (
@@ -32137,10 +31356,20 @@
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai_upload)
"aYZ" = (
-/obj/effect/turf_decal/box,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/engine,
-/area/ai_monitored/turret_protected/ai_upload)
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating/airless{
+ initial_gas_mix = "o2=14;n2=23;TEMP=300"
+ },
+/area/maintenance/port/aft)
"aZa" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/neutral,
@@ -32204,24 +31433,31 @@
/turf/open/floor/plasteel/dark,
/area/science/lab)
"aZf" = (
-/obj/machinery/door/airlock/maintenance{
- name = "backstage maintenance";
- req_access_txt = "46"
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
},
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/maintenance/central)
+/turf/open/floor/plasteel/showroomfloor,
+/area/crew_quarters/theatre)
"aZg" = (
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/science/lab)
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"aZh" = (
/obj/machinery/porta_turret/ai,
/obj/machinery/light/small{
@@ -32238,25 +31474,10 @@
/turf/closed/wall,
/area/science/lab)
"aZj" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/item/clipboard,
-/obj/item/reagent_containers/glass/beaker/large{
- pixel_x = -6
- },
-/obj/item/reagent_containers/glass/beaker{
- pixel_x = 6
- },
-/obj/item/clothing/glasses/science,
-/obj/item/clothing/glasses/science,
-/obj/structure/extinguisher_cabinet{
- pixel_y = -30
- },
-/turf/open/floor/plasteel/dark,
-/area/science/lab)
+/obj/effect/turf_decal/bot,
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit/departure_lounge)
"aZk" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/neutral{
@@ -32268,9 +31489,6 @@
/obj/item/stack/sheet/metal/fifty,
/obj/item/stack/sheet/glass/fifty,
/obj/item/clothing/glasses/welding,
-/obj/item/radio/intercom{
- pixel_x = 28
- },
/turf/open/floor/plasteel/dark,
/area/science/lab)
"aZl" = (
@@ -32649,7 +31867,6 @@
dir = 8
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"aZP" = (
@@ -33001,7 +32218,6 @@
/obj/structure/sign/warning/vacuum{
pixel_x = 32
},
-/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/engine/vacuum,
/area/science/mixing/chamber)
"bar" = (
@@ -33117,9 +32333,6 @@
/turf/open/floor/plasteel/dark,
/area/medical/surgery)
"baz" = (
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
dir = 8
@@ -33346,16 +32559,6 @@
/turf/open/floor/circuit/green/telecomms/mainframe,
/area/science/server)
"baQ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -33722,7 +32925,6 @@
/area/science/mixing)
"bbt" = (
/obj/machinery/air_sensor/atmos/toxins_mixing_tank,
-/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/engine/vacuum,
/area/science/mixing/chamber)
"bbv" = (
@@ -33762,16 +32964,6 @@
/turf/closed/wall/r_wall,
/area/science/mixing/chamber)
"bbz" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
@@ -33852,8 +33044,6 @@
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/ai_upload)
"bbH" = (
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple,
/obj/structure/cable{
icon_state = "1-2"
},
@@ -33919,16 +33109,9 @@
dir = 4
},
/obj/item/clipboard,
-/obj/item/nanite_remote{
- pixel_x = -4;
- pixel_y = 4
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/nanite_scanner{
- pixel_x = 4
- },
/obj/machinery/light{
dir = 1
},
@@ -34072,7 +33255,6 @@
/turf/closed/wall/r_wall,
/area/science/mixing/chamber)
"bbY" = (
-/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable{
icon_state = "1-4"
},
@@ -34432,8 +33614,12 @@
},
/area/maintenance/port)
"bcD" = (
-/turf/closed/wall/r_wall/rust,
-/area/science/mixing)
+/obj/effect/turf_decal/box,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
"bcE" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
@@ -34767,7 +33953,7 @@
/obj/machinery/light{
dir = 1
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"bcY" = (
/obj/structure/grille/broken,
@@ -34805,7 +33991,6 @@
/area/crew_quarters/kitchen)
"bda" = (
/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/science/mixing/chamber)
"bdb" = (
@@ -34855,7 +34040,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"bdg" = (
@@ -35360,12 +34544,6 @@
/turf/open/floor/plating,
/area/maintenance/starboard)
"bdO" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -35482,7 +34660,6 @@
pixel_x = 32;
pixel_y = -8
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"bdV" = (
@@ -35855,7 +35032,6 @@
pixel_x = -32;
pixel_y = -8
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"bev" = (
@@ -35934,7 +35110,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"beC" = (
@@ -35953,6 +35128,7 @@
dir = 4
},
/obj/effect/landmark/event_spawn,
+/obj/machinery/nanite_program_hub,
/turf/open/floor/plasteel/dark,
/area/science/research)
"beE" = (
@@ -35977,7 +35153,6 @@
"beF" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"beG" = (
@@ -36398,6 +35573,7 @@
/obj/machinery/light{
dir = 1
},
+/obj/machinery/shieldwallgen/xenobiologyaccess,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -36747,7 +35923,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port)
"bfT" = (
@@ -36802,7 +35977,6 @@
"bfX" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port)
"bfY" = (
@@ -36825,6 +35999,9 @@
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
name = "euthanization chamber freezer"
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"bga" = (
@@ -36926,7 +36103,6 @@
pixel_x = 32;
pixel_y = -8
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port)
"bgi" = (
@@ -37305,16 +36481,6 @@
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"bgK" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -37393,10 +36559,6 @@
/turf/open/floor/grass,
/area/medical/virology)
"bgP" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -37412,7 +36574,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel/dark/corner,
+/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bgQ" = (
/obj/structure/cable{
@@ -38090,16 +37252,6 @@
/turf/open/floor/plating,
/area/quartermaster/office)
"bhY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bhZ" = (
@@ -38153,16 +37305,6 @@
},
/area/maintenance/port)
"bie" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -38458,16 +37600,6 @@
/turf/open/floor/plasteel/dark,
/area/security/checkpoint/science/research)
"biC" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/junction,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
@@ -38782,16 +37914,6 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/supply)
"biX" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/bot,
/obj/machinery/holopad,
/turf/open/floor/plasteel,
@@ -38850,7 +37972,6 @@
dir = 1
},
/obj/effect/turf_decal/loading_area,
-/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
@@ -38866,7 +37987,6 @@
},
/obj/effect/turf_decal/loading_area,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bjd" = (
@@ -39030,16 +38150,6 @@
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"bjp" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
@@ -39084,16 +38194,6 @@
/turf/open/floor/plasteel/dark,
/area/medical/surgery)
"bjt" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
@@ -39113,7 +38213,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/tank/internals/oxygen/yellow,
/turf/open/floor/plasteel/dark,
/area/quartermaster/miningoffice)
"bjv" = (
@@ -39124,7 +38223,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/tank/internals/oxygen/yellow,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
@@ -39176,7 +38274,6 @@
dir = 1;
pixel_y = 3
},
-/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable{
icon_state = "1-4"
},
@@ -39197,7 +38294,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 5
},
-/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -39369,16 +38465,6 @@
/turf/open/floor/plating,
/area/maintenance/central)
"bjN" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -39424,22 +38510,12 @@
/obj/effect/turf_decal/tile/brown{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bjS" = (
@@ -39679,16 +38755,6 @@
/turf/open/floor/plasteel/dark,
/area/quartermaster/office)
"bks" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bkt" = (
@@ -39787,16 +38853,6 @@
/area/quartermaster/sorting)
"bkA" = (
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -39821,7 +38877,6 @@
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/arrows,
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
@@ -39930,7 +38985,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/tank/internals/oxygen/yellow,
/obj/machinery/light,
/obj/machinery/requests_console{
department = "Mining";
@@ -40125,16 +39179,6 @@
/turf/open/floor/plating,
/area/maintenance/port)
"blb" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -40208,16 +39252,6 @@
/turf/open/floor/plasteel/dark,
/area/quartermaster/miningoffice)
"bli" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -40227,16 +39261,6 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"blj" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
@@ -40331,16 +39355,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/virology)
"blq" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
@@ -40348,16 +39362,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"blr" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
@@ -40435,16 +39439,6 @@
/area/quartermaster/storage)
"blz" = (
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 8
},
@@ -40474,36 +39468,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/showroomfloor,
/area/library)
-"blC" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
"blD" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -40582,16 +39547,6 @@
/turf/open/floor/plasteel,
/area/quartermaster/qm)
"blK" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
@@ -40600,16 +39555,6 @@
/area/quartermaster/storage)
"blL" = (
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -40840,7 +39785,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"bmf" = (
/obj/effect/turf_decal/tile/brown{
@@ -41214,7 +40159,6 @@
},
/obj/effect/turf_decal/arrows,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
@@ -41231,7 +40175,7 @@
dir = 8
},
/obj/effect/decal/cleanable/cobweb,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"bmF" = (
/obj/machinery/status_display/evac,
@@ -41246,7 +40190,7 @@
/obj/machinery/plantgenes{
pixel_y = 5
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"bmH" = (
/obj/effect/turf_decal/tile/red{
@@ -41274,16 +40218,6 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bmJ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
@@ -41403,7 +40337,7 @@
/area/crew_quarters/kitchen)
"bmU" = (
/obj/structure/lattice,
-/turf/closed/wall/r_wall/rust,
+/turf/closed/wall/r_wall,
/area/security/prison)
"bmV" = (
/obj/effect/turf_decal/tile/neutral,
@@ -41508,7 +40442,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 6
},
-/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -41667,10 +40600,6 @@
/area/crew_quarters/locker)
"bnq" = (
/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
-/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -41766,17 +40695,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/library)
-"bny" = (
-/obj/machinery/hydroponics/constructable,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel/dark,
-/area/hydroponics)
"bnz" = (
/obj/effect/turf_decal/tile/green{
dir = 8
@@ -41832,31 +40750,7 @@
},
/turf/open/floor/plasteel/dark,
/area/hydroponics)
-"bnD" = (
-/obj/machinery/hydroponics/constructable,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/structure/extinguisher_cabinet{
- pixel_x = -26
- },
-/turf/open/floor/plasteel/dark,
-/area/hydroponics)
"bnE" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/sorting/mail{
name = "kitchen sorting disposal pipe";
sortType = 20
@@ -41898,9 +40792,7 @@
/area/bridge)
"bnH" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -41973,20 +40865,6 @@
/obj/item/toy/figure/chef,
/turf/open/floor/plating,
/area/crew_quarters/kitchen)
-"bnM" = (
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple,
-/obj/structure/sign/departments/science{
- pixel_x = 32
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/starboard)
"bnN" = (
/obj/effect/turf_decal/tile/green{
dir = 1
@@ -42035,11 +40913,7 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"bnR" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -42048,17 +40922,6 @@
},
/turf/open/floor/grass,
/area/hydroponics)
-"bnS" = (
-/obj/machinery/hydroponics/constructable,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light{
- dir = 8
- },
-/obj/structure/sign/poster/official/fruit_bowl{
- pixel_x = -32
- },
-/turf/open/floor/plasteel/dark,
-/area/hydroponics)
"bnT" = (
/obj/structure/flora/grass/jungle/b,
/obj/structure/flora/ausbushes/ppflowers,
@@ -42152,10 +41015,7 @@
/area/security/courtroom)
"boa" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 8
},
@@ -42165,25 +41025,13 @@
/turf/open/floor/grass,
/area/hydroponics)
"bob" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/window/reinforced,
/turf/open/floor/grass,
/area/hydroponics)
-"boc" = (
-/obj/machinery/hydroponics/constructable,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel/dark,
-/area/hydroponics)
"bod" = (
/obj/effect/turf_decal/tile/brown{
dir = 4
@@ -42267,10 +41115,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"boh" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced{
dir = 8
},
@@ -42941,12 +41786,9 @@
/area/crew_quarters/kitchen)
"bpi" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/junglebush/b,
/obj/item/radio/intercom{
pixel_y = -28
},
-/obj/effect/decal/remains/human,
-/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/grass,
/area/hydroponics)
"bpj" = (
@@ -43159,10 +42001,6 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -43181,10 +42019,6 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -43223,10 +42057,6 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -43234,9 +42064,6 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/box/corners{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bpE" = (
@@ -43272,7 +42099,7 @@
/area/quartermaster/storage)
"bpF" = (
/obj/structure/sign/departments/cargo,
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/hallway/primary/starboard)
"bpG" = (
/obj/effect/turf_decal/tile/neutral,
@@ -43366,16 +42193,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port)
"bpN" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 8
},
@@ -43454,24 +42271,6 @@
/obj/structure/sign/departments/botany,
/turf/closed/wall,
/area/hallway/primary/starboard)
-"bpW" = (
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple,
-/obj/machinery/airalarm{
- dir = 8;
- pixel_x = 24
- },
-/obj/machinery/light{
- dir = 4
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/starboard)
"bpX" = (
/obj/machinery/door/poddoor/preopen{
id = "brigfrontdoor";
@@ -43480,7 +42279,6 @@
/obj/structure/extinguisher_cabinet{
pixel_y = 28
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/security/brig)
@@ -43528,7 +42326,7 @@
/area/bridge)
"bqb" = (
/obj/structure/sign/departments/custodian,
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/maintenance/central)
"bqc" = (
/obj/effect/turf_decal/bot,
@@ -43551,10 +42349,6 @@
/turf/open/floor/plasteel,
/area/crew_quarters/kitchen)
"bqe" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -43577,9 +42371,6 @@
/turf/open/floor/plasteel/dark,
/area/teleporter)
"bqg" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/structure/cable{
icon_state = "1-8"
},
@@ -43601,7 +42392,7 @@
/obj/item/radio/intercom{
pixel_y = 22
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"bqj" = (
/obj/effect/turf_decal/tile/red,
@@ -43652,8 +42443,13 @@
/area/crew_quarters/kitchen)
"bqm" = (
/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
-/area/bridge)
+/area/security/warden)
"bqn" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
@@ -43676,16 +42472,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
"bqp" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 9
},
@@ -43707,17 +42493,15 @@
},
/area/maintenance/central)
"bqs" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/plasteel,
-/area/bridge)
+/area/security/main)
"bqt" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
@@ -43808,8 +42592,6 @@
"bqA" = (
/obj/structure/table,
/obj/item/folder/white,
-/obj/item/restraints/handcuffs,
-/obj/item/wirerod,
/obj/item/pen,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -43981,16 +42763,6 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"bqN" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 4
},
@@ -44091,16 +42863,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bqT" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -44111,18 +42873,17 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bqU" = (
-/obj/structure/table/wood,
-/obj/item/clothing/gloves/color/rainbow/clown,
-/obj/item/storage/crayons,
-/obj/item/storage/crayons,
-/obj/item/bikehorn/rubberducky,
-/obj/structure/sign/poster/contraband/clown{
- pixel_x = -30
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
+/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/theatre)
"bqV" = (
/obj/effect/turf_decal/bot,
@@ -44300,16 +43061,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard)
"bri" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 10
},
@@ -44361,7 +43112,9 @@
dir = 1
},
/obj/machinery/portable_atmospherics/canister,
-/obj/effect/turf_decal/box,
+/obj/effect/turf_decal/bot{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"bro" = (
@@ -44370,7 +43123,9 @@
},
/obj/machinery/portable_atmospherics/canister,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/box,
+/obj/effect/turf_decal/bot{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"brp" = (
@@ -44487,7 +43242,6 @@
dir = 4;
pixel_x = -26
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"brA" = (
@@ -44665,22 +43419,7 @@
/area/crew_quarters/bar/atrium)
"brN" = (
/obj/machinery/hydroponics/constructable,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light{
- dir = 4
- },
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = 28
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"brO" = (
/obj/machinery/hydroponics/constructable,
@@ -44689,7 +43428,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/hydroponics)
"brP" = (
/obj/structure/table,
@@ -44953,19 +43692,10 @@
},
/area/maintenance/central/secondary)
"bsm" = (
-/turf/closed/wall/rust,
-/area/chapel/office)
+/obj/machinery/status_display/evac,
+/turf/open/floor/plasteel,
+/area/engine/supermatter)
"bsn" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -45023,9 +43753,6 @@
/turf/open/floor/carpet,
/area/lawoffice)
"bss" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
@@ -45049,16 +43776,6 @@
},
/area/hallway/primary/port)
"bst" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -45083,16 +43800,6 @@
/turf/open/floor/plasteel/dark/corner,
/area/hallway/primary/port)
"bsv" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 2;
name = "cargo sorting disposal pipe";
@@ -45186,12 +43893,6 @@
/turf/open/floor/plasteel,
/area/security/courtroom)
"bsC" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -45207,13 +43908,6 @@
"bsE" = (
/turf/open/floor/plasteel,
/area/bridge)
-"bsF" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/bridge)
"bsG" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -45334,10 +44028,7 @@
/area/library)
"bsN" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 8
},
@@ -45348,10 +44039,7 @@
/turf/open/floor/grass,
/area/crew_quarters/heads/hop)
"bsO" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 1
@@ -45359,11 +44047,7 @@
/turf/open/floor/grass,
/area/crew_quarters/heads/hop)
"bsP" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -45535,12 +44219,6 @@
name = "off ramp";
pixel_y = 5
},
-/obj/effect/turf_decal/box/corners{
- dir = 8
- },
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"btc" = (
@@ -45755,7 +44433,6 @@
"btt" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"btu" = (
@@ -45896,8 +44573,6 @@
"btH" = (
/obj/structure/flora/grass/jungle/b,
/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 1
@@ -45913,10 +44588,7 @@
/area/crew_quarters/bar)
"btI" = (
/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 1
@@ -46038,17 +44710,7 @@
/obj/structure/bookcase/random/reference,
/turf/open/floor/wood,
/area/crew_quarters/bar)
-"btU" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
-/turf/open/floor/wood,
-/area/crew_quarters/bar)
"btV" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -46112,11 +44774,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-17";
- pixel_x = 8;
- pixel_y = 3
- },
/obj/machinery/light_switch{
pixel_x = 24;
pixel_y = 40
@@ -46130,17 +44787,6 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
-"bub" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-02";
- pixel_y = 3
- },
-/turf/open/floor/plasteel/dark,
-/area/crew_quarters/bar)
"buc" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -46255,12 +44901,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
"buk" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -46331,10 +44971,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
"bur" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
@@ -47069,7 +45705,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"bvC" = (
@@ -47184,7 +45819,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"bvL" = (
@@ -47255,16 +45889,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/toilet/restrooms)
"bvQ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -47313,10 +45937,6 @@
/turf/open/floor/plasteel/dark,
/area/library)
"bvV" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-16"
},
@@ -47385,7 +46005,6 @@
/area/crew_quarters/heads/captain)
"bwc" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"bwd" = (
@@ -47410,9 +46029,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16"
- },
/obj/structure/extinguisher_cabinet{
pixel_x = 24
},
@@ -47688,16 +46304,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain)
"bwF" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
@@ -47879,10 +46485,6 @@
/obj/structure/flora/ausbushes/ywflowers,
/turf/open/floor/grass,
/area/chapel/main)
-"bwU" = (
-/obj/structure/flora/grass/jungle,
-/turf/open/floor/grass,
-/area/chapel/main)
"bwV" = (
/obj/effect/turf_decal/tile/yellow{
dir = 8
@@ -47917,11 +46519,13 @@
/turf/open/floor/plasteel/dark,
/area/security/checkpoint/supply)
"bwY" = (
+/obj/structure/chair/stool,
/turf/open/floor/plasteel/chapel{
dir = 8
},
/area/chapel/main)
"bwZ" = (
+/obj/structure/chair/stool,
/turf/open/floor/plasteel/chapel,
/area/chapel/main)
"bxa" = (
@@ -48016,10 +46620,7 @@
/area/chapel/main)
"bxh" = (
/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -48141,10 +46742,7 @@
/area/quartermaster/storage)
"bxt" = (
/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -48479,10 +47077,6 @@
/turf/open/floor/plasteel/dark,
/area/medical/virology)
"bxW" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-4"
},
@@ -48550,9 +47144,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-22"
- },
/obj/machinery/light,
/obj/machinery/airalarm{
dir = 1;
@@ -48829,16 +47420,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/aft)
"byv" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -48919,7 +47500,6 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/security/brig)
@@ -49759,6 +48339,9 @@
/obj/machinery/newscaster/security_unit{
pixel_x = 28
},
+/obj/structure/window/reinforced{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain)
"bzQ" = (
@@ -50499,12 +49082,6 @@
name = "on ramp";
pixel_y = 6
},
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bAV" = (
@@ -50560,7 +49137,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/airalarm{
pixel_y = 22
@@ -50598,14 +49174,10 @@
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"bBc" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/open/floor/plasteel/dark/corner,
+/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bBd" = (
/obj/machinery/vending/tool,
@@ -50633,19 +49205,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
-"bBf" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
"bBg" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -50697,7 +49256,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"bBk" = (
@@ -51120,16 +49678,6 @@
/turf/open/floor/plasteel/dark,
/area/storage/primary)
"bBS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "2-8"
},
@@ -51192,16 +49740,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bBV" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 8
},
@@ -51209,16 +49747,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bBW" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -51267,16 +49795,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bCa" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
@@ -51617,14 +50135,11 @@
/turf/open/floor/plasteel/dark,
/area/hydroponics)
"bCG" = (
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
/obj/machinery/atmospherics/components/binary/pump{
dir = 1;
name = "External Gas to Loop"
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/engine,
/area/engine/engineering)
"bCH" = (
/obj/effect/turf_decal/tile/blue{
@@ -52514,19 +51029,6 @@
luminosity = 2
},
/area/storage/tech)
-"bEa" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/port/aft)
"bEb" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -52838,16 +51340,6 @@
},
/area/maintenance/port/aft)
"bEA" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -52857,16 +51349,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 8
@@ -52874,32 +51356,12 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bEC" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bED" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/box,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 8
@@ -52922,16 +51384,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bEG" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/box,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -53202,7 +51654,9 @@
dir = 1
},
/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/effect/turf_decal/box,
+/obj/effect/turf_decal/bot{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"bFi" = (
@@ -53308,6 +51762,9 @@
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/small{
+ dir = 4
+ },
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -54287,10 +52744,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/aft)
"bGS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/bot,
/obj/machinery/holopad,
/turf/open/floor/plasteel,
@@ -54321,15 +52774,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
-"bGW" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
-/turf/open/floor/plasteel,
-/area/hallway/primary/starboard)
"bGX" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -54625,21 +53069,6 @@
/obj/item/bedsheet/brown,
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
-"bHv" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
"bHw" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/red{
@@ -54678,16 +53107,6 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bHy" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/box,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 1
@@ -54952,16 +53371,6 @@
},
/area/hallway/primary/central)
"bHP" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/effect/decal/cleanable/dirt,
@@ -54974,9 +53383,6 @@
"bHS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/security/processing)
"bHT" = (
@@ -55510,16 +53916,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bIO" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/bot,
/obj/machinery/holopad,
/turf/open/floor/plasteel,
@@ -55531,12 +53927,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/security/processing)
"bIQ" = (
@@ -55808,13 +54198,7 @@
pixel_x = 6
},
/obj/item/pen,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
@@ -55827,12 +54211,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/item/storage/toolbox/mechanical{
pixel_x = 2;
pixel_y = 4
@@ -55891,16 +54269,6 @@
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"bJs" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 1
},
@@ -56249,13 +54617,6 @@
/turf/open/floor/wood,
/area/crew_quarters/locker)
"bJT" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/tile/blue{
dir = 4
},
@@ -56276,7 +54637,7 @@
dir = 1
},
/turf/open/floor/wood{
- icon_state = "wood-broken6"
+ icon_state = "wood-broken5"
},
/area/crew_quarters/locker)
"bJV" = (
@@ -56312,9 +54673,9 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"bJY" = (
-/obj/structure/bed,
-/obj/item/bedsheet/black,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/structure/table/wood,
+/obj/item/folder/red,
+/obj/item/lighter,
/obj/machinery/button/door{
id = "Cabin_2";
name = "Cabin 2 Privacy Lock";
@@ -56322,14 +54683,7 @@
pixel_y = 24;
specialfunctions = 4
},
-/obj/machinery/airalarm{
- dir = 8;
- pixel_x = 24
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/wood{
- icon_state = "wood-broken3"
- },
+/turf/open/floor/wood,
/area/crew_quarters/locker)
"bJZ" = (
/obj/machinery/light/small{
@@ -56338,9 +54692,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
-/turf/open/floor/wood{
- icon_state = "wood-broken"
- },
+/turf/open/floor/wood,
/area/crew_quarters/locker)
"bKa" = (
/obj/effect/turf_decal/tile/neutral{
@@ -56369,56 +54721,32 @@
},
/turf/open/floor/wood,
/area/crew_quarters/locker)
-"bKc" = (
-/obj/structure/closet/secure_closet/personal/cabinet,
-/obj/machinery/newscaster{
- pixel_x = -30
- },
-/obj/machinery/button/door{
- id = "Cabin_4Privacy";
- name = "Cabin 4 Privacy Toggle";
- pixel_x = -24;
- pixel_y = -24
- },
-/turf/open/floor/wood{
- icon_state = "wood-broken4"
- },
-/area/crew_quarters/locker)
"bKd" = (
-/obj/structure/closet/secure_closet/personal/cabinet,
-/obj/machinery/newscaster{
- pixel_x = -30
- },
-/obj/machinery/button/door{
- id = "Cabin_3Privacy";
- name = "Cabin 3 Privacy Toggle";
- pixel_x = -24;
- pixel_y = -24
- },
/turf/open/floor/wood{
- icon_state = "wood-broken5"
+ icon_state = "wood-broken6"
},
/area/crew_quarters/locker)
-"bKe" = (
-/obj/structure/dresser,
-/turf/open/floor/wood,
-/area/crew_quarters/locker)
"bKf" = (
/obj/structure/sign/poster/contraband/revolver,
/turf/closed/wall,
/area/crew_quarters/locker)
"bKg" = (
-/obj/structure/table/wood,
-/obj/item/folder/red,
-/obj/item/lighter,
-/turf/open/floor/wood,
+/turf/open/floor/wood{
+ icon_state = "wood-broken3"
+ },
/area/crew_quarters/locker)
"bKh" = (
-/obj/structure/closet/secure_closet/personal/cabinet,
-/obj/machinery/newscaster{
- pixel_x = 30
+/obj/structure/bed,
+/obj/item/bedsheet/black,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/wood{
+ icon_state = "wood-broken3"
},
-/turf/open/floor/wood,
/area/crew_quarters/locker)
"bKi" = (
/obj/effect/turf_decal/tile/blue{
@@ -56438,12 +54766,19 @@
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/locker)
"bKk" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "Cabin_4Privacy";
- name = "Cabin 4 Privacy Shutter"
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/obj/machinery/button/door{
+ id = "Cabin_4Privacy";
+ name = "Cabin 4 Privacy Toggle";
+ pixel_x = -24;
+ pixel_y = -24
+ },
+/turf/open/floor/wood{
+ icon_state = "wood-broken4"
},
-/turf/open/floor/plating,
/area/crew_quarters/locker)
"bKl" = (
/obj/structure/flora/rock/pile,
@@ -56845,9 +55180,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"bKP" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
@@ -56944,9 +55276,6 @@
/area/crew_quarters/toilet/restrooms)
"bKU" = (
/obj/effect/turf_decal/box,
-//obj/structure/toilet/secret/low_loot{
- dir = 8
- },
/obj/structure/mirror{
pixel_x = -28
},
@@ -57282,18 +55611,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
-"bLr" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel,
-/area/storage/primary)
"bLs" = (
/obj/structure/table,
/obj/effect/decal/cleanable/cobweb,
@@ -57334,16 +55651,6 @@
/turf/open/floor/plasteel/dark,
/area/janitor)
"bLt" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -57351,7 +55658,8 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bLu" = (
-/turf/closed/wall/rust,
+/obj/structure/dresser,
+/turf/open/floor/wood,
/area/crew_quarters/locker)
"bLv" = (
/obj/effect/turf_decal/tile/purple{
@@ -57542,16 +55850,6 @@
/turf/open/floor/grass,
/area/security/prison)
"bLI" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -57609,11 +55907,6 @@
pixel_y = 22;
prison_radio = 1
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-17";
- pixel_x = -8;
- pixel_y = 3
- },
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
"bLO" = (
@@ -57673,16 +55966,6 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bLS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
@@ -57761,16 +56044,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
"bLY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -57778,16 +56051,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bLZ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -57947,16 +56210,6 @@
/turf/open/floor/plasteel,
/area/security/warden)
"bMm" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -58045,7 +56298,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable{
icon_state = "2-4"
},
@@ -58057,12 +56309,6 @@
},
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/storage/primary)
@@ -58466,10 +56712,6 @@
/turf/open/floor/mech_bay_recharge_floor,
/area/maintenance/port/aft)
"bMY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/security/warden)
"bMZ" = (
@@ -58570,9 +56812,7 @@
"bNi" = (
/obj/structure/flora/grass/jungle/b,
/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -58614,9 +56854,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
@@ -58758,7 +56995,6 @@
dir = 8;
pixel_y = -24
},
-/obj/effect/turf_decal/delivery,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -58836,8 +57072,6 @@
/turf/open/floor/plasteel/dark,
/area/security/warden)
"bNH" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
/obj/structure/flora/ausbushes/ppflowers,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 5
@@ -59196,10 +57430,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -59215,9 +57445,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1,
/turf/open/floor/plasteel,
/area/storage/primary)
@@ -59280,7 +57507,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/storage/primary)
@@ -59454,16 +57680,6 @@
/turf/closed/wall/rust,
/area/maintenance/starboard/aft)
"bOD" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 4
@@ -59471,48 +57687,18 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bOE" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 6
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bOF" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bOG" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/landmark/event_spawn,
/obj/structure/cable{
icon_state = "1-2"
@@ -59524,17 +57710,6 @@
/turf/closed/wall,
/area/janitor)
"bOI" = (
-/obj/effect/turf_decal/box/corners,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -59542,16 +57717,6 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bOJ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -59559,16 +57724,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bOK" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
@@ -59592,16 +57747,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"bOM" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/effect/decal/cleanable/dirt,
@@ -59627,16 +57772,6 @@
/turf/open/floor/plasteel/dark,
/area/security/main)
"bOP" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bOQ" = (
@@ -59669,16 +57804,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bOS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -59755,22 +57880,12 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bOY" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
+/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bOZ" = (
@@ -59857,10 +57972,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bPh" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/fernybush,
/turf/open/floor/grass,
/area/security/prison)
"bPi" = (
@@ -59984,7 +58095,7 @@
/area/hallway/primary/central)
"bPp" = (
/obj/machinery/status_display/shuttle,
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/security/courtroom)
"bPq" = (
/obj/machinery/door/airlock/maintenance{
@@ -60133,7 +58244,7 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/maintenance/starboard/aft)
"bPA" = (
/obj/effect/turf_decal/tile/red,
@@ -60157,16 +58268,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
"bPB" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -60269,16 +58370,6 @@
},
/area/hallway/secondary/entry)
"bPL" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/sorting/mail{
dir = 8;
name = "HoP sorting disposal pipe";
@@ -60369,10 +58460,6 @@
},
/area/maintenance/port/aft)
"bPR" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -60516,16 +58603,6 @@
},
/area/space/nearstation)
"bQd" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/disposalpipe/segment{
@@ -60572,15 +58649,6 @@
/area/hallway/primary/starboard)
"bQh" = (
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/junction/flip{
dir = 8
},
@@ -60616,7 +58684,6 @@
/obj/machinery/door/airlock/public/glass{
name = "Engineering Hallway"
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"bQl" = (
@@ -60750,16 +58817,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit/departure_lounge)
"bQv" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
@@ -60820,10 +58877,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -60841,9 +58894,6 @@
},
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -60869,9 +58919,6 @@
},
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
@@ -61305,10 +59352,6 @@
"bRf" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/red,
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-02";
- pixel_y = 3
- },
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
@@ -61361,16 +59404,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bRj" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
@@ -61520,19 +59553,6 @@
/obj/machinery/holopad,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
-"bRt" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/secondary/exit/departure_lounge)
"bRu" = (
/obj/effect/turf_decal/bot,
/obj/structure/rack,
@@ -61849,16 +59869,6 @@
},
/area/maintenance/aft)
"bRU" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -61871,16 +59881,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bRV" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -61926,16 +59926,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bRZ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -61955,16 +59945,6 @@
/turf/open/floor/engine,
/area/storage/tech)
"bSb" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -61975,16 +59955,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bSc" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
@@ -61996,9 +59966,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
-"bSd" = (
-/turf/closed/wall/rust,
-/area/hallway/secondary/entry)
"bSe" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/delivery,
@@ -62104,9 +60071,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -62120,17 +60084,11 @@
},
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/disposalpipe/junction/flip,
/turf/open/floor/plasteel,
/area/storage/primary)
"bSn" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/leafybush,
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 1
@@ -62450,19 +60408,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/delivery,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
-"bSQ" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/closed/wall,
-/area/hallway/secondary/exit/departure_lounge)
"bSR" = (
/obj/machinery/shower{
dir = 8;
@@ -62591,7 +60539,6 @@
/obj/structure/sign/departments/engineering{
pixel_x = 32
},
-/obj/effect/turf_decal/delivery,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
@@ -62656,16 +60603,6 @@
/turf/open/floor/engine,
/area/storage/tech)
"bTe" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/airalarm{
dir = 4;
@@ -62787,12 +60724,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bTr" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/power/apc{
areastring = "/area/hallway/secondary/entry";
dir = 0;
@@ -62875,16 +60806,6 @@
/turf/closed/wall/rust,
/area/hallway/secondary/exit/departure_lounge)
"bTy" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -62904,9 +60825,6 @@
dir = 4;
pixel_x = -22
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
/turf/open/floor/plasteel/dark,
/area/security/prison)
"bTA" = (
@@ -63272,9 +61190,6 @@
/turf/closed/wall,
/area/hallway/secondary/entry)
"bUa" = (
-/obj/structure/bed,
-/obj/item/bedsheet/black,
-/obj/effect/landmark/start/assistant,
/turf/open/floor/wood,
/area/crew_quarters/locker)
"bUb" = (
@@ -63340,15 +61255,6 @@
/area/hallway/secondary/entry)
"bUg" = (
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -63418,9 +61324,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
-"bUl" = (
-/turf/closed/wall,
-/area/security/vacantoffice)
"bUm" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -63466,7 +61369,7 @@
dir = 10
},
/turf/open/floor/plasteel,
-/area/security/warden)
+/area/space)
"bUs" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command/glass{
@@ -63698,6 +61601,7 @@
/area/security/processing)
"bUQ" = (
/obj/machinery/light/floor,
+/obj/machinery/portable_atmospherics/canister/air,
/turf/open/floor/engine/air,
/area/engine/atmos)
"bUR" = (
@@ -63777,16 +61681,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bVa" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/junction/flip{
dir = 8
},
@@ -64290,13 +62184,6 @@
},
/area/maintenance/central/secondary)
"bVL" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
@@ -64309,10 +62196,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 8;
- icon_state = "intact"
- },
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"bVM" = (
@@ -65329,10 +63212,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
-"bXo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/hallway/secondary/exit/departure_lounge)
"bXp" = (
/obj/effect/turf_decal/tile/red{
dir = 4
@@ -65388,16 +63267,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bXu" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/box/corners{
dir = 1
},
@@ -65441,20 +63310,6 @@
/obj/structure/sign/departments/evac,
/turf/closed/wall,
/area/hallway/secondary/exit/departure_lounge)
-"bXy" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/hallway/secondary/exit/departure_lounge)
"bXz" = (
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/cobweb/cobweb2,
@@ -65484,16 +63339,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bXC" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -65518,16 +63363,6 @@
/area/hallway/secondary/exit/departure_lounge)
"bXE" = (
/obj/effect/turf_decal/box/corners,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
@@ -65611,7 +63446,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
@@ -66138,12 +63972,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bYw" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
@@ -66485,31 +64313,6 @@
},
/turf/open/floor/plasteel/dark,
/area/maintenance/port/aft)
-"bYS" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/open/floor/plasteel,
-/area/security/brig)
"bYT" = (
/obj/machinery/power/apc/highcap/five_k{
areastring = "/area/security/prison";
@@ -66585,13 +64388,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bYZ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10"
- },
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bZa" = (
@@ -66730,10 +64526,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bZk" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bZl" = (
@@ -66835,16 +64627,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"bZr" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "2-4"
},
@@ -66956,20 +64738,8 @@
dir = 1
},
/area/hallway/primary/starboard)
-"bZA" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
-/turf/open/floor/plasteel,
-/area/hallway/primary/starboard)
"bZB" = (
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -66984,16 +64754,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit/departure_lounge)
"bZD" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
@@ -67078,25 +64838,15 @@
},
/area/hallway/primary/starboard)
"bZJ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
- dir = 4
- },
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bZK" = (
@@ -67143,24 +64893,14 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bZN" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
+/obj/structure/cable{
+ icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 8
},
-/obj/structure/cable{
- icon_state = "1-2"
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
@@ -67201,16 +64941,6 @@
/turf/open/floor/plasteel/dark,
/area/janitor)
"bZR" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 5
},
@@ -67369,16 +65099,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"cad" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 4
},
@@ -67454,16 +65174,9 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"cak" = (
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
@@ -67482,16 +65195,6 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"cal" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -67564,16 +65267,6 @@
/turf/open/floor/plasteel/dark,
/area/storage/primary)
"car" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "2-8"
},
@@ -67622,10 +65315,6 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"cau" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -67746,7 +65435,6 @@
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"caE" = (
@@ -68022,10 +65710,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/central)
"cbb" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
@@ -68236,9 +65920,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 10
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"cbw" = (
@@ -68304,7 +65985,6 @@
/area/maintenance/starboard)
"cbA" = (
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"cbB" = (
@@ -68406,16 +66086,6 @@
},
/area/hallway/primary/port)
"cbH" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 1
},
@@ -68431,24 +66101,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel/dark/corner,
/area/hallway/primary/port)
-"cbJ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
-/turf/open/floor/plasteel/dark/corner{
- dir = 8
- },
-/area/hallway/primary/port)
"cbM" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -68548,10 +66200,6 @@
},
/area/maintenance/port/aft)
"cbT" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
@@ -68723,10 +66371,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"cci" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -68742,10 +66386,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 8;
- icon_state = "intact"
- },
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"ccj" = (
@@ -68992,10 +66632,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/aft)
"ccM" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -69042,9 +66678,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/brig)
"ccR" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -69101,7 +66734,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/locker)
"ccX" = (
@@ -69217,28 +66849,14 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"cdg" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/plaque{
icon_state = "L6"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 8;
- icon_state = "intact"
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
@@ -69254,20 +66872,9 @@
/area/maintenance/aft)
"cdi" = (
/obj/structure/flora/grass/jungle/b,
-/obj/structure/flora/ausbushes/sparsegrass,
/turf/open/floor/grass,
/area/security/prison)
"cdj" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/item/beacon,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
@@ -69664,9 +67271,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/brig)
-"cdY" = (
-/turf/closed/wall/r_wall/rust,
-/area/maintenance/central)
"cdZ" = (
/turf/closed/wall/r_wall,
/area/maintenance/central)
@@ -69706,7 +67310,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/locker)
"ced" = (
@@ -69798,6 +67401,7 @@
pixel_x = 4;
req_access_txt = "16"
},
+/obj/item/toy/talking/AI,
/turf/open/floor/circuit/red,
/area/ai_monitored/turret_protected/ai)
"ceg" = (
@@ -69952,6 +67556,7 @@
pixel_x = -3;
req_access_txt = "16"
},
+/obj/item/toy/talking/AI,
/turf/open/floor/circuit/red,
/area/ai_monitored/turret_protected/ai)
"cep" = (
@@ -70031,12 +67636,6 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"ceu" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1{
dir = 8
},
@@ -70066,12 +67665,6 @@
/turf/open/floor/circuit/red/telecomms,
/area/tcommsat/server)
"cex" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1{
dir = 8
},
@@ -70088,12 +67681,6 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"cey" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -70196,9 +67783,6 @@
"ceF" = (
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/aisat/atmos)
-"ceG" = (
-/turf/closed/wall/r_wall/rust,
-/area/ai_monitored/turret_protected/aisat/atmos)
"ceH" = (
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -70970,9 +68554,6 @@
"cfY" = (
/turf/closed/wall/r_wall,
/area/ai_monitored/storage/satellite)
-"cga" = (
-/turf/closed/wall/r_wall/rust,
-/area/ai_monitored/storage/satellite)
"cgb" = (
/obj/structure/closet/emcloset,
/obj/effect/decal/cleanable/dirt,
@@ -71002,7 +68583,7 @@
"cgg" = (
/obj/structure/sign/warning/docking,
/turf/closed/wall/rust,
-/area/hallway/secondary/entry)
+/area/hallway/secondary/exit/departure_lounge)
"cgi" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
@@ -71191,9 +68772,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05"
- },
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -71470,16 +69048,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"cgV" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
@@ -71651,10 +69219,6 @@
/turf/closed/wall,
/area/maintenance/fore)
"chk" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -71700,10 +69264,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/brig)
"chm" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -72172,9 +69732,6 @@
/obj/structure/lattice/catwalk,
/turf/open/floor/plating/airless,
/area/solar/port/aft)
-"chV" = (
-/turf/closed/wall/rust,
-/area/ai_monitored/turret_protected/aisat_interior)
"chW" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/hatch{
@@ -72805,7 +70362,6 @@
name = "Engine Access Shutters"
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
@@ -73236,21 +70792,6 @@
/obj/structure/sign/warning/securearea,
/turf/closed/wall,
/area/engine/gravity_generator)
-"cjC" = (
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
-/area/engine/gravity_generator)
"cjD" = (
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -73270,33 +70811,6 @@
icon_state = "panelscorched"
},
/area/maintenance/starboard/aft)
-"cjF" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/status_display/ai{
- pixel_y = 32
- },
-/obj/effect/decal/cleanable/greenglow,
-/turf/open/floor/plasteel/dark,
-/area/engine/gravity_generator)
-"cjG" = (
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/plasteel/dark,
-/area/engine/gravity_generator)
"cjH" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering{
@@ -73312,7 +70826,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"cjI" = (
-/obj/effect/turf_decal/box,
/obj/machinery/shower{
dir = 4;
name = "emergency shower"
@@ -73535,7 +71048,6 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
-/obj/effect/turf_decal/box,
/obj/machinery/shower{
dir = 4;
name = "emergency shower"
@@ -74089,16 +71601,6 @@
icon_state = "platingdmg1"
},
/area/engine/engineering)
-"clg" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/greenglow,
-/turf/open/floor/plasteel/dark,
-/area/engine/gravity_generator)
"clh" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1,
/turf/open/floor/plasteel,
@@ -74413,14 +71915,6 @@
luminosity = 2
},
/area/engine/gravity_generator)
-"clF" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/decal/cleanable/greenglow,
-/turf/open/floor/plasteel/dark,
-/area/engine/gravity_generator)
"clG" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
@@ -74533,37 +72027,11 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/maintenance/solars/port/aft)
-"clP" = (
-/obj/effect/turf_decal/box/corners{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/engine/gravity_generator)
"clQ" = (
/obj/machinery/gravity_generator/main/station,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/greenglow,
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"clR" = (
-/obj/effect/turf_decal/box/corners,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"clS" = (
@@ -74596,7 +72064,6 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
-/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/security/processing)
"clY" = (
@@ -74665,9 +72132,6 @@
/area/engine/atmos)
"cmc" = (
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -74923,7 +72387,6 @@
dir = 8;
pixel_x = 24
},
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"cmt" = (
@@ -75058,16 +72521,6 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cmD" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
@@ -75087,7 +72540,6 @@
dir = 8
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"cmF" = (
@@ -75187,7 +72639,6 @@
},
/obj/machinery/light/small,
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"cmR" = (
@@ -75448,7 +72899,6 @@
dir = 4;
pixel_x = -26
},
-/obj/item/gun/energy/e_gun/advtaser,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"cnn" = (
@@ -76060,6 +73510,10 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/mob/living/simple_animal/bot/cleanbot{
+ auto_patrol = 1;
+ name = "\imprper Cleaner Bot"
+ },
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
"coI" = (
@@ -76244,16 +73698,6 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cpd" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
@@ -76553,16 +73997,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cpu" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/item/beacon,
@@ -76673,7 +74107,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/engine/engineering)
"cpF" = (
/obj/structure/flora/rock/pile,
@@ -76782,16 +74216,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/aft)
"cpP" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
@@ -76799,16 +74223,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"cpQ" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/item/beacon,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
@@ -78380,16 +75794,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
@@ -79516,7 +76920,6 @@
id = "xeno_blastdoor";
name = "Xenobiology Containment Blast Door"
},
-/obj/effect/turf_decal/caution/stand_clear,
/obj/structure/disposalpipe/junction{
dir = 4
},
@@ -81324,16 +78727,6 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable{
icon_state = "2-8"
},
@@ -81662,10 +79055,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port/fore)
"cyY" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/maintenance/port/fore)
@@ -82334,7 +79723,6 @@
name = "Emergency Research Blast Door"
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/science/research)
"cAY" = (
@@ -82465,7 +79853,6 @@
/obj/machinery/light{
dir = 8
},
-/obj/item/gun/energy/e_gun/advtaser,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"cBp" = (
@@ -82665,12 +80052,19 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/central)
"cBW" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "Cabin_3Privacy";
- name = "Cabin 3 Privacy Shutter"
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/obj/machinery/button/door{
+ id = "Cabin_3Privacy";
+ name = "Cabin 3 Privacy Toggle";
+ pixel_x = -24;
+ pixel_y = -24
+ },
+/turf/open/floor/wood{
+ icon_state = "wood-broken5"
},
-/turf/open/floor/plating,
/area/crew_quarters/locker)
"cBX" = (
/obj/effect/spawner/structure/window/reinforced,
@@ -82705,6 +80099,9 @@
},
/obj/structure/flora/grass/jungle/b,
/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plating/asteroid/airless{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
@@ -82718,6 +80115,9 @@
},
/obj/structure/flora/ausbushes/palebush,
/obj/machinery/light/small,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plating/asteroid/airless{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
@@ -82933,7 +80333,6 @@
/obj/machinery/door/airlock/maintenance{
req_access_txt = "12"
},
-/obj/structure/barricade/wooden/crude,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -83150,9 +80549,6 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/fore)
"cDr" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
@@ -83572,16 +80968,6 @@
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/fore)
-"cEl" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/remains/human,
-/turf/open/floor/plasteel/dark,
-/area/maintenance/starboard/fore)
"cEm" = (
/obj/machinery/atmospherics/components/trinary/filter/flipped,
/obj/machinery/button/ignition{
@@ -84065,7 +81451,6 @@
dir = 4
},
/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"cFC" = (
@@ -84097,7 +81482,6 @@
/obj/machinery/door/airlock/maintenance{
req_access_txt = "12"
},
-/obj/structure/barricade/wooden/crude,
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/fore)
"cFJ" = (
@@ -84332,11 +81716,7 @@
/turf/open/floor/engine/vacuum,
/area/science/test_area)
"cGz" = (
-/obj/structure/flora/grass/jungle,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/genericbush,
/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/sunnybush,
/obj/structure/window/reinforced{
dir = 4
},
@@ -84694,20 +82074,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/dark,
/area/security/brig)
-"cHC" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel,
-/area/hallway/primary/aft)
"cHD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -84833,16 +82199,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/chief)
"cHS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/effect/landmark/event_spawn,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
@@ -84895,9 +82251,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/disposalpipe/segment{
dir = 6
},
@@ -84922,15 +82275,6 @@
icon_state = "platingdmg3"
},
/area/maintenance/aft)
-"cIe" = (
-/obj/machinery/door/airlock/research{
- glass = 1;
- name = "Slime Euthanization Chamber";
- opacity = 0;
- req_access_txt = "55"
- },
-/turf/open/floor/plasteel/dark,
-/area/maintenance/starboard/fore)
"cIf" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
dir = 4
@@ -85091,16 +82435,6 @@
/turf/open/floor/plasteel/dark,
/area/storage/tcom)
"cIw" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 6
},
@@ -85259,9 +82593,6 @@
dir = 1
},
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21"
- },
/obj/structure/sign/warning/electricshock{
pixel_y = -32
},
@@ -85681,16 +83012,6 @@
/turf/open/floor/plasteel/dark,
/area/engine/break_room)
"cKa" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -85709,16 +83030,6 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"cKb" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
@@ -86540,7 +83851,6 @@
/turf/open/floor/plating,
/area/maintenance/department/electrical)
"cMG" = (
-/obj/structure/girder,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/plating{
@@ -87036,15 +84346,6 @@
/area/science/mixing/chamber)
"cOW" = (
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/bridge)
@@ -87066,12 +84367,6 @@
/turf/open/floor/plasteel/dark,
/area/security/prison)
"cPb" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/bridge)
@@ -87264,9 +84559,6 @@
icon_state = "wood-broken"
},
/area/security/vacantoffice)
-"dis" = (
-/turf/closed/wall/r_wall/rust,
-/area/bridge)
"dlg" = (
/obj/machinery/light,
/turf/open/floor/wood,
@@ -87333,16 +84625,6 @@
/obj/item/twohanded/required/kirbyplants/dead,
/turf/open/floor/wood,
/area/security/vacantoffice)
-"elZ" = (
-/obj/machinery/status_display/evac,
-/turf/closed/wall/rust,
-/area/crew_quarters/bar)
-"emD" = (
-/turf/closed/wall/rust,
-/area/quartermaster/miningoffice)
-"erN" = (
-/turf/closed/wall/rust,
-/area/hallway/primary/starboard)
"esR" = (
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/wood{
@@ -87350,10 +84632,6 @@
},
/area/maintenance/port/fore)
"evx" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/turf/open/floor/engine{
initial_gas_mix = "n2=100;TEMP=80";
name = "mainframe floor"
@@ -87376,9 +84654,6 @@
/obj/effect/turf_decal/tile/red,
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
-"ezp" = (
-/turf/closed/wall/rust,
-/area/hydroponics)
"eBN" = (
/obj/structure/window/reinforced{
dir = 8
@@ -87419,9 +84694,6 @@
/obj/machinery/status_display/evac,
/turf/closed/wall/rust,
/area/security/prison)
-"eVT" = (
-/turf/closed/wall/rust,
-/area/science/explab)
"fcv" = (
/obj/structure/sign/warning/fire{
pixel_x = 32
@@ -87441,9 +84713,6 @@
/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/closed/mineral/random/labormineral,
/area/space/nearstation)
-"fAH" = (
-/turf/closed/wall/r_wall/rust,
-/area/security/main)
"fXq" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -87535,9 +84804,6 @@
},
/turf/open/floor/wood,
/area/security/vacantoffice)
-"gMU" = (
-/turf/closed/wall/r_wall/rust,
-/area/ai_monitored/turret_protected/ai_upload)
"gPA" = (
/turf/open/floor/wood{
icon_state = "wood-broken3"
@@ -87549,21 +84815,9 @@
/obj/effect/decal/cleanable/generic,
/turf/open/floor/wood,
/area/maintenance/port/fore)
-"hqv" = (
-/turf/closed/wall/rust,
-/area/crew_quarters/kitchen)
-"hvb" = (
-/turf/closed/wall/r_wall/rust,
-/area/tcommsat/computer)
"hxn" = (
/turf/open/space/basic,
/area/hallway/secondary/entry)
-"hzY" = (
-/turf/closed/wall/rust,
-/area/gateway)
-"hAb" = (
-/turf/closed/wall/r_wall/rust,
-/area/security/courtroom)
"hDh" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/closet/cardboard,
@@ -87574,16 +84828,6 @@
/turf/closed/wall/r_wall/rust,
/area/security/prison)
"ice" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -87595,26 +84839,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
-"ieA" = (
-/obj/effect/decal/cleanable/dirt,
-/mob/living/simple_animal/hostile/cat_butcherer,
-/turf/open/floor/plating{
- icon_state = "platingdmg3"
- },
-/area/maintenance/fore)
-"iiA" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine{
- initial_gas_mix = "n2=100;TEMP=80";
- name = "mainframe floor"
- },
-/area/tcommsat/server)
"ikw" = (
/obj/machinery/camera{
c_tag = "Xenobiology Cell 4";
@@ -87627,13 +84851,6 @@
},
/turf/open/floor/engine,
/area/science/xenobiology)
-"ivg" = (
-/obj/structure/lattice/catwalk,
-/turf/open/space/basic,
-/area/space)
-"iwR" = (
-/turf/closed/wall/r_wall/rust,
-/area/science/server)
"iBL" = (
/obj/machinery/camera{
c_tag = "Laser Room Starboard";
@@ -87670,9 +84887,6 @@
},
/turf/open/floor/engine,
/area/science/xenobiology)
-"iRL" = (
-/turf/closed/wall/rust,
-/area/hallway/primary/aft)
"iSg" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -87682,9 +84896,6 @@
/mob/living/simple_animal/hostile/retaliate/ghost,
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/fore)
-"iYW" = (
-/turf/closed/wall/r_wall/rust,
-/area/crew_quarters/heads/captain)
"iZo" = (
/turf/closed/wall/r_wall/rust,
/area/medical/virology)
@@ -87738,9 +84949,6 @@
},
/turf/open/floor/engine,
/area/science/xenobiology)
-"jxc" = (
-/turf/closed/wall/rust,
-/area/hallway/primary/fore)
"jAT" = (
/obj/structure/lattice/catwalk,
/obj/machinery/light,
@@ -87748,21 +84956,6 @@
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
/area/hallway/secondary/entry)
-"jCp" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine{
- initial_gas_mix = "n2=100;TEMP=80";
- name = "mainframe floor"
- },
-/area/tcommsat/server)
-"jDv" = (
-/turf/closed/wall/rust,
-/area/quartermaster/storage)
"jHJ" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 9
@@ -87906,15 +85099,20 @@
/turf/closed/wall/rust,
/area/hallway/secondary/exit/departure_lounge)
"ktv" = (
-/obj/machinery/air_sensor{
- pixel_x = -32;
- pixel_y = -32
+/obj/machinery/power/compressor{
+ comp_id = "incineratorturbine";
+ dir = 1;
+ luminosity = 2
},
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 5
+/obj/structure/cable,
+/obj/machinery/camera{
+ c_tag = "Turbine Chamber";
+ dir = 4;
+ name = "turbine camera";
+ network = list("turbine")
},
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
@@ -87934,6 +85132,21 @@
icon_state = "wood-broken7"
},
/area/maintenance/port/fore)
+"kRh" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/nanite_chamber,
+/turf/open/floor/plasteel/dark,
+/area/science/research)
"kSc" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
@@ -87951,7 +85164,7 @@
/area/maintenance/port/fore)
"llm" = (
/obj/structure/sign/poster/ripped,
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/crew_quarters/fitness/recreation)
"lKu" = (
/obj/structure/table/wood,
@@ -87961,12 +85174,9 @@
icon_state = "wood-broken4"
},
/area/maintenance/port/fore)
-"lSJ" = (
-/turf/open/floor/engine/vacuum,
-/area/maintenance/disposal/incinerator)
"lVk" = (
/obj/machinery/status_display/evac,
-/turf/closed/wall/rust,
+/turf/closed/wall,
/area/security/warden)
"mbs" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
@@ -87986,16 +85196,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
"mIt" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=SE CPH";
@@ -88038,13 +85238,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/labormineral,
/area/space/nearstation)
-"mPm" = (
-/turf/closed/wall/rust,
-/area/security/checkpoint/supply)
-"nDw" = (
-/obj/machinery/status_display/evac,
-/turf/closed/wall/rust,
-/area/crew_quarters/heads/hor)
"nJw" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -88057,15 +85250,6 @@
"nNA" = (
/turf/closed/wall/rust,
/area/bridge)
-"nNV" = (
-/turf/closed/wall/rust,
-/area/science/lab)
-"nSz" = (
-/turf/closed/wall/rust,
-/area/medical/cryo)
-"nVt" = (
-/turf/closed/wall/rust,
-/area/storage/tech)
"nXu" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -88134,9 +85318,6 @@
icon_state = "wood-broken4"
},
/area/maintenance/port/fore)
-"pQf" = (
-/turf/closed/wall/r_wall/rust,
-/area/science/xenobiology)
"qfZ" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -88150,23 +85331,7 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
-"qtv" = (
-/turf/closed/wall/r_wall/rust,
-/area/tcommsat/server)
-"qtS" = (
-/turf/closed/wall/rust,
-/area/medical/genetics/cloning)
"qvS" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=W CPH";
dir = 8;
@@ -88246,6 +85411,14 @@
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
/area/hallway/secondary/entry)
+"sfp" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/nanite_programmer,
+/turf/open/floor/plasteel/dark,
+/area/science/research)
"swG" = (
/obj/item/reagent_containers/food/drinks/drinkingglass{
pixel_x = 4;
@@ -88275,35 +85448,12 @@
/obj/structure/sign/warning,
/turf/closed/wall/rust,
/area/space/nearstation)
-"sPG" = (
-/turf/closed/wall/rust,
-/area/crew_quarters/heads/hor)
-"tgw" = (
-/obj/structure/sign/warning/electricshock,
-/turf/closed/wall/r_wall/rust,
-/area/security/prison)
-"tqw" = (
-/turf/closed/wall/rust,
-/area/lawoffice)
-"tyb" = (
-/turf/closed/wall/rust,
-/area/hallway/primary/central)
"tCi" = (
/obj/effect/decal/cleanable/glass,
/turf/open/floor/wood{
icon_state = "wood-broken3"
},
/area/maintenance/port/fore)
-"tEC" = (
-/turf/closed/wall/rust,
-/area/crew_quarters/bar)
-"tGU" = (
-/obj/structure/sign/warning/securearea,
-/turf/closed/wall/rust,
-/area/gateway)
-"tYn" = (
-/turf/closed/wall/rust,
-/area/janitor)
"uda" = (
/turf/closed/wall/rust,
/area/security/warden)
@@ -88335,16 +85485,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port)
"unX" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=E CPH";
dir = 8;
@@ -88373,9 +85513,6 @@
"uRM" = (
/turf/open/floor/wood,
/area/security/vacantoffice)
-"uWo" = (
-/turf/closed/wall/rust,
-/area/security/checkpoint/medical)
"vle" = (
/obj/structure/festivus,
/turf/open/floor/wood,
@@ -88389,9 +85526,6 @@
/obj/item/instrument/guitar,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
-"whw" = (
-/turf/closed/wall/rust,
-/area/medical/surgery)
"whZ" = (
/obj/effect/turf_decal/tile/green{
dir = 8
@@ -88409,24 +85543,6 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/wood,
/area/security/vacantoffice)
-"wmX" = (
-/turf/closed/wall/rust,
-/area/quartermaster/qm)
-"wvq" = (
-/turf/closed/wall/rust,
-/area/security/courtroom)
-"wCy" = (
-/turf/closed/wall/rust,
-/area/hallway/primary/port)
-"wDP" = (
-/turf/closed/wall/rust,
-/area/crew_quarters/fitness/recreation)
-"wQL" = (
-/turf/closed/wall/rust,
-/area/security/execution/education)
-"xei" = (
-/turf/closed/wall/r_wall/rust,
-/area/teleporter)
"xqv" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/drinks/drinkingglass{
@@ -88436,9 +85552,6 @@
/obj/item/reagent_containers/food/drinks/drinkingglass,
/turf/open/floor/wood,
/area/maintenance/port/fore)
-"xqL" = (
-/turf/closed/wall/rust,
-/area/quartermaster/office)
"xse" = (
/obj/machinery/cryopod,
/obj/effect/decal/cleanable/dirt,
@@ -88447,10 +85560,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
-"xBI" = (
-/obj/machinery/status_display/evac,
-/turf/closed/wall/rust,
-/area/chapel/office)
"xJY" = (
/obj/structure/rack,
/obj/item/storage/backpack,
@@ -98953,7 +96062,7 @@ bmU
ruL
ruL
ruL
-hNk
+aav
aeu
aeu
aap
@@ -99206,11 +96315,11 @@ cqG
cov
cpx
bLM
-hNk
+aav
mmZ
ewj
qfZ
-hNk
+aav
aeu
aeu
aeU
@@ -99463,11 +96572,11 @@ cIA
coD
cqt
aeu
-hNk
+aav
xse
nXu
qPY
-hNk
+aav
aeu
aeu
aUz
@@ -99718,14 +96827,14 @@ cqI
cqP
afm
bVx
-hNk
-hNk
-hNk
+aav
+aav
+aav
cxV
ydo
eBN
-tgw
-hNk
+asO
+aav
aeu
aeu
aeu
@@ -99975,7 +97084,7 @@ bGl
bGV
bIi
cpv
-hNk
+aav
awn
bTz
czR
@@ -99983,7 +97092,7 @@ cFN
cIm
cJC
aav
-hNk
+aav
aeu
aeu
aeU
@@ -100240,7 +97349,7 @@ bNi
bPa
caX
cJG
-hNk
+aav
aeu
aeU
aUz
@@ -100746,7 +97855,7 @@ ajd
cof
ajd
ajd
-hNk
+aav
btd
bVV
bMe
@@ -100754,7 +97863,7 @@ bNH
bTu
ciF
cIQ
-hNk
+aav
aeu
aUz
aeU
@@ -101003,7 +98112,7 @@ ajd
bHc
bIo
ajd
-hNk
+aav
bLN
bMQ
bPk
@@ -101011,7 +98120,7 @@ bRa
bSR
bTF
bVm
-hNk
+aav
aeu
aeu
coy
@@ -101773,7 +98882,7 @@ ajd
ajd
ajd
ajd
-hNk
+aav
bKv
bLX
eQS
@@ -102031,7 +99140,7 @@ ajd
aeu
aeu
aav
-hNk
+aav
bJB
abp
abp
@@ -102545,7 +99654,7 @@ coA
bHj
adf
aeu
-hNk
+aav
bJF
bJN
cuS
@@ -102802,7 +99911,7 @@ coA
bHo
aeE
agK
-hNk
+aav
bLj
bYc
cDG
@@ -102810,7 +99919,7 @@ aaG
aez
cIj
aeB
-wQL
+cZm
aez
aez
cko
@@ -105381,13 +102490,13 @@ bSW
bUd
bVO
aey
-fAH
-fAH
+aey
+aey
aey
aey
byu
aey
-fAH
+aey
aey
aey
clr
@@ -105611,7 +102720,7 @@ amA
amR
amA
cFW
-wDP
+awD
bKD
bLg
bLm
@@ -105901,7 +103010,7 @@ ahZ
aiL
aiL
aiL
-cDB
+bqs
ajS
bOO
bBG
@@ -106392,7 +103501,7 @@ bxE
byS
bGI
bMg
-wDP
+awD
bDt
bDV
bFn
@@ -106639,7 +103748,7 @@ csG
bid
bjx
csQ
-wDP
+awD
bKn
bLc
bMi
@@ -106649,7 +103758,7 @@ bLT
bEK
bGT
bMx
-wDP
+awD
afz
adZ
ajd
@@ -106664,7 +103773,7 @@ aej
aeY
afn
aeY
-aeY
+bqm
ahg
bXO
bYO
@@ -106867,7 +103976,7 @@ apF
aqP
asb
aNG
-aOa
+aOb
akd
aOC
aOm
@@ -106896,8 +104005,8 @@ aqu
bif
bjz
csR
-wDP
-wDP
+awD
+awD
bLo
bLp
btz
@@ -107133,7 +104242,7 @@ abo
agk
agI
agL
-abl
+afX
ahc
aPx
aPx
@@ -107371,7 +104480,7 @@ aeu
cwp
cwq
cyL
-aiV
+alw
cyY
adv
alw
@@ -107628,10 +104737,10 @@ aeu
cwp
abu
cyM
-aiW
+cyY
cyZ
czl
-alA
+cyY
czp
bgN
cwp
@@ -107915,8 +105024,8 @@ aQJ
aTc
aUL
aWr
-uWo
-whw
+aQI
+aQN
bxr
aQN
aQN
@@ -108142,10 +105251,10 @@ cwq
cyE
ahL
cyO
-ajh
-ajs
+cyY
+alw
akI
-alH
+cyY
czr
ans
czK
@@ -108172,7 +105281,7 @@ aQI
aQJ
aQf
aQJ
-uWo
+aQI
baB
bcS
bek
@@ -108185,7 +105294,7 @@ aUJ
aUJ
afe
brD
-bLn
+brD
bvO
bKF
bza
@@ -108419,8 +105528,8 @@ aCL
aPh
aGp
aNW
-aJv
-aQk
+aJC
+agF
aSE
aQy
aWt
@@ -108455,7 +105564,7 @@ cBT
aef
aef
lVk
-uda
+aef
aef
ani
anm
@@ -108703,11 +105812,11 @@ btD
bvP
bxQ
bzg
-bLu
-bLu
bIV
bIV
-csS
+bIV
+bIV
+bIV
bFp
aah
bHz
@@ -108932,7 +106041,7 @@ aBq
aCP
aEo
aGt
-nSz
+aNQ
aJB
aQo
aTO
@@ -108955,17 +106064,17 @@ aoV
bxV
aoV
afe
-bLu
+bIV
bFb
akv
bzZ
bKL
-bLu
+bIV
bJQ
-bKc
+bLu
bKk
-cBv
-bFp
+aXE
+aYZ
aah
bHA
aaA
@@ -108980,7 +106089,7 @@ cqg
ajw
agV
bXT
-bYS
+bYQ
bYm
ama
aiQ
@@ -109188,8 +106297,8 @@ aNH
aVH
aNO
aso
-qtS
-qtS
+aNL
+aNL
aQd
aQC
aNn
@@ -109220,11 +106329,11 @@ bzh
aoL
bJU
bUa
-bKk
-csS
+aJv
+aXE
cCa
-uda
-uda
+aef
+aef
bJC
aef
aef
@@ -109235,7 +106344,7 @@ bWr
coN
cqh
bVW
-uda
+aef
ayi
aJr
ayi
@@ -109477,8 +106586,8 @@ bzi
bIV
bIV
bIV
-bLu
-cBI
+bIV
+bIV
bFp
aah
bHC
@@ -109735,8 +106844,8 @@ bIV
bJS
bKd
cBW
-cBv
-bFp
+aYR
+aYZ
aah
bHA
aff
@@ -109990,14 +107099,14 @@ bAL
bzh
apV
bJZ
-bKe
-cBW
-cBy
+bUa
+bLu
+aYR
cCb
-uda
+aef
aef
lVk
-uda
+aef
uda
bXr
bNq
@@ -110245,11 +107354,11 @@ bGA
bJp
bAQ
bIV
-bLu
+bIV
bIV
bKf
bIV
-csN
+bIV
bFq
aah
bHD
@@ -110506,7 +107615,7 @@ arf
bKb
bKg
bLu
-cBw
+bIV
bFq
aah
bHu
@@ -110762,8 +107871,8 @@ bzp
bIV
bJY
bKh
+aWS
bIV
-afz
ayy
agX
agX
@@ -111017,10 +108126,10 @@ bKC
bAy
bzu
bIV
-bLu
bIV
bIV
-bEa
+bIV
+ajd
bFr
bBI
bHH
@@ -111227,7 +108336,7 @@ aeu
aWG
aWG
aWG
-bsm
+aWG
aWG
aWG
cAN
@@ -111260,8 +108369,8 @@ aSg
aAc
aSg
bAN
-aPf
-aPf
+bAN
+bAN
bAN
bAN
bAN
@@ -111481,7 +108590,7 @@ aaa
aeu
aeu
aeu
-bsm
+aWG
acE
cgY
cAi
@@ -111764,7 +108873,7 @@ aJQ
aLn
aMN
aOD
-aiU
+bdf
aYx
aSe
aYx
@@ -111784,7 +108893,7 @@ boU
bfS
bss
btV
-bZH
+aEu
bxW
bzx
bKq
@@ -111995,7 +109104,7 @@ aeu
aeu
aeu
aeu
-bsm
+aWG
aWG
czG
cAk
@@ -112020,7 +109129,7 @@ aMX
aJR
aOP
aAO
-anY
+aNy
aHq
aYM
aST
@@ -112037,7 +109146,7 @@ bmJ
bmJ
bqp
bri
-bmJ
+auK
bfX
bst
bvQ
@@ -112253,8 +109362,8 @@ aeu
aeu
aeu
aeu
-bsm
-bsm
+aWG
+aWG
aWG
aWG
aWG
@@ -112265,7 +109374,7 @@ bsZ
aWG
aWG
avY
-bsm
+aWG
beG
bwC
bxe
@@ -112275,7 +109384,7 @@ bwY
aGM
bxJ
ahF
-aOS
+aPk
aBN
aOF
bdU
@@ -112321,7 +109430,7 @@ arq
bEo
bEF
bGX
-bBf
+bYZ
aKC
all
alX
@@ -112522,7 +109631,7 @@ bta
btC
atL
avK
-xBI
+btg
aob
azS
aAu
@@ -112532,7 +109641,7 @@ bwZ
bxF
bxJ
ahF
-aOS
+aPk
aJi
aOG
btE
@@ -112542,7 +109651,7 @@ btE
aPK
aLU
btE
-cJc
+buC
buC
aRF
aSP
@@ -112575,14 +109684,14 @@ ajd
bRP
bBr
cdj
-bBf
+bYZ
bEG
-bBf
-bBf
+bYZ
+bYZ
bVa
-cHC
+bUZ
cHS
-cHC
+bUZ
aKN
cfp
baF
@@ -112768,7 +109877,7 @@ aeu
aeu
aeu
adH
-ajj
+alc
ajz
adQ
cAF
@@ -112779,7 +109888,7 @@ aWG
aWG
bvT
avL
-bsm
+aWG
btA
cBh
btA
@@ -112789,12 +109898,12 @@ bxu
bwP
btA
bsx
-aOS
+aPk
aaJ
-tEC
-tEC
+btE
+btE
bvi
-bub
+aTe
buu
bvf
aTe
@@ -112805,14 +109914,14 @@ bvn
bfv
bvU
bvu
-cJc
+buC
blx
bnx
boY
buC
bsy
aoh
-tqw
+aoh
bCn
aoh
aoA
@@ -112822,8 +109931,8 @@ cbC
cbH
cbM
cbP
-aer
-aer
+ajd
+ajd
czw
bWQ
czU
@@ -112835,7 +109944,7 @@ cCh
cCh
cCo
bGY
-bHv
+bYw
bVc
cbc
cch
@@ -113048,7 +110157,7 @@ btA
ahF
aOT
cfa
-tEC
+btE
aTB
btT
buc
@@ -113080,7 +110189,7 @@ aYM
aYM
cbM
cbw
-aer
+ajd
ajd
ajd
czW
@@ -113092,7 +110201,7 @@ bBk
aaY
aaY
bGZ
-bBf
+bYZ
bVd
bHU
aMA
@@ -113299,15 +110408,15 @@ azW
bwR
bye
bxi
-aEu
+aEx
bxH
bxJ
ahF
-aOS
+aPk
cfa
btF
aqg
-btU
+aqg
buy
buJ
bvq
@@ -113323,7 +110432,7 @@ bjH
blB
bAS
buC
-cJc
+buC
bps
aoh
aok
@@ -113337,7 +110446,7 @@ cbI
cbN
aYM
cbR
-cbJ
+cbw
ajd
bKA
bBG
@@ -113349,7 +110458,7 @@ aci
bWc
aaY
bHk
-bBf
+bYZ
bVd
bXV
ccj
@@ -113846,9 +110955,9 @@ aoS
aoX
adc
aoh
-wCy
-wCy
-wCy
+boC
+boC
+boC
bvJ
bwc
bBj
@@ -113863,7 +110972,7 @@ ack
bWe
bBk
bHk
-bBf
+bYZ
cFA
axF
axF
@@ -114056,7 +111165,7 @@ adQ
cAr
cAy
cAC
-adQ
+adH
bsf
cCI
cBc
@@ -114067,14 +111176,14 @@ cBc
btA
bwK
btB
-bwU
+btB
bxD
-aAD
+btB
aEx
bxJ
aIl
ahF
-aOS
+aPk
cfa
btF
aRM
@@ -114105,7 +111214,7 @@ asF
asF
aos
bEd
-wvq
+asF
bGq
bOP
bIt
@@ -114120,7 +111229,7 @@ acl
bCd
bBk
bHk
-bBf
+bYZ
cHk
bFa
bGf
@@ -114317,7 +111426,7 @@ adH
anb
anU
apG
-adQ
+adH
aoc
atO
awh
@@ -114352,7 +111461,7 @@ bpH
bsh
buC
boW
-wvq
+asF
adu
bwk
byi
@@ -114588,7 +111697,7 @@ aEC
bxJ
aIo
ahF
-aOS
+aPk
cfa
btE
aXm
@@ -114602,14 +111711,14 @@ btE
btE
bey
btE
-tEC
-cJc
-cJc
+btE
+buC
+buC
buC
buC
buC
bpn
-wvq
+asF
aow
arB
atc
@@ -114634,7 +111743,7 @@ bws
aaY
aaY
bHk
-bBf
+bYZ
cac
bFa
cnz
@@ -114845,7 +111954,7 @@ btA
btA
ago
aaZ
-aOS
+aPk
cfa
btH
aXp
@@ -114853,7 +111962,7 @@ btY
bvk
bvE
bvH
-aWS
+aTe
buA
bbk
bcW
@@ -114866,7 +111975,7 @@ bqr
brs
bsk
btO
-wvq
+asF
asY
ask
aaV
@@ -114891,7 +112000,7 @@ bUz
bWg
axF
bYn
-bBf
+bYZ
cae
bVo
cck
@@ -115090,7 +112199,7 @@ cCM
cCR
bsf
ajv
-adQ
+adH
cDc
cCU
cDh
@@ -115102,7 +112211,7 @@ aaI
aGN
cDq
aJS
-aOS
+aPk
cfa
btI
aXr
@@ -115121,14 +112230,14 @@ aLD
bpn
asF
asF
-wvq
+asF
asF
asF
asF
asu
auI
atf
-auK
+byi
avW
ccR
apa
@@ -115320,7 +112429,7 @@ aeu
ceF
ceF
ceF
-ceG
+ceF
ceF
ceF
ceF
@@ -115341,10 +112450,10 @@ aeU
aUz
aeu
adH
-adQ
adH
adH
-adQ
+adH
+adH
adH
cCU
cDy
@@ -115361,7 +112470,7 @@ ago
aBO
aNq
aRY
-elZ
+btK
btE
buf
aSh
@@ -115395,8 +112504,8 @@ auP
bQx
bOP
bRh
-tyb
-iRL
+bOU
+axF
cag
cbh
bRX
@@ -115435,7 +112544,6 @@ aFH
aFN
cwz
aaa
-acm
aaa
aaa
acm
@@ -115495,6 +112603,7 @@ aaa
aaa
aaa
aaa
+aaa
"}
(106,1,1) = {"
aaa
@@ -115567,20 +112676,20 @@ aeu
aeu
asZ
asZ
-aAg
asZ
asZ
-aAg
-aAg
asZ
asZ
-ceG
+asZ
+asZ
+asZ
+ceF
ceF
akN
aac
adr
adA
-ceG
+ceF
ceF
ceF
ceF
@@ -115616,7 +112725,7 @@ cdD
cdD
ago
aJT
-aOS
+aPk
aMU
aOI
btE
@@ -115624,8 +112733,8 @@ btE
btE
aOy
btE
-tEC
-tEC
+btE
+btE
bbr
aTe
aTe
@@ -115693,7 +112802,6 @@ aIL
aFI
aFW
aFI
-aFI
cko
cko
aaa
@@ -115752,6 +112860,7 @@ aaa
aaa
aaa
aaa
+aaa
"}
(107,1,1) = {"
aaa
@@ -115821,16 +112930,16 @@ aUz
aeu
aeu
aeu
-aAg
-asZ
-asZ
-asZ
-aAg
asZ
asZ
asZ
asZ
-aAg
+asZ
+asZ
+asZ
+asZ
+asZ
+asZ
ceF
axB
acn
@@ -115882,7 +112991,7 @@ aPQ
aTu
bpq
aXa
-tEC
+btE
btE
aTL
aOy
@@ -115919,7 +113028,7 @@ bCe
bVg
bCe
bHl
-bBf
+bYZ
cHj
bFa
bFS
@@ -115949,7 +113058,6 @@ aFO
cwc
aFO
cwA
-lSJ
aFI
aFI
aFI
@@ -116009,6 +113117,7 @@ aaa
aaa
aaa
aaa
+aaa
"}
(108,1,1) = {"
aaa
@@ -116079,14 +113188,14 @@ aeu
aeu
asZ
asZ
-aAg
-aAg
+asZ
+asZ
asZ
asZ
cef
asZ
asZ
-aAg
+asZ
asZ
ceF
acJ
@@ -116157,7 +113266,7 @@ asF
asF
arn
arn
-hAb
+arn
arn
aur
arn
@@ -116169,14 +113278,14 @@ bOP
bJy
aCq
cbA
-bBf
+bYZ
byv
-bBE
-bBf
-bBf
-bBf
-bBf
-bBf
+bcD
+bYZ
+bYZ
+bYZ
+bYZ
+bYZ
cHk
bFa
bFa
@@ -116209,7 +113318,7 @@ aFY
ktv
aNi
aGb
-aGc
+aaa
aaa
aaa
aaa
@@ -116387,14 +113496,14 @@ aEH
ceZ
aIs
aiA
-aOS
+aPk
cgq
aXu
aox
aMi
aMc
aTz
-apX
+aox
arA
akM
aox
@@ -116463,7 +113572,6 @@ aFU
cwd
jHJ
cwH
-cwH
aFI
aFI
aFI
@@ -116523,6 +113631,7 @@ aaa
aaa
aaa
aaa
+aaa
"}
(110,1,1) = {"
aaa
@@ -116591,7 +113700,7 @@ aeu
aeu
aeu
asZ
-aAg
+asZ
asZ
aam
aaF
@@ -116602,7 +113711,7 @@ ceD
cel
abR
atB
-adT
+chX
aHw
ace
acM
@@ -116721,7 +113830,6 @@ aJl
aFI
aFI
aFI
-aFI
cko
cko
aaa
@@ -116780,6 +113888,7 @@ aaa
aaa
aaa
aaa
+aaa
"}
(111,1,1) = {"
aaa
@@ -116847,7 +113956,7 @@ aaa
aeU
ciQ
aeu
-aAg
+asZ
asZ
aak
aan
@@ -116863,7 +113972,7 @@ adg
ace
acp
acW
-alV
+adg
adG
adR
adU
@@ -116902,7 +114011,7 @@ ago
aIz
ajW
ajJ
-aOS
+aPk
fXq
aIV
aox
@@ -116920,13 +114029,13 @@ cBV
aox
atT
atT
-dis
-dis
-dis
-dis
+atT
+atT
+atT
+atT
ajK
atT
-dis
+atT
atj
apN
awj
@@ -117190,7 +114299,7 @@ asA
apf
atr
auG
-arD
+ark
bsP
bQx
bOF
@@ -117362,7 +114471,7 @@ aeU
anH
aeu
asZ
-aAg
+asZ
aal
aaw
aaU
@@ -117417,7 +114526,7 @@ aIB
aba
cgw
aRk
-apY
+aNy
oPf
aLV
aHz
@@ -117426,8 +114535,8 @@ arl
arl
byV
bzc
-gMU
-gMU
+arl
+arl
bfJ
abk
aqb
@@ -117436,8 +114545,8 @@ atT
aqz
aoW
bqe
-aqQ
-aqQ
+bsE
+bsE
avQ
byn
bzI
@@ -117630,7 +114739,7 @@ cdH
ceB
abZ
atB
-adT
+chX
aZh
acz
ada
@@ -117663,15 +114772,15 @@ ciZ
ahh
ahh
ahh
-qtv
-qtv
-qtv
-qtv
-qtv
+ahh
+ahh
+ahh
+ahh
+ahh
+cfM
+cfM
cfM
cfM
-hvb
-hvb
cfM
aRl
bVL
@@ -117709,7 +114818,7 @@ atG
bQx
bOF
bYW
-nVt
+bCM
bDp
bQn
bSf
@@ -117877,7 +114986,7 @@ aeu
aeu
aeu
asZ
-aAg
+asZ
apn
ceE
cfJ
@@ -117887,10 +114996,10 @@ abC
abL
aca
asZ
-alV
+adg
azv
chB
-chV
+azv
adg
ciN
ciM
@@ -117917,7 +115026,7 @@ aoM
adH
adH
ahh
-qtv
+ahh
awo
cdn
cdJ
@@ -117933,7 +115042,7 @@ cfM
aRm
cci
aKP
-gMU
+arl
arl
arl
byN
@@ -117959,7 +115068,7 @@ atj
atj
bHI
atj
-nNA
+atj
atT
atT
atT
@@ -118133,15 +115242,15 @@ aeu
aeu
aeu
aeu
-aAg
asZ
asZ
asZ
-aAg
+asZ
+asZ
asZ
ceo
asZ
-aAg
+asZ
asZ
asZ
cfY
@@ -118192,10 +115301,10 @@ cdg
aQh
bwp
ciX
-gMU
+arl
byq
aXz
-aYZ
+aZc
bbU
bzm
bzc
@@ -118392,14 +115501,14 @@ aeu
aeu
aeu
asZ
-aAg
-aAg
asZ
asZ
-aAg
asZ
asZ
-aAg
+asZ
+asZ
+asZ
+asZ
asZ
cfY
acj
@@ -118408,7 +115517,7 @@ adm
adz
adN
ciB
-cga
+cfY
acm
aeo
aaa
@@ -118650,15 +115759,15 @@ aeu
aeu
aeu
asZ
-aAg
-aAg
asZ
asZ
-aAg
asZ
-aAg
asZ
-cga
+asZ
+asZ
+asZ
+asZ
+cfY
cfY
cde
chG
@@ -118687,7 +115796,7 @@ adH
adQ
abX
cBc
-qtv
+ahh
cew
awI
cdq
@@ -118916,11 +116025,11 @@ aeu
aeu
aeu
cfY
-cga
cfY
cfY
cfY
-cga
+cfY
+cfY
cfY
acm
acm
@@ -118937,21 +116046,21 @@ aeu
adQ
cCr
cED
-ieA
+anJ
ale
alT
cEW
aoZ
cFg
agC
-qtv
+ahh
atU
-jCp
+awJ
awJ
awJ
aAj
cff
-iiA
+awJ
cfE
cfR
cge
@@ -118963,7 +116072,7 @@ chm
aLg
arl
arl
-gMU
+arl
bAw
aXH
aZl
@@ -118977,8 +116086,8 @@ awg
blT
bnI
bpe
-bqm
-bsF
+bsE
+bsE
bur
atj
aHU
@@ -118986,9 +116095,9 @@ auc
atj
atj
aug
-nNA
-nNA
-nNA
+atj
+atj
+atj
atT
atT
bIz
@@ -119220,7 +116329,7 @@ atF
aLk
aLV
aLW
-gMU
+arl
arl
byM
aZn
@@ -119234,10 +116343,10 @@ aqh
aqk
att
aqG
-bqs
+bsE
arY
auM
-arX
+bsE
byt
afT
atj
@@ -119249,7 +116358,7 @@ arw
avF
aus
bIJ
-bOY
+aZg
bKZ
bmP
bNZ
@@ -119460,7 +116569,7 @@ cFh
cFj
ahh
ahh
-awM
+evx
cdC
ceJ
aAl
@@ -119493,7 +116602,7 @@ atD
aqG
bqt
cOW
-cOW
+cPb
cPb
byw
ard
@@ -119719,13 +116828,13 @@ cAF
ahh
ahh
ahh
-qtv
ahh
-qtv
-qtv
+ahh
+ahh
+ahh
ahh
cfM
-hvb
+cfM
cfM
cfM
cgz
@@ -119983,13 +117092,13 @@ cvM
awE
aEN
aGQ
-hzY
-jxc
+aUa
+ago
avw
aRB
aJi
aLE
-apX
+aox
aOk
aox
aox
@@ -120252,8 +117361,8 @@ akw
aox
aox
aox
-apX
-apX
+aox
+aox
aox
aox
aox
@@ -120277,7 +117386,7 @@ bqf
cjy
aus
bIJ
-bOY
+aZg
bLi
bmc
bmc
@@ -120497,7 +117606,7 @@ cvO
cvU
aEQ
aGS
-tGU
+cvW
aJY
awr
aRX
@@ -120530,8 +117639,8 @@ aui
aui
avb
aui
-xei
-xei
+aui
+aui
aui
bCH
bQd
@@ -120759,10 +117868,10 @@ aKi
cIw
cKd
aox
-aox
+aGh
aRc
-bzN
-akM
+aGh
+aGh
ajt
ajt
aZq
@@ -120770,7 +117879,7 @@ aZq
ajt
ajt
aQO
-apX
+aox
cCk
bka
blW
@@ -120795,11 +117904,11 @@ bOF
bJy
aCq
cbA
-bBf
-bBf
-bBf
+bYZ
+bYZ
+bYZ
bBE
-bBf
+bYZ
bEN
ane
aBS
@@ -120999,7 +118108,7 @@ cIX
khA
cDT
iSg
-cEl
+cEb
cJD
atV
cEg
@@ -121013,13 +118122,13 @@ aES
aHv
aUa
aKl
-aPz
+ajj
aNl
aGh
-aGh
+alV
aZf
-aGh
-aGh
+apY
+aqQ
ajt
aBc
bmH
@@ -121028,10 +118137,10 @@ bcZ
ajt
bgf
aox
-apX
aox
aox
-cdY
+aox
+cdZ
cdZ
ahy
asx
@@ -121273,9 +118382,9 @@ aHq
aNq
aZO
aGh
-aQm
+bqU
aRi
-aSn
+bqU
bqU
ajt
aXV
@@ -121291,7 +118400,7 @@ blZ
bpq
bpg
aYO
-iYW
+asx
bwb
arz
bDc
@@ -121313,7 +118422,7 @@ bQy
bBn
axF
bCr
-bBf
+bYZ
cpW
bYu
aCc
@@ -121541,7 +118650,7 @@ bqc
bdo
bqz
bgo
-apX
+aox
bqb
cba
aIN
@@ -121552,10 +118661,10 @@ asx
bwd
bzA
bLe
-auT
+aGc
auT
arF
-iYW
+asx
bAb
bQR
aYO
@@ -121812,7 +118921,7 @@ byE
bzP
arV
brU
-iYW
+asx
bAp
bQS
aox
@@ -121827,7 +118936,7 @@ bBR
bCl
bCA
bCr
-bBf
+bYZ
csC
bYw
aIb
@@ -122056,9 +119165,9 @@ bdy
ajt
ajt
blc
-hqv
-ezp
-ezp
+ajt
+aZd
+aZd
aZd
auj
aZd
@@ -122066,10 +119175,10 @@ asx
asx
asx
asx
-iYW
-iYW
asx
-iYW
+asx
+asx
+asx
bMu
bRr
aox
@@ -122310,7 +119419,7 @@ ajt
boI
ajt
bqy
-hqv
+ajt
bgr
bhd
biJ
@@ -122318,9 +119427,9 @@ bjn
bmE
bns
bpk
-bnD
-bnS
-boc
+brN
+brN
+brN
bwG
bso
bpi
@@ -122831,11 +119940,11 @@ boV
bjn
bmG
bnK
-bny
+brN
bqH
-bny
+brN
buB
-bny
+brN
bzt
bAs
bBQ
@@ -122855,7 +119964,7 @@ bQC
bCx
awq
bUY
-bBf
+bYZ
cud
cyb
btG
@@ -123088,11 +120197,11 @@ bqP
bmF
bcX
bnN
-bny
+brN
bqH
-bny
+brN
buB
-bny
+brN
bzC
boS
bCF
@@ -123105,7 +120214,7 @@ bZM
bhY
bIT
bQI
-bLr
+bMt
bMt
bMt
bMt
@@ -123345,9 +120454,9 @@ bpb
bjn
bme
bnK
-bny
+brN
bqH
-bny
+brN
buB
bwM
byG
@@ -123355,7 +120464,7 @@ bof
bFJ
bFX
bqQ
-ezp
+aZd
aZd
bBU
bXv
@@ -123602,7 +120711,7 @@ bhd
bol
bmg
bnO
-bny
+brN
bqI
bsR
buD
@@ -123611,8 +120720,8 @@ bAl
bAu
bFV
bGk
-ezp
-ezp
+aZd
+aZd
bGh
bZI
bhY
@@ -123850,7 +120959,7 @@ bsb
brq
brF
brG
-hqv
+ajt
boQ
boH
bqo
@@ -124107,7 +121216,7 @@ brr
aVd
brJ
brI
-hqv
+ajt
ajt
bmA
bph
@@ -124126,7 +121235,7 @@ bob
bRc
bZy
bZp
-bZA
+bZD
bZD
bZJ
bZN
@@ -124328,14 +121437,14 @@ bfq
iMq
bbx
alB
-afX
-agF
+arx
+arx
+alB
+alB
+alB
alB
alB
alB
-pQf
-pQf
-pQf
alB
alB
alB
@@ -124585,7 +121694,7 @@ aWJ
ayv
aWJ
alB
-cIe
+bdp
bhl
alB
bfq
@@ -124629,8 +121738,8 @@ bAX
bnz
bBZ
bqS
-bGW
-bGW
+bZD
+aAD
bqX
brz
buO
@@ -124672,7 +121781,7 @@ clM
axW
cnk
coo
-axU
+ayn
aLH
aLx
aLz
@@ -124837,7 +121946,7 @@ aeu
aeu
aeu
aeu
-pQf
+alB
bfs
aWJ
bft
@@ -125093,8 +122202,8 @@ alB
alB
alB
alB
-pQf
-pQf
+alB
+alB
bfM
bfM
bfM
@@ -125132,10 +122241,10 @@ bdf
bpC
bkG
bbH
-bnM
-bpC
-bpC
-bpW
+bBc
+bBc
+bBc
+bBc
bgP
bBc
bBp
@@ -125149,7 +122258,7 @@ bqY
bvB
buR
bPx
-erN
+bnv
bjX
bkz
bOv
@@ -125192,7 +122301,7 @@ aLF
aag
aag
aag
-aLF
+bsm
cuA
cuW
bYI
@@ -125356,7 +122465,7 @@ aeV
bfl
bfV
aWR
-aWP
+adT
adx
aWR
bgC
@@ -125382,17 +122491,17 @@ aXP
bai
aZS
aZr
-ajL
-ajL
+cAX
+cAX
cAX
aJJ
aRs
aSB
aTP
-aYd
-aYK
-aYK
-aYd
+arD
+arX
+arX
+auz
bdO
beO
bpF
@@ -125406,14 +122515,14 @@ blf
blf
blg
blf
-mPm
+blf
blQ
bAC
bBL
bkQ
bjW
bAv
-bOC
+bEg
bGM
bHP
bJc
@@ -125623,7 +122732,7 @@ cqw
bgM
bgn
bVA
-pQf
+alB
ctJ
cxP
aWY
@@ -125633,7 +122742,7 @@ ayx
bdc
bdR
aAZ
-eVT
+aZv
aEE
aFp
aHJ
@@ -125647,12 +122756,12 @@ aYK
aZL
bch
aYd
-aZg
-aZj
+aYK
+aYK
aYd
bhe
cLt
-xqL
+bhI
bhX
bhs
biM
@@ -125909,7 +123018,7 @@ aZQ
aYd
bdP
beP
-xqL
+bhI
bhy
ats
bko
@@ -125972,10 +123081,10 @@ ckk
aEg
cnu
cnu
-cnd
+bOc
cnd
cnu
-cnd
+bOc
cnu
alm
aaa
@@ -126406,9 +123515,9 @@ bgk
aBd
aZv
aXw
-aXE
+kRh
aXI
-aYR
+sfp
beD
bbj
aNF
@@ -126430,7 +123539,7 @@ aKA
bjh
bjy
bpw
-mPm
+blf
bsV
buS
bxl
@@ -126484,13 +123593,13 @@ cmH
cvE
cmR
cwe
-cnd
+krJ
cwN
cqQ
csq
cnu
cuL
-cnd
+cnu
acm
aaa
aaa
@@ -126655,7 +123764,7 @@ alB
cOb
cps
cMW
-iwR
+aZF
aZF
ami
aZF
@@ -126687,7 +123796,7 @@ bkr
bmx
bod
bpx
-mPm
+blf
blg
bBo
blg
@@ -126706,7 +123815,7 @@ bNM
bOo
cgd
bNM
-tYn
+bNM
aVM
bNx
bWx
@@ -126736,7 +123845,7 @@ cms
cmE
cmQ
cju
-bOC
+bEg
cnV
cmh
bOb
@@ -126955,7 +124064,7 @@ bIm
bHR
bNg
bAF
-bOC
+bEg
bQe
bLZ
bkE
@@ -127004,7 +124113,7 @@ cwZ
cxi
cnu
cnu
-cnd
+cnu
alm
aaa
aaa
@@ -127149,7 +124258,7 @@ alB
alB
alB
alB
-pQf
+alB
alB
bfQ
bfQ
@@ -127169,7 +124278,7 @@ alB
cby
cMP
ajO
-iwR
+aZF
aXf
aeG
aik
@@ -127184,8 +124293,8 @@ beE
mIG
aNM
bgW
-nNV
-nNV
+aDI
+aDI
biB
aYg
aDI
@@ -127255,11 +124364,11 @@ bEg
cvG
cvL
cwm
-cnd
+bOc
cpb
crf
-cnd
-cnd
+cnu
+cnu
cko
aeu
aeu
@@ -127450,7 +124559,7 @@ bbb
bdz
cby
clA
-wmX
+aCb
bjJ
blJ
biV
@@ -127470,7 +124579,7 @@ bCc
bOw
bAT
bOC
-erN
+bnv
bHT
bJh
bJK
@@ -127694,7 +124803,7 @@ aZY
aJF
aWX
aVJ
-nDw
+anx
bbM
aNT
aPo
@@ -127707,7 +124816,7 @@ bbb
bdE
cbz
cLt
-wmX
+aCb
bhO
aqH
biI
@@ -127720,7 +124829,7 @@ bkA
bke
blr
bkY
-blC
+blD
bls
bPj
bmo
@@ -127737,7 +124846,7 @@ bTk
bXL
bXx
bPe
-bUt
+bWx
hDh
uRM
uRM
@@ -127934,7 +125043,7 @@ alB
alB
alB
alB
-pQf
+alB
alB
alB
cng
@@ -127951,7 +125060,7 @@ aGa
aKu
aMe
bfB
-sPG
+amV
bfr
bex
aTU
@@ -127994,9 +125103,9 @@ bOG
bQU
bUs
bTv
-krJ
-krJ
-krJ
+bOc
+bOc
+bOc
bOc
bWn
bWx
@@ -128227,7 +125336,7 @@ big
big
bom
aCb
-jDv
+bhQ
bpB
bkl
bli
@@ -128247,7 +125356,7 @@ bQo
bJM
bPe
bMF
-bRs
+aZj
bQV
bPe
bTw
@@ -128273,9 +125382,9 @@ bUN
cke
aeu
bzG
-cjC
-clg
-clP
+clR
+clR
+clR
ctU
bzG
aeu
@@ -128530,7 +125639,7 @@ jAT
aeu
aeu
bzG
-cjF
+clR
clE
clQ
ctW
@@ -128787,8 +125896,8 @@ bUN
aeu
aeu
bzG
-cjG
-clF
+clR
+clR
clR
ctX
bzG
@@ -128997,7 +126106,7 @@ bhH
bhW
bmN
boK
-emD
+bhH
bhH
bjV
bkh
@@ -129020,7 +126129,7 @@ bLE
bMN
bON
bQY
-bSQ
+bOc
bPe
bOc
bWz
@@ -129538,7 +126647,7 @@ cmr
aWs
crl
bXC
-bXo
+bON
bYg
bZk
bTO
@@ -129739,7 +126848,7 @@ cME
cMr
cLs
bkd
-ava
+bkd
bkd
bkd
azD
@@ -130051,7 +127160,7 @@ bRV
bNz
bSn
crl
-bRt
+bON
bXw
bWM
bPe
@@ -130059,7 +127168,7 @@ bZC
bPe
bOc
bSr
-bSd
+krJ
cgg
hxn
hxn
@@ -130274,7 +127383,7 @@ aSM
aUn
baC
aYp
-bcD
+awi
bgi
bkd
bhH
@@ -130308,7 +127417,7 @@ bRZ
cmr
bRA
crl
-bXy
+bON
bXA
bXN
bTG
@@ -130565,7 +127674,7 @@ bSb
cmr
cGz
cro
-bRt
+bON
bXA
cFE
bTt
@@ -131043,7 +128152,7 @@ awi
awi
baC
baC
-bcD
+awi
aYs
cdc
cna
@@ -131554,7 +128663,7 @@ axO
cOm
cbj
aio
-auz
+cbm
aSZ
cOo
aVt
@@ -131603,13 +128712,13 @@ aeu
aeu
aUz
acm
-cmJ
-ivg
-ivg
-cmJ
-ivg
-ivg
-cmJ
+acm
+acK
+acK
+acm
+acK
+acK
+acm
acm
aeU
aeU
@@ -131804,14 +128913,14 @@ bkd
aze
aAG
cbj
-cLt
+cbk
aJn
cLg
aMq
ava
bkd
bkd
-ava
+bkd
avA
avA
bkd
@@ -132061,7 +129170,7 @@ bkd
ava
ava
bkd
-ava
+bkd
avA
crw
avA
@@ -132322,7 +129431,7 @@ bkd
cLK
cLK
afJ
-ava
+bkd
aeu
alm
acm
@@ -132575,7 +129684,7 @@ aeu
aeu
aeu
aeu
-ava
+bkd
agy
cLR
agy
@@ -132832,7 +129941,7 @@ aeu
aeu
aeu
aeu
-beK
+bhq
aaa
aaa
aaa
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 64d4bd344a..4a14660e57 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -46,13 +46,13 @@
/area/engine/engineering)
"aag" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 1
- },
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
/turf/open/floor/plating,
/area/engine/engineering)
"aah" = (
@@ -4719,9 +4719,13 @@
/area/security/warden)
"aml" = (
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "0-8"
},
-/turf/closed/wall/r_wall,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
/area/security/warden)
"amm" = (
/obj/structure/cable{
@@ -5124,14 +5128,25 @@
dir = 8;
pixel_x = 28
},
-/turf/open/floor/plasteel/showroomfloor,
-/area/security/warden)
-"ana" = (
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/closed/wall/r_wall,
+/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"ana" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"anb" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -5333,19 +5348,19 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
-/turf/open/floor/plasteel,
-/area/security/brig)
-"anB" = (
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"anB" = (
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
/turf/open/floor/plating,
/area/security/warden)
"anC" = (
@@ -5394,17 +5409,22 @@
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"anK" = (
/obj/structure/cable{
icon_state = "0-2"
},
-/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/plating,
/area/security/warden)
"anL" = (
@@ -5671,6 +5691,9 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aop" = (
@@ -5896,11 +5919,10 @@
/turf/open/floor/plasteel/dark,
/area/security/brig)
"aoQ" = (
-/obj/structure/cable,
-/obj/structure/cable{
- icon_state = "0-2"
- },
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/plating,
/area/security/warden)
"aoR" = (
@@ -5958,6 +5980,9 @@
/obj/item/crowbar,
/obj/item/wrench,
/obj/item/laser_pointer/red,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"aoY" = (
@@ -5965,14 +5990,17 @@
/obj/machinery/light_switch{
pixel_y = -22
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"aoZ" = (
-/obj/structure/cable{
- icon_state = "0-2"
- },
/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/plating,
/area/security/warden)
"apa" = (
@@ -6266,32 +6294,22 @@
/turf/open/floor/plasteel,
/area/security/brig)
"apI" = (
+/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
- icon_state = "1-4"
+ icon_state = "0-2"
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/closed/wall/r_wall,
+/obj/structure/cable,
+/turf/open/floor/plating,
/area/security/warden)
"apJ" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
- icon_state = "0-4"
- },
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/plating,
/area/security/warden)
"apK" = (
/obj/structure/table/reinforced,
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
- icon_state = "0-4"
- },
/obj/machinery/door/window/brigdoor{
dir = 1;
name = "Armory Desk";
@@ -6311,14 +6329,11 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"apL" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
- icon_state = "0-4"
- },
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/plating,
/area/security/warden)
"apM" = (
@@ -6326,26 +6341,44 @@
name = "Brig Control";
req_access_txt = "3"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"apN" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/closed/wall/r_wall,
-/area/security/warden)
-"apO" = (
/obj/structure/cable{
icon_state = "1-8"
},
-/turf/closed/wall/r_wall,
-/area/security/warden)
+/turf/open/floor/plasteel,
+/area/security/brig)
+"apO" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"apP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security{
@@ -6501,12 +6534,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqo" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -6519,6 +6552,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqp" = (
@@ -6546,12 +6585,21 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqr" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqs" = (
@@ -6562,6 +6610,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqt" = (
@@ -6574,6 +6628,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqu" = (
@@ -6582,6 +6642,9 @@
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"aqv" = (
@@ -7533,6 +7596,9 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"asx" = (
@@ -7552,6 +7618,12 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"asy" = (
@@ -7577,10 +7649,16 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"asA" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"asB" = (
@@ -7597,6 +7675,9 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"asC" = (
@@ -7994,31 +8075,34 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/structure/cable{
- icon_state = "0-4"
- },
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/plating,
/area/security/brig)
"aty" = (
-/obj/structure/cable{
- icon_state = "1-4"
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
},
/obj/structure/cable{
- icon_state = "1-8"
+ icon_state = "2-8"
},
-/turf/closed/wall,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
/area/security/brig)
"atz" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/cable{
- icon_state = "0-4"
- },
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/security/brig)
"atA" = (
@@ -8026,9 +8110,6 @@
id = "Cell 2";
name = "Cell 2"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -8036,19 +8117,19 @@
/turf/open/floor/plasteel,
/area/security/brig)
"atB" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/closed/wall,
+/turf/open/floor/plasteel,
/area/security/brig)
"atC" = (
/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 3";
name = "Cell 3"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -8056,14 +8137,12 @@
/turf/open/floor/plasteel,
/area/security/brig)
"atD" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/structure/cable{
- icon_state = "0-8"
- },
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/plating,
/area/security/brig)
"atE" = (
@@ -8073,9 +8152,6 @@
name = "Brig";
req_access_txt = "63"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/red{
@@ -8087,13 +8163,11 @@
/turf/open/floor/plasteel,
/area/security/brig)
"atF" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
/obj/structure/cable{
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/security/brig)
"atG" = (
@@ -8507,6 +8581,9 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"auA" = (
@@ -8964,6 +9041,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"avv" = (
@@ -8995,6 +9075,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"avy" = (
@@ -9026,6 +9109,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"avB" = (
@@ -9605,18 +9691,21 @@
/turf/open/floor/plating,
/area/security/brig)
"awK" = (
-/obj/structure/cable{
- icon_state = "0-4"
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
},
/obj/structure/cable{
- icon_state = "0-8"
+ icon_state = "2-4"
},
-/obj/machinery/door/poddoor/preopen{
- id = "Secure Gate";
- name = "brig shutters"
+/obj/structure/cable{
+ icon_state = "4-8"
},
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel,
/area/security/brig)
"awL" = (
/obj/machinery/door/firedoor,
@@ -9628,9 +9717,6 @@
name = "Brig";
req_access_txt = "63"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -9641,9 +9727,6 @@
/turf/open/floor/plasteel,
/area/security/brig)
"awM" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
/obj/structure/cable,
/obj/machinery/door/poddoor/preopen{
id = "Secure Gate";
@@ -55550,6 +55633,23 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"jen" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"jeq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -55703,6 +55803,20 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
+"jxK" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"jzz" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/warning/vacuum/external,
@@ -57681,6 +57795,7 @@
/area/maintenance/department/science)
"odM" = (
/obj/effect/landmark/barthpot,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/library/lounge)
"oep" = (
@@ -59082,6 +59197,22 @@
},
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
+"rdB" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"reH" = (
/obj/item/reagent_containers/food/drinks/bottle/vodka,
/obj/structure/disposalpipe/segment{
@@ -59148,6 +59279,18 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
+"rjF" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "Secure Gate";
+ name = "brig shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/security/brig)
"rmC" = (
/turf/open/space/basic,
/area/space/station_ruins)
@@ -60137,6 +60280,19 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"tTZ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"tXn" = (
/obj/structure/sink{
dir = 4;
@@ -83186,7 +83342,7 @@ amf
amR
anA
aoo
-aoo
+ana
aoo
aqn
arl
@@ -83194,7 +83350,7 @@ asw
atx
auz
avu
-awJ
+rjF
axG
ayH
aAe
@@ -83442,16 +83598,16 @@ alx
amg
amg
anB
-ana
+amg
aoQ
-apI
+amg
aqo
alv
asx
-aty
ajM
ajM
-atB
+ajM
+akA
axH
ayI
aAf
@@ -83702,13 +83858,13 @@ anC
aop
aoR
apJ
-aqp
+apN
aon
-asy
+aty
atz
aux
avv
-awK
+awI
axG
ayL
aAi
@@ -83961,7 +84117,7 @@ aoS
apJ
aqq
aon
-asv
+atB
atA
auA
avw
@@ -84218,11 +84374,11 @@ aoT
apK
aqr
arl
-asw
-atx
+awK
+atD
auz
avx
-awJ
+rjF
axG
ayJ
aAg
@@ -84476,10 +84632,10 @@ apL
aqs
aon
asz
-atB
ajM
ajM
-atB
+ajM
+akA
axI
ayL
aAh
@@ -84732,11 +84888,11 @@ aoV
apJ
aqt
arm
-asy
+rdB
atz
aux
avy
-awK
+awI
axG
ayL
aAi
@@ -85243,14 +85399,14 @@ amY
anI
aor
aoX
-apJ
-aqt
+apI
+apO
aro
-asw
+jen
atD
auz
avA
-awJ
+rjF
axG
ayL
aAi
@@ -85495,19 +85651,19 @@ ajj
ajT
akP
alA
-amj
+aml
amZ
anJ
amX
aoY
-apN
+amg
sBA
arp
asB
-atB
ajM
ajM
-atB
+ajM
+akA
axJ
ayL
aAi
@@ -85752,15 +85908,15 @@ ahL
ahL
ahL
ahL
-aml
-ana
+amg
+amg
anK
aos
aoZ
-apO
+amg
aqv
aro
-asw
+jxK
atE
auB
avB
@@ -86017,7 +86173,7 @@ apa
agP
aqw
arp
-asC
+tTZ
atF
alv
alv
@@ -86535,7 +86691,7 @@ asE
ajM
auD
avC
-ajM
+akA
axJ
axG
aAm
@@ -87563,7 +87719,7 @@ asG
ajM
auH
avG
-auH
+awR
axM
ayR
aAo
diff --git a/_maps/shuttles/cargo_kilo.dmm b/_maps/shuttles/cargo_kilo.dmm
index 6d9d543842..86660a4dc7 100644
--- a/_maps/shuttles/cargo_kilo.dmm
+++ b/_maps/shuttles/cargo_kilo.dmm
@@ -3,50 +3,30 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"b" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"c" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"d" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"e" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"f" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -55,18 +35,7 @@
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
-"g" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/turf/open/floor/mineral/titanium/yellow,
-/area/shuttle/supply)
"h" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -91,20 +60,10 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"k" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
+/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"l" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -126,10 +85,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"n" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/corner{
dir = 1
@@ -140,20 +95,12 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"o" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"p" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -176,10 +123,6 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"q" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -196,19 +139,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
-"s" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/open/floor/mineral/titanium/yellow,
-/area/shuttle/supply)
"t" = (
/obj/machinery/door/poddoor{
id = "QMLoaddoor2";
@@ -228,28 +158,15 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"v" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/end{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"w" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"x" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 6
},
@@ -260,10 +177,6 @@
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/supply)
"z" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
@@ -290,6 +203,27 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating/airless,
/area/shuttle/supply)
+"K" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/mineral/titanium/yellow,
+/area/shuttle/supply)
+"Q" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/open/floor/mineral/titanium/yellow,
+/area/shuttle/supply)
+"Z" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/mineral/titanium/yellow,
+/area/shuttle/supply)
(1,1,1) = {"
a
@@ -323,12 +257,12 @@ C
a
c
o
-g
-k
-g
+K
+Z
+w
o
-g
-s
+K
+Q
e
A
D
@@ -336,13 +270,13 @@ D
(4,1,1) = {"
a
c
-g
-g
-g
-g
-g
-g
-g
+w
+w
+w
+w
+w
+w
+w
z
A
D
@@ -350,13 +284,13 @@ D
(5,1,1) = {"
a
c
-g
-g
-g
-g
-g
-g
w
+w
+w
+w
+w
+w
+k
x
A
D
diff --git a/_maps/shuttles/emergency_kilo.dmm b/_maps/shuttles/emergency_kilo.dmm
index 3c2da5ae85..c7aa1f28ce 100644
--- a/_maps/shuttles/emergency_kilo.dmm
+++ b/_maps/shuttles/emergency_kilo.dmm
@@ -144,7 +144,6 @@
pixel_y = 4
},
/obj/item/folder/blue,
-/obj/item/gun/energy/e_gun/mini,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"av" = (
@@ -172,10 +171,6 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"ax" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/structure/sign/warning/vacuum/external{
pixel_y = 32
},
@@ -288,10 +283,6 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"aM" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
@@ -301,10 +292,6 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"aN" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -725,10 +712,6 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"bB" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -791,14 +774,6 @@
/obj/machinery/recharge_station,
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
-"bG" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/mineral/titanium/yellow,
-/area/shuttle/escape)
"bH" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/bot,
@@ -1057,20 +1032,12 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"cj" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"ck" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"cm" = (
@@ -1079,27 +1046,15 @@
/area/shuttle/escape)
"cr" = (
/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"cs" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"cA" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 10
},
@@ -1159,10 +1114,6 @@
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"Xo" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -1543,7 +1494,7 @@ bn
bi
ac
cj
-bG
+cr
bR
cK
cT
diff --git a/_maps/shuttles/ferry_kilo.dmm b/_maps/shuttles/ferry_kilo.dmm
index 744d09d373..a905f8a0de 100644
--- a/_maps/shuttles/ferry_kilo.dmm
+++ b/_maps/shuttles/ferry_kilo.dmm
@@ -70,10 +70,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/transport)
"m" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -115,10 +111,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/transport)
"r" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -126,10 +118,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/transport)
"s" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/corner,
/obj/effect/turf_decal/stripes/corner{
dir = 1
diff --git a/_maps/shuttles/labour_kilo.dmm b/_maps/shuttles/labour_kilo.dmm
index 9ee9a38f07..6b70922475 100644
--- a/_maps/shuttles/labour_kilo.dmm
+++ b/_maps/shuttles/labour_kilo.dmm
@@ -29,10 +29,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/labor)
"f" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -47,10 +43,6 @@
req_access_txt = "1"
},
/obj/machinery/light,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -63,10 +55,6 @@
pixel_x = 30;
pixel_y = 30
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -111,10 +99,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/labor)
"l" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -127,10 +111,6 @@
/obj/machinery/light{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -141,17 +121,12 @@
machinedir = 1;
pixel_x = 30
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
"o" = (
-/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -164,10 +139,6 @@
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
"p" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
@@ -177,9 +148,6 @@
pixel_x = 25
},
/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/chair/comfy/shuttle{
dir = 8
},
@@ -189,31 +157,12 @@
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
"r" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/structure/closet/crate,
/obj/effect/turf_decal/delivery,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/labor)
-"s" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/mineral/titanium/yellow,
-/area/shuttle/labor)
"t" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/labor)
@@ -284,7 +233,7 @@ g
a
m
p
-s
+t
w
y
"}
diff --git a/_maps/shuttles/mining_kilo.dmm b/_maps/shuttles/mining_kilo.dmm
index 1de45c713c..5609ecfc06 100644
--- a/_maps/shuttles/mining_kilo.dmm
+++ b/_maps/shuttles/mining_kilo.dmm
@@ -15,7 +15,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"d" = (
-/obj/effect/turf_decal/bot,
/obj/machinery/computer/shuttle/mining,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
@@ -31,10 +30,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"f" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -48,10 +43,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"h" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -61,20 +52,12 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"i" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"j" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/machinery/status_display/evac{
pixel_x = -32
},
@@ -114,10 +97,6 @@
/turf/open/floor/plating,
/area/shuttle/mining)
"m" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -134,10 +113,6 @@
/turf/open/floor/plating/airless,
/area/shuttle/mining)
"p" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index e3fbe30b1d..7de162207d 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -111,9 +111,6 @@
#define GRAB_NECK 2
#define GRAB_KILL 3
-//slowdown when in softcrit
-#define SOFTCRIT_ADD_SLOWDOWN 6
-
/// Attack types for check_block()/run_block(). Flags, combinable.
/// Attack was melee, whether or not armed.
#define ATTACK_TYPE_MELEE (1<<0)
diff --git a/code/__DEFINES/dcs/flags.dm b/code/__DEFINES/dcs/flags.dm
index 3210341cc3..59c0c58b8d 100644
--- a/code/__DEFINES/dcs/flags.dm
+++ b/code/__DEFINES/dcs/flags.dm
@@ -40,6 +40,7 @@
#define CALTROP_BYPASS_SHOES 1
#define CALTROP_IGNORE_WALKERS 2
+// Spellcasting
#define SPELL_SKIP_ALL_REQS (1<<0)
#define SPELL_SKIP_CENTCOM (1<<1)
#define SPELL_SKIP_STAT (1<<2)
@@ -53,3 +54,24 @@
#define SPELL_CULT_ARMOR (1<<10)
#define SPELL_WIZARD_GARB (SPELL_WIZARD_HAT|SPELL_WIZARD_ROBE)
#define SPELL_CULT_GARB (SPELL_CULT_HELMET|SPELL_CULT_ARMOR)
+
+//// Identification ////
+// /datum/component/identification/identification_flags
+/// Delete on successful broad identification (so the main way we "uncover" how an object works, since this won't be on it to obfuscate it)
+#define ID_COMPONENT_DEL_ON_IDENTIFY (1<<0)
+/// We've already been successfully deepscanned by a deconstructive analyzer
+#define ID_COMPONENT_DECONSTRUCTOR_DEEPSCANNED (1<<1)
+
+// /datum/component/identification/identification_effect_flags
+/// Block user from getting actions if they don't know how to use this. Triggered on equip.
+#define ID_COMPONENT_EFFECT_NO_ACTIONS (1<<0)
+
+// /datum/component/identification/identification_method_flags
+/// Can be identified in a deconstructive analyzer
+#define ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR (1<<0)
+
+// Return values for /datum/component/deitnfication/check_knowledge()
+/// Has no knowledge, default
+#define ID_COMPONENT_KNOWLEDGE_NONE 0
+/// Has full knowledge
+#define ID_COMPONENT_KNOWLEDGE_FULL 1
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 4222322f31..a3b7596494 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -30,7 +30,7 @@
#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params)
#define COMPONENT_NO_AFTERATTACK 1 //Return this in response if you don't want afterattack to be called
#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human)
-#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob)
+#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)
//Positions for overrides list
#define EXAMINE_POSITION_ARTICLE 1
@@ -241,6 +241,8 @@
#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params)
#define COMSIG_ITEM_ALT_AFTERATTACK "item_alt_afterattack" //from base of obj/item/altafterattack(): (atom/target, mob/user, proximity, params)
#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot)
+ // Do not grant actions on equip.
+ #define COMPONENT_NO_GRANT_ACTIONS 1
#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user)
// relocated, tell inventory procs if those called this that the item isn't available anymore.
#define COMPONENT_DROPPED_RELOCATION 1
@@ -253,6 +255,9 @@
// THE FOLLOWING TWO BLOCKS SHOULD RETURN BLOCK FLAGS AS DEFINED IN __DEFINES/combat.dm!
#define COMSIG_ITEM_CHECK_BLOCK "check_block" //from base of obj/item/check_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
#define COMSIG_ITEM_RUN_BLOCK "run_block" //from base of obj/item/run_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+#define COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN "deconstructor_deepscan" //Called by deconstructive analyzers deepscanning an item: (obj/machinery/rnd/destructive_analyzer/analyzer_machine, mob/user, list/information_list)
+ // Uncovered information
+ #define COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION 1
// /obj/item/clothing signals
#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
diff --git a/code/__DEFINES/layers_planes.dm b/code/__DEFINES/layers_planes.dm
index d0f9f8bc28..aabe4f117f 100644
--- a/code/__DEFINES/layers_planes.dm
+++ b/code/__DEFINES/layers_planes.dm
@@ -61,7 +61,9 @@
#define BELOW_MOB_LAYER 3.7
#define LYING_MOB_LAYER 3.8
+#define MOB_LOWER_LAYER 3.95
//#define MOB_LAYER 4 //For easy recordkeeping; this is a byond define
+#define MOB_UPPER_LAYER 4.05
#define ABOVE_MOB_LAYER 4.1
#define WALL_OBJ_LAYER 4.25
#define EDGED_TURF_LAYER 4.3
diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm
index 73e900226e..844fe2cb90 100644
--- a/code/__DEFINES/maps.dm
+++ b/code/__DEFINES/maps.dm
@@ -35,6 +35,7 @@ require only minor tweaks.
#define ZTRAIT_REEBE "Reebe"
#define ZTRAIT_RESERVED "Transit/Reserved"
#define ZTRAIT_AWAY "Away Mission"
+#define ZTRAIT_VR "Virtual Reality"
#define ZTRAIT_SPACE_RUINS "Space Ruins"
#define ZTRAIT_LAVA_RUINS "Lava Ruins"
#define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement.
@@ -101,4 +102,8 @@ require only minor tweaks.
#define PLACE_BELOW "below" //On z levl below - centered on same tile
#define PLACE_ISOLATED "isolated" //On isolated ruin z level
//Map type stuff.
-#define MAP_TYPE_STATION "station"
\ No newline at end of file
+#define MAP_TYPE_STATION "station"
+
+//Random z-levels name defines.
+#define AWAY_MISSION_NAME "Away Mission"
+#define VIRT_REALITY_NAME "Virtual Reality"
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 3fb149d071..37633ae52f 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -71,14 +71,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define ABOVE_SHOES_LAYER (SHOES_LAYER-1)
#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1)
-
-//Security levels
-#define SEC_LEVEL_GREEN 0
-#define SEC_LEVEL_BLUE 1
-#define SEC_LEVEL_AMBER 2
-#define SEC_LEVEL_RED 3
-#define SEC_LEVEL_DELTA 4
-
//some arbitrary defines to be used by self-pruning global lists. (see master_controller)
#define PROCESS_KILL 26 //Used to trigger removal from a processing list
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index e5f817614b..c89bd4843e 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -291,3 +291,7 @@
#define PULL_PRONE_SLOWDOWN 0.6
#define FIREMAN_CARRY_SLOWDOWN 0
#define PIGGYBACK_CARRY_SLOWDOWN 1
+//slowdown when in softcrit. Note that crawling slowdown will also apply at the same time!
+#define SOFTCRIT_ADD_SLOWDOWN 2
+//slowdown when crawling
+#define CRAWLING_ADD_SLOWDOWN 4
diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm
index 4d40474a3c..1f3ae63940 100644
--- a/code/__DEFINES/movespeed_modification.dm
+++ b/code/__DEFINES/movespeed_modification.dm
@@ -1,12 +1,3 @@
-#define MOVESPEED_DATA_INDEX_PRIORITY 1
-#define MOVESPEED_DATA_INDEX_FLAGS 2
-#define MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN 3
-#define MOVESPEED_DATA_INDEX_MOVETYPE 4
-#define MOVESPEED_DATA_INDEX_BL_MOVETYPE 5
-#define MOVESPEED_DATA_INDEX_CONFLICT 6
-
-#define MOVESPEED_DATA_INDEX_MAX 6
-
//flags
#define IGNORE_NOSLOW (1 << 0)
@@ -15,70 +6,7 @@
#define MOVE_CONFLICT_JETPACK "JETPACK"
//ids
+#define MOVESPEED_ID_SANITY "mood_sanity"
-#define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN"
-#define MOVESPEED_ID_MOB_GRAB_STATE "MOB_GRAB_STATE"
-#define MOVESPEED_ID_MOB_EQUIPMENT "MOB_EQUIPMENT"
-#define MOVESPEED_ID_MOB_GRAVITY "MOB_GRAVITY"
-#define MOVESPEED_ID_CONFIG_SPEEDMOD "MOB_CONFIG_MODIFIER"
-
-#define MOVESPEED_ID_SLIME_REAGENTMOD "SLIME_REAGENT_MODIFIER"
-#define MOVESPEED_ID_SLIME_HEALTHMOD "SLIME_HEALTH_MODIFIER"
-#define MOVESPEED_ID_SLIME_TEMPMOD "SLIME_TEMPERATURE_MODIFIER"
-
-#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS"
-
-#define MOVESPEED_ID_TARANTULA_WEB "TARANTULA_WEB"
-
-#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD"
-#define MOVESPEED_ID_LIVING_LIMBLESS "LIVING_LIMBLESS"
-
-#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT"
-#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED"
-
-#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT"
-
-#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB"
-
-#define MOVESPEED_ID_TARFOOT "TARFOOT"
-
-#define MOVESPEED_ID_SEPIA "SEPIA"
-
-#define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD"
-#define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD"
-#define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD"
-
-#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES"
-
-#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER"
-#define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER"
-
-#define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER"
-
-#define MOVESPEED_ID_SANITY "MOOD_SANITY"
-
-#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD"
-
-#define MOVESPEED_ID_SMALL_STRIDE "SMALL_STRIDE"
-#define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG"
-#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY"
-#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER"
-
-#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER"
-
-#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER"
-#define MOVESPEED_ID_JETPACK "JETPACK"
-
-#define MOVESPEED_ID_MKULTRA "MKULTRA"
-
-#define MOVESPEED_ID_TASED_STATUS "TASED"
-#define MOVESPEED_ID_ELECTROSTAFF "ELECTROSTAFF"
-
-#define MOVESPEED_ID_SHOVE "SHOVE"
-#define MOVESPEED_ID_FAT "FAT"
-#define MOVESPEED_ID_COLD "COLD"
-#define MOVESPEED_ID_HUNGRY "HUNGRY"
-#define MOVESPEED_ID_DAMAGE_SLOWDOWN "DAMAGE"
-#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
-
-#define MOVESPEED_ID_CIRRHOSIS "CIRRHOSIS"
\ No newline at end of file
+#define MOVESPEED_ID_MOB_GRAB_STATE "mob_grab_state"
+#define MOVESPEED_ID_MOB_WALK_RUN "mob_walk_run"
diff --git a/code/__DEFINES/nanites.dm b/code/__DEFINES/nanites.dm
index ed15e972ab..05c3501609 100644
--- a/code/__DEFINES/nanites.dm
+++ b/code/__DEFINES/nanites.dm
@@ -12,6 +12,10 @@
#define NANITE_CLOUD_DISABLE 2
#define NANITE_CLOUD_ENABLE 3
+///Nanite Protocol types
+#define NANITE_PROTOCOL_REPLICATION "nanite_replication"
+#define NANITE_PROTOCOL_STORAGE "nanite_storage"
+
///Nanite extra settings types: used to help uis know what type an extra setting is
#define NESTYPE_TEXT "text"
#define NESTYPE_NUMBER "number"
diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm
index 97ae7b8e95..f4beef7ee8 100644
--- a/code/__DEFINES/reagents.dm
+++ b/code/__DEFINES/reagents.dm
@@ -22,11 +22,23 @@
// Is an open container for all intents and purposes.
#define OPENCONTAINER (REFILLABLE | DRAINABLE | TRANSPARENT)
-//reagents_value defines, for cargo stuff.
+//reagents_value defines, basically a multiplier used in reagent containers cargo selling.
#define DEFAULT_REAGENTS_VALUE 1
#define NO_REAGENTS_VALUE 0
#define HARVEST_REAGENTS_VALUE 0.3
+/// Standard reagents value defines.
+/// Take a grain of salt, only "rare" reagents should have a decent value here, for balance reasons.
+/// TL;DR Think of it also like general market request price more than rarity.
+#define REAGENT_VALUE_NONE 0 //all the stuff pretty much available in potentially unlimited quantities.
+#define REAGENT_VALUE_VERY_COMMON 0.1 //same as above, just not so unlimited.
+#define REAGENT_VALUE_COMMON 0.5
+#define REAGENT_VALUE_UNCOMMON 1
+#define REAGENT_VALUE_RARE 2.5
+#define REAGENT_VALUE_VERY_RARE 5
+#define REAGENT_VALUE_EXCEPTIONAL 10 //extremely rare or tedious to craft, possibly unsynthetizable, reagents.
+#define REAGENT_VALUE_AMAZING 30 //reserved ONLY for non-mass produceable, unsynthetizable reagents.
+#define REAGENT_VALUE_GLORIOUS 300 //reagents that shouldn't be possible to get or farm under normal conditions. e.g. Romerol, fungal TB, adminordrazine...
#define TOUCH 1 // splashing
#define INGEST 2 // ingestion
diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm
index 9feb5f40c5..60effc7265 100644
--- a/code/__DEFINES/research.dm
+++ b/code/__DEFINES/research.dm
@@ -60,7 +60,8 @@
#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN"
-#define RESEARCH_MATERIAL_RECLAMATION_ID "__materials"
+#define RESEARCH_MATERIAL_RECLAMATION_ID "__materials"
+#define RESEARCH_DEEP_SCAN_ID "__deepscan"
//When adding new types, update the list below!
#define TECHWEB_POINT_TYPE_GENERIC "General Research"
diff --git a/code/__DEFINES/security_levels.dm b/code/__DEFINES/security_levels.dm
new file mode 100644
index 0000000000..19c66d9125
--- /dev/null
+++ b/code/__DEFINES/security_levels.dm
@@ -0,0 +1,10 @@
+//Security levels
+#define SEC_LEVEL_GREEN 1
+#define SEC_LEVEL_BLUE 2
+#define SEC_LEVEL_AMBER 3
+#define SEC_LEVEL_RED 4
+#define SEC_LEVEL_DELTA 5
+
+//Macro helpers.
+#define SECLEVEL2NUM(text) (GLOB.all_security_levels.Find(text))
+#define NUM2SECLEVEL(num) (ISINRANGE(num, 1, length(GLOB.all_security_levels)) ? GLOB.all_security_levels[num] : null)
diff --git a/code/__DEFINES/skills/skills.dm b/code/__DEFINES/skills/skills.dm
new file mode 100644
index 0000000000..b97b921550
--- /dev/null
+++ b/code/__DEFINES/skills/skills.dm
@@ -0,0 +1,28 @@
+/// true/false
+#define SKILL_PROGRESSION_BINARY 1
+/// numerical
+#define SKILL_PROGRESSION_NUMERICAL 2
+/// Enum
+#define SKILL_PROGRESSION_ENUM 3
+
+/// Max value of skill for numerical skills
+#define SKILL_NUMERICAL_MAX 100
+/// Min value of skill for numerical skills
+#define SKILL_NUMERICAL_MIN 0
+
+// Standard values for job starting skills
+
+#define STARTING_SKILL_SURGERY_MEDICAL 35 //out of SKILL_NUMERICAL_MAX
+
+// Standard values for job starting skill affinities
+
+#define STARTING_SKILL_AFFINITY_SURGERY_MEDICAL 1.2
+
+// Standard values for skill gain (this is multiplied by affinity)
+
+#define SKILL_GAIN_SURGERY_PER_STEP 0.25
+
+// Misc
+
+/// 40% speedup at 100 skill
+#define SURGERY_SKILL_SPEEDUP_NUMERICAL_SCALE(number) clamp(number / 250, 1, 2)
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index e1fc8fa001..4d18e60b71 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -152,6 +152,42 @@
#define TRAIT_PASSTABLE "passtable"
#define TRAIT_GIANT "giant"
#define TRAIT_DWARF "dwarf"
+#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
+#define TRAIT_AGEUSIA "ageusia"
+#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
+#define TRAIT_NIGHT_VISION "night_vision"
+#define TRAIT_LIGHT_STEP "light_step"
+#define TRAIT_SILENT_STEP "silent_step"
+#define TRAIT_SPEEDY_STEP "speedy_step"
+#define TRAIT_SPIRITUAL "spiritual"
+#define TRAIT_VORACIOUS "voracious"
+#define TRAIT_SELF_AWARE "self_aware"
+#define TRAIT_FREERUNNING "freerunning"
+#define TRAIT_SKITTISH "skittish"
+#define TRAIT_POOR_AIM "poor_aim"
+#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
+#define TRAIT_DRUNK_HEALING "drunk_healing"
+#define TRAIT_TAGGER "tagger"
+#define TRAIT_PHOTOGRAPHER "photographer"
+#define TRAIT_MUSICIAN "musician"
+#define TRAIT_PERMABONER "permanent_arousal"
+#define TRAIT_NEVERBONER "never_aroused"
+#define TRAIT_MASO "masochism"
+#define TRAIT_HIGH_BLOOD "high_blood"
+#define TRAIT_PARA "paraplegic"
+#define TRAIT_EMPATH "empath"
+#define TRAIT_FRIENDLY "friendly"
+#define TRAIT_CULT_EYES "cult_eyes"
+#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
+#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman.
+#define TRAIT_FREESPRINT "free_sprinting"
+#define TRAIT_XRAY_VISION "xray_vision"
+#define TRAIT_THERMAL_VISION "thermal_vision"
+#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
+#define TRAIT_NO_INTERNALS "no-internals"
+#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
+#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
+#define TRAIT_FAST_PUMP "fast_pump"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
@@ -185,43 +221,6 @@
// item traits
#define TRAIT_NODROP "nodrop"
-#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
-#define TRAIT_AGEUSIA "ageusia"
-#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
-#define TRAIT_NIGHT_VISION "night_vision"
-#define TRAIT_LIGHT_STEP "light_step"
-#define TRAIT_SILENT_STEP "silent_step"
-#define TRAIT_SPEEDY_STEP "speedy_step"
-#define TRAIT_SPIRITUAL "spiritual"
-#define TRAIT_VORACIOUS "voracious"
-#define TRAIT_SELF_AWARE "self_aware"
-#define TRAIT_FREERUNNING "freerunning"
-#define TRAIT_SKITTISH "skittish"
-#define TRAIT_POOR_AIM "poor_aim"
-#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
-#define TRAIT_DRUNK_HEALING "drunk_healing"
-#define TRAIT_TAGGER "tagger"
-#define TRAIT_PHOTOGRAPHER "photographer"
-#define TRAIT_MUSICIAN "musician"
-#define TRAIT_PERMABONER "permanent_arousal"
-#define TRAIT_NEVERBONER "never_aroused"
-#define TRAIT_NYMPHO "nymphomania"
-#define TRAIT_MASO "masochism"
-#define TRAIT_HIGH_BLOOD "high_blood"
-#define TRAIT_PARA "paraplegic"
-#define TRAIT_EMPATH "empath"
-#define TRAIT_FRIENDLY "friendly"
-#define TRAIT_CULT_EYES "cult_eyes"
-#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
-#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman.
-#define TRAIT_FREESPRINT "free_sprinting"
-#define TRAIT_XRAY_VISION "xray_vision"
-#define TRAIT_THERMAL_VISION "thermal_vision"
-#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
-#define TRAIT_NO_INTERNALS "no-internals"
-#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
-#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
-
// common trait sources
#define TRAIT_GENERIC "generic"
#define EYE_DAMAGE "eye_damage"
@@ -246,6 +245,7 @@
#define BLOODSUCKER_TRAIT "bloodsucker"
#define SHOES_TRAIT "shoes" //inherited from your sweet kicks
#define GLOVE_TRAIT "glove" //inherited by your cool gloves
+#define BOOK_TRAIT "granter (book)" // knowledge is power
// unique trait sources, still defines
#define STATUE_MUTE "statue"
diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm
index ec7a11085c..a364e0b93c 100644
--- a/code/__DEFINES/vv.dm
+++ b/code/__DEFINES/vv.dm
@@ -73,6 +73,7 @@
#define VV_HK_EXPOSE "expose"
#define VV_HK_CALLPROC "proc_call"
#define VV_HK_MARK "mark"
+#define VV_HK_ADDCOMPONENT "addcomponent"
#define VV_HK_MODIFY_TRAITS "modtraits"
// /atom
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index a34b3ce67c..ad977ec493 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -11,6 +11,7 @@
#define LAZYINITLIST(L) if (!L) L = list()
#define UNSETEMPTY(L) if (L && !length(L)) L = null
+#define LAZYCOPY(L) (L ? L.Copy() : list() )
#define LAZYREMOVE(L, I) if(L) { L -= I; if(!length(L)) { L = null; } }
#define LAZYADD(L, I) if(!L) { L = list(); } L += I;
#define LAZYOR(L, I) if(!L) { L = list(); } L |= I;
@@ -21,34 +22,47 @@
#define LAZYCLEARLIST(L) if(L) L.Cut()
#define SANITIZE_LIST(L) ( islist(L) ? L : list() )
#define reverseList(L) reverseRange(L.Copy())
+#define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += list(V);
+#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; }
-// binary search sorted insert
-// IN: Object to be inserted
-// LIST: List to insert object into
-// TYPECONT: The typepath of the contents of the list
-// COMPARE: The variable on the objects to compare
-#define BINARY_INSERT(IN, LIST, TYPECONT, COMPARE) \
- var/__BIN_CTTL = length(LIST);\
- if(!__BIN_CTTL) {\
- LIST += IN;\
- } else {\
- var/__BIN_LEFT = 1;\
- var/__BIN_RIGHT = __BIN_CTTL;\
- var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
- var/##TYPECONT/__BIN_ITEM;\
- while(__BIN_LEFT < __BIN_RIGHT) {\
- __BIN_ITEM = LIST[__BIN_MID];\
- if(__BIN_ITEM.##COMPARE <= IN.##COMPARE) {\
- __BIN_LEFT = __BIN_MID + 1;\
- } else {\
- __BIN_RIGHT = __BIN_MID;\
+/// Passed into BINARY_INSERT to compare keys
+#define COMPARE_KEY __BIN_LIST[__BIN_MID]
+/// Passed into BINARY_INSERT to compare values
+#define COMPARE_VALUE __BIN_LIST[__BIN_LIST[__BIN_MID]]
+
+/****
+ * Binary search sorted insert
+ * INPUT: Object to be inserted
+ * LIST: List to insert object into
+ * TYPECONT: The typepath of the contents of the list
+ * COMPARE: The object to compare against, usualy the same as INPUT
+ * COMPARISON: The variable on the objects to compare
+ */
+#define BINARY_INSERT(INPUT, LIST, TYPECONT, COMPARE, COMPARISON, COMPTYPE) \
+ do {\
+ var/list/__BIN_LIST = LIST;\
+ var/__BIN_CTTL = length(__BIN_LIST);\
+ if(!__BIN_CTTL) {\
+ __BIN_LIST += INPUT;\
+ } else {\
+ var/__BIN_LEFT = 1;\
+ var/__BIN_RIGHT = __BIN_CTTL;\
+ var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
+ var/##TYPECONT/__BIN_ITEM;\
+ while(__BIN_LEFT < __BIN_RIGHT) {\
+ __BIN_ITEM = COMPTYPE;\
+ if(__BIN_ITEM.##COMPARISON <= COMPARE.##COMPARISON) {\
+ __BIN_LEFT = __BIN_MID + 1;\
+ } else {\
+ __BIN_RIGHT = __BIN_MID;\
+ };\
+ __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
};\
- __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
+ __BIN_ITEM = COMPTYPE;\
+ __BIN_MID = __BIN_ITEM.##COMPARISON > COMPARE.##COMPARISON ? __BIN_MID : __BIN_MID + 1;\
+ __BIN_LIST.Insert(__BIN_MID, INPUT);\
};\
- __BIN_ITEM = LIST[__BIN_MID];\
- __BIN_MID = __BIN_ITEM.##COMPARE > IN.##COMPARE ? __BIN_MID : __BIN_MID + 1;\
- LIST.Insert(__BIN_MID, IN);\
- }
+ } while(FALSE)
//Returns a list in plain english as a string
/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
@@ -231,40 +245,77 @@
//Picks a random element from a list based on a weighting system:
//1. Adds up the total of weights for each element
-//2. Gets a number between 1 and that total
+//2. Gets the total from 0% to 100% of previous total value.
//3. For each element in the list, subtracts its weighting from that number
//4. If that makes the number 0 or less, return that element.
-/proc/pickweight(list/L)
+/proc/pickweight(list/L, base_weight = 1)
var/total = 0
var/item
for (item in L)
if (!L[item])
- L[item] = 1
+ L[item] = base_weight
total += L[item]
- total = rand(1, total)
+ total = rand() * total
for (item in L)
- total -=L [item]
+ total -= L[item]
if (total <= 0)
return item
- return null
-
-/proc/pickweightAllowZero(list/L) //The original pickweight proc will sometimes pick entries with zero weight. I'm not sure if changing the original will break anything, so I left it be.
+//Picks a number of elements from a list based on weight.
+//This is highly optimised and good for things like grabbing 200 items from a list of 40,000
+//Much more efficient than many pickweight calls
+/proc/pickweight_mult(list/L, quantity, base_weight = 1)
+ //First we total the list as normal
var/total = 0
var/item
for (item in L)
if (!L[item])
- L[item] = 0
+ L[item] = base_weight
total += L[item]
- total = rand(0, total)
- for (item in L)
- total -=L [item]
- if (total <= 0 && L[item])
- return item
+ //Next we will make a list of randomly generated numbers, called Requests
+ //It is critical that this list be sorted in ascending order, so we will build it in that order
+ //First one is free, so we start counting at 2
+ var/list/requests = list(rand(1, total))
+ for (var/i in 2 to quantity)
+ //Each time we generate the next request
+ var/newreq = rand()* total
+ //We will loop through all existing requests
+ for (var/j in 1 to requests.len)
+ //We keep going through the list until we find an element which is bigger than the one we want to add
+ if (requests[j] > newreq)
+ //And then we insert the newqreq at that point, pushing everything else forward
+ requests.Insert(j, newreq)
+ break
- return null
+
+
+ //Now when we get here, we have a list of random numbers sorted in ascending order.
+ //The length of that list is equal to Quantity passed into this function
+ //Next we make a list to store results
+ var/list/results = list()
+
+ //Zero the total, we'll reuse it
+ total = 0
+
+ //Now we will iterate forward through the items list, adding each weight to the total
+ for (item in L)
+ total += L[item]
+
+ //After each item we do a while loop
+ while (requests.len && total >= requests[1])
+ //If the total is higher than the value of the first request
+ results += item //We add this item to the results list
+ requests.Cut(1,2) //And we cut off the top of the requests list
+
+ //This while loop will repeat until the next request is higher than the total.
+ //The current item might be added to the results list many times, in this process
+
+ //By the time we get here:
+ //Requests will be empty
+ //Results will have a length of quality
+ return results
//Pick a random element from the list and remove it from the list.
/proc/pick_n_take(list/L)
@@ -274,6 +325,13 @@
. = L[picked]
L.Cut(picked,picked+1) //Cut is far more efficient that Remove()
+//Pick a random element from the list by weight and remove it from the list.
+//Result is returned as a list in the format list(key, value)
+/proc/pickweight_n_take(list/L, base_weight = 1)
+ if (L.len)
+ . = pickweight(L, base_weight)
+ L.Remove(.)
+
//Returns the top(last) element from the list and removes it from the list (typical stack function)
/proc/pop(list/L)
if(L.len)
diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm
index 3e6e88c8fa..030a324614 100644
--- a/code/__HELPERS/level_traits.dm
+++ b/code/__HELPERS/level_traits.dm
@@ -12,3 +12,5 @@
#define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED)
#define is_away_level(z) SSmapping.level_trait(z, ZTRAIT_AWAY)
+
+#define is_vr_level(z) SSmapping.level_trait(z, ZTRAIT_VR)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 2827e40120..d93a89a179 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -47,7 +47,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear/socks, GLOB.socks_list)
return pick(GLOB.socks_list)
-/proc/random_features(intendedspecies)
+/proc/random_features(intendedspecies, intended_gender)
if(!GLOB.tails_list_human.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human)
if(!GLOB.tails_list_lizard.len)
@@ -149,7 +149,13 @@
var/color2 = random_short_color()
var/color3 = random_short_color()
- //CIT CHANGE - changes this entire return to support cit's snowflake parts
+ var/body_model = MALE
+ switch(intended_gender)
+ if(MALE, FEMALE)
+ body_model = intended_gender
+ if(PLURAL)
+ body_model = pick(MALE,FEMALE)
+
return(list(
"mcolor" = color1,
"mcolor2" = color2,
@@ -209,7 +215,7 @@
"ipc_antenna" = "None",
"flavor_text" = "",
"meat_type" = "Mammalian",
- "body_model" = MALE,
+ "body_model" = body_model,
"body_size" = RESIZE_DEFAULT_SIZE
))
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index fb8863ebe7..d214ec94ef 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -50,3 +50,8 @@ GLOBAL_LIST_EMPTY_TYPED(areas_by_type, /area)
GLOBAL_LIST_EMPTY(all_abstract_markers)
GLOBAL_LIST_EMPTY(stationroom_landmarks) //List of all spawns for stationrooms
+
+///Away missions, VR, random z levels stuff.
+GLOBAL_LIST_EMPTY(random_zlevels_generated)
+GLOBAL_LIST_INIT(potential_away_levels, generateMapList(filename = "[global.config.directory]/awaymissionconfig.txt"))
+GLOBAL_LIST_INIT(potential_vr_levels, generateMapList(filename = "[global.config.directory]/vr_config.txt"))
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 04d4c2888a..959a62ebf8 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -43,15 +43,26 @@ GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup)
GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes.
/proc/update_config_movespeed_type_lookup(update_mobs = TRUE)
- var/list/mob_types = list()
+ // NOTE: This is entirely based on the fact that byond typesof/subtypesof gets longer/deeper paths before shallower ones.
+ // If that ever breaks this entire proc breaks.
+ var/list/mob_types = typesof(/mob)
var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed)
+ var/list/configured_types = list()
for(var/path in entry_value)
var/value = entry_value[path]
- if(!value)
+ if(isnull(value))
continue
+ // associative list sets for elements that already exist preserve order
+ mob_types[path] = value
+ // now go back up through it to set everything, making absolute sure that base paths are overridden by child paths all the way down the path tree.
+ for(var/i in length(mob_types) to 1 step -1)
+ var/path = mob_types[i]
+ if(isnull(mob_types[path]))
+ continue
+ // we're going from bottom to top so it should be safe to do this without further checks..
for(var/subpath in typesof(path))
- mob_types[subpath] = value
- GLOB.mob_config_movespeed_type_lookup = mob_types
+ configured_types[subpath] = mob_types[path]
+ GLOB.mob_config_movespeed_type_lookup = configured_types
if(update_mobs)
update_mob_config_movespeeds()
diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm
new file mode 100644
index 0000000000..dd8b9f0d94
--- /dev/null
+++ b/code/_globalvars/traits.dm
@@ -0,0 +1,138 @@
+/*
+ FUN ZONE OF ADMIN LISTINGS
+ Try to keep this in sync with __DEFINES/traits.dm
+ quirks have it's own panel so we don't need them here.
+*/
+
+GLOBAL_LIST_INIT(traits_by_type, list(
+ /mob = list(
+ "TRAIT_BLIND" = TRAIT_BLIND,
+ "TRAIT_MUTE" = TRAIT_MUTE,
+ "TRAIT_EMOTEMUTE " = TRAIT_EMOTEMUTE,
+ "TRAIT_DEAF" = TRAIT_DEAF,
+ "TRAIT_NEARSIGHT" = TRAIT_NEARSIGHT,
+ "TRAIT_FAT" = TRAIT_FAT,
+ "TRAIT_HUSK" = TRAIT_HUSK,
+ "TRAIT_NOCLONE" = TRAIT_NOCLONE,
+ "TRAIT_CLUMSY" = TRAIT_CLUMSY,
+ "TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS,
+ "TRAIT_DUMB" = TRAIT_DUMB,
+ "TRAIT_MONKEYLIKE" = TRAIT_MONKEYLIKE,
+ "TRAIT_PACIFISM" = TRAIT_PACIFISM,
+ "TRAIT_IGNORESLOWDOWN" = TRAIT_IGNORESLOWDOWN,
+ "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA,
+ "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH,
+ "TRAIT_DISFIGURED" = TRAIT_DISFIGURED,
+ "TRAIT_XENO_HOST" = TRAIT_XENO_HOST,
+ "TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE,
+ "TRAIT_TASED_RESISTANCE" = TRAIT_TASED_RESISTANCE,
+ "TRAIT_SLEEPIMMUNE" = TRAIT_SLEEPIMMUNE,
+ "TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE,
+ "TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE,
+ "TRAIT_STABLEHEART" = TRAIT_STABLEHEART,
+ "TRAIT_STABLELIVER" = TRAIT_STABLELIVER,
+ "TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT,
+ "TRAIT_RESISTHEATHANDS" = TRAIT_RESISTHEATHANDS,
+ "TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD,
+ "TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE,
+ "TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE,
+ "TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE,
+ "TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE,
+ "TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE,
+ "TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER,
+ "TRAIT_NOFIRE" = TRAIT_NOFIRE,
+ "TRAIT_NOGUNS" = TRAIT_NOGUNS,
+ "TRAIT_NOHUNGER" = TRAIT_NOHUNGER,
+ "TRAIT_EASYDISMEMBER" = TRAIT_EASYDISMEMBER,
+ "TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT,
+ "TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE,
+ "TRAIT_EASYLIMBDISABLE" = TRAIT_EASYLIMBDISABLE,
+ "TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER,
+ "TRAIT_NOBREATH" = TRAIT_NOBREATH,
+ "TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC,
+ "TRAIT_HOLY" = TRAIT_HOLY,
+ "TRAIT_DEPRESSION" = TRAIT_DEPRESSION,
+ "TRAIT_JOLLY" = TRAIT_JOLLY,
+ "TRAIT_NOCRITDAMAGE" = TRAIT_NOCRITDAMAGE,
+ "TRAIT_NOSLIPWATER" = TRAIT_NOSLIPWATER,
+ "TRAIT_NOSLIPALL" = TRAIT_NOSLIPALL,
+ "TRAIT_NODEATH" = TRAIT_NODEATH,
+ "TRAIT_NOHARDCRIT" = TRAIT_NOHARDCRIT,
+ "TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT,
+ "TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD,
+ "TRAIT_HIJACKER" = TRAIT_HIJACKER,
+ "TRAIT_DISSECTED" = TRAIT_DISSECTED,
+ "TRAIT_SIXTHSENSE" = TRAIT_SIXTHSENSE,
+ "TRAIT_FEARLESS" = TRAIT_FEARLESS,
+ "TRAIT_PARALYSIS_L_ARM" = TRAIT_PARALYSIS_L_ARM,
+ "TRAIT_PARALYSIS_R_ARM" = TRAIT_PARALYSIS_R_ARM,
+ "TRAIT_PARALYSIS_L_LEG" = TRAIT_PARALYSIS_L_LEG,
+ "TRAIT_PARALYSIS_R_LEG" = TRAIT_PARALYSIS_R_LEG,
+ "TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER,
+ "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION,
+ "TRAIT_THERMAL_VISION" = TRAIT_THERMAL_VISION,
+ "TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING,
+ "TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING,
+ "TRAIT_SURGEON" = TRAIT_SURGEON,
+ "TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER,
+ "TRAIT_MAGIC_CHOKE" = TRAIT_MAGIC_CHOKE,
+ "TRAIT_SOOTHED_THROAT" = TRAIT_SOOTHED_THROAT,
+ "TRAIT_LAW_ENFORCEMENT_METABOLISM" = TRAIT_LAW_ENFORCEMENT_METABOLISM,
+ "TRAIT_UNINTELLIGIBLE_SPEECH" = TRAIT_UNINTELLIGIBLE_SPEECH,
+ "TRAIT_UNSTABLE" = TRAIT_UNSTABLE,
+ "TRAIT_COLDBLOODED" = TRAIT_COLDBLOODED,
+ "TRAIT_NONATURALHEAL" = TRAIT_NONATURALHEAL,
+ "TRAIT_NORUNNING" = TRAIT_NORUNNING,
+ "TRAIT_NOMARROW" = TRAIT_NOMARROW,
+ "TRAIT_NOPULSE" = TRAIT_NOPULSE,
+ "TRAIT_EXEMPT_HEALTH_EVENTS" = TRAIT_EXEMPT_HEALTH_EVENTS,
+ "TRAIT_NO_MIDROUND_ANTAG" = TRAIT_NO_MIDROUND_ANTAG,
+ "TRAIT_PUGILIST" = TRAIT_PUGILIST,
+ "TRAIT_KI_VAMPIRE" = TRAIT_KI_VAMPIRE,
+ "TRAIT_PASSTABLE" = TRAIT_PASSTABLE,
+ "TRAIT_GIANT" = TRAIT_GIANT,
+ "TRAIT_DWARF" = TRAIT_DWARF,
+ "TRAIT_COMBAT_MODE_LOCKED" = TRAIT_COMBAT_MODE_LOCKED,
+ "TRAIT_SPRINT_LOCKED" = TRAIT_SPRINT_LOCKED,
+ "TRAIT_AUTO_CATCH_ITEM" = TRAIT_AUTO_CATCH_ITEM,
+ "TRAIT_FREESPRINT" = TRAIT_FREESPRINT,
+ "TRAIT_NO_INTERNALS" = TRAIT_NO_INTERNALS,
+ "TRAIT_NO_ALCOHOL" = TRAIT_NO_ALCOHOL,
+ "TRAIT_MUTATION_STASIS" = TRAIT_MUTATION_STASIS,
+ "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER,
+ "TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP,
+ "TRAIT_SILENT_STEP" = TRAIT_SILENT_STEP,
+ "TRAIT_VORACIOUS" = TRAIT_VORACIOUS,
+ "TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE,
+ "TRAIT_FREERUNNING" = TRAIT_FREERUNNING,
+ "TRAIT_SKITTISH" = TRAIT_SKITTISH,
+ "TRAIT_POOR_AIM" = TRAIT_POOR_AIM,
+ "TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA,
+ "TRAIT_DRUNK_HEALING" = TRAIT_DRUNK_HEALING,
+ "TRAIT_TAGGER" = TRAIT_TAGGER,
+ "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER,
+ "TRAIT_MUSICIAN" = TRAIT_MUSICIAN,
+ "TRAIT_MASO" = TRAIT_MASO,
+ "TRAIT_HIGH_BLOOD" = TRAIT_HIGH_BLOOD,
+ "TRAIT_EMPATH" = TRAIT_EMPATH,
+ "TRAIT_FRIENDLY" = TRAIT_FRIENDLY
+ ),
+ /obj/item/bodypart = list(
+ "TRAIT_PARALYSIS" = TRAIT_PARALYSIS
+ ),
+ /obj/item = list(
+ "TRAIT_NODROP" = TRAIT_NODROP,
+ "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT
+ )
+ ))
+
+
+/// value -> trait name, generated on use from trait_by_type global
+GLOBAL_LIST(trait_name_map)
+
+/proc/generate_trait_name_map()
+ . = list()
+ for(var/key in GLOB.traits_by_type)
+ for(var/tname in GLOB.traits_by_type[key])
+ var/val = GLOB.traits_by_type[key][tname]
+ .[val] = tname
diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index 1312183750..6b0be68e60 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -217,7 +217,8 @@
config_entry_value = list( //DEFAULTS
/mob/living/simple_animal = 1,
/mob/living/silicon/pai = 1,
- /mob/living/carbon/alien/humanoid/hunter = -1,
+ /mob/living/carbon/alien/humanoid/sentinel = 0.25,
+ /mob/living/carbon/alien/humanoid/drone = 0.5,
/mob/living/carbon/alien/humanoid/royal/praetorian = 1,
/mob/living/carbon/alien/humanoid/royal/queen = 3
)
@@ -248,8 +249,18 @@
/datum/config_entry/number/movedelay/run_delay
+/datum/config_entry/number/movedelay/run_delay/ValidateAndSet()
+ . = ..()
+ var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run)
+ M.sync()
+
/datum/config_entry/number/movedelay/walk_delay
+/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet()
+ . = ..()
+ var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk)
+ M.sync()
+
/datum/config_entry/number/movedelay/sprint_speed_increase
config_entry_value = 1
@@ -288,6 +299,8 @@
/datum/config_entry/flag/roundstart_away //Will random away mission be loaded.
+/datum/config_entry/flag/roundstart_vr //Will virtual reality missions be loaded?
+
/datum/config_entry/number/gateway_delay //How long the gateway takes before it activates. Default is half an hour. Only matters if roundstart_away is enabled.
config_entry_value = 18000
min_val = 0
diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm
index 12b467b624..c6e6a84bcf 100644
--- a/code/controllers/subsystem/lighting.dm
+++ b/code/controllers/subsystem/lighting.dm
@@ -6,7 +6,6 @@ SUBSYSTEM_DEF(lighting)
name = "Lighting"
wait = 2
init_order = INIT_ORDER_LIGHTING
- flags = SS_TICKER
/datum/controller/subsystem/lighting/stat_entry()
..("L:[GLOB.lighting_update_lights.len]|C:[GLOB.lighting_update_corners.len]|O:[GLOB.lighting_update_objects.len]")
@@ -85,4 +84,4 @@ SUBSYSTEM_DEF(lighting)
/datum/controller/subsystem/lighting/Recover()
initialized = SSlighting.initialized
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index f13d5a2779..89155cefb3 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -1,3 +1,5 @@
+#define INIT_ANNOUNCE(X) to_chat(world, "[X]"); log_world(X)
+
SUBSYSTEM_DEF(mapping)
name = "Mapping"
init_order = INIT_ORDER_MAPPING
@@ -81,7 +83,9 @@ SUBSYSTEM_DEF(mapping)
// Pick a random away mission.
if(CONFIG_GET(flag/roundstart_away))
createRandomZlevel()
-
+ // Pick a random VR level.
+ if(CONFIG_GET(flag/roundstart_vr))
+ createRandomZlevel(VIRT_REALITY_NAME, list(ZTRAIT_AWAY = TRUE, ZTRAIT_VR = TRUE), GLOB.potential_vr_levels)
// Generate mining ruins
loading_ruins = TRUE
@@ -181,7 +185,6 @@ SUBSYSTEM_DEF(mapping)
z_list = SSmapping.z_list
-#define INIT_ANNOUNCE(X) to_chat(world, "[X]"); log_world(X)
/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE)
. = list()
var/start_time = REALTIMEOFDAY
@@ -265,7 +268,6 @@ SUBSYSTEM_DEF(mapping)
msg += ", [FailedZs[I]]"
msg += ". Yell at your server host!"
INIT_ANNOUNCE(msg)
-#undef INIT_ANNOUNCE
GLOBAL_LIST_EMPTY(the_station_areas)
@@ -410,52 +412,63 @@ GLOBAL_LIST_EMPTY(the_station_areas)
//Manual loading of away missions.
/client/proc/admin_away()
- set name = "Load Away Mission"
+ set name = "Load Away Mission / Virtual Reality"
set category = "Fun"
if(!holder ||!check_rights(R_FUN))
return
+ var/choice = alert(src, "What kind of level would you like to load?", "Load Away/VR", AWAY_MISSION_NAME, VIRT_REALITY_NAME, "Cancel")
- if(!GLOB.the_gateway)
- if(alert("There's no home gateway on the station. You sure you want to continue ?", "Uh oh", "Yes", "No") != "Yes")
+ var/list/possible_options
+ var/list/ztraits
+ switch(choice)
+ if(VIRT_REALITY_NAME)
+ possible_options = GLOB.potential_vr_levels
+ ztraits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_VR = TRUE)
+ if(AWAY_MISSION_NAME)
+ if(!GLOB.the_gateway)
+ if(alert("There's no home gateway on the station. You sure you want to continue ?", "Uh oh", "Yes", "No") != "Yes")
+ return
+ possible_options = GLOB.potential_away_levels
+ ztraits = list(ZTRAIT_AWAY = TRUE)
+ else
return
- var/list/possible_options = GLOB.potentialRandomZlevels + "Custom"
- var/away_name
- var/datum/space_level/away_level
+ possible_options += "Custom"
+ var/lvl_name
+ var/datum/space_level/level
- var/answer = input("What kind ? ","Away") as null|anything in possible_options
+ var/answer = input("What kind ? ","Away/VR") as null|anything in possible_options
switch(answer)
+ if(null)
+ return
if("Custom")
var/mapfile = input("Pick file:", "File") as null|file
if(!mapfile)
return
- away_name = "[mapfile] custom"
- to_chat(usr,"Loading [away_name]...")
- var/datum/map_template/template = new(mapfile, "Away Mission")
- away_level = template.load_new_z()
+ lvl_name = "[mapfile] custom"
+ to_chat(usr,"Loading [lvl_name]...")
+ var/datum/map_template/template = new(mapfile, choice, ztraits)
+ level = template.load_new_z(ztraits)
else
- if(answer in GLOB.potentialRandomZlevels)
- away_name = answer
- to_chat(usr,"Loading [away_name]...")
- var/datum/map_template/template = new(away_name, "Away Mission")
- away_level = template.load_new_z()
- else
- return
+ lvl_name = answer
+ to_chat(usr,"Loading [lvl_name]...")
+ var/datum/map_template/template = new(lvl_name, choice)
+ level = template.load_new_z(ztraits)
- message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.")
- log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.")
- if(!away_level)
- message_admins("Loading [away_name] failed!")
+ message_admins("Admin [key_name_admin(usr)] has loaded [lvl_name] [choice].")
+ log_admin("Admin [key_name(usr)] has loaded [lvl_name] [choice].")
+ if(!level)
+ message_admins("Loading [lvl_name] failed!")
return
- if(GLOB.the_gateway)
+ if(choice == AWAY_MISSION_NAME && GLOB.the_gateway)
//Link any found away gate with station gate
var/obj/machinery/gateway/centeraway/new_gate
for(var/obj/machinery/gateway/centeraway/G in GLOB.machines)
- if(G.z == away_level.z_value) //I'll have to refactor gateway shitcode before multi-away support.
+ if(G.z == level.z_value) //I'll have to refactor gateway shitcode before multi-away support.
new_gate = G
break
//Link station gate with away gate and remove wait time.
diff --git a/code/controllers/subsystem/processing/flightpacks.dm b/code/controllers/subsystem/processing/flightpacks.dm
deleted file mode 100644
index a462e2b645..0000000000
--- a/code/controllers/subsystem/processing/flightpacks.dm
+++ /dev/null
@@ -1,25 +0,0 @@
-PROCESSING_SUBSYSTEM_DEF(flightpacks)
- name = "Flightpack Movement"
- priority = FIRE_PRIORITY_FLIGHTPACKS
- wait = 2
- stat_tag = "FM"
- flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING
-
- var/flightsuit_processing = FLIGHTSUIT_PROCESSING_FULL
-
-/datum/controller/subsystem/processing/flightpacks/Initialize()
- sync_flightsuit_processing()
-
-/datum/controller/subsystem/processing/flightpacks/vv_edit_var(var_name, var_value)
- ..()
- switch(var_name)
- if("flightsuit_processing")
- sync_flightsuit_processing()
-
-/datum/controller/subsystem/processing/flightpacks/proc/sync_flightsuit_processing()
- for(var/obj/item/flightpack/FP in processing)
- FP.sync_processing(src)
- if(flightsuit_processing == FLIGHTSUIT_PROCESSING_NONE) //Don't even bother firing.
- can_fire = FALSE
- else
- can_fire = TRUE
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index e4a3ff1f9a..a3e804d541 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -217,13 +217,13 @@ SUBSYSTEM_DEF(shuttle)
call_reason = trim(html_encode(call_reason))
- if(length(call_reason) < CALL_SHUTTLE_REASON_LENGTH && seclevel2num(get_security_level()) > SEC_LEVEL_GREEN)
+ if(length(call_reason) < CALL_SHUTTLE_REASON_LENGTH && GLOB.security_level > SEC_LEVEL_GREEN)
to_chat(user, "You must provide a reason.")
return
var/area/signal_origin = get_area(user)
var/emergency_reason = "\nNature of emergency:\n\n[call_reason]"
- var/security_num = seclevel2num(get_security_level())
+ var/security_num = GLOB.security_level
switch(security_num)
if(SEC_LEVEL_RED,SEC_LEVEL_DELTA)
emergency.request(null, signal_origin, html_decode(emergency_reason), 1) //There is a serious threat we gotta move no time to give them five minutes.
@@ -285,7 +285,7 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/canRecall()
if(!emergency || emergency.mode != SHUTTLE_CALL || emergencyNoRecall || SSticker.mode.name == "meteor")
return
- var/security_num = seclevel2num(get_security_level())
+ var/security_num = GLOB.security_level
switch(security_num)
if(SEC_LEVEL_GREEN)
if(emergency.timeLeft(1) < emergencyCallTime)
@@ -642,7 +642,7 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end without being a proper shuttle call?
if(EMERGENCY_IDLE_OR_RECALLED)
SSshuttle.emergency.request(silent = TRUE)
- priority_announce("The shift has come to an end and the shuttle called. [seclevel2num(get_security_level()) == SEC_LEVEL_RED ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [emergency.timeLeft(600)] minutes.", null, "shuttlecalled", "Priority")
+ priority_announce("The shift has come to an end and the shuttle called. [GLOB.security_level == SEC_LEVEL_RED ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [emergency.timeLeft(600)] minutes.", null, "shuttlecalled", "Priority")
log_game("Round end vote passed. Shuttle has been auto-called.")
message_admins("Round end vote passed. Shuttle has been auto-called.")
emergencyNoRecall = TRUE
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index a7be36abc2..8042631b7b 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -387,6 +387,9 @@ SUBSYSTEM_DEF(ticker)
for(var/mob/dead/new_player/N in GLOB.player_list)
var/mob/living/carbon/human/player = N.new_character
if(istype(player) && player.mind && player.mind.assigned_role)
+ var/datum/job/J = SSjob.GetJob(player.mind.assigned_role)
+ if(J)
+ J.standard_assign_skills(player.mind)
if(player.mind.assigned_role == "Captain")
captainless=0
if(player.mind.assigned_role != player.mind.special_role)
diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm
index bd2fb854af..36bf992cfb 100644
--- a/code/controllers/subsystem/timer.dm
+++ b/code/controllers/subsystem/timer.dm
@@ -94,7 +94,7 @@ SUBSYSTEM_DEF(timer)
if(ctime_timer.flags & TIMER_LOOP)
ctime_timer.spent = 0
ctime_timer.timeToRun = REALTIMEOFDAY + ctime_timer.wait
- BINARY_INSERT(ctime_timer, clienttime_timers, datum/timedevent, timeToRun)
+ BINARY_INSERT(ctime_timer, clienttime_timers, datum/timedevent, ctime_timer, timeToRun, COMPARE_KEY)
else
qdel(ctime_timer)
@@ -423,7 +423,7 @@ SUBSYSTEM_DEF(timer)
L = SStimer.second_queue
if(L)
- BINARY_INSERT(src, L, datum/timedevent, timeToRun)
+ BINARY_INSERT(src, L, datum/timedevent, src, timeToRun, COMPARE_KEY)
return
//get the list of buckets
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index a202afd905..97a5ec2c2b 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -352,7 +352,6 @@ SUBSYSTEM_DEF(vote)
if("dynamic")
if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started.
return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.")
- GLOB.master_mode = "dynamic"
var/list/runnable_storytellers = config.get_runnable_storytellers()
var/datum/dynamic_storyteller/picked
for(var/T in runnable_storytellers)
@@ -361,7 +360,7 @@ SUBSYSTEM_DEF(vote)
picked = S
runnable_storytellers[S] *= round(stored_gamemode_votes[initial(S.name)]*100000,1)
if(!picked)
- picked = pickweightAllowZero(runnable_storytellers)
+ picked = pickweight(runnable_storytellers, 0)
GLOB.dynamic_storyteller_type = picked
if("map")
var/datum/map_config/VM = config.maplist[.]
@@ -489,6 +488,7 @@ SUBSYSTEM_DEF(vote)
modes_to_add -= "traitor" // makes it so that traitor is always available
choices.Add(modes_to_add)
if("dynamic")
+ GLOB.master_mode = "dynamic"
var/list/probabilities = CONFIG_GET(keyed_list/storyteller_weight)
for(var/T in config.storyteller_cache)
var/datum/dynamic_storyteller/S = T
diff --git a/code/datums/action.dm b/code/datums/action.dm
index f2f93ac40d..8862482dc2 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -171,7 +171,7 @@
if(!..())
return 0
var/mob/M = target
- M.ghostize(1)
+ M.ghostize(can_reenter_corpse = TRUE, voluntary = TRUE)
/datum/action/proc/OnUpdatedIcon()
UpdateButtonIcon()
diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm
index ebddc187ae..9c6bb2ebfd 100644
--- a/code/datums/ai_laws.dm
+++ b/code/datums/ai_laws.dm
@@ -253,7 +253,7 @@
var/datum/ai_laws/lawtype
var/list/law_weights = CONFIG_GET(keyed_list/law_weight)
while(!lawtype && law_weights.len)
- var/possible_id = pickweightAllowZero(law_weights)
+ var/possible_id = pickweight(law_weights, 0)
lawtype = lawid_to_type(possible_id)
if(!lawtype)
law_weights -= possible_id
diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm
index cf0e1bdec9..9eb3fcaaea 100644
--- a/code/datums/components/crafting/recipes/recipes_misc.dm
+++ b/code/datums/components/crafting/recipes/recipes_misc.dm
@@ -115,6 +115,33 @@
//Tools & Storage//
///////////////////
+/datum/crafting_recipe/upgraded_gauze
+ name = "Improved Gauze"
+ result = /obj/item/stack/medical/gauze/adv
+ time = 1
+ reqs = list(/obj/item/stack/medical/gauze = 1,
+ /datum/reagent/space_cleaner/sterilizine = 10)
+ category = CAT_MISC
+ subcategory = CAT_TOOL
+
+/datum/crafting_recipe/bruise_pack
+ name = "Bruise Pack"
+ result = /obj/item/stack/medical/bruise_pack
+ time = 1
+ reqs = list(/obj/item/stack/medical/gauze = 1,
+ /datum/reagent/medicine/styptic_powder = 10)
+ category = CAT_MISC
+ subcategory = CAT_TOOL
+
+/datum/crafting_recipe/burn_pack
+ name = "Brun Ointment"
+ result = /obj/item/stack/medical/ointment
+ time = 1
+ reqs = list(/obj/item/stack/medical/gauze = 1,
+ /datum/reagent/medicine/silver_sulfadiazine = 10)
+ category = CAT_MISC
+ subcategory = CAT_TOOL
+
/datum/crafting_recipe/ghettojetpack
name = "Improvised Jetpack"
result = /obj/item/tank/jetpack/improvised
diff --git a/code/datums/components/identification.dm b/code/datums/components/identification.dm
new file mode 100644
index 0000000000..f7dc211504
--- /dev/null
+++ b/code/datums/components/identification.dm
@@ -0,0 +1,88 @@
+/**
+ * Identification components
+ */
+/datum/component/identification
+ /// General flags for how we should work.
+ var/identification_flags = NONE
+ /// General flags for what we should do.
+ var/identification_effect_flags = NONE
+ /// General flags for how we can be identified.
+ var/identification_method_flags = NONE
+ /// If this is set, show this on examine to the examiner if they know how to use it.
+ var/additional_examine_text = "You seem to know more about this item than others.."
+ /// Added to deconstructive analyzer say on success if set
+ var/deconstructor_reveal_text = "item operation instructions"
+
+/datum/component/identification/Initialize(id_flags, id_effect_flags, id_method_flags)
+ if(!isobj(parent))
+ return COMPONENT_INCOMPATIBLE
+ . = ..()
+ if(. & COMPONENT_INCOMPATIBLE)
+ return
+ identification_flags = id_flags
+ identification_effect_flags = id_effect_flags
+ identification_method_flags = id_method_flags
+
+/datum/component/identification/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ if(identification_effect_flags & ID_COMPONENT_EFFECT_NO_ACTIONS)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
+ if(identification_method_flags & ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR)
+ RegisterSignal(parent, COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN, .proc/on_deconstructor_deepscan)
+
+/datum/component/identification/UnregisterFromParent()
+ var/list/unregister = list(COMSIG_PARENT_EXAMINE)
+ if(identification_effect_flags & ID_COMPONENT_EFFECT_NO_ACTIONS)
+ unregister += COMSIG_ITEM_EQUIPPED
+ if(identification_method_flags & ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR)
+ unregister += COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN
+ UnregisterSignal(parent, unregister)
+
+/datum/component/identification/proc/on_examine(datum/source, mob/user, list/returnlist)
+ if(check_knowledge(user) != ID_COMPONENT_KNOWLEDGE_FULL)
+ return
+ if(!additional_examine_text)
+ return
+ returnlist += additional_examine_text
+
+/datum/component/identification/vv_edit_var(var_name, var_value)
+ // since i care SOOO much about memory optimization, we only register signals we need to
+ // so when someone vv's us, we should probably make sure we have the ones we need to with an update.
+ if((var_value == NAMEOF(src, identification_flags)) || (var_value == NAMEOF(src, identification_effect_flags)) || (var_value == NAMEOF(src, identification_method_flags)))
+ UnregisterFromParent()
+ . = ..()
+ if((var_value == NAMEOF(src, identification_flags)) || (var_value == NAMEOF(src, identification_effect_flags)) || (var_value == NAMEOF(src, identification_method_flags)))
+ RegisterWithParent()
+
+/datum/component/identification/proc/on_equip(datum/source, mob/user)
+ if(check_knowledge(user) == ID_COMPONENT_KNOWLEDGE_FULL)
+ return
+ if(identification_method_flags & ID_COMPONENT_EFFECT_NO_ACTIONS)
+ return COMPONENT_NO_GRANT_ACTIONS
+
+/datum/component/identification/proc/check_knowledge(mob/user)
+ return ID_COMPONENT_KNOWLEDGE_NONE
+
+/datum/component/identification/proc/on_identify(mob/user)
+ if(identification_flags & ID_COMPONENT_DEL_ON_IDENTIFY)
+ qdel(src)
+
+/datum/component/identification/proc/on_deconstructor_deepscan(datum/source, obj/machinery/rnd/destructive_analyzer/analyzer, mob/user, list/information = list())
+ if((identification_method_flags & ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR) && !(identification_flags & ID_COMPONENT_DECONSTRUCTOR_DEEPSCANNED))
+ identification_flags |= ID_COMPONENT_DECONSTRUCTOR_DEEPSCANNED
+ on_identify(user)
+ if(deconstructor_reveal_text)
+ information += deconstructor_reveal_text
+ return COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION
+
+/**
+ * Identification component subtype - Syndicate
+ *
+ * Checks if the user is a traitor.
+ */
+/datum/component/identification/syndicate
+
+/datum/component/identification/syndicate/check_knowledge(mob/user)
+ . = ..()
+ if(user?.mind?.has_antag_datum(/datum/antagonist/traitor))
+ . = max(., ID_COMPONENT_KNOWLEDGE_FULL)
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 5e9382f88e..6938046e11 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -175,27 +175,27 @@
switch(sanity)
if(-INFINITY to SANITY_CRAZY)
setInsanityEffect(MAJOR_INSANITY_PEN)
- master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1.5) //Did we change something ? movetypes is runtiming, movetypes=(~FLYING))
+ master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/insane)
sanity_level = 6
if(SANITY_CRAZY to SANITY_UNSTABLE)
setInsanityEffect(MINOR_INSANITY_PEN)
- master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1)//, movetypes=(~FLYING))
+ master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/crazy)
sanity_level = 5
if(SANITY_UNSTABLE to SANITY_DISTURBED)
setInsanityEffect(0)
- master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=0.5)//, movetypes=(~FLYING))
+ master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/disturbed)
sanity_level = 4
if(SANITY_DISTURBED to SANITY_NEUTRAL)
setInsanityEffect(0)
- master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE)
+ master.remove_movespeed_modifier(MOVESPEED_ID_SANITY)
sanity_level = 3
if(SANITY_NEUTRAL+1 to SANITY_GREAT+1) //shitty hack but +1 to prevent it from responding to super small differences
setInsanityEffect(0)
- master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE)
+ master.remove_movespeed_modifier(MOVESPEED_ID_SANITY)
sanity_level = 2
if(SANITY_GREAT+1 to INFINITY)
setInsanityEffect(0)
- master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE)
+ master.remove_movespeed_modifier(MOVESPEED_ID_SANITY)
sanity_level = 1
//update_mood_icon()
diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm
index 8ba748dac7..29add286be 100644
--- a/code/datums/components/nanites.dm
+++ b/code/datums/components/nanites.dm
@@ -12,7 +12,7 @@
var/list/datum/nanite_program/programs = list()
var/max_programs = NANITE_PROGRAM_LIMIT
- var/list/datum/nanite_program/protocol/protocols = list() ///Separate list of protocol programs, to avoid looping through the whole programs list when cheking for conflicts
+ var/list/datum/nanite_program/protocol/protocols = list() ///Separate list of protocol programs, to avoid looping through the whole programs list when checking for conflicts
var/start_time = 0 ///Timestamp to when the nanites were first inserted in the host
var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans
var/diagnostics = TRUE //if TRUE, displays program list when scanned by nanite scanners
diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm
index d185221163..00bb392787 100644
--- a/code/datums/components/riding.dm
+++ b/code/datums/components/riding.dm
@@ -198,13 +198,14 @@
/datum/component/riding/human/Initialize()
. = ..()
+ directional_vehicle_layers = list(TEXT_NORTH = MOB_LOWER_LAYER, TEXT_SOUTH = MOB_UPPER_LAYER, TEXT_EAST = MOB_UPPER_LAYER, TEXT_WEST = MOB_UPPER_LAYER)
RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee)
/datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
. = ..()
var/mob/living/carbon/human/H = parent
if(!length(H.buckled_mobs))
- H.remove_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING)
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/human_carry)
if(!fireman_carrying)
M.Daze(25)
REMOVE_TRAIT(M, TRAIT_MOBILITY_NOUSE, src)
@@ -213,7 +214,7 @@
. = ..()
var/mob/living/carbon/human/H = parent
if(length(H.buckled_mobs))
- H.add_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING, multiplicative_slowdown = fireman_carrying? FIREMAN_CARRY_SLOWDOWN : PIGGYBACK_CARRY_SLOWDOWN)
+ H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/human_carry, TRUE, fireman_carrying? FIREMAN_CARRY_SLOWDOWN : PIGGYBACK_CARRY_SLOWDOWN)
if(fireman_carrying)
ADD_TRAIT(M, TRAIT_MOBILITY_NOUSE, src)
@@ -261,6 +262,10 @@
/datum/component/riding/cyborg
+/datum/component/riding/cyborg/Initialize()
+ . = ..()
+ directional_vehicle_layers = list(TEXT_NORTH = MOB_LOWER_LAYER, TEXT_SOUTH = MOB_UPPER_LAYER, TEXT_EAST = MOB_UPPER_LAYER, TEXT_WEST = MOB_UPPER_LAYER)
+
/datum/component/riding/cyborg/ride_check(mob/user)
var/atom/movable/AM = parent
if(user.incapacitated())
diff --git a/code/datums/components/shrink.dm b/code/datums/components/shrink.dm
index f070d9b22f..96807fe313 100644
--- a/code/datums/components/shrink.dm
+++ b/code/datums/components/shrink.dm
@@ -14,7 +14,7 @@
parent_atom.opacity = 0
if(isliving(parent_atom))
var/mob/living/L = parent_atom
- L.add_movespeed_modifier(MOVESPEED_ID_SHRINK_RAY, update=TRUE, priority=100, multiplicative_slowdown=4)
+ L.add_movespeed_modifier(/datum/movespeed_modifier/shrink_ray)
if(iscarbon(L))
var/mob/living/carbon/C = L
C.unequip_everything()
@@ -35,7 +35,7 @@
parent_atom.opacity = oldopac
if(isliving(parent_atom))
var/mob/living/L = parent_atom
- L.remove_movespeed_modifier(MOVESPEED_ID_SHRINK_RAY)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/shrink_ray)
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.physiology.damage_resistance += 100
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index 4100942fec..aad6e8289f 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -15,6 +15,7 @@
var/datum/component/storage/concrete/master //If not null, all actions act on master and this is just an access point.
var/list/can_hold //if this is set, only things in this typecache will fit.
+ var/list/can_hold_extra //if this is set, it will also be able to hold these.
var/list/cant_hold //if this is set, anything in this typecache will not be able to fit.
var/list/mob/is_using //lazy list of mobs looking at the contents of this storage.
@@ -493,26 +494,25 @@
if(M && !stop_messages)
host.add_fingerprint(M)
return FALSE
- if(length(can_hold))
- if(!is_type_in_typecache(I, can_hold))
+ if(!length(can_hold_extra) || !is_type_in_typecache(I, can_hold_extra))
+ if(length(can_hold) && !is_type_in_typecache(I, can_hold))
if(!stop_messages)
to_chat(M, "[host] cannot hold [I]!")
return FALSE
- if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold.
- if(!stop_messages)
- to_chat(M, "[host] cannot hold [I]!")
- return FALSE
- // STORAGE LIMITS
+ if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold.
+ if(!stop_messages)
+ to_chat(M, "[host] cannot hold [I]!")
+ return FALSE
+ if(storage_flags & STORAGE_LIMIT_MAX_W_CLASS && I.w_class > max_w_class)
+ if(!stop_messages)
+ to_chat(M, "[I] is too long for [host]!")
+ return FALSE
+ // STORAGE LIMITS
if(storage_flags & STORAGE_LIMIT_MAX_ITEMS)
if(real_location.contents.len >= max_items)
if(!stop_messages)
to_chat(M, "[host] has too many things in it, make some space!")
return FALSE //Storage item is full
- if(storage_flags & STORAGE_LIMIT_MAX_W_CLASS)
- if(I.w_class > max_w_class)
- if(!stop_messages)
- to_chat(M, "[I] is too long for [host]!")
- return FALSE
if(storage_flags & STORAGE_LIMIT_COMBINED_W_CLASS)
var/sum_w_class = I.w_class
for(var/obj/item/_I in real_location)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index f97fde6f7e..348f9e6778 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -29,7 +29,8 @@
VV_DROPDOWN_OPTION(VV_HK_MARK, "Mark Object")
VV_DROPDOWN_OPTION(VV_HK_DELETE, "Delete")
VV_DROPDOWN_OPTION(VV_HK_EXPOSE, "Show VV To Player")
-// VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRAITS, "Modify Traits")
+ VV_DROPDOWN_OPTION(VV_HK_ADDCOMPONENT, "Add Component/Element")
+ VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRAITS, "Modify Traits")
//This proc is only called if everything topic-wise is verified. The only verifications that should happen here is things like permission checks!
//href_list is a reference, modifying it in these procs WILL change the rest of the proc in topic.dm of admin/view_variables!
@@ -37,8 +38,8 @@
/datum/proc/vv_do_topic(list/href_list)
if(!usr || !usr.client || !usr.client.holder || !check_rights(NONE))
return FALSE //This is VV, not to be called by anything else.
-// if(href_list[VV_HK_MODIFY_TRAITS])
-// usr.client.holder.modify_traits(src)
+ if(href_list[VV_HK_MODIFY_TRAITS])
+ usr.client.holder.modify_traits(src)
return TRUE
/datum/proc/vv_get_header()
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index e08d5c509c..e0df2a8f1b 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -309,7 +309,7 @@
unique_enzymes = generate_unique_enzymes()
uni_identity = generate_uni_identity()
generate_dna_blocks()
- features = random_features(species?.id)
+ features = random_features(species?.id, holder?.gender)
/datum/dna/stored //subtype used by brain mob's stored_dna
@@ -662,6 +662,6 @@
var/danger = CONFIG_GET(number/threshold_body_size_slowdown)
if(features["body_size"] < danger)
var/slowdown = 1 + round(danger/features["body_size"], 0.1) * CONFIG_GET(number/body_size_slowdown_multiplier)
- holder.add_movespeed_modifier(MOVESPEED_ID_SMALL_STRIDE, TRUE, 100, NONE, TRUE, slowdown, ALL, FLOATING|CRAWLING)
+ holder.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/small_stride, TRUE, slowdown)
else if(old_size < danger)
- holder.remove_movespeed_modifier(MOVESPEED_ID_SMALL_STRIDE)
+ holder.remove_movespeed_modifier(/datum/movespeed_modifier/small_stride)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 31704d5451..728c4fb51b 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -63,7 +63,11 @@
var/force_escaped = FALSE // Set by Into The Sunset command of the shuttle manipulator
var/list/learned_recipes //List of learned recipe TYPES.
+ /// Our skill holder.
+ var/datum/skill_holder/skill_holder
+
/datum/mind/New(var/key)
+ skill_holder = new
src.key = key
soulOwner = src
martial_art = default_martial_art
diff --git a/code/datums/skills/_check_skills.dm b/code/datums/skills/_check_skills.dm
new file mode 100644
index 0000000000..d9dc6dad3d
--- /dev/null
+++ b/code/datums/skills/_check_skills.dm
@@ -0,0 +1,16 @@
+// yeah yeah verbs suck whatever I suck at this fix this someone please - kevinz000
+
+/mob/verb/check_skills()
+ set name = "Check Skills"
+ set category = "IC"
+ set desc = "Check your skills (if you have any..)"
+
+ if(!mind)
+ to_chat(usr, "How do you check the skills of [(usr == src)? "yourself when you are" : "something"] without a mind?")
+ return
+ if(!mind.skill_holder)
+ to_chat(usr, "How do you check the skills of [(usr == src)? "yourself when you are" : "something"] without the capability for skills? (PROBABLY A BUG, PRESS F1.)")
+ return
+ var/datum/browser/B = new(usr, "skilldisplay_[REF(src)]", "Skills of [src]")
+ B.set_content(mind.skill_holder.html_readout())
+ B.open()
diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm
new file mode 100644
index 0000000000..2dd321c4c6
--- /dev/null
+++ b/code/datums/skills/_skill.dm
@@ -0,0 +1,95 @@
+GLOBAL_LIST_INIT(skill_datums, init_skill_datums())
+
+/proc/init_skill_datums()
+ . = list()
+ for(var/path in subtypesof(/datum/skill))
+ var/datum/skill/S = path
+ if(initial(S.abstract_type) == path)
+ continue
+ S = new path
+ .[S.type] = S
+
+/proc/get_skill_datum(path)
+ return GLOB.skill_datums[path]
+
+/proc/sanitize_skill_value(path, value)
+ var/datum/skill/S = get_skill_datum(path)
+ // don't check, if we runtime let it happen.
+ return S.sanitize_value(value)
+
+/proc/is_skill_value_greater(path, existing, new_value)
+ var/datum/skill/S = get_skill_datum(path)
+ // don't check, if we runtime let it happen.
+ return S.is_value_greater(existing, new_value)
+
+/**
+ * Skill datums
+ */
+/datum/skill
+ /// Our name
+ var/name
+ /// Our description
+ var/desc
+ /// Our progression type
+ var/progression_type
+ /// Abstract type
+ var/abstract_type = /datum/skill
+
+/**
+ * Ensures what someone's setting as a value for this skill is valid.
+ */
+/datum/skill/proc/sanitize_value(new_value)
+ return new_value
+
+/**
+ * Checks if a value is greater
+ */
+/datum/skill/proc/is_value_greater(existing, new_value)
+ if(!existing)
+ return TRUE
+ return new_value > existing
+
+/**
+ * Standard value "render"
+ */
+/datum/skill/proc/standard_render_value(value)
+ return value
+
+// Just saying, the choice to use different sub-parent-types is to force coders to resolve issues as I won't be implementing custom procs to grab skill levels in a certain context.
+// Aka: So people don't forget to change checks if they change a skill's progression type.
+
+/datum/skill/binary
+ abstract_type = /datum/skill/binary
+ progression_type = SKILL_PROGRESSION_BINARY
+
+/datum/skill/binary/sanitize_value(new_value)
+ return new_value? TRUE : FALSE
+
+/datum/skill/binary/standard_render_value(value)
+ return value? "Yes" : "No"
+
+/datum/skill/numerical
+ abstract_type = /datum/skill/numerical
+ progression_type = SKILL_PROGRESSION_NUMERICAL
+ /// Max value of this skill
+ var/max_value = 100
+ /// Min value of this skill
+ var/min_value = 0
+ /// Display as a percent in standard_render_value?
+ var/display_as_percent = FALSE
+
+/datum/skill/numerical/sanitize_value(new_value)
+ return clamp(new_value, min_value, max_value)
+
+/datum/skill/numerical/standard_render_value(value)
+ return display_as_percent? "[round(value/max_value/100, 0.01)]%" : "[value] / [max_value]"
+
+/datum/skill/enum
+ abstract_type = /datum/skill/enum
+ progression_type = SKILL_PROGRESSION_ENUM
+ /// Valid values for the skill
+ var/list/valid_values = list()
+
+/datum/skill/enum/sanitize_value(new_value)
+ if(new_value in valid_values)
+ return new_value
diff --git a/code/datums/skills/_skill_holder.dm b/code/datums/skills/_skill_holder.dm
new file mode 100644
index 0000000000..352adc46ff
--- /dev/null
+++ b/code/datums/skills/_skill_holder.dm
@@ -0,0 +1,78 @@
+/**
+ * Skill holder datums
+ */
+/datum/skill_holder
+ /// Our list of skills and values. Lazylist. Associative. Keys are datum typepaths to the skill.
+ var/list/skills
+ /// Same as [skills] but affinities, which are multiplied to increase amount when gaining skills.
+ var/list/skill_affinities
+
+/**
+ * Grabs the value of a skill.
+ */
+/datum/skill_holder/proc/get_skill_value(skill)
+ if(!ispath(skill))
+ CRASH("Invalid get_skill_value call. Use typepaths.") //until a time when we somehow need text ids for dynamic skills, I'm enforcing this.
+ if(!skills)
+ return null
+ return skills[skill]
+
+/**
+ * Grabs our affinity for a skill. !!This is a multiplier!!
+ */
+/datum/skill_holder/proc/get_skill_affinity(skill)
+ if(!ispath(skill))
+ CRASH("Invalid get_skill_affinity call. Use typepaths.") //until a time when we somehow need text ids for dynamic skills, I'm enforcing this.
+ if(!skills)
+ return 1
+ var/affinity = skill_affinities[skill]
+ if(isnull(affinity))
+ return 1
+ return affinity
+
+/**
+ * Sets the value of a skill.
+ */
+/datum/skill_holder/proc/set_skill_value(skill, value)
+ if(!ispath(skill))
+ CRASH("Invalid set_skill_value call. Use typepaths.") //until a time when we somehow need text ids for dynamic skills, I'm enforcing this.
+ LAZYINITLIST(skills)
+ value = sanitize_skill_value(skill, value)
+ if(!isnull(value))
+ skills[skill] = value
+ return TRUE
+ return FALSE
+
+/**
+ * Boosts a skill to a value if not aobve
+ */
+/datum/skill_holder/proc/boost_skill_value_to(skill, value)
+ var/current = get_skill_value(skill)
+ if(!is_skill_value_greater(skill, current, value))
+ return FALSE
+ set_skill_value(skill, value)
+ return TRUE
+
+/**
+ * Automatic skill increase, multiplied by skill affinity if existing.
+ * Only works if skill is numerical.
+ */
+/datum/skill_holder/proc/auto_gain_experience(skill, value)
+ if(!ispath(skill, /datum/skill/numerical))
+ CRASH("You cannot auto increment a non numerical skill!")
+ var/current = get_skill_value(skill)
+ var/affinity = get_skill_affinity(skill)
+ boost_skill_value_to(skill, current + (value * affinity))
+
+/**
+ * Generates a HTML readout of our skills.
+ * Port to tgui-next when?
+ */
+/datum/skill_holder/proc/html_readout()
+ var/list/out = list("
Skills
")
+ out += "| Skill | Value |
"
+ for(var/path in skills)
+ var/datum/skill/S = GLOB.skill_datums[path]
+ out += "| [S.name] | [S.standard_render_value(skills[path])] |
"
+ out += "
"
+ return out.Join("")
diff --git a/code/datums/skills/medical.dm b/code/datums/skills/medical.dm
new file mode 100644
index 0000000000..3b67cacb04
--- /dev/null
+++ b/code/datums/skills/medical.dm
@@ -0,0 +1,3 @@
+/datum/skill/numerical/surgery
+ name = "Surgery"
+ desc = "How proficient you are at doing surgery."
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index e22b33d90a..680c0a89c4 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -120,12 +120,12 @@
/datum/status_effect/mesmerize/on_creation(mob/living/new_owner, set_duration)
. = ..()
ADD_TRAIT(owner, TRAIT_MUTE, "mesmerize")
- owner.add_movespeed_modifier("[STATUS_EFFECT_MESMERIZE]_[id]", TRUE, priority = 64, override = TRUE, multiplicative_slowdown = 5, blacklisted_movetypes = FALSE? NONE : CRAWLING)
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/mesmerize)
/datum/status_effect/mesmerize/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_MUTE, "mesmerize")
- owner.remove_movespeed_modifier("[STATUS_EFFECT_MESMERIZE]_[id]")
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/mesmerize)
/datum/status_effect/mesmerize/on_creation(mob/living/new_owner, set_duration)
if(isnum(set_duration))
@@ -141,9 +141,7 @@
/datum/status_effect/electrode
id = "tased"
alert_type = null
- var/slowdown = 1.5
- var/slowdown_priority = 50 //to make sure the stronger effect overrides
- var/affect_crawl = FALSE
+ var/movespeed_mod = /datum/movespeed_modifier/status_effect/tased
var/nextmove_modifier = 1
var/stamdmg_per_ds = 0 //a 20 duration would do 20 stamdmg, disablers do 24 or something
var/last_tick = 0 //fastprocess processing speed is a goddamn sham, don't trust it.
@@ -155,12 +153,12 @@
last_tick = world.time
if(iscarbon(owner))
var/mob/living/carbon/C = owner
- C.add_movespeed_modifier("[MOVESPEED_ID_TASED_STATUS]_[id]", TRUE, priority = slowdown_priority, override = TRUE, multiplicative_slowdown = slowdown, blacklisted_movetypes = affect_crawl? NONE : CRAWLING)
+ C.add_movespeed_modifier(movespeed_mod)
/datum/status_effect/electrode/on_remove()
if(iscarbon(owner))
var/mob/living/carbon/C = owner
- C.remove_movespeed_modifier("[MOVESPEED_ID_TASED_STATUS]_[id]")
+ C.remove_movespeed_modifier(movespeed_mod)
. = ..()
/datum/status_effect/electrode/tick()
@@ -178,8 +176,7 @@
/datum/status_effect/electrode/no_combat_mode
id = "tased_strong"
- slowdown = 8
- slowdown_priority = 100
+ movespeed_mod = /datum/movespeed_modifier/status_effect/tased/no_combat_mode
nextmove_modifier = 2
blocks_combatmode = TRUE
stamdmg_per_ds = 1
@@ -650,11 +647,11 @@
if(isnum(set_duration))
duration = set_duration
. = ..()
- owner.add_movespeed_modifier(MOVESPEED_ID_ELECTROSTAFF, multiplicative_slowdown = 1, movetypes = GROUND)
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/electrostaff)
/datum/status_effect/electrostaff/on_remove()
. = ..()
- owner.remove_movespeed_modifier(MOVESPEED_ID_ELECTROSTAFF)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/electrostaff)
//GOLEM GANG
diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm
index c2855250f4..30699d36f4 100644
--- a/code/datums/world_topic.dm
+++ b/code/datums/world_topic.dm
@@ -169,7 +169,7 @@
.["real_mode"] = SSticker.mode.name
// Key-authed callers may know the truth behind the "secret"
- .["security_level"] = get_security_level()
+ .["security_level"] = NUM2SECLEVEL(GLOB.security_level)
.["round_duration"] = SSticker ? round((world.time-SSticker.round_start_time)/10) : 0
// Amount of world's ticks in seconds, useful for calculating round duration
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index d548f373db..659d50c077 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -40,8 +40,10 @@ GLOBAL_VAR_INIT(dynamic_stacking_limit, 90)
GLOBAL_LIST_EMPTY(dynamic_forced_roundstart_ruleset)
// Forced threat level, setting this to zero or higher forces the roundstart threat to the value.
GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
-
+// Storyteller picked by the voting.
GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
+// Storyteller forced by admins during voting--will be used instead of above.
+GLOBAL_VAR_INIT(dynamic_forced_storyteller, null)
/datum/game_mode/dynamic
name = "dynamic mode"
@@ -164,7 +166,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
dat += "Current threat: [threat] \[Adjust\] \[View Log\]
"
dat += "
"
- dat += "Storyteller: [storyteller.name]
"
+ dat += "Storyteller: [storyteller.name]
"
dat += "Parameters: centre = [GLOB.dynamic_curve_centre] ; width = [GLOB.dynamic_curve_width].
"
dat += "On average, [peaceful_percentage]% of the rounds are more peaceful.
"
dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
"
@@ -222,6 +224,15 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
show_threatlog(usr)
else if (href_list["stacking_limit"])
GLOB.dynamic_stacking_limit = input(usr,"Change the threat limit at which round-endings rulesets will start to stack.", "Change stacking limit", null) as num
+ else if (href_list["change_storyteller"])
+ var/list/choices = list()
+ for(var/T in config.storyteller_cache)
+ var/datum/dynamic_storyteller/S = T
+ choices[initial(S.name)] = T
+ var/selected_storyteller = choices[input("Select storyteller:", "Storyteller", storyteller.name) as null|anything in choices]
+ storyteller = new selected_storyteller
+ storyteller.on_start()
+ message_admins("[key_name(usr)] changed the storyteller to [storyteller].", 1)
admin_panel() // Refreshes the window
@@ -243,7 +254,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
/datum/game_mode/dynamic/send_intercept()
. = "Central Command Status Summary
"
switch(round(threat_level))
- if(0 to 20)
+ if(-INFINITY to 20)
. += "Peaceful Waypoint
"
. += "Your station orbits deep within controlled, core-sector systems and serves as a waypoint for routine traffic through Nanotrasen's trade empire. Due to the combination of high security, interstellar traffic, and low strategic value, it makes any direct threat of violence unlikely. Your primary enemies will be incompetence and bored crewmen: try to organize team-building events to keep staffers interested and productive. However, even deep in our territory there may be subversive elements, especially for such a high-value target as your station. Keep an eye out, but don't expect much trouble."
set_security_level(SEC_LEVEL_GREEN)
@@ -275,7 +286,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
. += "Black Orbit
"
. += "As part of a mandatory security protocol, we are required to inform you that as a result of your orbital pattern directly behind an astrological body (oriented from our nearest observatory), your station will be under decreased monitoring and support. It is anticipated that your extreme location and decreased surveillance could pose security risks. Avoid unnecessary risks and attempt to keep your station in one piece."
set_security_level(SEC_LEVEL_AMBER)
- if(96 to 100)
+ if(96 to INFINITY)
. += "Impending Doom
"
. += "Your station is somehow in the middle of hostile territory, in clear view of any enemy of the corporation. Your likelihood to survive is low, and station destruction is expected and almost inevitable. Secure any sensitive material and neutralize any enemy you will come across. It is important that you at least try to maintain the station.
"
. += "Good luck."
@@ -346,6 +357,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
SSblackbox.record_feedback("tally","dynamic_threat",peaceful_percentage,"Percent of same-vote rounds that are more peaceful")
/datum/game_mode/dynamic/can_start()
+ if(GLOB.dynamic_forced_storyteller)
+ GLOB.dynamic_storyteller_type = GLOB.dynamic_forced_storyteller
storyteller = new GLOB.dynamic_storyteller_type // this is where all the initialization happens
storyteller.on_start()
SSblackbox.record_feedback("text","dynamic_storyteller",1,storyteller.name)
@@ -441,6 +454,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
if(!drafted_rules.len)
message_admins("Not enough threat level for roundstart antags!")
log_game("DYNAMIC: Not enough threat level for roundstart antags!")
+ midround_injection_cooldown = round((midround_injection_cooldown + world.time) / 2, 1)
+ latejoin_injection_cooldown = round((latejoin_injection_cooldown + world.time) / 2, 1)
var/indice_pop = min(10,round(roundstart_pop_ready/pop_per_requirement)+1)
extra_rulesets_amount = 0
if (GLOB.dynamic_classic_secret)
@@ -721,7 +736,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
if (O.started_as_observer) // Observers
current_players[CURRENT_OBSERVERS].Add(M)
continue
- current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow)
+ if(!M.voluntary_ghosted)
+ current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow)
threat = storyteller.calculate_threat() + added_threat
if(threat_average_weight)
var/cur_sample_weight = world.time - last_threat_sample_time
@@ -823,3 +839,11 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
return RULE_OF_THREE(40, 20, x) + 50
if (20 to INFINITY)
return rand(90, 100)
+
+/datum/game_mode/dynamic/ghost_info()
+ . = list()
+ . += "Current threat: [threat]"
+ . += "Target threat: [threat_level]"
+ . += "Storyteller: [storyteller.name]
"
+ . += "Parameters: centre = [GLOB.dynamic_curve_centre] ; width = [GLOB.dynamic_curve_width].
"
+ . += "On average, [peaceful_percentage]% of the rounds are more peaceful.
"
diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm
index 3639ada166..561b38fde1 100644
--- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm
+++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm
@@ -115,7 +115,7 @@ Property weights are:
return 100
var/threat_perc = mode.threat/mode.threat_level
- return round(max(0,100*(1-(threat_perc*threat_perc*threat_perc))))
+ return clamp(round(100*(1-(threat_perc*threat_perc))**2,1),0,100)
/datum/dynamic_storyteller/proc/roundstart_draft()
var/list/drafted_rules = list()
@@ -152,7 +152,7 @@ Property weights are:
is 2.26 times as likely to be picked, all other things considered.
Of course, we don't want it to GUARANTEE the closest, that's no fun, so it's just a weight.
*/
- threat_weight = 1-abs(1-LOGISTIC_FUNCTION(2,0.05,cost_difference,0))
+ threat_weight = abs(1-abs(1-LOGISTIC_FUNCTION(2,0.05,cost_difference,0)))
if (rule.ready())
var/property_weight = 0
for(var/property in property_weights)
@@ -209,8 +209,8 @@ Property weights are:
weight = 1
event_frequency_lower = 2 MINUTES
event_frequency_upper = 10 MINUTES
- flags = WAROPS_ALWAYS_ALLOWED
- min_players = 40
+ flags = WAROPS_ALWAYS_ALLOWED | FORCE_IF_WON
+ min_players = 30
var/refund_cooldown = 0
/datum/dynamic_storyteller/chaotic/do_process()
@@ -232,7 +232,7 @@ Property weights are:
curve_centre = 2
curve_width = 1.5
weight = 2
- min_players = 30
+ min_players = 20
flags = WAROPS_ALWAYS_ALLOWED | USE_PREV_ROUND_WEIGHTS
property_weights = list("valid" = 3, "trust" = 5)
@@ -331,7 +331,7 @@ Property weights are:
/datum/dynamic_storyteller/story/calculate_threat()
var/current_time = (world.time / SSautotransfer.targettime)*180
mode.threat_level = round(mode.initial_threat_level*(sin(current_time)+0.25),0.1)
- ..()
+ return ..()
/datum/dynamic_storyteller/classic
name = "Classic"
@@ -358,7 +358,7 @@ Property weights are:
flags = NO_ASSASSIN | FORCE_IF_WON
weight = 1
dead_player_weight = 5
- property_weights = list("extended" = 2, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10)
+ property_weights = list("extended" = 2, "chaos" = -1, "valid" = -1, "conversion" = -10)
/datum/dynamic_storyteller/no_antag
name = "Extended"
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 5affeba6d6..e2c549d911 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -272,7 +272,7 @@
reports += config.mode_reports[config_tag]
Count++
for(var/i in Count to rand(3,5)) //Between three and five wrong entries on the list.
- var/false_report_type = pickweightAllowZero(report_weights)
+ var/false_report_type = pickweight(report_weights, 0)
report_weights[false_report_type] = 0 //Make it so the same false report won't be selected twice
reports += config.mode_reports[false_report_type]
@@ -604,3 +604,7 @@
/// Mode specific admin panel.
/datum/game_mode/proc/admin_panel()
return
+
+/// Mode specific info for ghost game_info
+/datum/game_mode/proc/ghost_info()
+ return
diff --git a/code/game/gamemodes/gangs/dominator.dm b/code/game/gamemodes/gangs/dominator.dm
index 858c10c46c..dca50be5b9 100644
--- a/code/game/gamemodes/gangs/dominator.dm
+++ b/code/game/gamemodes/gangs/dominator.dm
@@ -229,7 +229,7 @@
if(!was_stranded)
priority_announce("All hostile activity within station systems has ceased.","Network Alert")
- if(get_security_level() == "delta")
+ if(NUM2SECLEVEL(GLOB.security_level) == "delta")
set_security_level("red")
SSshuttle.clearHostileEnvironment(src)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 93852e917c..48a298984c 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -121,6 +121,7 @@
uniform = /obj/item/clothing/under/syndicate
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
+ back = /obj/item/storage/backpack
ears = /obj/item/radio/headset/syndicate/alt
l_pocket = /obj/item/pinpointer/nuke/syndicate
id = /obj/item/card/id/syndicate
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 5617eeac88..edb31e9dbd 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -441,11 +441,6 @@
circuit = /obj/item/circuitboard/machine/autolathe/secure
stored_research = /datum/techweb/specialized/autounlocking/autolathe/public
-//Called when the object is constructed by an autolathe
-//Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes
-/obj/item/proc/autolathe_crafted(obj/machinery/autolathe/A)
- return
-
/obj/machinery/autolathe/toy
name = "autoylathe"
desc = "It produces toys using plastic, metal and glass."
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 4c3d85a162..6eb06e3be4 100755
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -111,7 +111,7 @@
to_chat(usr, "Authorization confirmed. Modifying security level.")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
//Only notify people if an actual change happened
- var/security_level = get_security_level()
+ var/security_level = NUM2SECLEVEL(GLOB.security_level)
log_game("[key_name(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].")
message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].")
deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] with [src] at [get_area_name(usr, TRUE)].", usr)
@@ -404,7 +404,7 @@
security_level_cd = world.time + 15 SECONDS
if(GLOB.security_level != old_level)
//Only notify people if an actual change happened
- var/security_level = get_security_level()
+ var/security_level = NUM2SECLEVEL(GLOB.security_level)
log_game("[key_name(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].")
message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].")
deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] from [src] at [get_area_name(usr, TRUE)].", usr)
@@ -555,7 +555,7 @@
dat += " Biohazard \]
"
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if(STATE_ALERT_LEVEL)
- dat += "Current alert level: [get_security_level()]
"
+ dat += "Current alert level: [NUM2SECLEVEL(GLOB.security_level)]
"
if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate."
else
@@ -563,8 +563,8 @@
dat += "Blue
"
dat += "Green"
if(STATE_CONFIRM_LEVEL)
- dat += "Current alert level: [get_security_level()]
"
- dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]
"
+ dat += "Current alert level: [NUM2SECLEVEL(GLOB.security_level)]
"
+ dat += "Confirm the change to: [NUM2SECLEVEL(tmp_alertlevel)]
"
dat += "Swipe ID to confirm change.
"
if(STATE_TOGGLE_EMERGENCY)
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
@@ -696,7 +696,7 @@
dat += " Biohazard \]
"
if(STATE_ALERT_LEVEL)
- dat += "Current alert level: [get_security_level()]
"
+ dat += "Current alert level: [NUM2SECLEVEL(GLOB.security_level)]
"
if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate."
else
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 118145ed88..07f95c17ff 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -405,7 +405,7 @@
// Ghost and delete the mob.
if(!mob_occupant.get_ghost(1))
- mob_occupant.ghostize(FALSE, penalize = TRUE)
+ mob_occupant.ghostize(FALSE, penalize = TRUE, voluntary = TRUE)
QDEL_NULL(occupant)
for(var/I in cryo_items) //only "CRYO_DESTROY_LATER" atoms are left)
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 9acc8921b9..fb321665bc 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -19,6 +19,7 @@
var/processing_queue = 0
var/screen = "main"
var/temp
+ var/offstation_security_levels = TRUE
var/list/part_sets = list(
"Cyborg",
"Ripley",
@@ -72,6 +73,8 @@
for(var/obj/item/stock_parts/manipulator/Ml in component_parts)
T += Ml.rating
time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01)
+ var/obj/item/circuitboard/machine/mechfab/C = circuit
+ offstation_security_levels = C.offstation_security_levels
/obj/machinery/mecha_part_fabricator/examine(mob/user)
. = ..()
@@ -106,13 +109,27 @@
if(!(set_name in D.category))
continue
output += "[output_part_info(D)]
\["
- if(check_resources(D))
+ if(check_clearance(D) && check_resources(D))
output += "
Build | "
output += "
Add to queue\]\[
?\]
"
return output
+/obj/machinery/mecha_part_fabricator/proc/check_clearance(datum/design/D)
+ if(!(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z)) && !ISINRANGE(GLOB.security_level, D.min_security_level, D.max_security_level))
+ return FALSE
+ return TRUE
+
/obj/machinery/mecha_part_fabricator/proc/output_part_info(datum/design/D)
- var/output = "[initial(D.name)] (Cost: [output_part_cost(D)]) [get_construction_time_w_coeff(D)/10]sec"
+ var/clearance = !(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z))
+ var/sec_text = ""
+ if(clearance && (D.min_security_level > SEC_LEVEL_GREEN || D.max_security_level < SEC_LEVEL_DELTA))
+ sec_text = " (Allowed security levels: "
+ for(var/n in D.min_security_level to D.max_security_level)
+ sec_text += NUM2SECLEVEL(n)
+ if(n + 1 <= D.max_security_level)
+ sec_text += ", "
+ sec_text += ") "
+ var/output = "[initial(D.name)] (Cost: [output_part_cost(D)]) [sec_text][get_construction_time_w_coeff(D)/10]sec"
return output
/obj/machinery/mecha_part_fabricator/proc/output_part_cost(datum/design/D)
@@ -216,6 +233,11 @@
while(D)
if(stat&(NOPOWER|BROKEN))
return FALSE
+ if(!check_clearance(D))
+ say("Security level not met. Queue processing stopped.")
+ temp = {"Security level not met to build next part.
+ Try again | Return"}
+ return FALSE
if(!check_resources(D))
say("Not enough resources. Queue processing stopped.")
temp = {"Not enough resources to build next part.
@@ -236,7 +258,7 @@
for(var/datum/design/D in queue)
i++
var/obj/part = D.build_path
- output += ""
+ output += ""
output += initial(part.name) + " - "
output += "[i>1?"↑":null] "
output += "[i↓":null] "
@@ -440,3 +462,7 @@
return FALSE
return TRUE
+
+/obj/machinery/mecha_part_fabricator/offstation
+ offstation_security_levels = FALSE
+ circuit = /obj/item/circuitboard/machine/mechfab/offstation
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 04f14692e3..851a041aab 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -483,7 +483,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
if(!SSmapping.station_room_templates[t])
log_world("Station room spawner placed at ([T.x], [T.y], [T.z]) has invalid ruin name of \"[t]\" in its list")
templates -= t
- template_name = pickweightAllowZero(templates)
+ template_name = pickweight(templates, 0)
if(!template_name)
GLOB.stationroom_landmarks -= src
qdel(src)
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 2fb068a29b..1fe5e46e25 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -170,7 +170,7 @@
if(!victim.client || !istype(victim))
return
to_chat(victim, "You feel fast!")
- victim.add_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
+ victim.add_movespeed_modifier(/datum/movespeed_modifier/yellow_orb)
sleep(duration)
- victim.remove_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB)
+ victim.remove_movespeed_modifier(/datum/movespeed_modifier/yellow_orb)
to_chat(victim, "You slow down.")
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 9455a610c5..c8e5b15f72 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -393,7 +393,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
qdel(src)
item_flags &= ~IN_INVENTORY
if(SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user) & COMPONENT_DROPPED_RELOCATION)
- return ITEM_RELOCATED_BY_DROPPED
+ . = ITEM_RELOCATED_BY_DROPPED
user.update_equipment_speed_mods()
// called just as an item is picked up (loc is not yet changed)
@@ -434,11 +434,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
// for items that can be placed in multiple slots
// note this isn't called during the initial dressing of a player
/obj/item/proc/equipped(mob/user, slot)
- SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot)
- for(var/X in actions)
- var/datum/action/A = X
- if(item_action_slot_check(slot, user, A)) //some items only give their actions buttons when in a specific slot.
- A.Grant(user)
+ . = SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot)
+ if(!(. & COMPONENT_NO_GRANT_ACTIONS))
+ for(var/X in actions)
+ var/datum/action/A = X
+ if(item_action_slot_check(slot, user, A)) //some items only give their actions buttons when in a specific slot.
+ A.Grant(user)
item_flags |= IN_INVENTORY
user.update_equipment_speed_mods()
@@ -897,3 +898,11 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
. = ..()
if(var_name == NAMEOF(src, slowdown))
set_slowdown(var_value) //don't care if it's a duplicate edit as slowdown'll be set, do it anyways to force normal behavior.
+
+//Called when the object is constructed by an autolathe
+//Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes
+/obj/item/proc/autolathe_crafted(obj/machinery/autolathe/A)
+ return
+
+/obj/item/proc/rnd_crafted(obj/machinery/rnd/production/P)
+ return
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 20e0b09d26..c23bc2bd5b 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -258,6 +258,8 @@ update_label("John Doe", "Clowny")
chameleon_action.chameleon_type = /obj/item/card/id
chameleon_action.chameleon_name = "ID Card"
chameleon_action.initialize_disguises()
+ if(!anyone)
+ AddComponent(/datum/component/identification/syndicate, ID_COMPONENT_DEL_ON_IDENTIFY, ID_COMPONENT_EFFECT_NO_ACTIONS, NONE) //no deconstructive analyzer usage.
/obj/item/card/id/syndicate/afterattack(obj/item/O, mob/user, proximity)
if(!proximity)
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index d710f761f8..b788c3fcba 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -308,6 +308,13 @@
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stack/sheet/glass = 1)
+ var/offstation_security_levels = TRUE
+
+/obj/item/circuitboard/machine/mechfab/offstation
+ offstation_security_levels = FALSE
+
+/obj/item/circuitboard/machine/mechfab/rnd_crafted(obj/machinery/rnd/production/P)
+ offstation_security_levels = P.offstation_security_levels
/obj/item/circuitboard/machine/cryo_tube
name = "Cryotube (Machine Board)"
@@ -759,6 +766,13 @@
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/reagent_containers/glass/beaker = 2)
+ var/offstation_security_levels = TRUE
+
+/obj/item/circuitboard/machine/circuit_imprinter/offstation
+ offstation_security_levels = FALSE
+
+/obj/item/circuitboard/machine/mechfab/rnd_crafted(obj/machinery/rnd/production/P)
+ offstation_security_levels = P.offstation_security_levels
/obj/item/circuitboard/machine/circuit_imprinter/department
name = "Departmental Circuit Imprinter (Machine Board)"
@@ -832,6 +846,13 @@
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2,
/obj/item/reagent_containers/glass/beaker = 2)
+ var/offstation_security_levels = TRUE
+
+/obj/item/circuitboard/machine/protolathe/offstation
+ offstation_security_levels = FALSE
+
+/obj/item/circuitboard/machine/protolathe/rnd_crafted(obj/machinery/rnd/production/P)
+ offstation_security_levels = P.offstation_security_levels
/obj/item/circuitboard/machine/protolathe/department
name = "Departmental Protolathe (Machine Board)"
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 60136f5529..3dad3877b7 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -59,7 +59,7 @@
var/edible = TRUE // That doesn't mean eating it is a good idea
- var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 1)
+ var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1)
// If the user can toggle the colour, a la vanilla spraycan
var/can_change_colour = FALSE
@@ -487,56 +487,56 @@
icon_state = "crayonred"
paint_color = "#DA0000"
crayon_color = "red"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/red = 0.9)
dye_color = DYE_RED
/obj/item/toy/crayon/orange
icon_state = "crayonorange"
paint_color = "#FF9300"
crayon_color = "orange"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/orange = 0.9)
dye_color = DYE_ORANGE
/obj/item/toy/crayon/yellow
icon_state = "crayonyellow"
paint_color = "#FFF200"
crayon_color = "yellow"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 0.9)
dye_color = DYE_YELLOW
/obj/item/toy/crayon/green
icon_state = "crayongreen"
paint_color = "#A8E61D"
crayon_color = "green"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/green = 0.9)
dye_color = DYE_GREEN
/obj/item/toy/crayon/blue
icon_state = "crayonblue"
paint_color = "#00B7EF"
crayon_color = "blue"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/blue = 0.9)
dye_color = DYE_BLUE
/obj/item/toy/crayon/purple
icon_state = "crayonpurple"
paint_color = "#DA00FF"
crayon_color = "purple"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/purple = 0.9)
dye_color = DYE_PURPLE
/obj/item/toy/crayon/black
icon_state = "crayonblack"
paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black.
crayon_color = "black"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/black = 0.9)
dye_color = DYE_BLACK
/obj/item/toy/crayon/white
icon_state = "crayonwhite"
paint_color = "#FFFFFF"
crayon_color = "white"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/white = 0.9)
dye_color = DYE_WHITE
/obj/item/toy/crayon/mime
@@ -544,7 +544,7 @@
desc = "A very sad-looking crayon."
paint_color = "#FFFFFF"
crayon_color = "mime"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 0.9)
charges = -1
dye_color = DYE_MIME
@@ -552,10 +552,9 @@
icon_state = "crayonrainbow"
paint_color = "#FFF000"
crayon_color = "rainbow"
- reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1)
+ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent = 0.9)
drawtype = RANDOM_ANY // just the default starter.
dye_color = DYE_RAINBOW
-
charges = -1
/obj/item/toy/crayon/rainbow/afterattack(atom/target, mob/user, proximity, params)
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 9749bae313..0a705df91c 100644
--- a/code/game/objects/items/granters.dm
+++ b/code/game/objects/items/granters.dm
@@ -57,6 +57,35 @@
on_reading_finished(user)
reading = FALSE
return TRUE
+///TRAITS///
+
+/obj/item/book/granter/trait
+ var/granted_trait
+ var/traitname = "being cool"
+
+/obj/item/book/granter/trait/already_known(mob/user)
+ if(!granted_trait)
+ return TRUE
+ if(HAS_TRAIT(user, granted_trait))
+ to_chat(user, "You already have all the insight you need about [traitname].")
+ return TRUE
+ return FALSE
+
+/obj/item/book/granter/trait/on_reading_start(mob/user)
+ to_chat(user, "You start reading about [traitname]...")
+
+/obj/item/book/granter/trait/on_reading_finished(mob/user)
+ to_chat(user, "You feel like you've got a good handle on [traitname]!")
+ ADD_TRAIT(user, granted_trait, BOOK_TRAIT)
+
+/obj/item/book/granter/trait/rifleman
+ name = "\proper the Neo-Russian Rifleman\'s Primer"
+ desc = "A book with stains of vodka and...blood? The back is hard to read, but says something about bolt-actions. Or pump-actions. Both, maybe."
+ oneuse = FALSE
+ granted_trait = TRAIT_FAST_PUMP
+ traitname = "riflery"
+ icon_state = "book1"
+ remarks = list("One smooth motion...", "Palm the bolt...", "Push up, rotate back, push forward, down...", "Don't slap yourself with the bolt...", "Wait, what's this about pumping?", "Who just scribbled \"Z\" and \"LMB\" on this page?")
///ACTION BUTTONS///
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 863a825771..f7bf659f0a 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -110,6 +110,9 @@
if(!(shield_flags & SHIELD_CAN_BASH))
to_chat(user, "[src] can't be used to shield bash!")
return FALSE
+ if(!CHECK_MOBILITY(user, MOBILITY_STAND))
+ to_chat(user, "You can't bash with [src] while on the ground!")
+ return FALSE
if(world.time < last_shieldbash + shieldbash_cooldown)
to_chat(user, "You can't bash with [src] again so soon!")
return FALSE
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 50e9b94e97..adc4970175 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -100,6 +100,7 @@
if(!H.bleedsuppress && H.bleed_rate) //so you can't stack bleed suppression
H.suppress_bloodloss(stop_bleeding)
to_chat(user, "You stop the bleeding of [M]!")
+ H.adjustBruteLoss(-(heal_brute))
return TRUE
to_chat(user, "You can not use \the [src] on [M]!")
@@ -127,6 +128,12 @@
stop_bleeding = 900
heal_brute = 0
+/obj/item/stack/medical/gauze/adv
+ name = "sterilized medical gauze"
+ desc = "A roll of elastic sterilized cloth that is extremely effective at stopping bleeding, heals minor wounds and cleans them."
+ singular_name = "sterilized medical gauze"
+ self_delay = 5
+
/obj/item/stack/medical/gauze/cyborg
custom_materials = null
is_cyborg = 1
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index dc6f5f701e..97b7ee8a38 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -695,7 +695,10 @@
/obj/item/gun/ballistic/revolver,
/obj/item/ammo_box,
/obj/item/toy/gun,
- /obj/item/gun/energy/e_gun/mini
+ /obj/item/gun/energy/e_gun/mini,
+ /obj/item/gun/ballistic/automatic/magrifle/pistol,
+ /obj/item/gun/energy/disabler,
+ /obj/item/gun/energy/taser
))
/obj/item/storage/belt/holster/full/PopulateContents()
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index d8e507050b..ec443d4e48 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -1117,9 +1117,9 @@
desc = "A box containing a gift for worthy golems."
/obj/item/storage/box/rndboards/PopulateContents()
- new /obj/item/circuitboard/machine/protolathe(src)
+ new /obj/item/circuitboard/machine/protolathe/offstation(src)
new /obj/item/circuitboard/machine/destructive_analyzer(src)
- new /obj/item/circuitboard/machine/circuit_imprinter(src)
+ new /obj/item/circuitboard/machine/circuit_imprinter/offstation(src)
new /obj/item/circuitboard/computer/rdconsole(src)
/obj/item/storage/box/silver_sulf
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index cf0afb638b..ffa3d83304 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -294,18 +294,18 @@
name = "chameleon kit"
/obj/item/storage/box/syndie_kit/chameleon/PopulateContents()
- new /obj/item/clothing/under/chameleon(src)
- new /obj/item/clothing/suit/chameleon(src)
- new /obj/item/clothing/gloves/chameleon(src)
- new /obj/item/clothing/shoes/chameleon(src)
- new /obj/item/clothing/glasses/chameleon(src)
- new /obj/item/clothing/head/chameleon(src)
- new /obj/item/clothing/mask/chameleon(src)
- new /obj/item/storage/backpack/chameleon(src)
- new /obj/item/radio/headset/chameleon(src)
- new /obj/item/stamp/chameleon(src)
- new /obj/item/pda/chameleon(src)
- new /obj/item/clothing/neck/cloak/chameleon(src)
+ new /obj/item/clothing/under/chameleon/syndicate(src)
+ new /obj/item/clothing/suit/chameleon/syndicate(src)
+ new /obj/item/clothing/gloves/chameleon/insulated/syndicate(src)
+ new /obj/item/clothing/shoes/chameleon/syndicate(src)
+ new /obj/item/clothing/glasses/chameleon/syndicate(src)
+ new /obj/item/clothing/head/chameleon/syndicate(src)
+ new /obj/item/clothing/mask/chameleon/syndicate(src)
+ new /obj/item/storage/backpack/chameleon/syndicate(src)
+ new /obj/item/radio/headset/chameleon/syndicate(src)
+ new /obj/item/stamp/chameleon/syndicate(src)
+ new /obj/item/pda/chameleon/syndicate(src)
+ new /obj/item/clothing/neck/cloak/chameleon/syndicate(src)
//5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars.
//Not counting the damage it will do while embedded (2*4 = 8, at 15% chance)
@@ -510,4 +510,4 @@
new /obj/item/clothing/under/chameleon(src)
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src)
new /obj/item/lighter(src)
-
+
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index f592055338..e81294ceea 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -52,7 +52,7 @@
ion_trail.start()
RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react)
if(full_speed)
- user.add_movespeed_modifier(MOVESPEED_ID_JETPACK, priority=100, multiplicative_slowdown=-2, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK)
+ user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed)
/obj/item/tank/jetpack/proc/turn_off(mob/user)
on = FALSE
@@ -60,7 +60,7 @@
icon_state = initial(icon_state)
ion_trail.stop()
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
- user.remove_movespeed_modifier(MOVESPEED_ID_JETPACK)
+ user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed)
/obj/item/tank/jetpack/proc/move_react(mob/user)
allow_thrust(0.01, user)
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 8496a8a216..2d132e4eef 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -303,7 +303,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
custom_materials = list(/datum/material/iron=500, /datum/material/glass=500)
resistance_flags = FIRE_PROOF
-
/obj/item/switchblade
name = "switchblade"
icon_state = "switchblade"
@@ -639,6 +638,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
w_class = WEIGHT_CLASS_SMALL
//Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc.
var/list/strong_against
+ var/list/spider_panic
/obj/item/melee/flyswatter/Initialize()
. = ..()
@@ -648,7 +648,10 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/mob/living/simple_animal/cockroach,
/obj/item/queen_bee
))
-
+ spider_panic = typecacheof(list(
+ /mob/living/simple_animal/banana_spider,
+ /mob/living/simple_animal/hostile/poison/giant_spider,
+ ))
/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
. = ..()
@@ -659,6 +662,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(istype(target, /mob/living/))
var/mob/living/bug = target
bug.death(1)
+ if(is_type_in_typecache(target, spider_panic))
+ to_chat(user, "You easily land a critical blow on the [target].")
+ if(istype(target, /mob/living/))
+ var/mob/living/bug = target
+ bug.adjustBruteLoss(-35) //What kinda mad man would go into melee with a spider?!
else
qdel(target)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 58d72e6ee0..05798df953 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -77,6 +77,7 @@
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson/engine(src)
new /obj/item/storage/box/emptysandbags(src)
+ new /obj/item/cartridge/engineering(src)
/obj/structure/closet/secure_closet/atmospherics
name = "\proper atmospheric technician's locker"
@@ -97,6 +98,7 @@
new /obj/item/clothing/head/hardhat/atmos(src)
new /obj/item/clothing/glasses/meson/engine/tray(src)
new /obj/item/extinguisher/advanced(src)
+ new /obj/item/cartridge/atmos(src)
/*
* Empty lockers
diff --git a/code/game/world.dm b/code/game/world.dm
index bee595047f..1d719ee138 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -298,8 +298,8 @@ GLOBAL_LIST(topic_status_cache)
if(SSmapping.config) // this just stops the runtime, honk.
features += "[SSmapping.config.map_name]" //CIT CHANGE - makes the hub entry display the current map
- if(get_security_level())//CIT CHANGE - makes the hub entry show the security level
- features += "[get_security_level()] alert"
+ if(NUM2SECLEVEL(GLOB.security_level))//CIT CHANGE - makes the hub entry show the security level
+ features += "[NUM2SECLEVEL(GLOB.security_level)] alert"
if (n > 1)
features += "~[n] players"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 4a7e818125..a2e2b3c122 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -429,6 +429,10 @@
for(var/datum/dynamic_ruleset/roundstart/rule in GLOB.dynamic_forced_roundstart_ruleset)
dat += {"-> [rule.name] <-
"}
dat += "(Clear Rulesets)
"
+ dat += "(Force Storyteller)
"
+ if (GLOB.dynamic_forced_storyteller)
+ var/datum/dynamic_storyteller/S = GLOB.dynamic_forced_storyteller
+ dat += "-> [initial(S.name)] <-
"
dat += "(Dynamic mode options)
"
else if (SSticker.IsRoundInProgress())
dat += "(Force Next Latejoin Ruleset)
"
@@ -690,7 +694,7 @@
var/prev_dynamic_voting = CONFIG_GET(flag/dynamic_voting)
CONFIG_SET(flag/dynamic_voting,!prev_dynamic_voting)
if (!prev_dynamic_voting)
- to_chat(world, "Vote is now a ranked choice of dynamic storytellers.")
+ to_chat(world, "Vote is now between dynamic storytellers.")
else
to_chat(world, "Vote is now between extended and secret.")
log_admin("[key_name(usr)] [prev_dynamic_voting ? "disabled" : "enabled"] dynamic voting.")
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index cbd429af5c..e9b8c274a8 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -81,7 +81,7 @@ GLOBAL_PROTECT(admin_verbs_admin)
)
GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel, /client/proc/DB_ban_panel, /client/proc/stickybanpanel))
GLOBAL_PROTECT(admin_verbs_ban)
-GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound, /client/proc/play_sound, /client/proc/set_round_end_sound))
+GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound, /client/proc/play_sound, /client/proc/manual_play_web_sound, /client/proc/set_round_end_sound))
GLOBAL_PROTECT(admin_verbs_sounds)
GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/cmd_admin_dress,
@@ -364,7 +364,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
log_admin("[key_name(usr)] admin ghosted.")
message_admins("[key_name_admin(usr)] admin ghosted.")
var/mob/body = mob
- body.ghostize(1)
+ body.ghostize(1, voluntary = TRUE)
if(body && !body.key)
body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin Ghost") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm
index 3de5e39ff4..c13353b7cd 100644
--- a/code/modules/admin/callproc/callproc.dm
+++ b/code/modules/admin/callproc/callproc.dm
@@ -120,7 +120,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
//adv proc call this, ya nerds
/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments)
if(target == GLOBAL_PROC)
- return call(procname)(arglist(arguments))
+ return call(text2path("/proc/[procname]"))(arglist(arguments))
else if(target != world)
return call(target, procname)(arglist(arguments))
else
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 342f2ca6eb..042a6e0fe9 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1394,6 +1394,32 @@
log_admin("[key_name(usr)] removed [rule] from the forced roundstart rulesets.")
message_admins("[key_name(usr)] removed [rule] from the forced roundstart rulesets.", 1)
+ else if(href_list["f_dynamic_storyteller"])
+ if(!check_rights(R_ADMIN))
+ return
+ if(SSticker && SSticker.mode)
+ return alert(usr, "The game has already started.", null, null, null, null)
+ if(GLOB.master_mode != "dynamic")
+ return alert(usr, "The game mode has to be dynamic mode.", null, null, null, null)
+ var/list/choices = list()
+ for(var/T in config.storyteller_cache)
+ var/datum/dynamic_storyteller/S = T
+ choices[initial(S.name)] = T
+ var/choice = choices[input("Select storyteller:", "Storyteller", "Classic") as null|anything in choices]
+ if(choice)
+ GLOB.dynamic_forced_storyteller = choice
+ log_admin("[key_name(usr)] forced the storyteller to [GLOB.dynamic_forced_storyteller].")
+ message_admins("[key_name(usr)] forced the storyteller to [GLOB.dynamic_forced_storyteller].")
+ Game()
+
+ else if(href_list["f_dynamic_storyteller_clear"])
+ if(!check_rights(R_ADMIN))
+ return
+ GLOB.dynamic_forced_storyteller = null
+ Game()
+ log_admin("[key_name(usr)] cleared the forced storyteller. The mode will pick one as normal.")
+ message_admins("[key_name(usr)] cleared the forced storyteller. The mode will pick one as normal.", 1)
+
else if(href_list["f_dynamic_latejoin"])
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm
index 066c38bcba..e7b9342645 100644
--- a/code/modules/admin/verbs/playsound.dm
+++ b/code/modules/admin/verbs/playsound.dm
@@ -138,6 +138,49 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Internet Sound")
+/client/proc/manual_play_web_sound()
+ set category = "Fun"
+ set name = "Manual Play Internet Sound"
+ if(!check_rights(R_SOUNDS))
+ return
+
+ var/web_sound_input = input("Enter content stream URL (fetch this from local youtube-dl!)", "Play Internet Sound via direct URL") as text|null
+ if(istext(web_sound_input))
+ if(!length(web_sound_input))
+ log_admin("[key_name(src)] stopped web sound")
+ message_admins("[key_name(src)] stopped web sound")
+ var/mob/M
+ for(var/i in GLOB.player_list)
+ M = i
+ M?.client?.chatOutput?.stopMusic()
+ return
+ else
+ if(web_sound_input && !findtext(web_sound_input, GLOB.is_http_protocol))
+ to_chat(src, "BLOCKED: Content URL not using http(s) protocol")
+ return
+ var/freq = input(usr, "What frequency would you like the sound to play at?",, 1) as null|num
+ if(isnull(freq))
+ return
+ if(!freq)
+ freq = 1
+ SSblackbox.record_feedback("nested tally", "played_url", 1, list("[ckey]", "[web_sound_input]"))
+ var/logstr = "[key_name(src)] played web sound at freq [freq]: [web_sound_input]"
+ log_admin(logstr)
+ message_admins(logstr)
+ var/mob/M
+ var/client/C
+ var/datum/chatOutput/O
+ for(var/i in GLOB.player_list)
+ M = i
+ C = M.client
+ if(!(C?.prefs?.toggles & SOUND_MIDI))
+ continue
+ O = C.chatOutput
+ if(!O || O.broken || !O.loaded)
+ continue
+ O.sendMusic(web_sound_input, freq)
+ SSblackbox.record_feedback("tally", "admin_verb", 1, "Manual Play Internet Sound")
+
/client/proc/set_round_end_sound(S as sound)
set category = "Fun"
set name = "Set Round End Sound"
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index ef8a63a728..5530225130 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1379,3 +1379,47 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
else
message_admins("[key_name_admin(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name_admin(C)]")
log_admin("[key_name(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name(C)]")
+
+/// Allow admin to add or remove traits of datum
+/datum/admins/proc/modify_traits(datum/D)
+ if(!D)
+ return
+
+ var/add_or_remove = input("Remove/Add?", "Trait Remove/Add") as null|anything in list("Add","Remove")
+ if(!add_or_remove)
+ return
+ var/list/availible_traits = list()
+
+ switch(add_or_remove)
+ if("Add")
+ for(var/key in GLOB.traits_by_type)
+ if(istype(D,key))
+ availible_traits += GLOB.traits_by_type[key]
+ if("Remove")
+ if(!GLOB.trait_name_map)
+ GLOB.trait_name_map = generate_trait_name_map()
+ for(var/trait in D.status_traits)
+ var/name = GLOB.trait_name_map[trait] || trait
+ availible_traits[name] = trait
+
+ var/chosen_trait = input("Select trait to modify", "Trait") as null|anything in sortList(availible_traits)
+ if(!chosen_trait)
+ return
+ chosen_trait = availible_traits[chosen_trait]
+
+ var/source = "adminabuse"
+ switch(add_or_remove)
+ if("Add") //Not doing source choosing here intentionally to make this bit faster to use, you can always vv it.
+ ADD_TRAIT(D,chosen_trait,source)
+ if("Remove")
+ var/specific = input("All or specific source ?", "Trait Remove/Add") as null|anything in list("All","Specific")
+ if(!specific)
+ return
+ switch(specific)
+ if("All")
+ source = null
+ if("Specific")
+ source = input("Source to be removed","Trait Remove/Add") as null|anything in sortList(D.status_traits[chosen_trait])
+ if(!source)
+ return
+ REMOVE_TRAIT(D,chosen_trait,source)
diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm
index a4ed4d45bd..5f80b3a5e4 100644
--- a/code/modules/admin/view_variables/modify_variables.dm
+++ b/code/modules/admin/view_variables/modify_variables.dm
@@ -194,9 +194,10 @@ GLOBAL_PROTECT(VVpixelmovement)
else
variable = L[index]
//EXPERIMENTAL - Keep old associated value while modifying key, if any
- var/found = L[variable]
- if(!isnull(found))
- old_assoc_value = found
+ if(IS_VALID_ASSOC_KEY(variable))
+ var/found = L[variable]
+ if(!isnull(found))
+ old_assoc_value = found
//
default = vv_get_class(objectvar, variable)
diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm
index 2a0f3d7302..d6e4c2b944 100644
--- a/code/modules/admin/view_variables/topic_basic.dm
+++ b/code/modules/admin/view_variables/topic_basic.dm
@@ -47,5 +47,33 @@
usr.client.debug_variables(src)
if(href_list[VV_HK_MARK])
usr.client.mark_datum(target)
+ if(href_list[VV_HK_ADDCOMPONENT])
+ if(!check_rights(NONE))
+ return
+ var/list/names = list()
+ var/list/componentsubtypes = subtypesof(/datum/component)
+ names += "---Components---"
+ names += componentsubtypes
+ names += "---Elements---"
+ names += subtypesof(/datum/element)
+ var/result = input(usr, "Choose a component/element to add","better know what ur fuckin doin pal") as null|anything in names
+ if(!usr || !result || result == "---Components---" || result == "---Elements---")
+ return
+ if(QDELETED(src))
+ to_chat(usr, "That thing doesn't exist anymore!")
+ return
+ var/list/lst = get_callproc_args()
+ if(!lst)
+ return
+ var/datumname = "error"
+ lst.Insert(1, result)
+ if(result in componentsubtypes)
+ datumname = "component"
+ target._AddComponent(lst)
+ else
+ datumname = "element"
+ target._AddElement(lst)
+ log_admin("[key_name(usr)] has added [result] [datumname] to [key_name(src)].")
+ message_admins("[key_name_admin(usr)] has added [result] [datumname] to [key_name_admin(src)].")
if(href_list[VV_HK_CALLPROC])
usr.client.callproc_datum(target)
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index 0d30ebe992..d9ae678bb9 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -6,6 +6,7 @@
status = ORGAN_ROBOTIC
beating = TRUE
organ_flags = ORGAN_NO_SPOIL
+ no_pump = TRUE
var/true_name = "baseline placebo referencer"
var/cooldown_low = 300
var/cooldown_high = 300
@@ -92,6 +93,7 @@
update_gland_hud()
/obj/item/organ/heart/gland/on_life()
+ . = ..()
if(!beating)
// alien glands are immune to stopping.
beating = TRUE
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
index 3bfc76322d..1867be1594 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
@@ -14,10 +14,10 @@
set waitfor = FALSE // Don't make on_gain() wait for this function to finish. This lets this code run on the side.
var/notice_healing
while(owner && !AmFinalDeath()) // owner.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) == src
- if(owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_DEATHCOMA)) // Deduct Blood
+ if(owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_FAKEDEATH)) // Deduct Blood
AddBloodVolume(passive_blood_drain) // -.1 currently
if(HandleHealing(1)) // Heal
- if(notice_healing == FALSE && owner.current.blood_volume > 0)
+ if(!notice_healing && owner.current.blood_volume > 0)
to_chat(owner, "The power of your blood begins knitting your wounds...")
notice_healing = TRUE
else if(notice_healing == TRUE)
@@ -25,7 +25,7 @@
HandleStarving() // Death
HandleDeath() // Standard Update
update_hud()// Daytime Sleep in Coffin
- if(SSticker.mode.is_daylight() && !HAS_TRAIT_FROM(owner.current, TRAIT_DEATHCOMA, "bloodsucker"))
+ if(SSticker.mode.is_daylight() && !HAS_TRAIT_FROM(owner.current, TRAIT_FAKEDEATH, "bloodsucker"))
if(istype(owner.current.loc, /obj/structure/closet/crate/coffin))
Torpor_Begin()
// Wait before next pass
@@ -83,7 +83,7 @@
// NOTE: Mult of 0 is just a TEST to see if we are injured and need to go into Torpor!
//It is called from your coffin on close (by you only)
var/actual_regen = regen_rate + additional_regen
- if(poweron_masquerade == TRUE || owner.current.AmStaked())
+ if(poweron_masquerade|| owner.current.AmStaked())
return FALSE
if(owner.current.reagents.has_reagent(/datum/reagent/consumable/garlic))
return FALSE
@@ -101,8 +101,8 @@
var/mob/living/carbon/C = owner.current
var/costMult = 1 // Coffin makes it cheaper
var/fireheal = 0 // BURN: Heal in Coffin while Fakedeath, or when damage above maxhealth (you can never fully heal fire)
- var/amInCoffinWhileTorpor = istype(C.loc, /obj/structure/closet/crate/coffin) && (mult == 0 || HAS_TRAIT(C, TRAIT_FAKEDEATH)) // Check for mult 0 OR death coma. (mult 0 means we're testing from coffin)
- if(amInCoffinWhileTorpor)
+ // Check for mult 0 OR death coma. (mult 0 means we're testing from coffin)
+ if(istype(C.loc, /obj/structure/closet/crate/coffin) && (mult == 0 || HAS_TRAIT(C, TRAIT_FAKEDEATH)))
mult *= 4 // Increase multiplier if we're sleeping in a coffin.
fireheal = min(C.getFireLoss(), regen_rate) // NOTE: Burn damage ONLY heals in torpor.
C.ExtinguishMob()
@@ -112,6 +112,9 @@
CheckVampOrgans() // Heart, Eyes
if(check_limbs(costMult))
return TRUE
+ else if(owner.current.stat >= UNCONSCIOUS) //Faster regeneration and slight burn healing while unconcious
+ mult *= 2
+ fireheal = min(C.getFireLoss(), regen_rate * 0.2)
// BRUTE: Always Heal
var/bruteheal = min(C.getBruteLoss(), actual_regen)
@@ -120,8 +123,6 @@
if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return.
if(mult == 0)
return TRUE
- if(owner.current.stat >= UNCONSCIOUS) //Faster regeneration while unconcious, so you dont have to wait all day
- mult *= 2
// We have damage. Let's heal (one time)
C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body.
C.adjustFireLoss(-fireheal * mult, forced = TRUE)
@@ -146,12 +147,6 @@
to_chat(C, "Your flesh knits as it regrows your [L]!")
playsound(C, 'sound/magic/demon_consume.ogg', 50, TRUE)
return TRUE
- /*for(var/obj/item/bodypart/BP in C.bodyparts)
- if(!istype(BP) && !BP.status == 2)
- return FALSE
- to_chat(C, "Your body expels the [BP]!")
- BP.drop_limb()
- return TRUE */
/datum/antagonist/bloodsucker/proc/CureDisabilities()
var/mob/living/carbon/C = owner.current
@@ -176,7 +171,7 @@
// EMPTY: Frenzy!
// BLOOD_VOLUME_GOOD: [336] Pale (handled in bloodsucker_integration.dm
// BLOOD_VOLUME_BAD: [224] Jitter
- if(owner.current.blood_volume < BLOOD_VOLUME_BAD && !prob(0.5))
+ if(owner.current.blood_volume < BLOOD_VOLUME_BAD && !prob(0.5 && HAS_TRAIT(owner, TRAIT_FAKEDEATH)) && !poweron_masquerade)
owner.current.Jitter(3)
// BLOOD_VOLUME_SURVIVE: [122] Blur Vision
if(owner.current.blood_volume < BLOOD_VOLUME_BAD / 2)
@@ -230,16 +225,16 @@
Torpor_Begin()
to_chat(owner, "Your immortal body will not yet relinquish your soul to the abyss. You enter Torpor.")
sleep(30) //To avoid spam
- if(poweron_masquerade == TRUE)
+ if(poweron_masquerade)
to_chat(owner, "Your wounds will not heal until you disable the Masquerade power.")
// End Torpor:
else // No damage, OR toxin healed AND brute healed and NOT in coffin (since you cannot heal burn)
if(total_damage <= 0 || total_toxloss <= 0 && total_brute <= 0 && !istype(owner.current.loc, /obj/structure/closet/crate/coffin))
- // Not Daytime, Not in Torpor
- if(!SSticker.mode.is_daylight() && HAS_TRAIT_FROM(owner.current, TRAIT_FAKEDEATH, "bloodsucker"))
+ // Not Daytime, Not in Torpor, enough health to not die the moment you end torpor
+ if(!SSticker.mode.is_daylight() && HAS_TRAIT_FROM(owner.current, TRAIT_FAKEDEATH, "bloodsucker") && total_damage < owner.current.getMaxHealth())
Torpor_End()
// Fake Unconscious
- if(poweron_masquerade == TRUE && total_damage >= owner.current.getMaxHealth() - HEALTH_THRESHOLD_FULLCRIT)
+ if(poweron_masquerade && total_damage >= owner.current.getMaxHealth() - HEALTH_THRESHOLD_FULLCRIT)
owner.current.Unconscious(20, 1)
/datum/antagonist/bloodsucker/proc/Torpor_Begin(amInCoffin = FALSE)
@@ -249,6 +244,7 @@
ADD_TRAIT(owner.current, TRAIT_NODEATH, "bloodsucker") // Without this, you'll just keep dying while you recover.
ADD_TRAIT(owner.current, TRAIT_RESISTHIGHPRESSURE, "bloodsucker") // So you can heal in space. Otherwise you just...heal forever.
ADD_TRAIT(owner.current, TRAIT_RESISTLOWPRESSURE, "bloodsucker")
+ owner.current.Jitter(0)
// Visuals
owner.current.update_sight()
owner.current.reload_fullscreen()
@@ -256,6 +252,9 @@
for(var/datum/action/bloodsucker/power in powers)
if(power.active && !power.can_use_in_torpor)
power.DeactivatePower()
+ if(owner.current.suiciding)
+ owner.current.suiciding = FALSE //Youll die but not for long.
+ to_chat(owner.current, "Your body keeps you going, even as you try to end yourself.")
/datum/antagonist/bloodsucker/proc/Torpor_End()
owner.current.stat = SOFT_CRIT
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm b/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm
index b7d98c6783..43163f6a70 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm
@@ -45,15 +45,15 @@
// (FINAL LIL WARNING)
while(time_til_cycle > 5)
sleep(10)
- if (cancel_me)
+ if(cancel_me)
return
//sleep(TIME_BLOODSUCKER_DAY_FINAL_WARN - 50)
warn_daylight(3,"Seek cover, for Sol rises!")
// Part 3: Night Ending
- while (time_til_cycle > 0)
+ while(time_til_cycle > 0)
sleep(10)
- if (cancel_me)
+ if(cancel_me)
return
//sleep(50)
warn_daylight(4,"Solar flares bombard the station with deadly UV light!
Stay in cover for the next [TIME_BLOODSUCKER_DAY / 60] minutes or risk Final Death!",\
@@ -69,11 +69,11 @@
while(time_til_cycle > 0)
punish_vamps()
sleep(TIME_BLOODSUCKER_BURN_INTERVAL)
- if (cancel_me)
+ if(cancel_me)
return
//daylight_time -= TIME_BLOODSUCKER_BURN_INTERVAL
// Issue Level Up!
- if(!issued_XP && time_til_cycle <= 15)
+ if(!issued_XP && time_til_cycle <= 5)
issued_XP = TRUE
vamps_rank_up()
diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
index 946be31ed6..2e9d3c1788 100644
--- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
+++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
@@ -227,7 +227,7 @@
// Traits
for(var/T in defaultTraits)
REMOVE_TRAIT(owner.current, T, BLOODSUCKER_TRAIT)
- if(had_toxlover == TRUE)
+ if(had_toxlover)
ADD_TRAIT(owner.current, TRAIT_TOXINLOVER, SPECIES_TRAIT)
// Traits: Species
diff --git a/code/modules/antagonists/bloodsucker/powers/cloak.dm b/code/modules/antagonists/bloodsucker/powers/cloak.dm
index a616c39923..347700ca9a 100644
--- a/code/modules/antagonists/bloodsucker/powers/cloak.dm
+++ b/code/modules/antagonists/bloodsucker/powers/cloak.dm
@@ -18,14 +18,11 @@
. = ..()
if(!.)
return
-
// must have nobody around to see the cloak
- var/watchers = viewers(9,get_turf(owner))
- for(var/mob/living/M in watchers)
+ for(var/mob/living/M in viewers(9, owner))
if(M != owner)
to_chat(owner, "You may only vanish into the shadows unseen.")
return FALSE
-
return TRUE
/datum/action/bloodsucker/cloak/ActivatePower()
diff --git a/code/modules/antagonists/bloodsucker/powers/masquerade.dm b/code/modules/antagonists/bloodsucker/powers/masquerade.dm
index 7d41899dc2..d83f938e3f 100644
--- a/code/modules/antagonists/bloodsucker/powers/masquerade.dm
+++ b/code/modules/antagonists/bloodsucker/powers/masquerade.dm
@@ -52,6 +52,7 @@
REMOVE_TRAIT(user, TRAIT_NOHARDCRIT, "bloodsucker")
REMOVE_TRAIT(user, TRAIT_NOSOFTCRIT, "bloodsucker")
REMOVE_TRAIT(user, TRAIT_VIRUSIMMUNE, "bloodsucker")
+ REMOVE_TRAIT(user, TRAIT_NOBREATH, "bloodsucker")
var/obj/item/organ/heart/vampheart/H = user.getorganslot(ORGAN_SLOT_HEART)
var/obj/item/organ/eyes/vassal/bloodsucker/E = user.getorganslot(ORGAN_SLOT_EYES)
E.flash_protect = 0
@@ -93,6 +94,7 @@
ADD_TRAIT(user, TRAIT_NOHARDCRIT, "bloodsucker")
ADD_TRAIT(user, TRAIT_NOSOFTCRIT, "bloodsucker")
ADD_TRAIT(user, TRAIT_VIRUSIMMUNE, "bloodsucker")
+ ADD_TRAIT(user, TRAIT_NOBREATH, "bloodsucker")
// HEART
var/obj/item/organ/heart/H = user.getorganslot(ORGAN_SLOT_HEART)
diff --git a/code/modules/antagonists/bloodsucker/powers/trespass.dm b/code/modules/antagonists/bloodsucker/powers/trespass.dm
index 45d1dda3ef..c91b924bb7 100644
--- a/code/modules/antagonists/bloodsucker/powers/trespass.dm
+++ b/code/modules/antagonists/bloodsucker/powers/trespass.dm
@@ -28,7 +28,7 @@
/datum/action/bloodsucker/targeted/trespass/CheckValidTarget(atom/A)
// Can't target my tile
- if (A == get_turf(owner) || get_turf(A) == get_turf(owner))
+ if(A == get_turf(owner) || get_turf(A) == get_turf(owner))
return FALSE
return TRUE // All we care about is destination. Anything you click is fine.
@@ -43,13 +43,13 @@
// Are either tiles WALLS?
var/turf/from_turf = get_turf(owner)
var/this_dir // = get_dir(from_turf, target_turf)
- for (var/i=1 to 2)
+ for(var/i=1 to 2)
// Keep Prev Direction if we've reached final turf
- if (from_turf != final_turf)
+ if(from_turf != final_turf)
this_dir = get_dir(from_turf, final_turf) // Recalculate dir so we don't overshoot on a diagonal.
from_turf = get_step(from_turf, this_dir)
// ERROR! Wall!
- if (iswallturf(from_turf))
+ if(iswallturf(from_turf))
if (display_error)
var/wallwarning = (i == 1) ? "in the way" : "at your destination"
to_chat(owner, "There is a solid wall [wallwarning].")
@@ -84,7 +84,7 @@
user.next_move = world.time + mist_delay
user.Stun(mist_delay, ignore_canstun = TRUE)
user.notransform = TRUE
- user.density = 0
+ user.density = FALSE
var/invis_was = user.invisibility
user.invisibility = INVISIBILITY_MAXIMUM
@@ -94,7 +94,7 @@
sleep(mist_delay / 2)
// Move & Freeze
- if (isturf(target_turf))
+ if(isturf(target_turf))
do_teleport(owner, target_turf, no_effects=TRUE, channel = TELEPORT_CHANNEL_QUANTUM) // in teleport.dm?
user.next_move = world.time + mist_delay / 2
user.Stun(mist_delay / 2, ignore_canstun = TRUE)
diff --git a/code/modules/antagonists/bloodsucker/powers/veil.dm b/code/modules/antagonists/bloodsucker/powers/veil.dm
index 671f88f2c1..422d645ad2 100644
--- a/code/modules/antagonists/bloodsucker/powers/veil.dm
+++ b/code/modules/antagonists/bloodsucker/powers/veil.dm
@@ -93,7 +93,7 @@
H.socks = random_socks(H.gender)
//H.eye_color = random_eye_color()
REMOVE_TRAIT(H, TRAIT_DISFIGURED, null) //
- H.dna.features = random_features(H.dna.species?.id)
+ H.dna.features = random_features(H.dna.species?.id, H.gender)
// Apply Appearance
H.update_body(TRUE) // Outfit and underwear, also body and privates.
diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm
index a98700683e..d8572f04cc 100644
--- a/code/modules/antagonists/changeling/powers/strained_muscles.dm
+++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm
@@ -21,7 +21,7 @@
to_chat(user, "Our muscles tense and strengthen.")
changeling.chem_recharge_slowdown += 0.5
else
- user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES)
+ user.remove_movespeed_modifier(/datum/movespeed_modifier/strained_muscles)
to_chat(user, "Our muscles relax.")
changeling.chem_recharge_slowdown -= 0.5
if(stacks >= 20)
@@ -36,12 +36,12 @@
/obj/effect/proc_holder/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user)
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
while(active)
- user.add_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ user.add_movespeed_modifier(/datum/movespeed_modifier/strained_muscles)
if(user.stat != CONSCIOUS || user.staminaloss >= 90)
active = !active
to_chat(user, "Our muscles relax without the energy to strengthen them.")
user.DefaultCombatKnockdown(40)
- user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES)
+ user.remove_movespeed_modifier(/datum/movespeed_modifier/strained_muscles)
changeling.chem_recharge_slowdown -= 0.5
break
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index fcb57a5a2e..ffab8174e5 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -539,7 +539,7 @@
if(SSshuttle.emergency.mode == SHUTTLE_CALL)
var/cursetime = 1800
var/timer = SSshuttle.emergency.timeLeft(1) + cursetime
- var/security_num = seclevel2num(get_security_level())
+ var/security_num = SECLEVEL2NUM(NUM2SECLEVEL(GLOB.security_level))
var/set_coefficient = 1
switch(security_num)
if(SEC_LEVEL_GREEN)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 5552efef1f..dc44a3b2d8 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -41,7 +41,7 @@
STOP_PROCESSING(SSobj, core)
update_icon()
GLOB.poi_list |= src
- previous_level = get_security_level()
+ previous_level = NUM2SECLEVEL(GLOB.security_level)
/obj/machinery/nuclearbomb/Destroy()
safety = FALSE
@@ -419,7 +419,7 @@
return
timing = !timing
if(timing)
- previous_level = get_security_level()
+ previous_level = NUM2SECLEVEL(GLOB.security_level)
detonation_timer = world.time + (timer_set * 10)
for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
S.switch_mode_to(TRACK_INFILTRATOR)
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index 475438ba52..5d409a7fb9 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -64,8 +64,8 @@
/mob/living/simple_animal/slaughter/phasein()
. = ..()
- add_movespeed_modifier(MOVESPEED_ID_SLAUGHTER, update=TRUE, priority=100, multiplicative_slowdown=-1)
- addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, MOVESPEED_ID_SLAUGHTER, TRUE), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
+ add_movespeed_modifier(/datum/movespeed_modifier/slaughter)
+ addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, /datum/movespeed_modifier/slaughter), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
//The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index cf10f87bf8..df5e6004ba 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -48,7 +48,7 @@
var/datum/traitor_class/class = GLOB.traitor_classes[C]
var/weight = LOGISTIC_FUNCTION(1.5*class.weight,chaos_weight,class.chaos,0)
weights[C] = weight * 1000
- var/choice = pickweightAllowZero(weights)
+ var/choice = pickweight(weights, 0)
if(!choice)
choice = TRAITOR_HUMAN // it's an "easter egg"
var/datum/traitor_class/actual_class = GLOB.traitor_classes[choice]
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index 7c63266255..ff3d95598d 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -159,7 +159,7 @@
/obj/item/scrying/attack_self(mob/user)
to_chat(user, "You can see...everything!")
visible_message("[user] stares into [src], their eyes glazing over.")
- user.ghostize(1)
+ user.ghostize(1, voluntary = TRUE)
/////////////////////////////////////////Necromantic Stone///////////////////
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 2bcda1d400..d49a8f83c6 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -294,7 +294,7 @@
name = "Staff of Change"
desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself."
item_path = /obj/item/gun/magic/staff/change
- dynamic_requirement = 60
+ dynamic_requirement = 200
/datum/spellbook_entry/item/staffanimation
name = "Staff of Animation"
@@ -361,7 +361,7 @@
desc = "A collection of wands that allow for a wide variety of utility. Wands have a limited number of charges, so be conservative in use. Comes in a handy belt."
item_path = /obj/item/storage/belt/wands/full
category = "Defensive"
- dynamic_requirement = 60
+ dynamic_requirement = 200
/datum/spellbook_entry/item/armor
name = "Mastercrafted Armor Set"
@@ -386,7 +386,7 @@
name = "Plasma Fist"
desc = "A forbidden martial art designed on the surging power of plasma. Use it to harness the ancient power."
item_path = /obj/item/book/granter/martial/plasma_fist
- cost = 3
+ cost = 2
/datum/spellbook_entry/item/guardian
name = "Guardian Deck"
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index f98f628cab..dbe3c0b90b 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -225,6 +225,7 @@
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE))
return
target_temperature = min_temperature
+ to_chat(user,"You minimize the temperature on the [src].")
investigate_log("was set to [target_temperature] K by [key_name(usr)]", INVESTIGATE_ATMOS)
message_admins("[src.name] was minimized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
return TRUE
@@ -257,6 +258,7 @@
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE))
return
target_temperature = max_temperature
+ to_chat(user,"You maximize the temperature on the [src].")
investigate_log("was set to [target_temperature] K by [key_name(usr)]", INVESTIGATE_ATMOS)
message_admins("[src.name] was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
return TRUE
diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm
index d4c9fdbee7..6c8d8287d8 100644
--- a/code/modules/awaymissions/zlevel.dm
+++ b/code/modules/awaymissions/zlevel.dm
@@ -1,15 +1,19 @@
-// How much "space" we give the edge of the map
-GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.config.directory]/awaymissionconfig.txt"))
-/proc/createRandomZlevel()
- if(GLOB.awaydestinations.len) //crude, but it saves another var!
+/proc/createRandomZlevel(name = AWAY_MISSION_NAME, list/traits = list(ZTRAIT_AWAY = TRUE), list/potential_levels = GLOB.potential_away_levels)
+ if(GLOB.random_zlevels_generated[name])
+ stack_trace("[name] level already generated.")
+ return
+ if(!length(potential_levels))
+ stack_trace("No potential [name] level to load has been found.")
return
- if(GLOB.potentialRandomZlevels && GLOB.potentialRandomZlevels.len)
- to_chat(world, "Loading away mission...")
- var/map = pick(GLOB.potentialRandomZlevels)
- load_new_z_level(map, "Away Mission")
- to_chat(world, "Away mission loaded.")
+ var/start_time = REALTIMEOFDAY
+ var/map = pick(potential_levels)
+ if(!load_new_z_level(map, name, traits))
+ INIT_ANNOUNCE("Failed to load [name]! map filepath: [map]!")
+ return
+ INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!")
+ GLOB.random_zlevels_generated[name] = TRUE
/proc/reset_gateway_spawns(reset = FALSE)
for(var/obj/machinery/gateway/G in world)
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 9f1111e5d9..df05eee638 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -262,7 +262,15 @@
return
random_look(owner)
-/obj/item/clothing/under/chameleon
+// Forgive me for my sins...
+#define CHAMELEON_CLOTHING_DEFINE(path) \
+##path/syndicate/Initialize(mapload){\
+ . = ..();\
+ AddComponent(/datum/component/identification/syndicate, ID_COMPONENT_DEL_ON_IDENTIFY, ID_COMPONENT_EFFECT_NO_ACTIONS, ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR);\
+}\
+##path
+
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/under/chameleon)
//starts off as black
name = "black jumpsuit"
icon_state = "black"
@@ -300,7 +308,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/clothing/suit/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/suit/chameleon)
name = "armor"
desc = "A slim armored vest that protects against most types of damage."
icon_state = "armor"
@@ -329,7 +337,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/clothing/glasses/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/glasses/chameleon)
name = "Optical Meson Scanner"
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
icon_state = "meson"
@@ -357,7 +365,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/clothing/gloves/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/gloves/chameleon)
desc = "These gloves will protect the wearer from electric shock."
name = "insulated gloves"
icon_state = "yellow"
@@ -368,6 +376,9 @@
var/datum/action/item_action/chameleon/change/chameleon_action
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/gloves/chameleon/insulated)
+ siemens_coefficient = 0
+
/obj/item/clothing/gloves/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
@@ -386,7 +397,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/clothing/head/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/head/chameleon)
name = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
icon_state = "greysoft"
@@ -429,7 +440,7 @@
var/datum/action/item_action/chameleon/drone/randomise/randomise_action = new(src)
randomise_action.UpdateButtonIcon()
-/obj/item/clothing/mask/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/mask/chameleon)
name = "gas mask"
desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate
icon_state = "gas_alt"
@@ -486,7 +497,7 @@
/obj/item/clothing/mask/chameleon/drone/attack_self(mob/user)
to_chat(user, "[src] does not have a voice changer.")
-/obj/item/clothing/shoes/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/shoes/chameleon)
name = "black shoes"
icon_state = "black"
desc = "A pair of black shoes."
@@ -511,7 +522,7 @@
return
chameleon_action.emp_randomise()
-/obj/item/clothing/shoes/chameleon/noslip
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/shoes/chameleon/noslip)
name = "black shoes"
icon_state = "black"
desc = "A pair of black shoes."
@@ -521,7 +532,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/storage/backpack/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/storage/backpack/chameleon)
name = "backpack"
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -542,7 +553,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/storage/belt/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/storage/belt/chameleon)
name = "toolbelt"
desc = "Holds tools."
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -570,7 +581,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/radio/headset/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/radio/headset/chameleon)
name = "radio headset"
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -591,7 +602,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/pda/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/pda/chameleon)
name = "PDA"
var/datum/action/item_action/chameleon/change/pda/chameleon_action
@@ -613,7 +624,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/stamp/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/stamp/chameleon)
var/datum/action/item_action/chameleon/change/chameleon_action
/obj/item/stamp/chameleon/Initialize()
@@ -627,7 +638,7 @@
. = ..()
chameleon_action.emp_randomise(INFINITY)
-/obj/item/clothing/neck/cloak/chameleon
+CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/neck/cloak/chameleon)
name = "black tie"
desc = "A neosilk clip-on tie."
icon = 'icons/obj/clothing/neck.dmi'
diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm
index a7e842282c..e1212cf337 100644
--- a/code/modules/clothing/under/skirt_dress.dm
+++ b/code/modules/clothing/under/skirt_dress.dm
@@ -1,4 +1,4 @@
-/obj/item/clothing/under/dress/skirt
+/obj/item/clothing/under/dress
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
/obj/item/clothing/under/dress/skirt
@@ -182,7 +182,6 @@
icon_state = "bride_white"
item_state = "bride_white"
can_adjust = FALSE
- mutantrace_variation = NONE
/obj/item/clothing/under/dress/wedding/orange
name = "orange wedding dress"
@@ -213,7 +212,6 @@
desc = "A fancy skirt made with polychromic threads."
icon_state = "polyskirt"
item_state = "rainbow"
- mutantrace_variation = NONE
var/list/poly_colors = list("#FFFFFF", "#F08080", "#808080")
/obj/item/clothing/under/dress/skirt/polychromic/ComponentInitialize()
@@ -226,5 +224,4 @@
icon_state = "polypleat"
item_state = "rainbow"
body_parts_covered = CHEST|GROIN|ARMS
- mutantrace_variation = NONE
poly_colors = list("#8CC6FF", "#808080", "#FF3535")
diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm
index 4fc62893b5..3f61c4b45f 100644
--- a/code/modules/clothing/under/syndicate.dm
+++ b/code/modules/clothing/under/syndicate.dm
@@ -57,8 +57,7 @@
icon_state = "tactifool"
item_state = "bl_suit"
has_sensor = TRUE
- mutantrace_variation = NONE
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/syndicate/sniper
name = "Tactical turtleneck suit"
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 3b8f8de359..60f2aef629 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -22,7 +22,7 @@
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/T = pick(turfs)
- new /datum/spacevine_controller(T) //spawn a controller at turf
+ new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(30,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation
/datum/spacevine_mutation
@@ -227,13 +227,13 @@
quality = NEGATIVE
/datum/spacevine_mutation/thorns/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
- if(prob(severity) && istype(crosser) && !isvineimmune(holder))
+ if(prob(severity) && istype(crosser) && !isvineimmune(crosser))
var/mob/living/M = crosser
M.adjustBruteLoss(5)
to_chat(M, "You cut yourself on the thorny vines.")
/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
- if(prob(severity) && istype(hitter) && !isvineimmune(holder))
+ if(prob(severity) && istype(hitter) && !isvineimmune(hitter))
var/mob/living/M = hitter
M.adjustBruteLoss(5)
to_chat(M, "You cut yourself on the thorny vines.")
@@ -251,7 +251,7 @@
holder.obj_integrity = holder.max_integrity
/datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
- if(I.get_sharpness())
+ if(I?.get_sharpness())
. = expected_damage * 0.5
else
. = expected_damage
@@ -344,16 +344,17 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src, 'sound/weapons/slash.ogg', 50, 1)
+ playsound(src, 'sound/weapons/slash.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, 1)
+ playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
+ playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
-/obj/structure/spacevine/Crossed(mob/crosser)
- if(isliving(crosser))
- for(var/datum/spacevine_mutation/SM in mutations)
- SM.on_cross(src, crosser)
+/obj/structure/spacevine/Crossed(atom/movable/AM)
+ if(!isliving(AM))
+ return
+ for(var/datum/spacevine_mutation/SM in mutations)
+ SM.on_cross(src, AM)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/structure/spacevine/attack_hand(mob/user)
@@ -378,10 +379,9 @@
var/list/vine_mutations_list
var/mutativeness = 1
-/datum/spacevine_controller/New(turf/location, list/muts, potency, production)
+/datum/spacevine_controller/New(turf/location, list/muts, potency, production, datum/round_event/event = null)
vines = list()
growth_queue = list()
- spawn_spacevine_piece(location, null, muts)
START_PROCESSING(SSobj, src)
vine_mutations_list = list()
init_subtypes(/datum/spacevine_mutation/, vine_mutations_list)
@@ -428,6 +428,7 @@
for(var/datum/spacevine_mutation/SM in SV.mutations)
SM.on_birth(SV)
location.Entered(SV)
+ return SV
/datum/spacevine_controller/proc/VineDestroyed(obj/structure/spacevine/S)
S.master = null
@@ -531,14 +532,13 @@
qdel(src)
/obj/structure/spacevine/CanPass(atom/movable/mover, turf/target)
+ . = ..()
if(isvineimmune(mover))
- . = TRUE
- else
- . = ..()
+ return TRUE
/proc/isvineimmune(atom/A)
- . = FALSE
if(isliving(A))
var/mob/living/M = A
if(("vines" in M.faction) || ("plants" in M.faction))
- . = TRUE
+ return TRUE
+ return FALSE
\ No newline at end of file
diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm
index a8137acf48..1b4716b407 100644
--- a/code/modules/events/wormholes.dm
+++ b/code/modules/events/wormholes.dm
@@ -23,6 +23,9 @@
/datum/round_event/wormholes/start()
for(var/turf/open/floor/T in world)
if(is_station_level(T.z))
+ var/area/A = get_area(T)
+ if(A.outdoors)
+ continue
pick_turfs += T
for(var/i = 1, i <= number_of_wormholes, i++)
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 95b9f92873..ccce186304 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -396,6 +396,16 @@
list_reagents = list(/datum/reagent/consumable/orangejuice = 100)
foodtype = FRUIT| BREAKFAST
+/obj/item/reagent_containers/food/drinks/bottle/bio_carton
+ name = "small carton box"
+ desc = "A small biodegradable carton box made from plant biomatter."
+ icon_state = "eco_box"
+ item_state = "carton"
+ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ volume = 50
+ isGlass = FALSE
+
/obj/item/reagent_containers/food/drinks/bottle/cream
name = "milk cream"
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 7fac7ef9b6..28f3387097 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -40,14 +40,14 @@
updateUsrDialog()
/obj/machinery/biogenerator/RefreshParts()
- var/E = 0
- var/P = 0
- var/max_storage = 40
+ var/E = 0.5
+ var/P = 0.5
+ var/max_storage = 20
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
- P += B.rating
- max_storage = 40 * B.rating
+ P += B.rating * 0.5
+ max_storage = max(20 * B.rating, max_storage)
for(var/obj/item/stock_parts/manipulator/M in component_parts)
- E += M.rating
+ E += M.rating * 0.5
efficiency = E
productivity = P
max_items = max_storage
@@ -196,7 +196,7 @@
dat += "x5"
if(ispath(D.build_path, /obj/item/stack))
dat += "x10"
- dat += "([D.materials[SSmaterials.GetMaterialRef(/datum/material/biomass)]/efficiency])
"
+ dat += "([CEILING(D.materials[SSmaterials.GetMaterialRef(/datum/material/biomass)]/efficiency, 1)])
"
dat += ""
else
dat += "No container inside, please insert container.
"
@@ -214,12 +214,16 @@
to_chat(usr, "The biogenerator is in the process of working.")
return
var/S = 0
+ var/total = 0
for(var/obj/item/reagent_containers/food/snacks/grown/I in contents)
S += 5
- if(I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) < 0.1)
- points += 1*productivity
- else points += I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)*10*productivity
+ var/nutri_amount = I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
+ if(nutri_amount < 0.1)
+ total += 1*productivity
+ else
+ total += nutri_amount*10*productivity
qdel(I)
+ points += round(total)
if(S)
processing = TRUE
update_icon()
@@ -235,12 +239,13 @@
/obj/machinery/biogenerator/proc/check_cost(list/materials, multiplier = 1, remove_points = TRUE)
if(materials.len != 1 || materials[1] != SSmaterials.GetMaterialRef(/datum/material/biomass))
return FALSE
- if (materials[SSmaterials.GetMaterialRef(/datum/material/biomass)]*multiplier/efficiency > points)
+ var/cost = CEILING(materials[SSmaterials.GetMaterialRef(/datum/material/biomass)]*multiplier/efficiency, 1)
+ if (cost > points)
menustat = "nopoints"
return FALSE
else
if(remove_points)
- points -= materials[SSmaterials.GetMaterialRef(/datum/material/biomass)]*multiplier/efficiency
+ points -= cost
update_icon()
updateUsrDialog()
return TRUE
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index e144e4dbe6..ef63ba97f8 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -79,7 +79,9 @@
for(var/I in assembly_components)
var/obj/item/integrated_circuit/IC = I
- . += IC.external_examine(user)
+ var/text = IC.external_examine(user)
+ if(text)
+ . += text
if(opened)
interact(user)
diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm
index 0709b179d2..f90b584d76 100644
--- a/code/modules/integrated_electronics/core/integrated_circuit.dm
+++ b/code/modules/integrated_electronics/core/integrated_circuit.dm
@@ -36,7 +36,9 @@ a creative player the means to solve many problems. Circuits are held inside an
/obj/item/integrated_circuit/examine(mob/user)
interact(user)
. = ..()
- . += external_examine(user)
+ var/text = external_examine(user)
+ if(text)
+ . += text
// Can be called via electronic_assembly/attackby()
/obj/item/integrated_circuit/proc/additem(var/obj/item/I, var/mob/living/user)
@@ -57,7 +59,7 @@ a creative player the means to solve many problems. Circuits are held inside an
var/datum/integrated_io/activate/A = activators[k]
if(A.linked.len)
to_chat(user, "The '[A]' is connected to [A.get_linked_to_desc()].")
- any_examine(user)
+ to_chat(user, any_examine(user))
interact(user)
// This should be used when someone is examining from an 'outside' perspective, e.g. reading a screen or LED.
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index ee441c21f7..e40c278e92 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -66,6 +66,11 @@
// How much threat this job is worth in dynamic. Is subtracted if the player's not an antag, added if they are.
var/threat = 0
+ /// Starting skill levels.
+ var/list/starting_skills
+ /// Skill affinities to set
+ var/list/skill_affinities
+
//Only override this proc
//H is usually a human unless an /equip override transformed it
/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE)
@@ -142,7 +147,6 @@
return TRUE //Available in 0 days = available right now = player is old enough to play.
return FALSE
-
/datum/job/proc/available_in_days(client/C)
if(!C)
return 0
@@ -166,6 +170,17 @@
/datum/job/proc/radio_help_message(mob/M)
to_chat(M, "Prefix your message with :h to speak on your department's radio. To see other prefixes, look closely at your headset.")
+/datum/job/proc/standard_assign_skills(datum/mind/M)
+ if(!starting_skills)
+ return
+ for(var/skill in starting_skills)
+ M.skill_holder.boost_skill_value_to(skill, starting_skills[skill])
+ // do wipe affinities though
+ M.skill_holder.skill_affinities = list()
+ for(var/skill in skill_affinities)
+ M.skill_holder.skill_affinities[skill] = skill_affinities[skill]
+ UNSETEMPTY(M.skill_holder.skill_affinities) //if we didn't set any.
+
/datum/outfit/job
name = "Standard Gear"
diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm
index 44b0e90ec8..571785526b 100644
--- a/code/modules/jobs/job_types/chemist.dm
+++ b/code/modules/jobs/job_types/chemist.dm
@@ -19,6 +19,9 @@
display_order = JOB_DISPLAY_ORDER_CHEMIST
threat = 1.5
+ starting_skills = list(/datum/skill/numerical/surgery = STARTING_SKILL_SURGERY_MEDICAL)
+ skill_affinities = list(/datum/skill/numerical/surgery = STARTING_SKILL_AFFINITY_SURGERY_MEDICAL)
+
/datum/outfit/job/chemist
name = "Chemist"
jobtype = /datum/job/chemist
diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm
index 8dd7fafab3..478c33551d 100644
--- a/code/modules/jobs/job_types/chief_medical_officer.dm
+++ b/code/modules/jobs/job_types/chief_medical_officer.dm
@@ -29,6 +29,9 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
threat = 2
+ starting_skills = list(/datum/skill/numerical/surgery = STARTING_SKILL_SURGERY_MEDICAL)
+ skill_affinities = list(/datum/skill/numerical/surgery = STARTING_SKILL_AFFINITY_SURGERY_MEDICAL)
+
/datum/outfit/job/cmo
name = "Chief Medical Officer"
jobtype = /datum/job/cmo
diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm
index 2e8b18d772..4fb989f6e8 100644
--- a/code/modules/jobs/job_types/geneticist.dm
+++ b/code/modules/jobs/job_types/geneticist.dm
@@ -19,6 +19,8 @@
display_order = JOB_DISPLAY_ORDER_GENETICIST
threat = 1.5
+ starting_skills = list(/datum/skill/numerical/surgery = STARTING_SKILL_SURGERY_MEDICAL)
+
/datum/outfit/job/geneticist
name = "Geneticist"
jobtype = /datum/job/geneticist
diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm
index 3eaa2ae10a..0e8b2e645b 100644
--- a/code/modules/jobs/job_types/medical_doctor.dm
+++ b/code/modules/jobs/job_types/medical_doctor.dm
@@ -17,6 +17,9 @@
display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR
threat = 0.5
+ starting_skills = list(/datum/skill/numerical/surgery = STARTING_SKILL_SURGERY_MEDICAL)
+ skill_affinities = list(/datum/skill/numerical/surgery = STARTING_SKILL_AFFINITY_SURGERY_MEDICAL)
+
/datum/outfit/job/doctor
name = "Medical Doctor"
jobtype = /datum/job/doctor
diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm
index df6e1431ae..e8098daddc 100644
--- a/code/modules/jobs/job_types/paramedic.dm
+++ b/code/modules/jobs/job_types/paramedic.dm
@@ -19,6 +19,9 @@
threat = 0.5
+ starting_skills = list(/datum/skill/numerical/surgery = STARTING_SKILL_SURGERY_MEDICAL)
+ skill_affinities = list(/datum/skill/numerical/surgery = STARTING_SKILL_AFFINITY_SURGERY_MEDICAL)
+
/datum/outfit/job/paramedic
name = "Paramedic"
jobtype = /datum/job/paramedic
diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm
index 4ba65dff59..78f0ba4272 100644
--- a/code/modules/jobs/job_types/virologist.dm
+++ b/code/modules/jobs/job_types/virologist.dm
@@ -20,6 +20,9 @@
threat = 1.5
+ starting_skills = list(/datum/skill/numerical/surgery = STARTING_SKILL_SURGERY_MEDICAL)
+ skill_affinities = list(/datum/skill/numerical/surgery = STARTING_SKILL_AFFINITY_SURGERY_MEDICAL)
+
/datum/outfit/job/virologist
name = "Virologist"
jobtype = /datum/job/virologist
diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm
index 3e361179de..873c10fc02 100644
--- a/code/modules/mapping/map_template.dm
+++ b/code/modules/mapping/map_template.dm
@@ -55,11 +55,11 @@
SSmachines.setup_template_powernets(cables)
SSair.setup_template_machinery(atmos_machines)
-/datum/map_template/proc/load_new_z()
+/datum/map_template/proc/load_new_z(list/traits = list(ZTRAIT_AWAY = TRUE))
var/x = round((world.maxx - width)/2)
var/y = round((world.maxy - height)/2)
- var/datum/space_level/level = SSmapping.add_new_zlevel(name, list(ZTRAIT_AWAY = TRUE))
+ var/datum/space_level/level = SSmapping.add_new_zlevel(name, traits)
var/datum/parsed_map/parsed = load_map(file(mappath), x, y, level.z_value, no_changeturf=(SSatoms.initialized == INITIALIZATION_INSSATOMS), placeOnTop=TRUE)
var/list/bounds = parsed.bounds
if(!bounds)
@@ -121,6 +121,6 @@
//for your ever biggening badminnery kevinz000
//❤ - Cyberboss
-/proc/load_new_z_level(var/file, var/name)
+/proc/load_new_z_level(file, name, list/traits)
var/datum/map_template/template = new(file, name)
- template.load_new_z()
+ return template.load_new_z(traits)
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index c14aa097bb..47a1d84f58 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -65,7 +65,7 @@
qdel(src)
/obj/item/organ/regenerative_core/on_life()
- ..()
+ . = ..()
if(owner.health < owner.crit_threshold)
ui_action_click()
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 35b1a69761..f7e1f24b63 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -392,6 +392,8 @@
character.update_parallax_teleport()
+ job.standard_assign_skills(character.mind)
+
SSticker.minds += character.mind
var/mob/living/carbon/human/humanc
diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm
index b669e30a06..317efc2c1f 100644
--- a/code/modules/mob/dead/new_player/preferences_setup.dm
+++ b/code/modules/mob/dead/new_player/preferences_setup.dm
@@ -23,11 +23,7 @@
if(!pref_species)
var/rando_race = pick(GLOB.roundstart_races)
pref_species = new rando_race()
- features = random_features(pref_species?.id)
- if(gender == MALE || gender != FEMALE)
- features["body_model"] = gender
- else if(gender == PLURAL)
- features["body_model"] = pick(MALE,FEMALE)
+ features = random_features(pref_species?.id, gender)
age = rand(AGE_MIN,AGE_MAX)
/datum/preferences/proc/update_preview_icon(equip_job = TRUE)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index dc7384124d..b8e56f3d7c 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -937,3 +937,20 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
spawners_menu = new(src)
spawners_menu.ui_interact(src)
+
+/mob/dead/observer/verb/game_info()
+ set name = "Game info"
+ set desc = "Shows various info relating to the game mode, antagonists etc."
+ set category = "Ghost"
+ if(!started_as_observer && can_reenter_corpse)
+ to_chat(src, "You cannot see this info unless you are an observer or you've chosen Do Not Resuscitate!")
+ return
+ var/list/stuff = list("[SSticker.mode.name]")
+ stuff += "Antagonists:\n"
+ for(var/datum/antagonist/A in GLOB.antagonists)
+ if(A.owner)
+ stuff += "[A.owner] the [A.name]"
+ var/ghost_info = SSticker.mode.ghost_info()
+ if(ghost_info)
+ stuff += ghost_info
+ to_chat(src,stuff.Join("\n"))
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index 4cb93a1b6a..90621ecd3f 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -245,23 +245,17 @@
. = adjusted_amount
*/
-/obj/item/organ/brain/on_life()
- if(damage >= BRAIN_DAMAGE_DEATH) //rip
- to_chat(owner, "The last spark of life in your brain fizzles out...")
- owner.death()
- brain_death = TRUE
- return
- ..()
-
-/obj/item/organ/brain/on_death()
- if(damage <= BRAIN_DAMAGE_DEATH) //rip
- brain_death = FALSE
- ..()
-
-
/obj/item/organ/brain/applyOrganDamage(var/d, var/maximum = maxHealth)
- ..()
-
+ . = ..()
+ if(!. || !owner)
+ return
+ if(damage >= BRAIN_DAMAGE_DEATH) //rip
+ if(owner.stat != DEAD)
+ to_chat(owner, "The last spark of life in your brain fizzles out...")
+ owner.death()
+ brain_death = TRUE
+ else
+ brain_death = FALSE
/obj/item/organ/brain/check_damage_thresholds(mob/M)
. = ..()
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index bd24a4b4c4..bf9854e0b4 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -12,6 +12,13 @@
bubble_icon = "alien"
type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/xeno
+ /// How much brute damage without armor piercing they do against mobs in melee
+ var/meleeSlashHumanPower = 20
+ /// How much power they have for DefaultCombatKnockdown when attacking humans
+ var/meleeKnockdownPower = 100
+ /// How much brute damage they do to simple animals
+ var/meleeSlashSAPower = 35
+
var/obj/item/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/has_fine_manipulation = 0
var/move_delay_add = 0 // movement delay to add
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
index 183bf07e8c..072c4e0231 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
@@ -4,6 +4,7 @@
maxHealth = 125
health = 125
icon_state = "aliend"
+ meleeKnockdownPower = 80
/mob/living/carbon/alien/humanoid/drone/Initialize()
AddAbility(new/obj/effect/proc_holder/alien/evolve(null))
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index faea8e9bbc..85204e5ab9 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -1,9 +1,12 @@
/mob/living/carbon/alien/humanoid/hunter
name = "alien hunter"
caste = "h"
- maxHealth = 125
- health = 125
+ maxHealth = 170
+ health = 170
icon_state = "alienh"
+ meleeKnockdownPower = 75
+ meleeSlashHumanPower = 20
+ meleeSlashSAPower = 45
var/obj/screen/leap_icon = null
/mob/living/carbon/alien/humanoid/hunter/create_internal_organs()
@@ -68,6 +71,7 @@
else
L.visible_message("[src] pounces on [L]!", "[src] pounces on you!")
L.DefaultCombatKnockdown(100)
+ L.Stagger(4 SECONDS)
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
step_towards(src,L)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
index 7c6443cfae..67cf6f7d25 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
@@ -1,9 +1,10 @@
/mob/living/carbon/alien/humanoid/sentinel
name = "alien sentinel"
caste = "s"
- maxHealth = 150
- health = 150
+ maxHealth = 140
+ health = 140
icon_state = "aliens"
+ meleeSlashHumanPower = 15
/mob/living/carbon/alien/humanoid/sentinel/Initialize()
AddAbility(new /obj/effect/proc_holder/alien/sneak)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 048b5062ec..c813ce40f0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -112,7 +112,6 @@
return A
return FALSE
-
/mob/living/carbon/alien/humanoid/check_breath(datum/gas_mixture/breath)
if(breath && breath.total_moles() > 0 && !sneaking)
playsound(get_turf(src), pick('sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg'), 50, 0, -5)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm
index 1d613db07a..5ebf6210d0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm
@@ -1,4 +1,3 @@
-
/mob/living/carbon/alien/humanoid/grabbedby(mob/living/carbon/user, supress_message = 0)
if(user == src && pulling && grab_state >= GRAB_AGGRESSIVE && !pulling.anchored && iscarbon(pulling))
devour_mob(pulling, devour_time = 60)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index fd6a73ae7b..67c9285377 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -1,5 +1,3 @@
-
-
/mob/living/carbon/alien/humanoid/proc/adjust_body_temperature(current, loc_temp, boost)
var/temperature = current
var/difference = abs(current-loc_temp) //get difference
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 6141a97c12..1200220ce4 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -11,6 +11,10 @@
pressure_resistance = 200 //Because big, stompy xenos should not be blown around like paper.
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 20, /obj/item/stack/sheet/animalhide/xeno = 3)
+ meleeKnockdownPower = 125
+ meleeSlashHumanPower = 30
+ meleeSlashSAPower = 60
+
var/alt_inhands_file = 'icons/mob/alienqueen.dmi'
/mob/living/carbon/alien/humanoid/royal/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE)
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index fb26a40350..93050a4f9d 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -6,6 +6,7 @@
mob_size = MOB_SIZE_SMALL
density = FALSE
hud_type = /datum/hud/larva
+ mouse_opacity = MOUSE_OPACITY_OPAQUE
maxHealth = 25
health = 25
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index b57f9653a9..8485fece85 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -77,6 +77,9 @@
alien_powers = list(/obj/effect/proc_holder/alien/transfer)
/obj/item/organ/alien/plasmavessel/on_life()
+ . = ..()
+ if(!.)
+ return
//If there are alien weeds on the ground then heal if needed or give some plasma
if(locate(/obj/structure/alien/weeds) in owner.loc)
if(owner.health >= owner.maxHealth)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 5352329f99..0e8764a372 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -23,6 +23,8 @@
/obj/item/organ/body_egg/alien_embryo/on_life()
. = ..()
+ if(!owner)
+ return
switch(stage)
if(2, 3)
if(prob(2))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 377540233f..cef445113b 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -7,6 +7,7 @@
update_body_parts() //to update the carbon's new bodyparts appearance
GLOB.carbon_list += src
blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio)
+ add_movespeed_modifier(/datum/movespeed_modifier/carbon_crawling)
/mob/living/carbon/Destroy()
//This must be done first, so the mob ghosts correctly before DNA etc is nulled
@@ -574,9 +575,9 @@
become_husk("burn")
med_hud_set_health()
if(stat == SOFT_CRIT)
- add_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE, multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN)
+ add_movespeed_modifier(/datum/movespeed_modifier/carbon_softcrit)
else
- remove_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/carbon_softcrit)
/mob/living/carbon/update_stamina()
var/stam = getStaminaLoss()
diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm
index 414f339b28..adca193ce0 100644
--- a/code/modules/mob/living/carbon/damage_procs.dm
+++ b/code/modules/mob/living/carbon/damage_procs.dm
@@ -38,7 +38,7 @@
adjustCloneLoss(damage_amount, forced = forced)
if(STAMINA)
if(BP)
- if(damage > 0 ? BP.receive_damage(0, 0, damage_amount) : BP.heal_damage(0, 0, abs(damage_amount)))
+ if(damage > 0 ? BP.receive_damage(0, 0, damage_amount) : BP.heal_damage(0, 0, abs(damage_amount), FALSE, FALSE))
update_damage_overlays()
else
adjustStaminaLoss(damage_amount, forced = forced)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 29c7321660..7f5f912ff6 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1041,7 +1041,7 @@
return FALSE
/mob/living/carbon/human/proc/clear_shove_slowdown()
- remove_movespeed_modifier(MOVESPEED_ID_SHOVE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/shove)
var/active_item = get_active_held_item()
if(is_type_in_typecache(active_item, GLOB.shove_disarming_types))
visible_message("[src.name] regains their grip on \the [active_item]!", "You regain your grip on \the [active_item]", null, COMBAT_MESSAGE_RANGE)
@@ -1050,17 +1050,17 @@
. = ..()
if(HAS_TRAIT(src, TRAIT_IGNORESLOWDOWN))
- remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN)
- remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING)
+ remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown)
+ remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying)
return
var/stambufferinfluence = (bufferedstam*(100/stambuffer))*0.2 //CIT CHANGE - makes stamina buffer influence movedelay
var/health_deficiency = ((100 + stambufferinfluence) - health + (getStaminaLoss()*0.75))//CIT CHANGE - reduces the impact of staminaloss and makes stamina buffer influence it
if(health_deficiency >= 40)
- add_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN, override = TRUE, multiplicative_slowdown = ((health_deficiency-39) / 75), blacklisted_movetypes = FLOATING|FLYING)
- add_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING, override = TRUE, multiplicative_slowdown = ((health_deficiency-39) / 25), movetypes = FLYING, blacklisted_movetypes = FLOATING)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown, TRUE, (health_deficiency-39) / 75)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying, TRUE, (health_deficiency-39) / 25)
else
- remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN)
- remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING)
+ remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown)
+ remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying)
/mob/living/carbon/human/do_after_coefficent()
. = ..()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 324420a7dd..856c57687f 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -155,7 +155,7 @@
if(M.a_intent == INTENT_HARM)
if (w_uniform)
w_uniform.add_fingerprint(M)
- var/damage = prob(90) ? 20 : 0
+ var/damage = prob(90) ? M.meleeSlashHumanPower : 0
if(!damage)
playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1)
visible_message("[M] has lunged at [src]!", \
@@ -182,10 +182,7 @@
"[M] disarmed [src]!")
else
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
- if(!lying) //CITADEL EDIT
- DefaultCombatKnockdown(100, TRUE, FALSE, 30, 25)
- else
- DefaultCombatKnockdown(100)
+ DefaultCombatKnockdown(M.meleeKnockdownPower)
log_combat(M, src, "tackled")
visible_message("[M] has tackled down [src]!", \
"[M] has tackled down [src]!")
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index a26bdd99cd..09dfa602e1 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -1,11 +1,13 @@
/mob/living/carbon/human/get_movespeed_modifiers()
var/list/considering = ..()
- . = considering
if(HAS_TRAIT(src, TRAIT_IGNORESLOWDOWN))
- for(var/id in .)
- var/list/data = .[id]
- if(data[MOVESPEED_DATA_INDEX_FLAGS] & IGNORE_NOSLOW)
- .[id] = data
+ . = list()
+ for(var/id in considering)
+ var/datum/movespeed_modifier/M = considering[id]
+ if(M.flags & IGNORE_NOSLOW || M.multiplicative_slowdown < 0)
+ .[id] = M
+ return
+ return considering
/mob/living/carbon/human/movement_delay()
. = ..()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 32e492f5fa..683c3e18fd 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -331,7 +331,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(mutant_bodyparts["meat_type"]) //I can't believe it's come to the meat
H.type_of_meat = GLOB.meat_types[H.dna.features["meat_type"]]
- C.add_movespeed_modifier(MOVESPEED_ID_SPECIES, TRUE, 100, override=TRUE, multiplicative_slowdown=speedmod, movetypes=(~FLYING))
+ C.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/species, TRUE, multiplicative_slowdown = speedmod)
SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species)
@@ -349,7 +349,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
for(var/X in inherent_traits)
REMOVE_TRAIT(C, X, SPECIES_TRAIT)
- C.remove_movespeed_modifier(MOVESPEED_ID_SPECIES)
+ C.remove_movespeed_modifier(/datum/movespeed_modifier/species)
if(mutant_bodyparts["meat_type"])
C.type_of_meat = GLOB.meat_types[C.dna.features["meat_type"]]
@@ -1299,14 +1299,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(H.overeatduration < 100)
to_chat(H, "You feel fit again!")
REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
- H.remove_movespeed_modifier(MOVESPEED_ID_FAT)
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/obesity)
H.update_inv_w_uniform()
H.update_inv_wear_suit()
else
if(H.overeatduration >= 100)
to_chat(H, "You suddenly feel blubbery!")
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
- H.add_movespeed_modifier(MOVESPEED_ID_FAT, multiplicative_slowdown = 1.5)
+ H.add_movespeed_modifier(/datum/movespeed_modifier/obesity)
H.update_inv_w_uniform()
H.update_inv_wear_suit()
@@ -1362,9 +1362,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!HAS_TRAIT(H, TRAIT_NOHUNGER))
var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80
if(hungry >= 70)
- H.add_movespeed_modifier(MOVESPEED_ID_HUNGRY, override = TRUE, multiplicative_slowdown = (hungry / 50))
+ H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50))
else
- H.remove_movespeed_modifier(MOVESPEED_ID_HUNGRY)
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/hunger)
switch(H.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
@@ -1615,7 +1615,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
"You hear a slap."
)
return FALSE
-
+
else
user.do_attack_animation(target, ATTACK_EFFECT_DISARM)
@@ -1623,10 +1623,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
user.adjustStaminaLossBuffered(1)
else
user.adjustStaminaLossBuffered(3)
-
+
if(attacker_style && attacker_style.disarm_act(user,target))
return TRUE
-
+
if(target.w_uniform)
target.w_uniform.add_fingerprint(user)
//var/randomized_zone = ran_zone(user.zone_selected) CIT CHANGE - comments out to prevent compiling errors
@@ -1659,7 +1659,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
randn -= 25 //if you are a pugilist, you're slapping that item from them pretty reliably
if(HAS_TRAIT(target, TRAIT_PUGILIST))
randn += 25 //meanwhile, pugilists are less likely to get disarmed
-
+
if(randn <= 35)//CIT CHANGE - changes this back to a 35% chance to accomodate for the above being commented out in favor of right-click pushing
var/obj/item/I = null
if(target.pulling)
@@ -1932,8 +1932,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/obj/item/target_held_item = target.get_active_held_item()
if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types))
target_held_item = null
- if(!target.has_movespeed_modifier(MOVESPEED_ID_SHOVE))
- target.add_movespeed_modifier(MOVESPEED_ID_SHOVE, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH)
+ if(!target.has_movespeed_modifier(/datum/movespeed_modifier/shove))
+ target.add_movespeed_modifier(/datum/movespeed_modifier/shove)
if(target_held_item)
if(!HAS_TRAIT(target_held_item, TRAIT_NODROP))
target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!",
@@ -2084,7 +2084,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold")
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot)
- H.remove_movespeed_modifier(MOVESPEED_ID_COLD)
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/cold)
var/burn_damage
var/firemodifier = H.fire_stacks / 50
@@ -2101,8 +2101,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot")
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold)
- //Sorry for the nasty oneline but I don't want to assign a variable on something run pretty frequently
- H.add_movespeed_modifier(MOVESPEED_ID_COLD, override = TRUE, multiplicative_slowdown = ((BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR), blacklisted_movetypes = FLOATING)
+ //Apply cold slowdown
+ H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR))
switch(H.bodytemperature)
if(200 to BODYTEMP_COLD_DAMAGE_LIMIT)
H.apply_damage(COLD_DAMAGE_LEVEL_1*coldmod*H.physiology.cold_mod, BURN)
@@ -2112,7 +2112,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
H.apply_damage(COLD_DAMAGE_LEVEL_3*coldmod*H.physiology.cold_mod, BURN)
else
- H.remove_movespeed_modifier(MOVESPEED_ID_COLD)
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/cold)
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold")
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot")
diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
index 50b88579f4..57a973bf22 100644
--- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
@@ -101,12 +101,11 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
/obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops..
. = ..()
- dwarf_cycle_ticker()
+ if(owner && owner.stat != DEAD)
+ dwarf_cycle_ticker()
//Handles the delayed tick cycle by just adding on increments per each on_life() tick
/obj/item/organ/dwarfgland/proc/dwarf_cycle_ticker()
- if(owner.stat == DEAD)
- return //We make sure they are not dead, so they don't increment any tickers.
dwarf_eth_ticker++
dwarf_filth_ticker++
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 9a6bc2659d..46c37a5b03 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -91,4 +91,9 @@
if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail_lizard"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines
C.dna.features["tail_lizard"] = "Smooth"
C.update_body()
+ if(C.dna.features["legs"] != "digitigrade")
+ C.dna.features["legs"] = "digitigrade"
+ for(var/obj/item/bodypart/leggie in C.bodyparts)
+ if(leggie.body_zone == BODY_ZONE_L_LEG || leggie.body_zone == BODY_ZONE_R_LEG)
+ leggie.update_limb(FALSE, C)
return ..()
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index d3e5941e4e..6242fa56be 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -65,12 +65,11 @@
/mob/living/carbon/monkey/on_reagent_change()
. = ..()
- remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE)
var/amount
if(reagents.has_reagent(/datum/reagent/medicine/morphine))
amount = -1
if(amount)
- add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/monkey_reagent_speedmod, TRUE, amount)
/mob/living/carbon/monkey/updatehealth()
. = ..()
@@ -78,7 +77,7 @@
var/health_deficiency = (100 - health)
if(health_deficiency >= 45)
slow += (health_deficiency / 25)
- add_movespeed_modifier(MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = slow)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/monkey_health_speedmod, TRUE, slow)
/mob/living/carbon/monkey/adjust_bodytemperature(amount)
. = ..()
@@ -87,7 +86,7 @@
slow += (283.222 - bodytemperature) / 10 * 1.75
if(slow <= 0)
return
- add_movespeed_modifier(MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/monkey_temperature_speedmod, TRUE, slow)
/mob/living/carbon/monkey/Stat()
..()
@@ -99,7 +98,6 @@
if(changeling)
stat("Chemical Storage", "[changeling.chem_charges]/[changeling.chem_storage]")
stat("Absorbed DNA", changeling.absorbedcount)
- return
/mob/living/carbon/monkey/verb/removeinternal()
diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm
index 49d4a20887..32038a6102 100644
--- a/code/modules/mob/living/living_mobility.dm
+++ b/code/modules/mob/living/living_mobility.dm
@@ -94,11 +94,13 @@
if(should_be_lying)
mobility_flags &= ~MOBILITY_STAND
+ setMovetype(movement_type | CRAWLING)
if(!lying) //force them on the ground
lying = pick(90, 270)
if(has_gravity() && !buckled)
playsound(src, "bodyfall", 20, 1)
else
+ setMovetype(movement_type & ~CRAWLING)
mobility_flags |= MOBILITY_STAND
lying = 0
@@ -161,8 +163,8 @@
if(!has_legs && has_arms < 2)
limbless_slowdown += 6 - (has_arms * 3)
if(limbless_slowdown)
- add_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=limbless_slowdown, blacklisted_movetypes = FLYING|FLOATING)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/limbless, multiplicative_slowdown = limbless_slowdown)
else
- remove_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/limbless)
return mobility_flags
diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm
index ec291094fe..ddcf3e6292 100644
--- a/code/modules/mob/living/living_movement.dm
+++ b/code/modules/mob/living/living_movement.dm
@@ -36,38 +36,26 @@
sprint_stamina_cost = CONFIG_GET(number/movedelay/sprint_stamina_cost)
return ..()
-/mob/living/movement_delay(ignorewalk = 0)
- . = ..()
- if(!CHECK_MOBILITY(src, MOBILITY_STAND))
- . += 6
-
/// whether or not we can slide under another living mob. defaults to if we're not dense. CanPass should check "overriding circumstances" like buckled mobs/having PASSMOB flag, etc.
/mob/living/proc/can_move_under_living(mob/living/other)
return !density
/mob/living/proc/update_move_intent_slowdown()
- var/mod = 0
- if(m_intent == MOVE_INTENT_WALK)
- mod = CONFIG_GET(number/movedelay/walk_delay)
- else
- mod = CONFIG_GET(number/movedelay/run_delay)
- if(!isnum(mod))
- mod = 1
- add_movespeed_modifier(MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED, TRUE, 100, override = TRUE, multiplicative_slowdown = mod)
+ add_movespeed_modifier((m_intent == MOVE_INTENT_WALK)? /datum/movespeed_modifier/config_walk_run/walk : /datum/movespeed_modifier/config_walk_run/run)
/mob/living/proc/update_turf_movespeed(turf/open/T)
- if(isopenturf(T) && !is_flying())
- add_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = T.slowdown)
+ if(isopenturf(T))
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/turf_slowdown, multiplicative_slowdown = T.slowdown)
else
- remove_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD)
+ remove_movespeed_modifier(/datum/movespeed_modifier/turf_slowdown)
/mob/living/proc/update_pull_movespeed()
if(pulling && isliving(pulling))
var/mob/living/L = pulling
if(drag_slowdown && L.lying && !L.buckled && grab_state < GRAB_AGGRESSIVE)
- add_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING, multiplicative_slowdown = PULL_PRONE_SLOWDOWN)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = PULL_PRONE_SLOWDOWN)
return
- remove_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING)
+ remove_movespeed_modifier(/datum/movespeed_modifier/bulky_drag)
/mob/living/canZMove(dir, turf/target)
return can_zTravel(target, dir) && (movement_type & FLYING)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 9eb1bbc9e4..4b1b108b0e 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -273,9 +273,9 @@
/mob/living/silicon/pai/Process_Spacemove(movement_dir = 0)
. = ..()
if(!.)
- add_movespeed_modifier(MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD, TRUE, 100, multiplicative_slowdown = 2)
+ add_movespeed_modifier(/datum/movespeed_modifier/pai_spacewalk)
return TRUE
- remove_movespeed_modifier(MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD, TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/pai_spacewalk)
return TRUE
/mob/living/silicon/pai/examine(mob/user)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 4ef5993d2d..b389e386d4 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -237,7 +237,7 @@
return
if(!CONFIG_GET(flag/disable_secborg) && GLOB.security_level < CONFIG_GET(number/minimum_secborg_alert))
- to_chat(src, "NOTICE: Due to local station regulations, the security cyborg module and its variants are only available during [num2seclevel(CONFIG_GET(number/minimum_secborg_alert))] alert and greater.")
+ to_chat(src, "NOTICE: Due to local station regulations, the security cyborg module and its variants are only available during [NUM2SECLEVEL(CONFIG_GET(number/minimum_secborg_alert))] alert and greater.")
var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \
"Engineering" = /obj/item/robot_module/engineering, \
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index 9b3db8af62..dced5ae869 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -1,3 +1,5 @@
+/mob/living/silicon/KnockToFloor(disarm_items = FALSE, silent = TRUE, updating = TRUE)
+ return
/mob/living/silicon/grippedby(mob/living/user, instant = FALSE)
return //can't upgrade a simple pull into a more aggressive grab.
diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm
index f4feab8824..fe18d48718 100644
--- a/code/modules/mob/living/simple_animal/animal_defense.dm
+++ b/code/modules/mob/living/simple_animal/animal_defense.dm
@@ -61,11 +61,10 @@
"[M] [response_disarm] [name]!", null, COMBAT_MESSAGE_RANGE)
log_combat(M, src, "disarmed")
else
- var/damage = rand(15, 30)
visible_message("[M] has slashed at [src]!", \
"[M] has slashed at [src]!", null, COMBAT_MESSAGE_RANGE)
playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
- attack_threshold_check(damage)
+ attack_threshold_check(M.meleeSlashSAPower)
log_combat(M, src, "attacked")
/mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L)
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index 0e48723f37..adb49938e1 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -19,6 +19,11 @@
path_image_color = "#993299"
weather_immunities = list("lava","ash")
+ var/clean_time = 50 //How long do we take to clean?
+ var/broom = FALSE //Do we have an speed buff from a broom?
+ var/adv_mop = FALSE //Do we have a cleaning buff from a better mop?
+
+
var/blood = 1
var/trash = 0
var/pests = 0
@@ -75,6 +80,26 @@
to_chat(user, "Please close the access panel before locking it.")
else
to_chat(user, "\The [src] doesn't seem to respect your authority.")
+
+ if(istype(W, /obj/item/mop/advanced))
+ if(bot_core.allowed(user) && open && adv_mop == TRUE)
+ to_chat(user, "You replace \the [src] old mop with a new better one!")
+ adv_mop = TRUE
+ clean_time = 20 //2.5 the speed!
+ window_name = "Automatic Station Cleaner v2.1 BETA" //New!
+ qdel(W)
+ else
+ to_chat(user, "\the [src] already has this mop!")
+
+ if(istype(W, /obj/item/twohanded/broom))
+ if(bot_core.allowed(user) && open && broom == TRUE)
+ to_chat(user, "You add to \the [src] a broom speeding it up!")
+ broom = TRUE
+ base_speed = 1 //2x faster!
+ qdel(W)
+ else
+ to_chat(user, "\the [src] already has a broom!")
+
else
return ..()
@@ -221,7 +246,7 @@
icon_state = "cleanbot-c"
visible_message("[src] begins to clean up [A].")
mode = BOT_CLEANING
- spawn(50)
+ spawn(clean_time)
if(mode == BOT_CLEANING)
if(A && isturf(A.loc))
var/atom/movable/AM = A
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index ab7c632214..e4e81bb5db 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -264,6 +264,9 @@
if((last_newpatient_speak + 300) < world.time) //Don't spam these messages!
var/list/messagevoice = list("Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/medbot/coming.ogg',"Wait [H.name]! I want to help!" = 'sound/voice/medbot/help.ogg',"[H.name], you appear to be injured!" = 'sound/voice/medbot/injured.ogg')
var/message = pick(messagevoice)
+ if(prob(1) && ISINRANGE_EX(H.getFireLoss(), 0, 20))
+ message = "Notices your minor burns*OwO what's this?"
+ messagevoice[message] = 'sound/voice/medbot/owo.ogg'
speak(message)
playsound(loc, messagevoice[message], 50, 0)
last_newpatient_speak = world.time
diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm
index 9c89ff4a4f..ced56f0705 100644
--- a/code/modules/mob/living/simple_animal/hostile/carp.dm
+++ b/code/modules/mob/living/simple_animal/hostile/carp.dm
@@ -7,7 +7,7 @@
icon_living = "carp"
icon_dead = "carp_dead"
icon_gib = "carp_gib"
- threat = 0.2
+ threat = 0.1
mob_biotypes = MOB_ORGANIC|MOB_BEAST
speak_chance = 0
turns_per_move = 5
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 439bedf3cc..f19aa0a2a7 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -186,10 +186,10 @@
. = ..()
if(slowed_by_webs)
if(!(locate(/obj/structure/spider/stickyweb) in loc))
- remove_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB)
+ remove_movespeed_modifier(/datum/movespeed_modifier/tarantula_web)
slowed_by_webs = FALSE
else if(locate(/obj/structure/spider/stickyweb) in loc)
- add_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB, priority=100, multiplicative_slowdown=3)
+ add_movespeed_modifier(/datum/movespeed_modifier/tarantula_web)
slowed_by_webs = TRUE
//midwives are the queen of the spiders, can send messages to all them and web faster. That rare round where you get a queen spider and turn your 'for honor' players into 'r6siege' players will be a fun one.
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 13a4d1793e..5111b0b180 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -1,5 +1,13 @@
-
-
+/**
+ * Kudzu Flower Bud
+ *
+ * A flower created by flowering kudzu which spawns a venus human trap after a certain amount of time has passed.
+ *
+ * A flower created by kudzu with the flowering mutation. Spawns a venus human trap after 2 minutes under normal circumstances.
+ * Also spawns 4 vines going out in diagonal directions from the bud. Any living creature not aligned with plants is damaged by these vines.
+ * Once it grows a venus human trap, the bud itself will destroy itself.
+ *
+ */
/obj/structure/alien/resin/flower_bud_enemy //inheriting basic attack/damage stuff from alien structures
name = "flower bud"
desc = "A large pulsating plant..."
@@ -9,9 +17,9 @@
opacity = 0
canSmoothWith = list()
smooth = SMOOTH_FALSE
+ /// The amount of time it takes to create a venus human trap, in deciseconds
var/growth_time = 1200
-
/obj/structure/alien/resin/flower_bud_enemy/Initialize()
. = ..()
var/list/anchors = list()
@@ -25,36 +33,49 @@
B.sleep_time = 10 //these shouldn't move, so let's slow down updates to 1 second (any slower and the deletion of the vines would be too slow)
addtimer(CALLBACK(src, .proc/bear_fruit), growth_time)
+/**
+ * Spawns a venus human trap, then qdels itself.
+ *
+ * Displays a message, spawns a human venus trap, then qdels itself.
+ */
/obj/structure/alien/resin/flower_bud_enemy/proc/bear_fruit()
- visible_message("the plant has borne fruit!")
+ visible_message("The plant has borne fruit!")
new /mob/living/simple_animal/hostile/venus_human_trap(get_turf(src))
qdel(src)
-
/obj/effect/ebeam/vine
name = "thick vine"
mouse_opacity = MOUSE_OPACITY_ICON
desc = "A thick vine, painful to the touch."
-
/obj/effect/ebeam/vine/Crossed(atom/movable/AM)
+ . = ..()
if(isliving(AM))
var/mob/living/L = AM
- if(!("vines" in L.faction))
+ if(!isvineimmune(L))
L.adjustBruteLoss(5)
to_chat(L, "You cut yourself on the thorny vines.")
-
-
+/**
+ * Venus Human Trap
+ *
+ * The result of a kudzu flower bud, these enemies use vines to drag prey close to them for attack.
+ *
+ * A carnivorious plant which uses vines to catch and ensnare prey. Spawns from kudzu flower buds.
+ * Each one has a maximum of four vines, which can be attached to a variety of things. Carbons are stunned when a vine is attached to them, and movable entities are pulled closer over time.
+ * Attempting to attach a vine to something with a vine already attached to it will pull all movable targets closer on command.
+ * Once the prey is in melee range, melee attacks from the venus human trap heals itself for 10% of its max health, assuming the target is alive.
+ * Akin to certain spiders, venus human traps can also be possessed and controlled by ghosts.
+ *
+ */
/mob/living/simple_animal/hostile/venus_human_trap
name = "venus human trap"
desc = "Now you know how the fly feels."
icon_state = "venus_human_trap"
- threat = 1
layer = SPACEVINE_MOB_LAYER
health = 50
maxHealth = 50
- ranged = 1
+ ranged = TRUE
harm_intent_damage = 5
obj_damage = 60
melee_damage_lower = 25
@@ -63,65 +84,110 @@
attack_sound = 'sound/weapons/bladeslice.ogg'
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 0
+ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
faction = list("hostile","vines","plants")
- var/list/grasping = list()
- var/max_grasps = 4
- var/grasp_chance = 20
- var/grasp_pull_chance = 85
- var/grasp_range = 4
- del_on_death = 1
+ initial_language_holder = /datum/language_holder/venus
+ del_on_death = TRUE
+ /// A list of all the plant's vines
+ var/list/vines = list()
+ /// The maximum amount of vines a plant can have at one time
+ var/max_vines = 4
+ /// How far away a plant can attach a vine to something
+ var/vine_grab_distance = 5
+ /// Whether or not this plant is ghost possessable
+ var/playable_plant = FALSE //Normal plants can **not** have players.
-/mob/living/simple_animal/hostile/venus_human_trap/Destroy()
- for(var/L in grasping)
- var/datum/beam/B = grasping[L]
- if(B)
- qdel(B)
- grasping = null
- return ..()
+/mob/living/simple_animal/hostile/venus_human_trap/ghost_playable
+ playable_plant = TRUE //For admins that want to buss some harmless plants
-/mob/living/simple_animal/hostile/venus_human_trap/handle_automated_action()
- if(..())
- for(var/mob/living/L in grasping)
- if(L.stat == DEAD)
- var/datum/beam/B = grasping[L]
- if(B)
- B.End()
- grasping -= L
-
- //Can attack+pull multiple times per cycle
- if(L.Adjacent(src))
- L.attack_animal(src)
- else
- if(prob(grasp_pull_chance))
- setDir(get_dir(src,L) )//staaaare
- step(L,get_dir(L,src)) //reel them in
- L.DefaultCombatKnockdown(60) //you can't get away now~
-
- if(grasping.len < max_grasps)
- grasping:
- for(var/mob/living/L in view(grasp_range, src))
- if(L == src || faction_check_mob(L) || (L in grasping) || L == target)
- continue
- for(var/t in getline(src,L))
- for(var/a in t)
- var/atom/A = a
- if(A.density && A != L)
- continue grasping
- if(prob(grasp_chance))
- to_chat(L, "\The [src] has you entangled!")
- grasping[L] = Beam(L, "vine", time=INFINITY, maxdistance=5, beam_type=/obj/effect/ebeam/vine)
-
- break //only take 1 new victim per cycle
+/mob/living/simple_animal/hostile/venus_human_trap/Life()
+ . = ..()
+ pull_vines()
+/mob/living/simple_animal/hostile/venus_human_trap/AttackingTarget()
+ . = ..()
+ if(isliving(target))
+ var/mob/living/L = target
+ if(L.stat != DEAD)
+ adjustHealth(-maxHealth * 0.1)
/mob/living/simple_animal/hostile/venus_human_trap/OpenFire(atom/the_target)
- var/dist = get_dist(src,the_target)
- Beam(the_target, "vine", time=dist*2, maxdistance=dist+2, beam_type=/obj/effect/ebeam/vine)
- the_target.attack_animal(src)
+ for(var/datum/beam/B in vines)
+ if(B.target == the_target)
+ pull_vines()
+ ranged_cooldown = world.time + (ranged_cooldown_time * 0.5)
+ return
+ if(get_dist(src,the_target) > vine_grab_distance || vines.len == max_vines)
+ return
+ for(var/turf/T in getline(src,target))
+ if (T.density)
+ return
+ for(var/obj/O in T)
+ if(O.density)
+ return
+ var/datum/beam/newVine = Beam(the_target, "vine", time=INFINITY, maxdistance = vine_grab_distance, beam_type=/obj/effect/ebeam/vine)
+ RegisterSignal(newVine, COMSIG_PARENT_QDELETING, .proc/remove_vine, newVine)
+ vines += newVine
+ if(isliving(the_target))
+ var/mob/living/L = the_target
+ L.Paralyze(20)
+ ranged_cooldown = world.time + ranged_cooldown_time
-/mob/living/simple_animal/hostile/venus_human_trap/CanAttack(atom/the_target)
+/mob/living/simple_animal/hostile/venus_human_trap/Login()
+ . = ..()
+ to_chat(src, "You a venus human trap! Protect the kudzu at all costs, and feast on those who oppose you!")
+
+/mob/living/simple_animal/hostile/venus_human_trap/attack_ghost(mob/user)
. = ..()
if(.)
- if(the_target in grasping)
- return 0
+ return
+ humanize_plant(user)
+
+/**
+ * Sets a ghost to control the plant if the plant is eligible
+ *
+ * Asks the interacting ghost if they would like to control the plant.
+ * If they answer yes, and another ghost hasn't taken control, sets the ghost to control the plant.
+ * Arguments:
+ * * mob/user - The ghost to possibly control the plant
+ */
+
+/mob/living/simple_animal/hostile/venus_human_trap/proc/humanize_plant(mob/user)
+ if(key || !playable_plant || stat)
+ return
+ var/plant_ask = alert("Become a venus human trap?", "Are you reverse vegan?", "Yes", "No")
+ if(plant_ask == "No" || QDELETED(src))
+ return
+ if(key)
+ to_chat(user, "Someone else already took this plant!")
+ return
+ key = user.key
+ log_game("[key_name(src)] took control of [name].")
+
+/**
+ * Manages how the vines should affect the things they're attached to.
+ *
+ * Pulls all movable targets of the vines closer to the plant
+ * If the target is on the same tile as the plant, destroy the vine
+ * Removes any QDELETED vines from the vines list.
+ */
+/mob/living/simple_animal/hostile/venus_human_trap/proc/pull_vines()
+ for(var/datum/beam/B in vines)
+ if(istype(B.target, /atom/movable))
+ var/atom/movable/AM = B.target
+ if(!AM.anchored)
+ step(AM,get_dir(AM,src))
+ if(get_dist(src,B.target) == 0)
+ B.End()
+
+/**
+ * Removes a vine from the list.
+ *
+ * Removes the vine from our list.
+ * Called specifically when the vine is about to be destroyed, so we don't have any null references.
+ * Arguments:
+ * * datum/beam/vine - The vine to be removed from the list.
+ */
+mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
+ vines -= vine
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 230bb9ecb7..def6327461 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -292,8 +292,8 @@
/mob/living/simple_animal/proc/update_simplemob_varspeed()
if(speed == 0)
- remove_movespeed_modifier(MOVESPEED_ID_SIMPLEMOB_VARSPEED, TRUE)
- add_movespeed_modifier(MOVESPEED_ID_SIMPLEMOB_VARSPEED, TRUE, 100, multiplicative_slowdown = speed, override = TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/simplemob_varspeed)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/simplemob_varspeed, multiplicative_slowdown = speed)
/mob/living/simple_animal/Stat()
..()
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 8594d53bd1..dd454c4243 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -147,25 +147,25 @@
/mob/living/simple_animal/slime/on_reagent_change()
. = ..()
- remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod)
var/amount = 0
if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down
amount = 2
if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow
amount = 5
if(amount)
- add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod, multiplicative_slowdown = amount)
/mob/living/simple_animal/slime/updatehealth()
. = ..()
- remove_movespeed_modifier(MOVESPEED_ID_SLIME_HEALTHMOD, FALSE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/slime_healthmod)
var/health_deficiency = (100 - health)
var/mod = 0
if(health_deficiency >= 45)
mod += (health_deficiency / 25)
if(health <= 0)
mod += 2
- add_movespeed_modifier(MOVESPEED_ID_SLIME_HEALTHMOD, TRUE, 100, multiplicative_slowdown = mod)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_healthmod, multiplicative_slowdown = mod)
/mob/living/simple_animal/slime/adjust_bodytemperature()
. = ..()
@@ -173,9 +173,8 @@
if(bodytemperature >= 330.23) // 135 F or 57.08 C
mod = -1 // slimes become supercharged at high temperatures
else if(bodytemperature < 183.222)
- mod = (283.222 - bodytemperature) / 10 * 1.75
- if(mod)
- add_movespeed_modifier(MOVESPEED_ID_SLIME_TEMPMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = mod)
+ mod = min(15, (283.222 - bodytemperature) / 10 * 1.75)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_tempmod, multiplicative_slowdown = mod)
/mob/living/simple_animal/slime/ObjBump(obj/O)
if(!client && powerlevel > 0)
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 1375d88948..0d41347179 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -622,10 +622,40 @@
tod = STATION_TIME_TIMESTAMP("hh:mm:ss", world.time)
update_stat()
+///Unignores all slowdowns that lack the IGNORE_NOSLOW flag.
/mob/living/proc/unignore_slowdown(source)
REMOVE_TRAIT(src, TRAIT_IGNORESLOWDOWN, source)
- update_movespeed(FALSE)
+ update_movespeed()
+///Ignores all slowdowns that lack the IGNORE_NOSLOW flag.
/mob/living/proc/ignore_slowdown(source)
ADD_TRAIT(src, TRAIT_IGNORESLOWDOWN, source)
- update_movespeed(FALSE)
+ update_movespeed()
+
+///Ignores specific slowdowns. Accepts a list of slowdowns.
+/mob/living/proc/add_movespeed_mod_immunities(source, slowdown_type, update = TRUE)
+ if(islist(slowdown_type))
+ for(var/listed_type in slowdown_type)
+ if(ispath(listed_type))
+ listed_type = "[listed_type]" //Path2String
+ LAZYADDASSOC(movespeed_mod_immunities, listed_type, source)
+ else
+ if(ispath(slowdown_type))
+ slowdown_type = "[slowdown_type]" //Path2String
+ LAZYADDASSOC(movespeed_mod_immunities, slowdown_type, source)
+ if(update)
+ update_movespeed()
+
+///Unignores specific slowdowns. Accepts a list of slowdowns.
+/mob/living/proc/remove_movespeed_mod_immunities(source, slowdown_type, update = TRUE)
+ if(islist(slowdown_type))
+ for(var/listed_type in slowdown_type)
+ if(ispath(listed_type))
+ listed_type = "[listed_type]" //Path2String
+ LAZYREMOVEASSOC(movespeed_mod_immunities, listed_type, source)
+ else
+ if(ispath(slowdown_type))
+ slowdown_type = "[slowdown_type]" //Path2String
+ LAZYREMOVEASSOC(movespeed_mod_immunities, slowdown_type, source)
+ if(update)
+ update_movespeed()
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 8fa1367aad..b5dc25e4dc 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1033,17 +1033,22 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
/// Updates the grab state of the mob and updates movespeed
/mob/setGrabState(newstate)
. = ..()
- if(grab_state == GRAB_PASSIVE)
- remove_movespeed_modifier(MOVESPEED_ID_MOB_GRAB_STATE, update=TRUE)
- else
- add_movespeed_modifier(MOVESPEED_ID_MOB_GRAB_STATE, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=grab_state*3, blacklisted_movetypes=FLOATING)
+ switch(grab_state)
+ if(GRAB_PASSIVE)
+ remove_movespeed_modifier(MOVESPEED_ID_MOB_GRAB_STATE)
+ if(GRAB_AGGRESSIVE)
+ add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/aggressive)
+ if(GRAB_NECK)
+ add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/neck)
+ if(GRAB_KILL)
+ add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/kill)
/mob/proc/update_equipment_speed_mods()
var/speedies = equipped_speed_mods()
if(!speedies)
- remove_movespeed_modifier(MOVESPEED_ID_MOB_EQUIPMENT, update=TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/equipment_speedmod, update=TRUE)
else
- add_movespeed_modifier(MOVESPEED_ID_MOB_EQUIPMENT, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=speedies, blacklisted_movetypes=FLOATING)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/equipment_speedmod, multiplicative_slowdown = speedies)
/// Gets the combined speed modification of all worn items
/// Except base mob type doesnt really wear items
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index bf9dad1bc7..7d177e7ac2 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -42,8 +42,11 @@
var/lying_prev = 0
var/is_shifted = FALSE
- //MOVEMENT SPEED
+ /// List of movement speed modifiers applying to this mob
var/list/movespeed_modification //Lazy list, see mob_movespeed.dm
+ /// List of movement speed modifiers ignored by this mob. List -> List (id) -> List (sources)
+ var/list/movespeed_mod_immunities //Lazy list, see mob_movespeed.dm
+ /// The calculated mob speed slowdown based on the modifiers list
var/cached_multiplicative_slowdown
/////////////////
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index ffc0970bdf..fdc60b30cb 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -80,12 +80,12 @@
var/oldloc = mob.loc
if(L.confused)
- var/newdir = 0
- if(L.confused > 40)
+ var/newdir = NONE
+ if((L.confused > 50) && prob(min(L.confused * 0.5, 50)))
newdir = pick(GLOB.alldirs)
- else if(prob(L.confused * 1.5))
+ else if(prob(L.confused))
newdir = angle2dir(dir2angle(direction) + pick(90, -90))
- else if(prob(L.confused * 3))
+ else if(prob(L.confused * 2))
newdir = angle2dir(dir2angle(direction) + pick(45, -45))
if(newdir)
direction = newdir
@@ -251,9 +251,9 @@
/mob/proc/update_gravity(has_gravity, override=FALSE)
var/speed_change = max(0, has_gravity - STANDARD_GRAVITY)
if(!speed_change)
- remove_movespeed_modifier(MOVESPEED_ID_MOB_GRAVITY, update=TRUE)
+ remove_movespeed_modifier(/datum/movespeed_modifier/gravity)
else
- add_movespeed_modifier(MOVESPEED_ID_MOB_GRAVITY, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=speed_change, blacklisted_movetypes=FLOATING)
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/gravity, multiplicative_slowdown = speed_change)
//bodypart selection - Cyberboss
//8 toggles through head - eyes - mouth
diff --git a/code/modules/mob/mob_movespeed.dm b/code/modules/mob/mob_movespeed.dm
deleted file mode 100644
index a0be8ff7cb..0000000000
--- a/code/modules/mob/mob_movespeed.dm
+++ /dev/null
@@ -1,126 +0,0 @@
-
-/*Current movespeed modification list format: list(id = list(
- priority,
- flags,
- legacy slowdown/speedup amount,
- movetype_flags,
- blacklisted_movetypes,
- conflict
- ))
-*/
-
-//ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
-/mob/proc/add_movespeed_modifier(id, update=TRUE, priority=0, flags=NONE, override=FALSE, multiplicative_slowdown=0, movetypes=ALL, blacklisted_movetypes=NONE, conflict=FALSE)
- var/list/temp = list(priority, flags, multiplicative_slowdown, movetypes, blacklisted_movetypes, conflict) //build the modification list
- var/resort = TRUE
- if(LAZYACCESS(movespeed_modification, id))
- var/list/existing_data = movespeed_modification[id]
- if(movespeed_modifier_identical_check(existing_data, temp))
- return FALSE
- if(!override)
- return FALSE
- if(priority == existing_data[MOVESPEED_DATA_INDEX_PRIORITY])
- resort = FALSE // We don't need to re-sort if we're replacing something already there and it's the same priority
- LAZYSET(movespeed_modification, id, temp)
- if(update)
- update_movespeed(resort)
- return TRUE
-
-/mob/proc/remove_movespeed_modifier(id, update = TRUE)
- if(!LAZYACCESS(movespeed_modification, id))
- return FALSE
- LAZYREMOVE(movespeed_modification, id)
- UNSETEMPTY(movespeed_modification)
- if(update)
- update_movespeed(FALSE)
- return TRUE
-
-/mob/vv_edit_var(var_name, var_value)
- var/slowdown_edit = (var_name == NAMEOF(src, cached_multiplicative_slowdown))
- var/diff
- if(slowdown_edit && isnum(cached_multiplicative_slowdown) && isnum(var_value))
- remove_movespeed_modifier(MOVESPEED_ID_ADMIN_VAREDIT)
- diff = var_value - cached_multiplicative_slowdown
- . = ..()
- if(. && slowdown_edit && isnum(diff))
- add_movespeed_modifier(MOVESPEED_ID_ADMIN_VAREDIT, TRUE, 100, override = TRUE, multiplicative_slowdown = diff)
-
-/mob/proc/has_movespeed_modifier(id)
- return LAZYACCESS(movespeed_modification, id)
-
-/mob/proc/update_config_movespeed()
- add_movespeed_modifier(MOVESPEED_ID_CONFIG_SPEEDMOD, FALSE, 100, override = TRUE, multiplicative_slowdown = get_config_multiplicative_speed())
-
-/mob/proc/get_config_multiplicative_speed()
- if(!islist(GLOB.mob_config_movespeed_type_lookup) || !GLOB.mob_config_movespeed_type_lookup[type])
- return 0
- else
- return GLOB.mob_config_movespeed_type_lookup[type]
-
-/mob/proc/update_movespeed(resort = TRUE)
- if(resort)
- sort_movespeed_modlist()
- . = 0
- var/list/conflict_tracker = list()
- for(var/id in get_movespeed_modifiers())
- var/list/data = movespeed_modification[id]
- if(!(data[MOVESPEED_DATA_INDEX_MOVETYPE] & movement_type)) // We don't affect any of these move types, skip
- continue
- if(data[MOVESPEED_DATA_INDEX_BL_MOVETYPE] & movement_type) // There's a movetype here that disables this modifier, skip
- continue
- var/conflict = data[MOVESPEED_DATA_INDEX_CONFLICT]
- var/amt = data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN]
- if(conflict)
- // Conflicting modifiers prioritize the larger slowdown or the larger speedup
- // We purposefuly don't handle mixing speedups and slowdowns on the same id
- if(abs(conflict_tracker[conflict]) < abs(amt))
- conflict_tracker[conflict] = amt
- else
- continue
- . += amt
- cached_multiplicative_slowdown = .
-
-/mob/proc/get_movespeed_modifiers()
- return movespeed_modification
-
-/mob/proc/movespeed_modifier_identical_check(list/mod1, list/mod2)
- if(!islist(mod1) || !islist(mod2) || mod1.len < MOVESPEED_DATA_INDEX_MAX || mod2.len < MOVESPEED_DATA_INDEX_MAX)
- return FALSE
- for(var/i in 1 to MOVESPEED_DATA_INDEX_MAX)
- if(mod1[i] != mod2[i])
- return FALSE
- return TRUE
-
-/mob/proc/total_multiplicative_slowdown()
- . = 0
- for(var/id in get_movespeed_modifiers())
- var/list/data = movespeed_modification[id]
- . += data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN]
-
-/proc/movespeed_data_null_check(list/data) //Determines if a data list is not meaningful and should be discarded.
- . = TRUE
- if(data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN])
- . = FALSE
-
-/mob/proc/sort_movespeed_modlist() //Verifies it too. Sorts highest priority (first applied) to lowest priority (last applied)
- if(!movespeed_modification)
- return
- var/list/assembled = list()
- for(var/our_id in movespeed_modification)
- var/list/our_data = movespeed_modification[our_id]
- if(!islist(our_data) || (our_data.len < MOVESPEED_DATA_INDEX_PRIORITY) || movespeed_data_null_check(our_data))
- movespeed_modification -= our_id
- continue
- var/our_priority = our_data[MOVESPEED_DATA_INDEX_PRIORITY]
- var/resolved = FALSE
- for(var/their_id in assembled)
- var/list/their_data = assembled[their_id]
- if(their_data[MOVESPEED_DATA_INDEX_PRIORITY] < our_priority)
- assembled.Insert(assembled.Find(their_id), our_id)
- assembled[our_id] = our_data
- resolved = TRUE
- break
- if(!resolved)
- assembled[our_id] = our_data
- movespeed_modification = assembled
- UNSETEMPTY(movespeed_modification)
\ No newline at end of file
diff --git a/code/modules/movespeed/_movespeed_modifier.dm b/code/modules/movespeed/_movespeed_modifier.dm
new file mode 100644
index 0000000000..0976f4d067
--- /dev/null
+++ b/code/modules/movespeed/_movespeed_modifier.dm
@@ -0,0 +1,217 @@
+/*! Movespeed modification datums.
+
+ How move speed for mobs works
+
+Move speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need.
+
+This gives us the ability to have multiple sources of movespeed, reliabily keep them applied and remove them when they should be
+
+THey can have unique sources and a bunch of extra fancy flags that control behaviour
+
+Previously trying to update move speed was a shot in the dark that usually meant mobs got stuck going faster or slower
+
+Movespeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not.
+
+DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done.
+
+When update movespeed is called, the list of items is iterated, according to flags priority and a bunch of conditions
+this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob
+can next move
+
+Key procs
+* [add_movespeed_modifier](mob.html#proc/add_movespeed_modifier)
+* [remove_movespeed_modifier](mob.html#proc/remove_movespeed_modifier)
+* [has_movespeed_modifier](mob.html#proc/has_movespeed_modifier)
+* [update_movespeed](mob.html#proc/update_movespeed)
+*/
+
+/datum/movespeed_modifier
+ /// Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason)
+ var/variable = FALSE
+
+ /// Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
+ var/id
+
+ /// Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding.
+ var/priority = 0
+ var/flags = NONE
+
+ /// Multiplicative slowdown
+ var/multiplicative_slowdown = 0
+
+ /// Movetypes this applies to
+ var/movetypes = ALL
+
+ /// Movetypes this never applies to
+ var/blacklisted_movetypes = NONE
+
+ /// Other modification datums this conflicts with.
+ var/conflicts_with
+
+/datum/movespeed_modifier/New()
+ . = ..()
+ if(!id)
+ id = "[type]" //We turn the path into a string.
+
+GLOBAL_LIST_EMPTY(movespeed_modification_cache)
+
+/// Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
+/proc/get_cached_movespeed_modifier(modtype)
+ if(!ispath(modtype, /datum/movespeed_modifier))
+ CRASH("[modtype] is not a movespeed modification typepath.")
+ var/datum/movespeed_modifier/M = modtype
+ if(initial(M.variable))
+ CRASH("[modtype] is a variable modifier, and can never be cached.")
+ M = GLOB.movespeed_modification_cache[modtype]
+ if(!M)
+ M = GLOB.movespeed_modification_cache[modtype] = new modtype
+ return M
+
+///Add a move speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
+/mob/proc/add_movespeed_modifier(datum/movespeed_modifier/type_or_datum, update = TRUE)
+ if(ispath(type_or_datum))
+ if(!initial(type_or_datum.variable))
+ type_or_datum = get_cached_movespeed_modifier(type_or_datum)
+ else
+ type_or_datum = new type_or_datum
+ var/datum/movespeed_modifier/existing = LAZYACCESS(movespeed_modification, type_or_datum.id)
+ if(existing)
+ if(existing == type_or_datum) //same thing don't need to touch
+ return TRUE
+ remove_movespeed_modifier(existing, FALSE)
+ if(length(movespeed_modification))
+ BINARY_INSERT(type_or_datum.id, movespeed_modification, datum/movespeed_modifier, type_or_datum, priority, COMPARE_VALUE)
+ LAZYSET(movespeed_modification, type_or_datum.id, type_or_datum)
+ if(update)
+ update_movespeed()
+ return TRUE
+
+/// Remove a move speed modifier from a mob, whether static or variable.
+/mob/proc/remove_movespeed_modifier(datum/movespeed_modifier/type_id_datum, update = TRUE)
+ var/key
+ if(ispath(type_id_datum))
+ key = initial(type_id_datum.id) || "[type_id_datum]" //id if set, path set to string if not.
+ else if(!istext(type_id_datum)) //if it isn't text it has to be a datum, as it isn't a type.
+ key = type_id_datum.id
+ else //assume it's an id
+ key = type_id_datum
+ if(!LAZYACCESS(movespeed_modification, key))
+ return FALSE
+ LAZYREMOVE(movespeed_modification, key)
+ if(update)
+ update_movespeed(FALSE)
+ return TRUE
+
+/*! Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful
+ How this SHOULD work is:
+ 1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list.
+ 2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only.
+ 3. Add the datum if necessary using the regular add proc
+ 4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum
+ 5. Update if necessary
+*/
+/mob/proc/add_or_update_variable_movespeed_modifier(datum/movespeed_modifier/type_id_datum, update = TRUE, multiplicative_slowdown)
+ var/modified = FALSE
+ var/inject = FALSE
+ var/datum/movespeed_modifier/final
+ if(istext(type_id_datum))
+ final = LAZYACCESS(movespeed_modification, type_id_datum)
+ if(!final)
+ CRASH("Couldn't find existing modification when provided a text ID.")
+ else if(ispath(type_id_datum))
+ if(!initial(type_id_datum.variable))
+ CRASH("Not a variable modifier")
+ final = LAZYACCESS(movespeed_modification, initial(type_id_datum.id) || "[type_id_datum]")
+ if(!final)
+ final = new type_id_datum
+ inject = TRUE
+ modified = TRUE
+ else
+ if(!initial(type_id_datum.variable))
+ CRASH("Not a variable modifier")
+ final = type_id_datum
+ if(!LAZYACCESS(movespeed_modification, final.id))
+ inject = TRUE
+ modified = TRUE
+ if(!isnull(multiplicative_slowdown))
+ final.multiplicative_slowdown = multiplicative_slowdown
+ modified = TRUE
+ if(inject)
+ add_movespeed_modifier(final, FALSE)
+ if(update && modified)
+ update_movespeed(TRUE)
+ return final
+
+/// Handles the special case of editing the movement var
+/mob/vv_edit_var(var_name, var_value)
+ var/slowdown_edit = (var_name == NAMEOF(src, cached_multiplicative_slowdown))
+ var/diff
+ if(slowdown_edit && isnum(cached_multiplicative_slowdown) && isnum(var_value))
+ remove_movespeed_modifier(/datum/movespeed_modifier/admin_varedit)
+ diff = var_value - cached_multiplicative_slowdown
+ . = ..()
+ if(. && slowdown_edit && isnum(diff))
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/admin_varedit, multiplicative_slowdown = diff)
+
+///Is there a movespeed modifier for this mob
+/mob/proc/has_movespeed_modifier(datum/movespeed_modifier/datum_type_id)
+ var/key
+ if(ispath(datum_type_id))
+ key = initial(datum_type_id.id) || "[datum_type_id]"
+ else if(istext(datum_type_id))
+ key = datum_type_id
+ else
+ key = datum_type_id.id
+ return LAZYACCESS(movespeed_modification, key)
+
+/// Set or update the global movespeed config on a mob
+/mob/proc/update_config_movespeed()
+ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/mob_config_speedmod, multiplicative_slowdown = get_config_multiplicative_speed())
+
+/// Get the global config movespeed of a mob by type
+/mob/proc/get_config_multiplicative_speed()
+ if(!islist(GLOB.mob_config_movespeed_type_lookup) || !GLOB.mob_config_movespeed_type_lookup[type])
+ return 0
+ else
+ return GLOB.mob_config_movespeed_type_lookup[type]
+
+/// Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
+/mob/proc/update_movespeed()
+ . = 0
+ var/list/conflict_tracker = list()
+ for(var/key in get_movespeed_modifiers())
+ var/datum/movespeed_modifier/M = movespeed_modification[key]
+ if(!(M.movetypes & movement_type)) // We don't affect any of these move types, skip
+ continue
+ if(M.blacklisted_movetypes & movement_type) // There's a movetype here that disables this modifier, skip
+ continue
+ var/conflict = M.conflicts_with
+ var/amt = M.multiplicative_slowdown
+ if(conflict)
+ // Conflicting modifiers prioritize the larger slowdown or the larger speedup
+ // We purposefuly don't handle mixing speedups and slowdowns on the same id
+ if(abs(conflict_tracker[conflict]) < abs(amt))
+ conflict_tracker[conflict] = amt
+ else
+ continue
+ . += amt
+ cached_multiplicative_slowdown = .
+
+/// Get the move speed modifiers list of the mob
+/mob/proc/get_movespeed_modifiers()
+ . = LAZYCOPY(movespeed_modification)
+ for(var/id in movespeed_mod_immunities)
+ . -= id
+
+/// Calculate the total slowdown of all movespeed modifiers
+/mob/proc/total_multiplicative_slowdown()
+ . = 0
+ for(var/id in get_movespeed_modifiers())
+ var/datum/movespeed_modifier/M = movespeed_modification[id]
+ . += M.multiplicative_slowdown
+
+/// Checks if a move speed modifier is valid and not missing any data
+/proc/movespeed_data_null_check(datum/movespeed_modifier/M) //Determines if a data list is not meaningful and should be discarded.
+ . = TRUE
+ if(M.multiplicative_slowdown)
+ . = FALSE
diff --git a/code/modules/movespeed/modifiers/components.dm b/code/modules/movespeed/modifiers/components.dm
new file mode 100644
index 0000000000..436b85e2e1
--- /dev/null
+++ b/code/modules/movespeed/modifiers/components.dm
@@ -0,0 +1,21 @@
+/datum/movespeed_modifier/shrink_ray
+ movetypes = GROUND
+ multiplicative_slowdown = 4
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/snail_crawl
+ multiplicative_slowdown = -7
+ movetypes = GROUND
+
+/datum/movespeed_modifier/sanity
+ id = MOVESPEED_ID_SANITY
+ blacklisted_movetypes = FLYING
+
+/datum/movespeed_modifier/sanity/insane
+ multiplicative_slowdown = 1.5
+
+/datum/movespeed_modifier/sanity/crazy
+ multiplicative_slowdown = 1
+
+/datum/movespeed_modifier/sanity/disturbed
+ multiplicative_slowdown = 0.5
diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm
new file mode 100644
index 0000000000..a0357ddf0f
--- /dev/null
+++ b/code/modules/movespeed/modifiers/innate.dm
@@ -0,0 +1,20 @@
+/datum/movespeed_modifier/strained_muscles
+ multiplicative_slowdown = -1
+ blacklisted_movetypes = (FLYING|FLOATING)
+
+/datum/movespeed_modifier/pai_spacewalk
+ multiplicative_slowdown = 2
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/species
+ movetypes = ~FLYING
+ variable = TRUE
+
+/datum/movespeed_modifier/dna_vault_speedup
+ blacklisted_movetypes = (FLYING|FLOATING)
+ multiplicative_slowdown = -1
+
+/datum/movespeed_modifier/small_stride
+ blacklisted_movetypes = (FLOATING|CRAWLING)
+ variable = TRUE
+ flags = IGNORE_NOSLOW
diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm
new file mode 100644
index 0000000000..94dc2a1553
--- /dev/null
+++ b/code/modules/movespeed/modifiers/items.dm
@@ -0,0 +1,12 @@
+/datum/movespeed_modifier/jetpack
+ conflicts_with = MOVE_CONFLICT_JETPACK
+ movetypes = FLOATING
+
+/datum/movespeed_modifier/jetpack/cybernetic
+ multiplicative_slowdown = -0.5
+
+/datum/movespeed_modifier/jetpack/fullspeed
+ multiplicative_slowdown = -2
+
+/datum/movespeed_modifier/die_of_fate
+ multiplicative_slowdown = 1
diff --git a/code/modules/movespeed/modifiers/misc.dm b/code/modules/movespeed/modifiers/misc.dm
new file mode 100644
index 0000000000..55c1aef527
--- /dev/null
+++ b/code/modules/movespeed/modifiers/misc.dm
@@ -0,0 +1,6 @@
+/datum/movespeed_modifier/admin_varedit
+ variable = TRUE
+
+/datum/movespeed_modifier/yellow_orb
+ multiplicative_slowdown = -2
+ blacklisted_movetypes = (FLYING|FLOATING)
diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm
new file mode 100644
index 0000000000..aa60966591
--- /dev/null
+++ b/code/modules/movespeed/modifiers/mobs.dm
@@ -0,0 +1,120 @@
+/datum/movespeed_modifier/obesity
+ multiplicative_slowdown = 1.5
+
+/datum/movespeed_modifier/monkey_reagent_speedmod
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+
+/datum/movespeed_modifier/monkey_health_speedmod
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+
+/datum/movespeed_modifier/monkey_temperature_speedmod
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+
+/datum/movespeed_modifier/hunger
+ variable = TRUE
+
+/datum/movespeed_modifier/slaughter
+ multiplicative_slowdown = -1
+
+/datum/movespeed_modifier/damage_slowdown
+ blacklisted_movetypes = FLOATING|FLYING
+ variable = TRUE
+
+/datum/movespeed_modifier/damage_slowdown_flying
+ movetypes = FLOATING
+ variable = TRUE
+
+/datum/movespeed_modifier/equipment_speedmod
+ variable = TRUE
+ blacklisted_movetypes = FLOATING
+
+/datum/movespeed_modifier/grab_slowdown
+ id = MOVESPEED_ID_MOB_GRAB_STATE
+ blacklisted_movetypes = FLOATING
+
+/datum/movespeed_modifier/grab_slowdown/aggressive
+ multiplicative_slowdown = 3
+
+/datum/movespeed_modifier/grab_slowdown/neck
+ multiplicative_slowdown = 6
+
+/datum/movespeed_modifier/grab_slowdown/kill
+ multiplicative_slowdown = 9
+
+/datum/movespeed_modifier/slime_reagentmod
+ variable = TRUE
+
+/datum/movespeed_modifier/slime_healthmod
+ variable = TRUE
+
+/datum/movespeed_modifier/config_walk_run
+ multiplicative_slowdown = 1
+ id = MOVESPEED_ID_MOB_WALK_RUN
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/config_walk_run/proc/sync()
+
+/datum/movespeed_modifier/config_walk_run/walk/sync()
+ var/mod = CONFIG_GET(number/movedelay/walk_delay)
+ multiplicative_slowdown = isnum(mod)? mod : initial(multiplicative_slowdown)
+
+/datum/movespeed_modifier/config_walk_run/run/sync()
+ var/mod = CONFIG_GET(number/movedelay/run_delay)
+ multiplicative_slowdown = isnum(mod)? mod : initial(multiplicative_slowdown)
+
+/datum/movespeed_modifier/turf_slowdown
+ movetypes = GROUND
+ blacklisted_movetypes = (FLYING|FLOATING)
+ variable = TRUE
+
+/datum/movespeed_modifier/bulky_drag
+ variable = TRUE
+
+/datum/movespeed_modifier/cold
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+
+/datum/movespeed_modifier/shove
+ multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH
+
+/datum/movespeed_modifier/human_carry
+ variable = TRUE
+
+/datum/movespeed_modifier/limbless
+ variable = TRUE
+ movetypes = GROUND
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/simplemob_varspeed
+ variable = TRUE
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/tarantula_web
+ multiplicative_slowdown = 3
+
+/datum/movespeed_modifier/gravity
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/carbon_softcrit
+ multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN
+
+/datum/movespeed_modifier/slime_tempmod
+ variable = TRUE
+
+/datum/movespeed_modifier/carbon_crawling
+ multiplicative_slowdown = CRAWLING_ADD_SLOWDOWN
+ movetypes = CRAWLING
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/mob_config_speedmod
+ variable = TRUE
+ flags = IGNORE_NOSLOW
+
+/datum/movespeed_modifier/liver_cirrhosis
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
diff --git a/code/modules/movespeed/modifiers/reagents.dm b/code/modules/movespeed/modifiers/reagents.dm
new file mode 100644
index 0000000000..b6c2458670
--- /dev/null
+++ b/code/modules/movespeed/modifiers/reagents.dm
@@ -0,0 +1,14 @@
+/datum/movespeed_modifier/reagent
+ blacklisted_movetypes = (FLYING|FLOATING)
+
+/datum/movespeed_modifier/reagent/stimulants
+ multiplicative_slowdown = -0.5
+
+/datum/movespeed_modifier/reagent/changelinghaste
+ multiplicative_slowdown = -2
+
+/datum/movespeed_modifier/reagent/skooma
+ multiplicative_slowdown = -1
+
+/datum/movespeed_modifier/reagent/nitryl
+ multiplicative_slowdown = -1
diff --git a/code/modules/movespeed/modifiers/status_effects.dm b/code/modules/movespeed/modifiers/status_effects.dm
new file mode 100644
index 0000000000..4c710cb483
--- /dev/null
+++ b/code/modules/movespeed/modifiers/status_effects.dm
@@ -0,0 +1,44 @@
+/datum/movespeed_modifier/status_effect/bloodchill
+ multiplicative_slowdown = 3
+
+/datum/movespeed_modifier/status_effect/bonechill
+ multiplicative_slowdown = 3
+
+/datum/movespeed_modifier/status_effect/tarfoot
+ multiplicative_slowdown = 0.5
+ blacklisted_movetypes = (FLYING|FLOATING)
+
+/datum/movespeed_modifier/status_effect/sepia
+ variable = TRUE
+ blacklisted_movetypes = (FLYING|FLOATING)
+
+/datum/movespeed_modifier/status_effect/mesmerize
+ blacklisted_movetypes = CRAWLING
+ multiplicative_slowdown = 5
+ priority = 64
+
+/datum/movespeed_modifier/status_effect/tased
+ multiplicative_slowdown = 1.5
+ priority = 50
+
+/datum/movespeed_modifier/status_effect/tased/no_combat_mode
+ multiplicative_slowdown = 8
+ priority = 100
+
+/datum/movespeed_modifier/status_effect/electrostaff
+ multiplicative_slowdown = 1
+ movetypes = GROUND
+
+//no comment.
+/datum/movespeed_modifier/status_effect/breast_hypertrophy
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+
+//this shouldn't even exist.
+/datum/movespeed_modifier/status_effect/penis_hypertrophy
+ blacklisted_movetypes = FLOATING
+ variable = TRUE
+
+/datum/movespeed_modifier/status_effect/mkultra
+ multiplicative_slowdown = -2
+ blacklisted_movetypes= FLYING|FLOATING
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index aab38c8754..eecc1394de 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -533,7 +533,7 @@ By design, d1 is the smallest direction and d2 is the highest
if(affecting && affecting.status == BODYPART_ROBOTIC)
if(user == H)
user.visible_message("[user] starts to fix some of the wires in [H]'s [affecting.name].", "You start fixing some of the wires in [H]'s [affecting.name].")
- if(!do_after(user, H, 50))
+ if(!do_mob(user, H, 50))
return
if(item_heal_robotic(H, user, 0, 15))
use(1)
diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm
index 39e3ca06ff..15e9b68912 100644
--- a/code/modules/projectiles/ammunition/energy/special.dm
+++ b/code/modules/projectiles/ammunition/energy/special.dm
@@ -3,6 +3,10 @@
select_name = "ion"
fire_sound = 'sound/weapons/ionrifle.ogg'
+/obj/item/ammo_casing/energy/ion/hos
+ projectile_type = /obj/item/projectile/ion/weak
+ e_cost = 300
+
/obj/item/ammo_casing/energy/declone
projectile_type = /obj/item/projectile/energy/declone
select_name = "declone"
diff --git a/code/modules/projectiles/ammunition/energy/stun.dm b/code/modules/projectiles/ammunition/energy/stun.dm
index 2abc472138..f063672654 100644
--- a/code/modules/projectiles/ammunition/energy/stun.dm
+++ b/code/modules/projectiles/ammunition/energy/stun.dm
@@ -16,9 +16,6 @@
fire_sound = 'sound/weapons/gunshot.ogg'
e_cost = 100
-/obj/item/ammo_casing/energy/electrode/hos
- projectile_type = /obj/item/projectile/energy/electrode/security/hos
- e_cost = 200
/obj/item/ammo_casing/energy/electrode/old
e_cost = 1000
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 7fb17ced57..4894a8d8eb 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -41,9 +41,12 @@
to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto
return//CIT CHANGE - ditto
pump(user, TRUE)
- recentpump = world.time + 10
- if(istype(user))//CIT CHANGE - makes pumping shotguns cost a lil bit of stamina.
- user.adjustStaminaLossBuffered(2) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added
+ if(HAS_TRAIT(user, TRAIT_FAST_PUMP))
+ recentpump = world.time + 2
+ else
+ recentpump = world.time + 10
+ if(istype(user))//CIT CHANGE - makes pumping shotguns cost a lil bit of stamina.
+ user.adjustStaminaLossBuffered(2) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added
return
/obj/item/gun/ballistic/shotgun/blow_up(mob/user)
@@ -90,7 +93,7 @@
fire_delay = 7
mag_type = /obj/item/ammo_box/magazine/internal/shot/riot
sawn_desc = "Come with me if you want to live."
- unique_reskin = list("Tatical" = "riotshotgun",
+ unique_reskin = list("Tactical" = "riotshotgun",
"Wood Stock" = "wood_riotshotgun"
)
@@ -212,7 +215,7 @@
fire_delay = 5
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
w_class = WEIGHT_CLASS_HUGE
- unique_reskin = list("Tatical" = "cshotgun",
+ unique_reskin = list("Tactical" = "cshotgun",
"Slick" = "cshotgun_slick"
)
diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm
index efe107a3f8..71ee8bc5ef 100644
--- a/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -52,13 +52,16 @@
/obj/item/gun/energy/e_gun/hos
name = "\improper X-01 MultiPhase Energy Gun"
- desc = "This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time."
+ desc = "This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time in exchange for inbuilt advanced firearm EMP shielding."
icon_state = "hoslaser"
force = 10
- ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser/hos)
+ ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser/hos, /obj/item/ammo_casing/energy/ion/hos)
ammo_x_offset = 4
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+/obj/item/gun/energy/e_gun/hos/emp_act(severity)
+ return
+
/obj/item/gun/energy/e_gun/dragnet
name = "\improper DRAGnet"
desc = "The \"Dynamic Rapid-Apprehension of the Guilty\" net is a revolution in law enforcement technology."
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index e754a9c070..8a1db49762 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -241,3 +241,87 @@
to_chat(user, "The pin beeps, refusing to fire.")
return FALSE
return TRUE
+
+/obj/item/firing_pin/security_level
+ name = "security level firing pin"
+ desc = "A sophisticated firing pin that authorizes operation based on its settings and current security level."
+ icon_state = "firing_pin_sec_level"
+ var/min_sec_level = SEC_LEVEL_GREEN
+ var/max_sec_level = SEC_LEVEL_DELTA
+ var/only_lethals = FALSE
+ var/can_toggle = TRUE
+
+/obj/item/firing_pin/security_level/Initialize()
+ . = ..()
+ fail_message = "INVALID SECURITY LEVEL. CURRENT: [uppertext(NUM2SECLEVEL(GLOB.security_level))]. \
+ MIN: [uppertext(NUM2SECLEVEL(min_sec_level))]. MAX: [uppertext(NUM2SECLEVEL(max_sec_level))]. \
+ ONLY LETHALS: [only_lethals ? "YES" : "NO"]."
+ update_icon()
+
+/obj/item/firing_pin/security_level/examine(mob/user)
+ . = ..()
+ var/lethal = only_lethals ? "only lethal " : ""
+ if(min_sec_level != max_sec_level)
+ . += "It's currently set to disallow [lethal]operation when the security level isn't between [NUM2SECLEVEL(min_sec_level)] and [NUM2SECLEVEL(max_sec_level)]."
+ else
+ . += "It's currently set to disallow [lethal]operation when the security level isn't [NUM2SECLEVEL(min_sec_level)]."
+ if(can_toggle)
+ . += "You can use a multitool to modify its settings."
+
+/obj/item/firing_pin/security_level/multitool_act(mob/living/user, obj/item/I)
+ . = TRUE
+ if(!can_toggle || !user.canUseTopic(src, BE_CLOSE))
+ return
+ var/selection = alert(user, "Which setting would you want to modify?", "Firing Pin Settings", "Minimum Level Setting", "Maximum Level Setting", "Lethals Only Toggle")
+ if(QDELETED(src) || QDELETED(user) || !user.canUseTopic(src, BE_CLOSE))
+ return
+ var/static/list/till_designs_pr_isnt_merged = list("green", "blue", "amber", "red", "delta")
+ switch(selection)
+ if("Minimum Level Setting")
+ var/input = input(user, "Input the new minimum level setting.", "Firing Pin Settings", NUM2SECLEVEL(min_sec_level)) as null|anything in till_designs_pr_isnt_merged
+ if(!input)
+ return
+ min_sec_level = till_designs_pr_isnt_merged.Find(input) - 1
+ if(min_sec_level > max_sec_level)
+ max_sec_level = SEC_LEVEL_DELTA
+ if("Maximum Level Setting")
+ var/input = input(user, "Input the new maximum level setting.", "Firing Pin Settings", NUM2SECLEVEL(max_sec_level)) as null|anything in till_designs_pr_isnt_merged
+ if(!input)
+ return
+ max_sec_level = till_designs_pr_isnt_merged.Find(input) - 1
+ if(max_sec_level < max_sec_level)
+ min_sec_level = SEC_LEVEL_GREEN
+ if("Lethals Only Toggle")
+ only_lethals = !only_lethals
+
+ fail_message = "INVALID SECURITY LEVEL. CURRENT: [uppertext(NUM2SECLEVEL(GLOB.security_level))]. \
+ MIN: [uppertext(NUM2SECLEVEL(min_sec_level))]. MAX: [uppertext(NUM2SECLEVEL(max_sec_level))]. \
+ ONLY LETHALS: [only_lethals ? "YES" : "NO"]."
+ update_icon()
+
+/obj/item/firing_pin/security_level/update_overlays()
+ . = ..()
+ var/offset = 0
+ for(var/level in list(min_sec_level, max_sec_level))
+ var/mutable_appearance/overlay = mutable_appearance(icon, "pin_sec_level_overlay")
+ overlay.pixel_x += offset
+ offset += 4
+ switch(level)
+ if(SEC_LEVEL_GREEN)
+ overlay.color = "#b2ff59" //light green
+ if(SEC_LEVEL_BLUE)
+ overlay.color = "#99ccff" //light blue
+ if(SEC_LEVEL_AMBER)
+ overlay.color = "#ffae42" //light yellow/orange
+ if(SEC_LEVEL_RED)
+ overlay.color = "#ff3f34" //light red
+ else
+ overlay.color = "#fe59c2" //neon fuchsia
+ . += overlay
+ var/mutable_appearance/overlay = mutable_appearance(icon, "pin_sec_level_overlay")
+ overlay.pixel_x += offset
+ overlay.color = only_lethals ? "#b2ff59" : "#ff3f34"
+ . += overlay
+
+/obj/item/firing_pin/security_level/pin_auth(mob/living/user)
+ return (only_lethals && !(gun.chambered?.harmful)) || ISINRANGE(GLOB.security_level, min_sec_level, max_sec_level)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index b4303dd5a0..f55ce75baa 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -315,6 +315,8 @@
objs += O
var/obj/O = safepick(objs)
if(O)
+ if(length(O.buckled_mobs))
+ return pick(O.buckled_mobs)
return O
//Nothing else is here that we can hit, hit the turf if we haven't.
if(!(T in permutated) && can_hit_target(T, permutated, T == original, TRUE))
diff --git a/code/modules/projectiles/projectile/special/ion.dm b/code/modules/projectiles/projectile/special/ion.dm
index ae0888d3df..9755269031 100644
--- a/code/modules/projectiles/projectile/special/ion.dm
+++ b/code/modules/projectiles/projectile/special/ion.dm
@@ -3,7 +3,7 @@
icon_state = "ion"
damage = 0
damage_type = BURN
- nodamage = 1
+ nodamage = TRUE
flag = "energy"
impact_effect_type = /obj/effect/temp_visual/impact_effect/ion
var/emp_radius = 1
@@ -14,4 +14,4 @@
return BULLET_ACT_HIT
/obj/item/projectile/ion/weak
- emp_radius = 0
+ emp_radius = 0
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/special/neurotoxin.dm b/code/modules/projectiles/projectile/special/neurotoxin.dm
index a72d078384..2f6a55a7d0 100644
--- a/code/modules/projectiles/projectile/special/neurotoxin.dm
+++ b/code/modules/projectiles/projectile/special/neurotoxin.dm
@@ -1,8 +1,9 @@
/obj/item/projectile/bullet/neurotoxin
name = "neurotoxin spit"
icon_state = "neurotoxin"
- damage = 5
+ damage = 15
damage_type = TOX
+ var/stagger_duration = 8 SECONDS
/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE)
if(isalien(target))
@@ -10,5 +11,6 @@
nodamage = TRUE
else if(iscarbon(target))
var/mob/living/L = target
- L.DefaultCombatKnockdown(100, TRUE, FALSE, 30, 25)
+ L.KnockToFloor(TRUE)
+ L.Stagger(stagger_duration)
return ..()
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 725b967a63..a85ac8b085 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
var/inverse_chem // What chem is metabolised when purity is below inverse_chem_val, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/metabolizing = FALSE
var/chemical_flags // See fermi/readme.dm REAGENT_DEAD_PROCESS, REAGENT_DONOTSPLIT, REAGENT_ONLYINVERSE, REAGENT_ONMOBMERGE, REAGENT_INVISIBLE, REAGENT_FORCEONNEW, REAGENT_SNEAKYNAME
- var/value = 0 //How much does it sell for in cargo?
+ var/value = REAGENT_VALUE_NONE //How much does it sell for in cargo?
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 8194392871..464557f617 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -14,6 +14,7 @@
taste_description = "alcohol"
var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning
pH = 7.33
+ value = REAGENT_VALUE_VERY_COMMON //don't bother tweaking all drinks values, way too many can easily be done roundstart or with an upgraded dispenser.
/*
Boozepwr Chart
@@ -88,7 +89,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of beer"
glass_desc = "A freezing pint of beer."
pH = 4
- value = 0.1
/datum/reagent/consumable/ethanol/beer/light
name = "Light Beer"
@@ -98,7 +98,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of light beer"
glass_desc = "A freezing pint of watery light beer."
pH = 5
- value = 0.3
/datum/reagent/consumable/ethanol/beer/green
name = "Green Beer"
@@ -109,7 +108,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of green beer"
glass_desc = "A freezing pint of green beer. Festive."
pH = 6
- value = 0.3
/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/M)
if(M.color != color)
@@ -129,7 +127,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "DAMN, THIS THING LOOKS ROBUST!"
shot_glass_icon_state = "shotglasscream"
pH = 6
- value = 0.1
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/M)
@@ -152,7 +149,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy."
shot_glass_icon_state = "shotglassbrown"
pH = 4.5
- value = 0.1
/datum/reagent/consumable/ethanol/thirteenloko
name = "Thirteen Loko"
@@ -167,7 +163,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "thirteen_loko_glass"
glass_name = "glass of Thirteen Loko"
glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass."
- value = 0.3
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-7)
@@ -229,7 +224,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The glass contain wodka. Xynta."
shot_glass_icon_state = "shotglassclear"
pH = 8.1
- value = 0.1
/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M)
M.radiation = max(M.radiation-2,0)
@@ -245,7 +239,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown"
glass_name = "glass of bilk"
glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
- value = 0.5
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(10))
@@ -264,7 +257,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Three Mile Island Ice Tea"
glass_desc = "A glass of this is sure to prevent a meltdown."
pH = 3.5
- value = 1
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
@@ -280,7 +273,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of gin"
glass_desc = "A crystal clear glass of Griffeater gin."
pH = 6.9
- value = 0.1
/datum/reagent/consumable/ethanol/rum
name = "Rum"
@@ -293,7 +285,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Now you want to Pray for a pirate suit, don't you?"
shot_glass_icon_state = "shotglassbrown"
pH = 6.5
- value = 0.1
/datum/reagent/consumable/ethanol/tequila
name = "Tequila"
@@ -306,7 +297,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Now all that's missing is the weird colored shades!"
shot_glass_icon_state = "shotglassgold"
pH = 4
- value = 0.1
/datum/reagent/consumable/ethanol/vermouth
name = "Vermouth"
@@ -319,7 +309,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "You wonder why you're even drinking this straight."
shot_glass_icon_state = "shotglassclear"
pH = 3.25
- value = 0.1
/datum/reagent/consumable/ethanol/wine
name = "Wine"
@@ -332,7 +321,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A very classy looking drink."
shot_glass_icon_state = "shotglassred"
pH = 3.45
- value = 0.1
/datum/reagent/consumable/ethanol/lizardwine
name = "Lizard wine"
@@ -342,7 +330,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
quality = DRINK_FANTASTIC
taste_description = "scaley sweetness"
pH = 3
- value = 2
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/consumable/ethanol/grappa
name = "Grappa"
@@ -354,7 +342,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of grappa"
glass_desc = "A fine drink originally made to prevent waste by using the leftovers from winemaking."
pH = 3.5
- value = 0.1
/datum/reagent/consumable/ethanol/cognac
name = "Cognac"
@@ -367,7 +354,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Damn, you feel like some kind of French aristocrat just by holding this."
shot_glass_icon_state = "shotglassbrown"
pH = 3.5
- value = 0.1
/datum/reagent/consumable/ethanol/absinthe
name = "Absinthe"
@@ -379,7 +365,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of absinthe"
glass_desc = "It's as strong as it smells."
shot_glass_icon_state = "shotglassgreen"
- value = 0.1
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/M)
if(prob(10) && !HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
@@ -395,6 +380,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown2"
glass_name = "Hooch"
glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/hooch/on_mob_life(mob/living/carbon/M)
if(M.mind && M.mind.assigned_role == "Assistant")
@@ -412,7 +398,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of ale"
glass_desc = "A freezing pint of delicious Ale."
pH = 4.5
- value = 0.1
/datum/reagent/consumable/ethanol/goldschlager
name = "Goldschlager"
@@ -425,7 +410,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of goldschlager"
glass_desc = "100% proof that teen girls will drink anything with gold in it."
shot_glass_icon_state = "shotglassgold"
- value = 0.5
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/patron
name = "Patron"
@@ -439,7 +424,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Drinking patron in the bar, with all the subpar ladies."
shot_glass_icon_state = "shotglassclear"
pH = 4.5
- value = 0.1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/gintonic
name = "Gin and Tonic"
@@ -452,7 +437,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Gin and Tonic"
glass_desc = "A mild but still great cocktail. Drink up, like a true Englishman."
pH = 3
- value = 0.5
/datum/reagent/consumable/ethanol/rum_coke
name = "Rum and Coke"
@@ -465,7 +449,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Rum and Coke"
glass_desc = "The classic go-to of space-fratboys."
pH = 4
- value = 1
/datum/reagent/consumable/ethanol/cuba_libre
name = "Cuba Libre"
@@ -477,8 +460,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "cubalibreglass"
glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum, cola, and lime. A favorite of revolutionaries everywhere!"
- value = 0.5
-
/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M)
if(M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries.
@@ -499,7 +480,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiskeycolaglass"
glass_name = "whiskey cola"
glass_desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
- value = 0.5
/datum/reagent/consumable/ethanol/martini
name = "Classic Martini"
@@ -511,7 +491,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "martiniglass"
glass_name = "Classic Martini"
glass_desc = "Damn, the bartender even stirred it, not shook it."
- value = 1
/datum/reagent/consumable/ethanol/vodkamartini
name = "Vodka Martini"
@@ -523,7 +502,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "martiniglass"
glass_name = "Vodka martini"
glass_desc ="A bastardisation of the classic martini. Still great."
- value = 1
/datum/reagent/consumable/ethanol/white_russian
@@ -536,7 +514,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiterussianglass"
glass_name = "White Russian"
glass_desc = "A very nice looking drink. But that's just, like, your opinion, man."
- value = 1
/datum/reagent/consumable/ethanol/screwdrivercocktail
name = "Screwdriver"
@@ -548,7 +525,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "screwdriverglass"
glass_name = "Screwdriver"
glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
- value = 1
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M)
if(M.mind && (M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer"))) //Engineers lose radiation poisoning at a massive rate.
@@ -564,7 +540,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "booger"
glass_name = "Booger"
glass_desc = "Ewww..."
- value = 0.3
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/bloody_mary
name = "Bloody Mary"
@@ -576,7 +552,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bloodymaryglass"
glass_name = "Bloody Mary"
glass_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder."
- value = 1.3
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C)
if(AmBloodsucker(C))
@@ -595,7 +570,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bravebullglass"
glass_name = "Brave Bull"
glass_desc = "Tequila and Coffee liqueur, brought together in a mouthwatering mixture. Drink up."
- value = 2
var/tough_text
/datum/reagent/consumable/ethanol/brave_bull/on_mob_metabolize(mob/living/M)
@@ -619,7 +593,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "tequilasunriseglass"
glass_name = "tequila Sunrise"
glass_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..."
- value = 2
var/obj/effect/light_holder
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_metabolize(mob/living/M)
@@ -649,7 +622,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Toxins Special"
glass_desc = "Whoah, this thing is on FIRE!"
shot_glass_icon_state = "toxinsspecialglass"
- value = 2
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M)
M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp.
@@ -668,7 +641,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW."
pH = 2
overdose_threshold = 40
- value = 3
var/datum/brain_trauma/special/beepsky/B
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_metabolize(mob/living/carbon/M)
@@ -709,7 +681,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "irishcreamglass"
glass_name = "Irish Cream"
glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
- value = 1
/datum/reagent/consumable/ethanol/manly_dorf
name = "The Manly Dorf"
@@ -721,7 +692,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "manlydorfglass"
glass_name = "The Manly Dorf"
glass_desc = "A manly concoction made from Ale and Beer. Intended for true men only."
- value = 2
var/dorf_mode
/datum/reagent/consumable/ethanol/manly_dorf/on_mob_metabolize(mob/living/M)
@@ -752,7 +722,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "longislandicedteaglass"
glass_name = "Long Island Iced Tea"
glass_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
- value = 1
/datum/reagent/consumable/ethanol/moonshine
name = "Moonshine"
@@ -763,7 +732,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_clear"
glass_name = "Moonshine"
glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
- value = 2
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/b52
name = "B-52"
@@ -776,7 +745,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "B-52"
glass_desc = "Kahlua, Irish Cream, and cognac. You will get bombed."
shot_glass_icon_state = "b52glass"
- value = 5.2
/datum/reagent/consumable/ethanol/b52/on_mob_metabolize(mob/living/M)
playsound(M, 'sound/effects/explosion_distant.ogg', 100, FALSE)
@@ -791,7 +759,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "irishcoffeeglass"
glass_name = "Irish Coffee"
glass_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning."
- value = 2
/datum/reagent/consumable/ethanol/margarita
name = "Margarita"
@@ -803,7 +770,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "margaritaglass"
glass_name = "Margarita"
glass_desc = "On the rocks with salt on the rim. Arriba~!"
- value = 2
/datum/reagent/consumable/ethanol/black_russian
name = "Black Russian"
@@ -815,7 +781,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "blackrussianglass"
glass_name = "Black Russian"
glass_desc = "For the lactose-intolerant. Still as classy as a White Russian."
- value = 3
/datum/reagent/consumable/ethanol/manhattan
@@ -828,7 +793,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "manhattanglass"
glass_name = "Manhattan"
glass_desc = "The Detective's undercover drink of choice. He never could stomach gin..."
- value = 3
/datum/reagent/consumable/ethanol/manhattan_proj
@@ -841,7 +805,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "proj_manhattanglass"
glass_name = "Manhattan Project"
glass_desc = "A scientist's drink of choice, for thinking how to blow up the station."
- value = 6
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/M)
@@ -858,7 +822,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiskeysodaglass2"
glass_name = "whiskey soda"
glass_desc = "Ultimate refreshment."
- value = 1
/datum/reagent/consumable/ethanol/antifreeze
name = "Anti-freeze"
@@ -870,7 +833,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "antifreeze"
glass_name = "Anti-freeze"
glass_desc = "The ultimate refreshment."
- value = 3
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp.
@@ -886,7 +848,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "b&p"
glass_name = "Barefoot"
glass_desc = "Barefoot and pregnant."
- value = 4
/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/M)
if(ishuman(M)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes.
@@ -906,7 +867,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "snowwhite"
glass_name = "Snow White"
glass_desc = "A cold refreshment."
- value = 1
/datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon.
name = "Demon's Blood"
@@ -918,7 +878,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "demonsblood"
glass_name = "Demons Blood"
glass_desc = "Just looking at this thing makes the hair at the back of your neck stand up."
- value = 2
/datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it.
name = "Devil's Kiss"
@@ -930,7 +889,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "devilskiss"
glass_name = "Devils Kiss"
glass_desc = "Creepy time!"
- value = 2
/datum/reagent/consumable/ethanol/vodkatonic
name = "Vodka and Tonic"
@@ -942,7 +900,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "vodkatonicglass"
glass_name = "vodka and tonic"
glass_desc = "For when a gin and tonic isn't Russian enough."
- value = 1
/datum/reagent/consumable/ethanol/ginfizz
name = "Gin Fizz"
@@ -954,7 +911,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "ginfizzglass"
glass_name = "gin fizz"
glass_desc = "Refreshingly lemony, deliciously dry."
- value = 1
/datum/reagent/consumable/ethanol/bahama_mama
name = "Bahama Mama"
@@ -966,7 +922,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bahama_mama"
glass_name = "Bahama Mama"
glass_desc = "A tropical cocktail with a complex blend of flavors."
- value = 2
/datum/reagent/consumable/ethanol/singulo
name = "Singulo"
@@ -978,7 +933,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "singulo"
glass_name = "Singulo"
glass_desc = "A blue-space beverage."
- value = 4
/datum/reagent/consumable/ethanol/sbiten
name = "Sbiten"
@@ -990,7 +944,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sbitenglass"
glass_name = "Sbiten"
glass_desc = "A spicy mix of Vodka and Spice. Very hot."
- value = 2
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(50 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 ,BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp.
@@ -1006,7 +959,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "red_meadglass"
glass_name = "Red Mead"
glass_desc = "A True Viking's Beverage, though its color is strange."
- value = 5
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/mead
name = "Mead"
@@ -1019,7 +972,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "meadglass"
glass_name = "Mead"
glass_desc = "A Viking's Beverage, though a cheap one."
- value = 1
/datum/reagent/consumable/ethanol/iced_beer
name = "Iced Beer"
@@ -1030,7 +982,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "iced_beerglass"
glass_name = "iced beer"
glass_desc = "A beer so frosty, the air around it freezes."
- value = 1
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp.
@@ -1045,7 +996,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "grogglass"
glass_name = "Grog"
glass_desc = "A fine and cepa drink for Space."
- value = 2.1
/datum/reagent/consumable/ethanol/aloe
name = "Aloe"
@@ -1057,7 +1007,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "aloe"
glass_name = "Aloe"
glass_desc = "Very, very, very good."
- value = 1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/andalusia
name = "Andalusia"
@@ -1069,7 +1019,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "andalusia"
glass_name = "Andalusia"
glass_desc = "A nice, strangely named drink."
- value = 1
/datum/reagent/consumable/ethanol/alliescocktail
name = "Allies Cocktail"
@@ -1081,7 +1030,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "alliescocktail"
glass_name = "Allies cocktail"
glass_desc = "A drink made from your allies."
- value = 4
/datum/reagent/consumable/ethanol/acid_spit
name = "Acid Spit"
@@ -1093,7 +1041,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "acidspitglass"
glass_name = "Acid Spit"
glass_desc = "A drink from Nanotrasen. Made from live aliens."
- value = 3
/datum/reagent/consumable/ethanol/amasec
name = "Amasec"
@@ -1105,7 +1052,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "amasecglass"
glass_name = "Amasec"
glass_desc = "Always handy before COMBAT!!!"
- value = 2
/datum/reagent/consumable/ethanol/changelingsting
name = "Changeling Sting"
@@ -1117,7 +1063,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "changelingsting"
glass_name = "Changeling Sting"
glass_desc = "A stingy drink."
- value = 1.5
/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/M)
if(M.mind) //Changeling Sting assists in the recharging of changeling chemicals.
@@ -1137,7 +1082,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "irishcarbomb"
glass_name = "Irish Car Bomb"
glass_desc = "An Irish car bomb."
- value = 5
/datum/reagent/consumable/ethanol/syndicatebomb
name = "Syndicate Bomb"
@@ -1149,7 +1093,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "syndicatebomb"
glass_name = "Syndicate Bomb"
glass_desc = "A syndicate bomb."
- value = 2
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/M)
if(prob(5))
@@ -1177,7 +1120,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "erikasurprise"
glass_name = "Erika Surprise"
glass_desc = "The surprise is, it's green!"
- value = 4
/datum/reagent/consumable/ethanol/driestmartini
name = "Driest Martini"
@@ -1190,7 +1132,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "driestmartiniglass"
glass_name = "Driest Martini"
glass_desc = "Only for the experienced. You think you see sand floating in the glass."
- value = 5
/datum/reagent/consumable/ethanol/bananahonk
name = "Banana Honk"
@@ -1203,7 +1144,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bananahonkglass"
glass_name = "Banana Honk"
glass_desc = "A drink from Clown Heaven."
- value = 8
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M)
if((ishuman(M) && M.job == "Clown") || ismonkey(M))
@@ -1222,7 +1162,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "silencerglass"
glass_name = "Silencer"
glass_desc = "A drink from Mime Heaven."
- value = 2
/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M)
if(ishuman(M) && M.job == "Mime")
@@ -1240,7 +1179,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "drunkenblumpkin"
glass_name = "Drunken Blumpkin"
glass_desc = "A drink for the drunks."
- value = 3
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour.
name = "Whiskey Sour"
@@ -1252,7 +1191,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiskey_sour"
glass_name = "whiskey sour"
glass_desc = "Lemon juice mixed with whiskey and a dash of sugar. Surprisingly satisfying."
- value = 2
/datum/reagent/consumable/ethanol/hcider
name = "Hard Cider"
@@ -1265,7 +1203,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "hard cider"
glass_desc = "Tastes like autumn... no wait, fall!"
shot_glass_icon_state = "shotglassbrown"
- value = 3
/datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber!
name = "Fetching Fizz"
@@ -1278,7 +1215,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "fetching_fizz"
glass_name = "Fetching Fizz"
glass_desc = "Induces magnetism in the imbiber. Started as a barroom prank but evolved to become popular with miners and scrappers. Metallic aftertaste."
- value = 2
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/M)
for(var/obj/item/stack/ore/O in orange(3, M))
@@ -1297,7 +1234,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "hearty_punch"
glass_name = "Hearty Punch"
glass_desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead."
- value = 1
+ value = REAGENT_VALUE_RARE //considering the low recipe yield.
/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/M)
if(M.health <= 0)
@@ -1318,8 +1255,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown2"
glass_name = "Bacchus' Blessing"
glass_desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?"
- value = 8
-
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/atomicbomb
name = "Atomic Bomb"
@@ -1331,7 +1267,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "atomicbombglass"
glass_name = "Atomic Bomb"
glass_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing."
- value = 3.56
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
@@ -1360,7 +1296,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "gargleblasterglass"
glass_name = "Pan-Galactic Gargle Blaster"
glass_desc = "Like having your brain smashed out by a slice of lemon wrapped around a large gold brick."
- value = 5
/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/M)
M.dizziness +=1.5
@@ -1393,7 +1328,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
impure_chem = /datum/reagent/consumable/ethanol/neuroweak
inverse_chem_val = 0.5 //Clear conversion
inverse_chem = /datum/reagent/consumable/ethanol/neuroweak
- value = 4
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/neurotoxin/proc/pickt()
return (pick(TRAIT_PARALYSIS_L_ARM,TRAIT_PARALYSIS_R_ARM,TRAIT_PARALYSIS_R_LEG,TRAIT_PARALYSIS_L_LEG))
@@ -1434,7 +1369,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins."
boozepwr = 60
pH = 8
- value = 3
/datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M)
if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin))
@@ -1460,7 +1394,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "hippiesdelightglass"
glass_name = "Hippie's Delight"
glass_desc = "A drink enjoyed by people during the 1960's."
- value = 1.96
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M)
M.slurring = max(M.slurring,50)
@@ -1504,8 +1438,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "nog3"
glass_name = "eggnog"
glass_desc = "The traditional way to get absolutely hammered at a Christmas party."
- value = 4
-
/datum/reagent/consumable/ethanol/narsour
name = "Nar'Sour"
@@ -1517,7 +1449,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "narsour"
glass_name = "Nar'Sour"
glass_desc = "A new hit cocktail inspired by THE ARM Breweries will have you shouting Fuu ma'jin in no time!"
- value = 6.66
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/M)
M.cultslurring = min(M.cultslurring + 3, 3)
@@ -1534,7 +1466,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "cogchamp"
glass_name = "CogChamp"
glass_desc = "Not even Ratvar's Four Generals could withstand this! Qevax Jryy!"
- value = 8.13
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/cogchamp/on_mob_life(mob/living/carbon/M)
M.clockcultslurring = min(M.clockcultslurring + 3, 3)
@@ -1550,7 +1482,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_orange"
glass_name = "Triple Sec"
glass_desc = "A glass of straight Triple Sec."
- value = 1.5
/datum/reagent/consumable/ethanol/creme_de_menthe
name = "Creme de Menthe"
@@ -1561,7 +1492,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_green"
glass_name = "Creme de Menthe"
glass_desc = "You can almost feel the first breath of spring just looking at it."
- value = 2
/datum/reagent/consumable/ethanol/creme_de_cacao
name = "Creme de Cacao"
@@ -1572,7 +1502,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown"
glass_name = "Creme de Cacao"
glass_desc = "A million hazing lawsuits and alcohol poisonings have started with this humble ingredient."
- value = 1
/datum/reagent/consumable/ethanol/creme_de_coconut
name = "Creme de Coconut"
@@ -1594,7 +1523,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "quadruple_sec"
glass_name = "Quadruple Sec"
glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though."
- value = 3.04
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM)) //Securidrink in line with the screwderiver for engineers or nothing for mimes.
@@ -1613,7 +1541,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "quintuple_sec"
glass_name = "Quintuple Sec"
glass_desc = "Now you are become law, destroyer of clowns."
- value = 4.01
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM)) //Securidrink in line with the screwderiver for engineers or nothing for mimes but STRONG..
@@ -1657,7 +1585,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "grasshopper"
glass_name = "Grasshopper"
glass_desc = "You weren't aware edible beverages could be that green."
- value = 1
/datum/reagent/consumable/ethanol/stinger
name = "Stinger"
@@ -1669,7 +1596,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "stinger"
glass_name = "Stinger"
glass_desc = "You wonder what would happen if you pointed this at a heat source..."
- value = 1
/datum/reagent/consumable/ethanol/bastion_bourbon
name = "Bastion Bourbon"
@@ -1684,7 +1610,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "If you're feeling low, count on the buttery flavor of our own bastion bourbon."
shot_glass_icon_state = "shotglassgreen"
pH = 4
- value = 8
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_metabolize(mob/living/L)
var/heal_points = 10
@@ -1721,7 +1647,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Squirt Cider"
glass_desc = "Squirt cider will toughen you right up. Too bad about the musty aftertaste."
shot_glass_icon_state = "shotglassgreen"
- value = 1
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/M)
M.satiety += 5 //for context, vitamins give 30 satiety per tick
@@ -1738,7 +1663,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "fringe_weaver"
glass_name = "Fringe Weaver"
glass_desc = "It's a wonder it doesn't spill out of the glass."
- value = 1
/datum/reagent/consumable/ethanol/sugar_rush
name = "Sugar Rush"
@@ -1751,7 +1675,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sugar_rush"
glass_name = "Sugar Rush"
glass_desc = "If you can't mix a Sugar Rush, you can't tend bar."
- value = 1
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/M)
M.satiety -= 10 //junky as hell! a whole glass will keep you from being able to eat junk food
@@ -1768,7 +1691,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "crevice_spike"
glass_name = "Crevice Spike"
glass_desc = "It'll either knock the drunkenness out of you or knock you out cold. Both, probably."
- value = 1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/crevice_spike/on_mob_metabolize(mob/living/L) //damage only applies when drink first enters system and won't again until drink metabolizes out
L.adjustBruteLoss(3 * min(5,volume)) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15
@@ -1782,7 +1705,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sakecup"
glass_name = "cup of sake"
glass_desc = "A traditional cup of sake."
- value = 0.1
/datum/reagent/consumable/ethanol/peppermint_patty
name = "Peppermint Patty"
@@ -1794,7 +1716,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "peppermint_patty"
glass_name = "Peppermint Patty"
glass_desc = "A boozy minty hot cocoa that warms your belly on a cold night."
- value = 2
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M)
M.apply_status_effect(/datum/status_effect/throat_soothed)
@@ -1812,7 +1733,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Alexander"
glass_desc = "A creamy, indulgent delight that is stronger than it seems."
var/obj/item/shield/mighty_shield
- value = 1
/datum/reagent/consumable/ethanol/alexander/on_mob_metabolize(mob/living/L)
if(ishuman(L))
@@ -1844,7 +1764,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sidecar"
glass_name = "Sidecar"
glass_desc = "The one ride you'll gladly give up the wheel for."
- value = 1
/datum/reagent/consumable/ethanol/between_the_sheets
name = "Between the Sheets"
@@ -1856,7 +1775,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "between_the_sheets"
glass_name = "Between the Sheets"
glass_desc = "The only drink that comes with a label reminding you of Nanotrasen's zero-tolerance promiscuity policy."
- value = 2
/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L)
..()
@@ -1881,7 +1799,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "kamikaze"
glass_name = "Kamikaze"
glass_desc = "Divinely windy."
- value = 1
/datum/reagent/consumable/ethanol/mojito
name = "Mojito"
@@ -1893,7 +1810,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "mojito"
glass_name = "Mojito"
glass_desc = "A drink that looks as refreshing as it tastes."
- value = 1
/datum/reagent/consumable/ethanol/moscow_mule
name = "Moscow Mule"
@@ -1914,7 +1830,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
taste_description = "utter bitterness"
glass_name = "glass of fernet"
glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone."
- value = 0.1
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
@@ -1933,7 +1848,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "godlyblend"
glass_name = "glass of fernet cola"
glass_desc = "A sawed-off cola bottle filled with Fernet Cola. Nothing better after eating like a lardass."
- value = 1
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
@@ -1943,7 +1857,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
return ..()
/datum/reagent/consumable/ethanol/fanciulli
-
name = "Fanciulli"
description = "What if the Manhattan coctail ACTUALLY used a bitter herb liquour? Helps you sobers up." //also causes a bit of stamina damage to symbolize the afterdrink lazyness
color = "#CA933F" // rgb: 202, 147, 63
@@ -1953,7 +1866,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "fanciulli"
glass_name = "glass of fanciulli"
glass_desc = "A glass of Fanciulli. It's just Manhattan with Fernet."
- value = 1
/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/M)
M.nutrition = max(M.nutrition - 5, 0)
@@ -1966,7 +1878,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
. = TRUE
..()
-
/datum/reagent/consumable/ethanol/branca_menta
name = "Branca Menta"
description = "A refreshing mixture of bitter Fernet with mint creme liquour."
@@ -1977,7 +1888,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state= "minted_fernet"
glass_name = "glass of branca menta"
glass_desc = "A glass of Branca Menta, perfect for those lazy and hot sunday summer afternoons." //Get lazy literally by drinking this
- value = 1
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C)
@@ -2000,7 +1910,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "blank_paper"
glass_name = "glass of blank paper"
glass_desc = "A fizzy cocktail for those looking to start fresh."
- value = 1
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/M)
if(ishuman(M) && M.job == "Mime")
@@ -2017,7 +1927,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "champagne_glass"
glass_name = "Champagne"
glass_desc = "The flute clearly displays the slowly rising bubbles."
- value = 1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/wizz_fizz
name = "Wizz Fizz"
@@ -2029,7 +1939,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "wizz_fizz"
glass_name = "Wizz Fizz"
glass_desc = "The glass bubbles and froths with an almost magical intensity."
- value = 1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/M)
//A healing drink similar to Quadruple Sec, Ling Stings, and Screwdrivers for the Wizznerds; the check is consistent with the changeling sting
@@ -2049,7 +1959,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bug_spray"
glass_name = "Bug Spray"
glass_desc = "Your eyes begin to water as the sting of alcohol reaches them."
- value = 1
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M)
//Bugs should not drink Bug spray.
@@ -2071,7 +1980,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "applejack_glass"
glass_name = "Applejack"
glass_desc = "You feel like you could drink this all neight."
- value = 0.1
/datum/reagent/consumable/ethanol/jack_rose
name = "Jack Rose"
@@ -2083,7 +1991,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "jack_rose"
glass_name = "Jack Rose"
glass_desc = "Enough of these, and you really will start to suppose your toeses are roses."
- value = 1
/datum/reagent/consumable/ethanol/turbo
name = "Turbo"
@@ -2095,7 +2002,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "turbo"
glass_name = "Turbo"
glass_desc = "A turbulent cocktail for outlaw hoverbikers."
- value = 0.3
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/M)
if(prob(4))
@@ -2113,7 +2020,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "old_timer"
glass_name = "Old Timer"
glass_desc = "WARNING! May cause premature aging!"
- value = 2
+ value = REAGENT_VALUE_UNCOMMON //Parsnip juice? Really? lol
/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/M)
if(prob(20))
@@ -2146,7 +2053,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "rubberneck"
glass_name = "Rubberneck"
glass_desc = "A popular drink amongst those adhering to an all synthetic diet."
- value = 1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/duplex
name = "Duplex"
@@ -2158,7 +2065,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "duplex"
glass_name = "Duplex"
glass_desc = "To imbibe one component separately from the other is consider a great faux pas."
- value = 1
/datum/reagent/consumable/ethanol/trappist
name = "Trappist Beer"
@@ -2170,7 +2076,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "trappistglass"
glass_name = "Trappist Beer"
glass_desc = "boozy Catholicism in a glass."
- value = 1
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M)
if(M.mind.isholy)
@@ -2188,8 +2093,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "blazaamglass"
glass_name = "Blazaam"
glass_desc = "The glass seems to be sliding between realities. Doubles as a Berenstain remover."
+ value = REAGENT_VALUE_UNCOMMON
var/stored_teleports = 0
- value = 4
/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M)
if(M.drunkenness > 40)
@@ -2211,7 +2116,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "planet_cracker"
glass_name = "Planet Cracker"
glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy."
- value = 1
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/consumable/ethanol/mauna_loa
name = "Mauna Loa"
@@ -2223,6 +2128,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "mauna_loa"
glass_name = "Mauna Loa"
glass_desc = "Lavaland in a drink... mug... volcano... thing."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/M)
// Heats the user up while the reagent is in the body. Occasionally makes you burst into flames.
@@ -2236,13 +2142,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
name = "Commander and Chief"
description = "A cocktail for the captain on the go."
color = "#ffffc9"
+ can_synth = FALSE
boozepwr = 50
quality = DRINK_FANTASTIC
taste_description = "duty and responsibility"
glass_icon_state = "commander_and_chief"
glass_name = "Commander and Chief"
glass_desc = "The gems of this majestic chalice represent the departments and their Heads."
- value = 10
+ value = REAGENT_VALUE_AMAZING
/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM))
@@ -2281,6 +2188,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "hellfire"
glass_name = "Hellfire"
glass_desc = "An amber colored drink that isn't quite as hot as it looks."
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/hellfire/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 30)
@@ -2296,6 +2204,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sins_delight"
glass_name = "Sin's Delight"
glass_desc = "You can smell the seven sins rolling off the top of the glass."
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/ethanol/strawberry_daiquiri
name = "Strawberry Daiquiri"
@@ -2328,6 +2237,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "miami_vice"
glass_name = "Miami Vice"
glass_desc = "Strawberries and coconut, like yin and yang."
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/ethanol/malibu_sunset
name = "Malibu Sunset"
@@ -2350,6 +2260,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "hotlime_miami"
glass_name = "Hotlime Miami"
glass_desc = "This looks very aesthetically pleasing."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ethanol/hotlime_miami/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
@@ -2580,7 +2491,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
var/list/names = list("null fruit" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit.
var/list/tastes = list("bad coding" = 1) //List of tastes. See above.
pH = 4
- value = 4
/datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data)
names = data["names"]
diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
index 85f474920b..62aea28009 100644
--- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
@@ -165,6 +165,7 @@
metabolization_rate = INFINITY
color = "#FF4DD2"
taste_description = "laughter"
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/M)
M.emote("laugh")
@@ -177,6 +178,7 @@
metabolization_rate = 1.5 * REAGENTS_METABOLISM
color = "#FF4DD2"
taste_description = "laughter"
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M)
if(prob(30))
@@ -210,6 +212,7 @@
glass_name = "glass of milk"
glass_desc = "White and nutritious goodness!"
pH = 6.5
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M)
if(HAS_TRAIT(M, TRAIT_CALCIUM_HEALER))
@@ -231,6 +234,7 @@
glass_icon_state = "glass_white"
glass_name = "glass of soy milk"
glass_desc = "White and nutritious soy goodness!"
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(20))
@@ -324,6 +328,7 @@
glass_icon_state = "lemonpitcher"
glass_name = "pitcher of lemonade"
glass_desc = "This drink leaves you feeling nostalgic for some reason."
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/tea/arnold_palmer
name = "Arnold Palmer"
@@ -334,6 +339,7 @@
glass_icon_state = "arnold_palmer"
glass_name = "Arnold Palmer"
glass_desc = "You feel like taking a few golf swings after a few swigs of this."
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M)
if(prob(5))
@@ -404,6 +410,7 @@
glass_icon_state = "nuka_colaglass"
glass_name = "glass of Nuka Cola"
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
@@ -559,6 +566,7 @@
glass_icon_state = "grey_bull_glass"
glass_name = "glass of Grey Bull"
glass_desc = "Surprisingly it isnt grey."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L)
..()
@@ -633,6 +641,7 @@
glass_icon_state = "soy_latte"
glass_name = "soy latte"
glass_desc = "A nice and refreshing beverage while you're reading."
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
@@ -654,6 +663,7 @@
glass_icon_state = "cafe_latte"
glass_name = "cafe latte"
glass_desc = "A nice, strong and refreshing beverage while you're reading."
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
@@ -675,6 +685,7 @@
glass_icon_state = "doctorsdelightglass"
glass_name = "Doctor's Delight"
glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-0.5, 0)
@@ -697,6 +708,7 @@
glass_icon_state = "chocolatepudding"
glass_name = "chocolate pudding"
glass_desc = "Tasty."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/vanillapudding
name = "Vanilla Pudding"
@@ -708,6 +720,7 @@
glass_icon_state = "vanillapudding"
glass_name = "vanilla pudding"
glass_desc = "Tasty."
+ value = REAGENT_VALUE_UNCOMMON //real vanilla.
/datum/reagent/consumable/cherryshake
name = "Cherry Shake"
@@ -719,6 +732,7 @@
glass_icon_state = "cherryshake"
glass_name = "cherry shake"
glass_desc = "A cherry flavored milkshake."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/bluecherryshake
name = "Blue Cherry Shake"
@@ -730,6 +744,7 @@
glass_icon_state = "bluecherryshake"
glass_name = "blue cherry shake"
glass_desc = "An exotic blue milkshake."
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/consumable/pumpkin_latte
name = "Pumpkin Latte"
@@ -741,6 +756,7 @@
glass_icon_state = "pumpkin_latte"
glass_name = "pumpkin latte"
glass_desc = "A mix of coffee and pumpkin juice."
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/gibbfloats
name = "Gibb Floats"
@@ -752,6 +768,7 @@
glass_icon_state = "gibbfloats"
glass_name = "Gibbfloat"
glass_desc = "Dr. Gibb with ice cream on top."
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/pumpkinjuice
name = "Pumpkin Juice"
@@ -764,6 +781,7 @@
description = "Juiced from real blumpkin."
color = "#00BFFF"
taste_description = "a mouthful of pool water"
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/triple_citrus
name = "Triple Citrus"
@@ -793,6 +811,7 @@
color = "#7D4E29"
quality = DRINK_NICE
taste_description = "chocolate milk"
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/menthol
name = "Menthol"
@@ -821,6 +840,7 @@
color = "#FFA500"
taste_description = "parsnip"
glass_name = "glass of parsnip juice"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink
name = "Peach Juice"
@@ -846,6 +866,7 @@
glass_icon_state = "cream_soda"
glass_name = "Cream Soda"
glass_desc = "A classic space-American vanilla flavored soft drink."
+ value = REAGENT_VALUE_VERY_COMMON //just a little vanilla
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
@@ -874,6 +895,7 @@
glass_icon_state = "red_queen"
glass_name = "Red Queen"
glass_desc = "DRINK ME."
+ value = REAGENT_VALUE_COMMON //growth serum.
var/current_size = RESIZE_DEFAULT_SIZE
/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/H)
@@ -899,10 +921,11 @@
description = "A drink of a bygone era of milk and artificial sweetener back on a rock."
color = "#f76aeb"//rgb(247, 106, 235)
glass_icon_state = "pinkmilk"
- quality = DRINK_FANTASTIC
+ quality = DRINK_VERYGOOD
taste_description = "sweet strawberry and milk cream"
glass_name = "tall glass of strawberry milk"
glass_desc = "Delicious flavored strawberry syrup mixed with milk."
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/consumable/tea/pinkmilk/on_mob_life(mob/living/carbon/M)
if(prob(15))
@@ -915,7 +938,7 @@
description = "A timeless classic!"
color = "#f76aeb"//rgb(247, 106, 235)
glass_icon_state = "pinktea"
- quality = DRINK_FANTASTIC
+ quality = DRINK_VERYGOOD
taste_description = "sweet tea with a hint of strawberry"
glass_name = "mug of strawberry tea"
glass_desc = "Delicious traditional tea flavored with strawberries."
@@ -958,6 +981,7 @@
glass_icon_state = "monkey_energy_glass"
glass_name = "glass of Monkey Energy"
glass_desc = "You can unleash the ape, but without the pop of the can?"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
@@ -975,3 +999,4 @@
glass_icon_state = "glass_yellow"
glass_name = "glass of bungo juice"
glass_desc = "Exotic! You feel like you are on vacation already."
+ value = REAGENT_VALUE_COMMON
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index 086515d9dd..ef4b7f3a53 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -1,6 +1,5 @@
/datum/reagent/drug
name = "Drug"
- value = 12
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
var/trippy = TRUE //Does this drug make you trip?
@@ -11,7 +10,7 @@
/datum/reagent/drug/space_drugs
name = "Space drugs"
- value = 6
+ value = REAGENT_VALUE_VERY_COMMON
description = "An illegal chemical compound used as drug."
color = "#60A584" // rgb: 96, 165, 132
overdose_threshold = 30
@@ -38,7 +37,6 @@
/datum/reagent/drug/nicotine
name = "Nicotine"
- value = 0
description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
@@ -66,6 +64,7 @@
overdose_threshold = 20
addiction_threshold = 10
pH = 10
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/drug/crank/on_mob_life(mob/living/carbon/M)
if(prob(5))
@@ -112,6 +111,7 @@
overdose_threshold = 20
addiction_threshold = 15
pH = 9
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/M)
@@ -167,6 +167,7 @@
var/jitter = TRUE
var/confusion = TRUE
pH = 5
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L)
..()
@@ -250,6 +251,7 @@
overdose_threshold = 35
jitter = FALSE
brain_damage = FALSE
+ value = REAGENT_VALUE_RARE
/datum/reagent/drug/bath_salts
name = "Bath Salts"
@@ -261,6 +263,7 @@
taste_description = "salt" // because they're bathsalts?
var/datum/brain_trauma/special/psychotic_brawling/bath_salts/rage
pH = 8.2
+ value = REAGENT_VALUE_RARE
/datum/reagent/drug/bath_salts/on_mob_metabolize(mob/living/L)
..()
@@ -357,6 +360,7 @@
reagent_state = LIQUID
color = "#78FFF0"
pH = 9.2
+ value = REAGENT_VALUE_RARE
/datum/reagent/drug/aranesp/on_mob_life(mob/living/carbon/M)
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
@@ -378,6 +382,7 @@
addiction_threshold = 10
overdose_threshold = 20
pH = 10.5
+ value = REAGENT_VALUE_RARE
/datum/reagent/drug/happiness/on_mob_add(mob/living/L)
..()
@@ -457,10 +462,11 @@
addiction_stage3_end = 40
addiction_stage4_end = 240
pH = 12.5
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L)
. = ..()
- L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/skooma)
L.next_move_modifier *= 2
if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -473,7 +479,7 @@
/datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L)
. = ..()
- L.remove_movespeed_modifier(type)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/skooma)
L.next_move_modifier *= 0.5
if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -521,3 +527,35 @@
if(prob(40))
M.emote(pick("twitch","drool","moan"))
..()
+
+/datum/reagent/syndicateadrenals
+ name = "Syndicate Adrenaline"
+ description = "Regenerates your stamina and increases your reaction time."
+ color = "#E62111"
+ overdose_threshold = 6
+ value = REAGENT_VALUE_VERY_RARE
+
+/datum/reagent/syndicateadrenals/on_mob_life(mob/living/M)
+ M.adjustStaminaLoss(-5*REM)
+ . = ..()
+
+/datum/reagent/syndicateadrenals/on_mob_metabolize(mob/living/M)
+ . = ..()
+ if(istype(M))
+ M.next_move_modifier *= 0.5
+ to_chat(M, "You feel an intense surge of energy rushing through your veins.")
+
+/datum/reagent/syndicateadrenals/on_mob_end_metabolize(mob/living/M)
+ . = ..()
+ if(istype(M))
+ M.next_move_modifier *= 2
+ to_chat(M, "You feel as though the world around you is going faster.")
+
+/datum/reagent/syndicateadrenals/overdose_start(mob/living/M)
+ to_chat(M, "You feel an intense pain in your chest...")
+
+/datum/reagent/syndicateadrenals/overdose_process(mob/living/M)
+ if(iscarbon(M))
+ var/mob/living/carbon/C = M
+ if(!C.undergoing_cardiac_arrest())
+ C.set_heartattack(TRUE)
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 24c518b70b..c7ff3f01c9 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -11,7 +11,7 @@
name = "Consumable"
taste_description = "generic food"
taste_mult = 4
- value = 0.1
+ value = REAGENT_VALUE_VERY_COMMON
var/nutriment_factor = 1 * REAGENTS_METABOLISM
var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes
@@ -90,7 +90,7 @@
/datum/reagent/consumable/nutriment/vitamin
name = "Vitamin"
description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
- value = 0.5
+ value = REAGENT_VALUE_COMMON
nutriment_factor = 15 * REAGENTS_METABOLISM //The are the best food for you!
brute_heal = 1
burn_heal = 1
@@ -105,7 +105,7 @@
description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying."
color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
taste_mult = 0.8
- value = 1
+ value = REAGENT_VALUE_COMMON
taste_description = "oil"
nutriment_factor = 5 * REAGENTS_METABOLISM //Not very healthy on its own
metabolization_rate = 10 * REAGENTS_METABOLISM
@@ -155,7 +155,7 @@
metabolization_rate = 2 * REAGENTS_METABOLISM
overdose_threshold = 200 // Hyperglycaemic shock
taste_description = "sweetness"
- value = 1
+ value = REAGENT_VALUE_NONE
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
to_chat(M, "You go into hyperglycaemic shock! Lay off the twinkies!")
@@ -179,6 +179,7 @@
description = "A salty sauce made from the soy plant."
color = "#792300" // rgb: 121, 35, 0
taste_description = "umami"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/ketchup
name = "Ketchup"
@@ -230,7 +231,7 @@
description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes."
color = "#8BA6E9" // rgb: 139, 166, 233
taste_description = "mint"
- value = 2
+ value = REAGENT_VALUE_COMMON
pH = 13 //HMM! I wonder
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/M)
@@ -399,6 +400,7 @@
metabolization_rate = 0.2 * REAGENTS_METABOLISM
taste_description = "mushroom"
pH = 11
+ value = REAGENT_VALUE_COMMON
/datum/reagent/drug/mushroomhallucinogen/on_mob_life(mob/living/carbon/M)
M.slurring = max(M.slurring,50)
@@ -429,6 +431,7 @@
color = "#FEFEFE"
taste_description = "garlic"
metabolization_rate = 0.15 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M)
if(isvampire(M)) //incapacitating but not lethal. Unfortunately, vampires cannot vomit.
@@ -459,7 +462,7 @@
M.emote("scream")
if(prob(min(5, current_cycle)) && iscarbon(M))
var/mob/living/carbon/C
- C.vomit()
+ C.vomit()
if(INJECT)
if(prob(min(20, current_cycle)))
to_chat(M, "You feel like your veins are boiling!")
@@ -468,10 +471,10 @@
..()
/datum/reagent/consumable/sprinkles
name = "Sprinkles"
- value = 3
description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops."
color = "#FF00FF" // rgb: 255, 0, 255
taste_description = "childhood whimsy"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM))
@@ -483,7 +486,7 @@
name = "Peanut Butter"
description = "A popular food paste made from ground dry-roasted peanuts."
color = "#C29261"
- value = 3
+ value = REAGENT_VALUE_UNCOMMON
nutriment_factor = 10 * REAGENTS_METABOLISM
taste_description = "peanuts"
@@ -491,7 +494,7 @@
name = "Corn Oil"
description = "An oil derived from various types of corn."
nutriment_factor = 12 * REAGENTS_METABOLISM
- value = 4
+ value = REAGENT_VALUE_UNCOMMON
color = "#302000" // rgb: 48, 32, 0
taste_description = "slime"
@@ -509,7 +512,7 @@
/datum/reagent/consumable/enzyme
name = "Universal Enzyme"
- value = 1
+ value = REAGENT_VALUE_COMMON
description = "A universal enzyme used in the preperation of certain chemicals and foods."
color = "#365E30" // rgb: 54, 94, 48
taste_description = "sweetness"
@@ -545,7 +548,6 @@
/datum/reagent/consumable/flour
name = "Flour"
- value = 0.5
description = "This is what you rub all over yourself to pretend to be a ghost."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 0, 0, 0
@@ -562,19 +564,18 @@
name = "Cherry Jelly"
description = "Totally the best. Only to be spread on foods with excellent lateral symmetry."
color = "#801E28" // rgb: 128, 30, 40
- value = 1
+ value = REAGENT_VALUE_COMMON
taste_description = "cherry"
/datum/reagent/consumable/bluecherryjelly
name = "Blue Cherry Jelly"
description = "Blue and tastier kind of cherry jelly."
color = "#00F0FF"
- value = 12
+ value = REAGENT_VALUE_UNCOMMON
taste_description = "blue cherry"
/datum/reagent/consumable/rice
name = "Rice"
- value = 0.5
description = "tiny nutritious grains"
reagent_state = SOLID
nutriment_factor = 3 * REAGENTS_METABOLISM
@@ -583,7 +584,7 @@
/datum/reagent/consumable/vanilla
name = "Vanilla Powder"
- value = 1
+ value = REAGENT_VALUE_UNCOMMON
description = "A fatty, bitter paste made from vanilla pods."
reagent_state = SOLID
nutriment_factor = 5 * REAGENTS_METABOLISM
@@ -592,7 +593,6 @@
/datum/reagent/consumable/eggyolk
name = "Egg Yolk"
- value = 1
description = "It's full of protein."
nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#FFB500"
@@ -600,14 +600,13 @@
/datum/reagent/consumable/corn_starch
name = "Corn Starch"
- value = 2
description = "A slippery solution."
color = "#f7f6e4"
taste_description = "slime"
/datum/reagent/consumable/corn_syrup
name = "Corn Syrup"
- value = 1
+ value = REAGENT_VALUE_UNCOMMON
description = "Decays into sugar."
color = "#fff882"
metabolization_rate = 3 * REAGENTS_METABOLISM
@@ -621,7 +620,7 @@
name = "honey"
description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties."
color = "#d3a308"
- value = 15
+ value = REAGENT_VALUE_COMMON
nutriment_factor = 10 * REAGENTS_METABOLISM
metabolization_rate = 1 * REAGENTS_METABOLISM
taste_description = "sweetness"
@@ -649,6 +648,7 @@
color = "#DFDFDF"
value = 5
taste_description = "mayonnaise"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/tearjuice
name = "Tear Juice"
@@ -656,6 +656,7 @@
color = "#c0c9a0"
taste_description = "bitterness"
pH = 5
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/tearjuice/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(!istype(M))
@@ -694,6 +695,7 @@
reagent_state = SOLID
nutriment_factor = 12 * REAGENTS_METABOLISM
color = "#664330" // rgb: 102, 67, 48
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/M)
if(M.nutrition > NUTRITION_LEVEL_FULL - 25)
@@ -709,6 +711,7 @@
color = "#1d043d"
taste_description = "bitter mushroom"
pH = 12
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/carbon/M)
if(current_cycle >= 10)
@@ -729,6 +732,7 @@
color = "#b5a213"
taste_description = "tingling mushroom"
pH = 11.2
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/tinlux/reaction_mob(mob/living/M)
M.set_light(2)
@@ -743,6 +747,7 @@
nutriment_factor = 3 * REAGENTS_METABOLISM
taste_description = "fruity mushroom"
pH = 10.4
+ value = REAGENT_VALUE_RARE
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/M)
if(prob(80))
@@ -808,6 +813,7 @@
taste_mult = 2
taste_description = "caramel"
reagent_state = SOLID
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/secretsauce
name = "secret sauce"
@@ -818,6 +824,7 @@
taste_mult = 100
can_synth = FALSE
pH = 6.1
+ value = REAGENT_VALUE_AMAZING
/datum/reagent/consumable/secretsauce/reaction_obj(obj/O, reac_volume)
//splashing any amount above or equal to 1u of secret sauce onto a piece of food turns its quality to 100
@@ -838,6 +845,7 @@
taste_mult = 6
taste_description = "smoke"
overdose_threshold = 25
+ value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/char/overdose_process(mob/living/carbon/M)
if(prob(10))
@@ -850,3 +858,4 @@
color = "#78280A" // rgb: 120 40, 10
taste_mult = 2.5 //sugar's 1.5, capsacin's 1.5, so a good middle ground.
taste_description = "smokey sweetness"
+ value = REAGENT_VALUE_COMMON
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index ecceb6e8bf..e4973dd2d5 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -7,8 +7,8 @@
/datum/reagent/medicine
name = "Medicine"
- value = 2
taste_description = "bitterness"
+ value = REAGENT_VALUE_VERY_COMMON //Low prices, spess medical companies are cheapstakes and products are taxed honk...
/datum/reagent/medicine/on_mob_life(mob/living/carbon/M)
current_cycle++
@@ -19,6 +19,7 @@
description = "Leporazine will effectively regulate a patient's body temperature, ensuring it never leaves safe levels."
pH = 8.4
color = "#82b8aa"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/leporazine/on_mob_life(mob/living/carbon/M)
if(M.bodytemperature > BODYTEMP_NORMAL)
@@ -33,6 +34,7 @@
color = "#ffffff"
can_synth = FALSE
taste_description = "badmins"
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M)
M.reagents.remove_all_type(/datum/reagent/toxin, 5*REM, 0, 1)
@@ -101,6 +103,7 @@
description = "Reduces drowsiness, hallucinations, and Histamine from body."
color = "#EC536D" // rgb: 236, 83, 109
pH = 5.2
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(M.drowsyness-5, 0)
@@ -131,6 +134,7 @@
color = "#0000C8"
taste_description = "sludge"
pH = 11
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/carbon/M)
var/power = -0.00003 * (M.bodytemperature ** 2) + 3
@@ -152,6 +156,7 @@
taste_description = "muscle"
metabolization_rate = 1.5 * REAGENTS_METABOLISM
pH = 13
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/clonexadone/on_mob_life(mob/living/carbon/M)
if(M.bodytemperature < T0C)
@@ -167,6 +172,7 @@
color = "#f7832a"
taste_description = "spicy jelly"
pH = 12
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/carbon/M)
if(M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT)
@@ -198,7 +204,7 @@
overdose_threshold = 30
taste_description = "fish"
pH = 12.2
- value = 20
+ value = REAGENT_VALUE_RARE
/datum/reagent/medicine/rezadone/on_mob_life(mob/living/carbon/M)
M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
@@ -239,7 +245,13 @@
color = "#ffeac9"
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 50
- value = 3
+
+/datum/reagent/medicine/silver_sulfadiazine/reaction_obj(obj/O, reac_volume)
+ if(istype(O, /obj/item/stack/medical/gauze))
+ var/obj/item/stack/medical/gauze/G = O
+ reac_volume = min((reac_volume / 10), G.amount)
+ new/obj/item/stack/medical/ointment(get_turf(G), reac_volume)
+ G.use(reac_volume)
/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(iscarbon(M) && M.stat != DEAD)
@@ -277,7 +289,7 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 25
pH = 10.7
- value = 4
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M)
if(M.getFireLoss() > 25)
@@ -301,7 +313,6 @@
pH = 6.7
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 50
- value = 3
/datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(iscarbon(M) && M.stat != DEAD)
@@ -317,6 +328,12 @@
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
..()
+/datum/reagent/medicine/styptic_powder/reaction_obj(obj/O, reac_volume)
+ if(istype(O, /obj/item/stack/medical/gauze))
+ var/obj/item/stack/medical/gauze/G = O
+ reac_volume = min((reac_volume / 10), G.amount)
+ new/obj/item/stack/medical/bruise_pack(get_turf(G), reac_volume)
+ G.use(reac_volume)
/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-2*REM, 0)
@@ -343,7 +360,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
var/last_added = 0
var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active
pH = 5.5
- value = 1
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M)
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
@@ -384,6 +400,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#6D6374"
metabolization_rate = 0.4 * REAGENTS_METABOLISM
pH = 2.6
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/mine_salve/on_mob_life(mob/living/carbon/C)
C.hal_screwyhud = SCREWYHUD_HEALTHY
@@ -424,7 +441,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
pH = 11.5
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 40
- value = 6
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(iscarbon(M))
@@ -461,7 +478,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "ash"
pH = 5
- value = 1
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-2*REM, 0)
@@ -480,7 +496,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 30
pH = 2
- value = 5
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-0.5*REM, 0)
@@ -537,6 +553,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#003153" // RGB 0, 49, 83
metabolization_rate = 0.5 * REAGENTS_METABOLISM
pH = 8.9
+ value = REAGENT_VALUE_COMMON //uncraftable
/datum/reagent/medicine/prussian_blue/on_mob_life(mob/living/carbon/M)
if(M.radiation > 0)
@@ -550,6 +567,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#E6FFF0"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
pH = 1 //One of the best buffers, NEVERMIND!
+ value = REAGENT_VALUE_UNCOMMON
var/healtoxinlover = FALSE
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M)
@@ -568,6 +586,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#91D865"
healtoxinlover = TRUE
pH = 12//invert
+ value = REAGENT_VALUE_RARE
/datum/reagent/medicine/sal_acid
name = "Salicyclic Acid"
@@ -577,6 +596,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 25
pH = 2.1
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/M)
@@ -688,6 +708,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#64FFE6"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
pH = 11.5
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/carbon/M)
if(prob(10))
@@ -708,10 +729,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/L)
..()
- L.ignore_slowdown(type)
+ L.add_movespeed_mod_immunities(type, list(/datum/movespeed_modifier/damage_slowdown, /datum/movespeed_modifier/damage_slowdown_flying, /datum/movespeed_modifier/monkey_health_speedmod))
/datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/L)
- L.unignore_slowdown(type)
+ L.remove_movespeed_mod_immunities(type, list(/datum/movespeed_modifier/damage_slowdown, /datum/movespeed_modifier/damage_slowdown_flying, /datum/movespeed_modifier/monkey_health_speedmod))
..()
/datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M)
@@ -803,6 +824,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 35
pH = 12
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/medicine/atropine/on_mob_life(mob/living/carbon/M)
if(M.health < 0)
@@ -867,6 +889,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "magnets"
pH = 0
+ value = REAGENT_VALUE_RARE
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(M.stat == DEAD)
@@ -990,14 +1013,15 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 60
pH = 8.7
+ value = REAGENT_VALUE_RARE
/datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L)
..()
- L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.5, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants)
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
/datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(type)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants)
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
..()
@@ -1154,6 +1178,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
reagent_state = LIQUID
color = "#91D865"
taste_description = "jelly"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-1.5*REM, FALSE)
@@ -1169,6 +1194,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
reagent_state = SOLID
color = "#555555"
pH = 11
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-5*REM, FALSE) //A ton of healing - this is a 50 telecrystal investment.
@@ -1189,6 +1215,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
reagent_state = SOLID
color = "#555555"
pH = 11
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/medicine/lesser_syndicate_nanites/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-3*REM, FALSE) // hidden gold shh
@@ -1212,6 +1239,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
overdose_threshold = 30
taste_description = "jelly"
pH = 11.8
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/medicine/neo_jelly/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-1.5*REM, FALSE)
@@ -1234,6 +1262,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = rgb(255, 175, 0)
overdose_threshold = 25
pH = 11
+ value = REAGENT_VALUE_COMMON //not any higher. Ambrosia is a milestone for hydroponics already.
/datum/reagent/medicine/earthsblood/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-3 * REM, FALSE)
@@ -1261,6 +1290,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#27870a"
metabolization_rate = 0.4 * REAGENTS_METABOLISM
pH = 4.3
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M)
for(var/datum/reagent/drug/R in M.reagents.reagent_list)
@@ -1283,6 +1313,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent
can_synth = FALSE
pH = 14
+ value = REAGENT_VALUE_AMAZING
/datum/reagent/medicine/lavaland_extract/on_mob_life(mob/living/carbon/M)
M.heal_bodypart_damage(5,5)
@@ -1302,6 +1333,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed."
color = "#918e53"
overdose_threshold = 30
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L)
..()
@@ -1329,13 +1361,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
description = "Drastically increases movement speed, but deals toxin damage."
color = "#669153"
metabolization_rate = 1
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L)
..()
- L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/changelinghaste)
/datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(type)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/changelinghaste)
..()
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M)
@@ -1365,14 +1398,15 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/muscle_stimulant
name = "Muscle Stimulant"
description = "A potent chemical that allows someone under its influence to be at full physical ability even when under massive amounts of pain."
+ value = REAGENT_VALUE_RARE
/datum/reagent/medicine/muscle_stimulant/on_mob_metabolize(mob/living/M)
. = ..()
- M.ignore_slowdown(type)
+ M.add_movespeed_mod_immunities(type, list(/datum/movespeed_modifier/damage_slowdown, /datum/movespeed_modifier/damage_slowdown_flying, /datum/movespeed_modifier/monkey_health_speedmod))
/datum/reagent/medicine/muscle_stimulant/on_mob_end_metabolize(mob/living/M)
. = ..()
- M.unignore_slowdown(type)
+ M.remove_movespeed_mod_immunities(type, list(/datum/movespeed_modifier/damage_slowdown, /datum/movespeed_modifier/damage_slowdown_flying, /datum/movespeed_modifier/monkey_health_speedmod))
/datum/reagent/medicine/modafinil
name = "Modafinil"
@@ -1382,6 +1416,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.1 * REAGENTS_METABOLISM
overdose_threshold = 20 // with the random effects this might be awesome or might kill you at less than 10u (extensively tested)
taste_description = "salt" // it actually does taste salty
+ value = REAGENT_VALUE_RARE
var/overdose_progress = 0 // to track overdose progress
pH = 7.89
@@ -1448,6 +1483,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 30
pH = 9.12
+ value = REAGENT_VALUE_COMMON
/datum/reagent/medicine/psicodine/on_mob_add(mob/living/L)
..()
@@ -1480,6 +1516,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
reagent_state = SOLID
color = "#FFFFD0"
metabolization_rate = 1.5 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/medicine/silibinin/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, -2)//Add a chance to cure liver trauma once implemented.
@@ -1494,6 +1531,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 50
taste_description = "numbing bitterness"
+ value = REAGENT_VALUE_RARE
/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I wanted a collection of small positive effects, this is as hard to obtain as coniine after all.
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, -0.25)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 484bea7206..5fb27bd074 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1,7 +1,7 @@
/datum/reagent/blood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null)
name = "Blood"
- value = 1
+ value = REAGENT_VALUE_UNCOMMON // $$$ blood ""donations"" $$$
color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0
description = "Blood from some creature."
metabolization_rate = 5 //fast rate so it disappears fast.
@@ -140,8 +140,9 @@
data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Synthetic Blood"
description = "A synthetically produced imitation of blood."
- taste_description = "oily"
+ taste_description = "oil"
color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48
+ value = REAGENT_VALUE_NONE
/datum/reagent/blood/jellyblood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
@@ -158,6 +159,7 @@
description = "This highly resembles blood, but it doesnt actually function like it, resembling more ketchup, with a more blood-like consistency."
taste_description = "sap" //Like tree sap?
pH = 7.45
+ value = REAGENT_VALUE_NONE
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
if(prob(10))
@@ -387,6 +389,7 @@
description = "Something that shouldn't exist on this plane of existence."
taste_description = "suffering"
pH = 6.5
+ value = REAGENT_VALUE_RARE
/datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
@@ -423,6 +426,7 @@
name = "Hell Water"
description = "YOUR FLESH! IT BURNS!"
taste_description = "burning"
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/hellwater/on_mob_life(mob/living/carbon/M)
M.fire_stacks = min(5,M.fire_stacks + 3)
@@ -437,6 +441,7 @@
name = "Zelus Oil"
description = "Oil blessed by a greater being."
taste_description = "metallic oil"
+ value = REAGENT_VALUE_RARE
/datum/reagent/fuel/holyoil/on_mob_life(mob/living/carbon/M)
if(is_servant_of_ratvar(M))
@@ -475,6 +480,7 @@
name = "Godblood"
description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power."
overdose_threshold = 150
+ value = REAGENT_VALUE_RARE
/datum/reagent/lube
name = "Space Lube"
@@ -591,6 +597,7 @@
color = "#5EFF3B" //RGB: 94, 255, 59
metabolization_rate = INFINITY //So it instantly removes all of itself
taste_description = "slime"
+ value = REAGENT_VALUE_RARE
var/datum/species/race = /datum/species/human
var/mutationtext = "The pain subsides. You feel... human."
@@ -750,6 +757,7 @@
color = "#5EFF3B" //RGB: 94, 255, 59
taste_description = "slime"
metabolization_rate = 0.2
+ value = REAGENT_VALUE_RARE
/datum/reagent/slime_toxin/on_mob_life(mob/living/carbon/human/H)
..()
@@ -786,6 +794,7 @@
color = "#5EFF3B" //RGB: 94, 255, 59
metabolization_rate = INFINITY
taste_description = "slime"
+ value = REAGENT_VALUE_RARE
/datum/reagent/mulligan/on_mob_life(mob/living/carbon/human/H)
..()
@@ -800,6 +809,7 @@
description = "An advanced corruptive toxin produced by slimes."
color = "#13BC5E" // rgb: 19, 188, 94
taste_description = "slime"
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/aslimetoxin/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
if(method != TOUCH)
@@ -811,6 +821,7 @@
color = "#5EFF3B" //RGB: 94, 255, 59
can_synth = FALSE
taste_description = "decay"
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/gluttonytoxin/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
L.ForceContractDisease(new /datum/disease/transformation/morph(), FALSE, TRUE)
@@ -1034,6 +1045,14 @@
// +20% success propability on each step, useful while operating in less-than-perfect conditions
..()
+/datum/reagent/space_cleaner/sterilizine/reaction_obj(obj/O, reac_volume)
+ if(istype(O, /obj/item/stack/medical/gauze))
+ var/obj/item/stack/medical/gauze/G = O
+ reac_volume = min((reac_volume / 10), G.amount)
+ new/obj/item/stack/medical/gauze/adv(get_turf(G), reac_volume)
+ G.use(reac_volume)
+
+
/datum/reagent/iron
name = "Iron"
description = "Pure iron is a metal."
@@ -1113,6 +1132,7 @@
color = "#0000CC"
taste_description = "fizzling blue"
pH = 12
+ value = REAGENT_VALUE_RARE
/datum/reagent/bluespace/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
@@ -1239,6 +1259,7 @@
metabolization_rate = 1.5 * REAGENTS_METABOLISM
taste_description = "acid"
pH = 2
+ value = REAGENT_VALUE_RARE
/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(3.33)
@@ -1290,6 +1311,7 @@
color = "#535E66" // rgb: 83, 94, 102
can_synth = FALSE
taste_description = "sludge"
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/nanomachines/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
@@ -1301,6 +1323,7 @@
color = "#535E66" // rgb: 83, 94, 102
can_synth = FALSE
taste_description = "sludge"
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/xenomicrobes/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
@@ -1313,6 +1336,7 @@
can_synth = FALSE
taste_description = "slime"
pH = 11
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/fungalspores/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
@@ -1340,6 +1364,7 @@
color = "#664B63" // rgb: 102, 75, 99
taste_description = "metal"
pH = 11.8
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/ammonia
name = "Ammonia"
@@ -1417,6 +1442,7 @@
metabolization_rate = 1.5 * REAGENTS_METABOLISM
color = "E1A116"
taste_description = "sourness"
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/stimulum/on_mob_metabolize(mob/living/L)
..()
@@ -1442,13 +1468,14 @@
color = "90560B"
taste_description = "burning"
pH = 2
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/nitryl/on_mob_metabolize(mob/living/L)
..()
- L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nitryl)
/datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(type)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nitryl)
..()
/////////////////////////Coloured Crayon Powder////////////////////////////
@@ -1463,6 +1490,7 @@
color = "#FFFFFF" // rgb: 207, 54, 0
taste_description = "the back of class"
no_mob_color = TRUE
+ value = REAGENT_VALUE_NONE
/datum/reagent/colorful_reagent/crayonpowder/New()
description = "\an [colorname] powder made by grinding down crayons, good for colouring chemical reagents."
@@ -1633,6 +1661,7 @@
color = "#FFFF00"
var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d11141","#00b159","#00aedb","#f37735","#ffc425","#008744","#0057e7","#d62d20","#ffa700")
taste_description = "rainbows"
+ value = REAGENT_VALUE_RARE
var/no_mob_color = FALSE
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/M)
@@ -1662,6 +1691,7 @@
color = "#ff00dd"
var/list/potential_colors = list("0ad","a0f","f73","d14","d14","0b5","0ad","f73","fc2","084","05e","d22","fa0") // fucking hair code
taste_description = "sourness"
+ value = REAGENT_VALUE_RARE
/datum/reagent/hair_dye/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
@@ -1677,6 +1707,7 @@
reagent_state = LIQUID
color = "#fac34b"
taste_description = "sourness"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/barbers_aid/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
@@ -1694,6 +1725,7 @@
reagent_state = LIQUID
color = "#ffaf00"
taste_description = "sourness"
+ value = REAGENT_VALUE_RARE
/datum/reagent/concentrated_barbers_aid/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
@@ -1726,6 +1758,7 @@
color = "#A70FFF"
taste_description = "dryness"
pH = 10.7
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/drying_agent/reaction_turf(turf/open/T, reac_volume)
if(istype(T))
@@ -1863,6 +1896,7 @@
color = "#00ff80"
taste_description = "strange honey"
pH = 3
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/M)
if(prob(2))
@@ -1884,6 +1918,7 @@
can_synth = FALSE
taste_description = "brains"
pH = 0.5
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/romerol/reaction_mob(mob/living/carbon/human/H, method=TOUCH, reac_volume)
// Silently add the zombie infection organ to be activated upon death
@@ -1897,6 +1932,7 @@
description = "An experimental serum which causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas."
reagent_state = LIQUID
color = "#00f041"
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/magillitis/on_mob_life(mob/living/carbon/M)
..()
@@ -1908,6 +1944,7 @@
description = "A commercial chemical designed to help older men in the bedroom."//not really it just makes you a giant
color = "#ff0000"//strong red. rgb 255, 0, 0
var/current_size = RESIZE_DEFAULT_SIZE
+ value = REAGENT_VALUE_COMMON
taste_description = "bitterness" // apparently what viagra tastes like
/datum/reagent/growthserum/on_mob_life(mob/living/carbon/H)
@@ -1978,6 +2015,7 @@
color = "#AAAAAA55"
taste_description = "water"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_RARE
pH = 15
/datum/reagent/pax/on_mob_metabolize(mob/living/L)
@@ -1994,6 +2032,7 @@
color = "#FAFF00"
taste_description = "acrid cinnamon"
metabolization_rate = 0.2 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/bz_metabolites/on_mob_metabolize(mob/living/L)
..()
@@ -2014,12 +2053,14 @@
name = "synth-pax"
description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax."
metabolization_rate = 1.5 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_COMMON
/datum/reagent/peaceborg_confuse
name = "Dizzying Solution"
description = "Makes the target off balance and dizzy"
metabolization_rate = 1.5 * REAGENTS_METABOLISM
taste_description = "dizziness"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/peaceborg_confuse/on_mob_life(mob/living/carbon/M)
if(M.confused < 6)
@@ -2035,6 +2076,7 @@
description = "An extremely weak stamina-toxin that tires out the target. Completely harmless."
metabolization_rate = 1.5 * REAGENTS_METABOLISM
taste_description = "tiredness"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/peaceborg_tire/on_mob_life(mob/living/carbon/M)
var/healthcomp = (100 - M.health) //DOES NOT ACCOUNT FOR ADMINBUS THINGS THAT MAKE YOU HAVE MORE THAN 200/210 HEALTH, OR SOMETHING OTHER THAN A HUMAN PROCESSING THIS.
@@ -2050,6 +2092,7 @@
color = "#9A6750" //RGB: 154, 103, 80
taste_description = "inner peace"
can_synth = FALSE
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/tranquility/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
@@ -2060,6 +2103,7 @@
description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results."
color = "#FAEAFF"
taste_description = "synthetic catnip"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/moonsugar/on_mob_life(mob/living/carbon/M)
if(prob(20))
@@ -2076,6 +2120,7 @@
var/datum/dna/original_dna
var/reagent_ticks = 0
chemical_flags = REAGENT_INVISIBLE
+ value = REAGENT_VALUE_GLORIOUS
/datum/reagent/changeling_string/on_mob_metabolize(mob/living/carbon/C)
if(ishuman(C) && C.dna && data["desired_dna"])
@@ -2111,6 +2156,7 @@
taste_description = "grass"
description = "A colorless liquid that makes people more peaceful and felines more happy."
metabolization_rate = 1.75 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_COMMON
/datum/reagent/pax/catnip/on_mob_life(mob/living/carbon/M)
if(prob(20))
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
index 939d5c9707..67ff61610d 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
@@ -5,6 +5,7 @@
reagent_state = SOLID
color = "#550000"
taste_description = "sweet tasting metal"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/thermite/reaction_turf(turf/T, reac_volume)
if(reac_volume >= 1)
@@ -21,13 +22,14 @@
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
color = "#808080" // rgb: 128, 128, 128
taste_description = "oil"
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/stabilizing_agent
name = "Stabilizing Agent"
description = "Keeps unstable chemicals stable. This does not work on everything."
reagent_state = LIQUID
color = "#FFFF00"
- value = 3
+ value = REAGENT_VALUE_VERY_COMMON
taste_description = "metal"
/datum/reagent/clf3
@@ -37,6 +39,7 @@
color = "#FFC8C8"
metabolization_rate = 4
taste_description = "burning"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/clf3/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(2)
@@ -79,13 +82,14 @@
reagent_state = LIQUID
color = "#5A64C8"
taste_description = "air and bitterness"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/liquid_dark_matter
name = "Liquid Dark Matter"
description = "Sucks everything into the detonation point."
reagent_state = LIQUID
color = "#210021"
- value = 10
+ value = REAGENT_VALUE_UNCOMMON
taste_description = "compressed bitterness"
/datum/reagent/blackpowder
@@ -93,9 +97,9 @@
description = "Explodes. Violently."
reagent_state = LIQUID
color = "#000000"
- value = 5
metabolization_rate = 0.05
taste_description = "salt"
+ value = REAGENT_VALUE_RARE
/datum/reagent/blackpowder/on_mob_life(mob/living/carbon/M)
..()
@@ -115,6 +119,7 @@
reagent_state = LIQUID
color = "#C8C8C8"
taste_description = "salt"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/smoke_powder
name = "Smoke Powder"
@@ -122,6 +127,7 @@
reagent_state = LIQUID
color = "#C8C8C8"
taste_description = "smoke"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/sonic_powder
name = "Sonic Powder"
@@ -129,6 +135,7 @@
reagent_state = LIQUID
color = "#C8C8C8"
taste_description = "loud noises"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/phlogiston
name = "Phlogiston"
@@ -136,6 +143,7 @@
reagent_state = LIQUID
color = "#FA00AF"
taste_description = "burning"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/phlogiston/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
M.adjust_fire_stacks(1)
@@ -156,8 +164,8 @@
description = "Very flammable."
reagent_state = LIQUID
color = "#FA00AF"
- value = 1
taste_description = "burning"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/napalm/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(1)
@@ -174,7 +182,7 @@
color = "#0000DC"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
-
+ value = REAGENT_VALUE_COMMON
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube
if(M.reagents.has_reagent(/datum/reagent/oxygen))
@@ -193,6 +201,7 @@
color = "#64FAC8"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M)
if(M.reagents.has_reagent(/datum/reagent/oxygen))
@@ -208,6 +217,7 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "charged metal"
var/shock_timer = 0
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/teslium/on_mob_life(mob/living/carbon/M)
shock_timer++
@@ -242,6 +252,7 @@
reagent_state = LIQUID
color = "#A6FAFF55"
taste_description = "the inside of a fire extinguisher"
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/firefighting_foam/reaction_turf(turf/open/T, reac_volume)
if (!istype(T))
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index bd79ed5fb8..3169d2d3aa 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -7,6 +7,7 @@
color = "#CF3600" // rgb: 207, 54, 0
taste_description = "bitterness"
taste_mult = 1.2
+ value = REAGENT_VALUE_COMMON //Encouraging people to mix toxins for reasons beyond harming each other or mixing reagents such as pen acid.
var/toxpwr = 1.5
/datum/reagent/toxin/on_mob_life(mob/living/carbon/M)
@@ -21,6 +22,7 @@
color = "#792300" // rgb: 121, 35, 0
toxpwr = 2.5
taste_description = "mushroom"
+ value = REAGENT_VALUE_UNCOMMON
pH = 13
/datum/reagent/toxin/mutagen
@@ -30,6 +32,7 @@
toxpwr = 0
taste_description = "slime"
taste_mult = 0.9
+ value = REAGENT_VALUE_VERY_COMMON
pH = 2.3
/datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume)
@@ -60,6 +63,7 @@
color = "#8228A0"
toxpwr = 3
pH = 4
+ value = REAGENT_VALUE_RARE //sheets are worth more
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C)
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
@@ -92,6 +96,7 @@
toxpwr = 0
taste_description = "acid"
pH = 1.2
+ value = REAGENT_VALUE_RARE
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/C)
. = TRUE
@@ -114,6 +119,7 @@
taste_description = "slime"
taste_mult = 1.3
pH = 10
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M)
if(prob(10))
@@ -132,6 +138,7 @@
toxpwr = 0
taste_description = "mint"
pH = 8
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M)
if(HAS_TRAIT(M, TRAIT_FAT))
@@ -145,6 +152,7 @@
toxpwr = 2
taste_description = "fish"
pH = 12
+ value = REAGENT_VALUE_RARE
/datum/reagent/toxin/zombiepowder
name = "Zombie Powder"
@@ -155,6 +163,7 @@
taste_description = "death"
var/fakedeath_active = FALSE
pH = 13
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/L)
..()
@@ -193,6 +202,7 @@
toxpwr = 0.8
taste_description = "death"
pH = 14.5
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/toxin/ghoulpowder/on_mob_metabolize(mob/living/L)
..()
@@ -214,6 +224,7 @@
toxpwr = 0
taste_description = "sourness"
pH = 11
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M)
M.hallucination += 5
@@ -226,6 +237,7 @@
toxpwr = 1
taste_mult = 1
pH = 2.7
+ value = REAGENT_VALUE_NONE
/datum/reagent/toxin/plantbgone/reaction_obj(obj/O, reac_volume)
if(istype(O, /obj/structure/alien/weeds))
@@ -250,6 +262,7 @@
description = "A harmful toxic mixture to kill weeds. Do not ingest!"
color = "#4B004B" // rgb: 75, 0, 75
pH = 3
+ value = REAGENT_VALUE_NONE
/datum/reagent/toxin/pestkiller
name = "Pest Killer"
@@ -257,6 +270,7 @@
color = "#4B004B" // rgb: 75, 0, 75
toxpwr = 1
pH = 3.2
+ value = REAGENT_VALUE_NONE
/datum/reagent/toxin/pestkiller/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
..()
@@ -270,6 +284,7 @@
color = "#9ACD32"
toxpwr = 1
pH = 11
+ value = REAGENT_VALUE_RARE
/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/C)
C.damageoverlaytemp = 60
@@ -284,6 +299,7 @@
toxpwr = 0.5
taste_description = "burning"
pH = 13
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(2)
@@ -323,6 +339,7 @@
glass_name = "glass of beer"
glass_desc = "A freezing pint of beer."
pH = 2
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/M)
switch(current_cycle)
@@ -340,6 +357,7 @@
color = "#5B2E0D" // rgb: 91, 46, 13
toxpwr = 0.5
pH = 4.2
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/toxin/teapowder
name = "Ground Tea Leaves"
@@ -348,6 +366,7 @@
color = "#7F8400" // rgb: 127, 132, 0
toxpwr = 0.5
pH = 4.9
+ value = REAGENT_VALUE_VERY_COMMON
/datum/reagent/toxin/mutetoxin //the new zombie powder.
name = "Mute Toxin"
@@ -367,6 +386,7 @@
color = "#6E2828"
data = 15
toxpwr = 0
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(REM * data, 0)
@@ -381,6 +401,7 @@
color = "#787878"
metabolization_rate = 0.125 * REAGENTS_METABOLISM
toxpwr = 0
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M)
M.radiation += 4
@@ -394,6 +415,7 @@
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 30
toxpwr = 0
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/toxin/histamine/on_mob_life(mob/living/carbon/M)
if(prob(50))
@@ -441,6 +463,7 @@
color = "#F0FFF0"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
toxpwr = 0
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/M)
toxpwr = 0.2*volume
@@ -476,6 +499,7 @@
color = "#00B4FF"
metabolization_rate = 0.125 * REAGENTS_METABOLISM
toxpwr = 1.25
+ value = REAGENT_VALUE_UNCOMMON
/datum/reagent/toxin/cyanide/on_mob_life(mob/living/carbon/M)
if(prob(5))
@@ -494,6 +518,7 @@
metabolization_rate = 0.25 * REAGENTS_METABOLISM
toxpwr = 0.5
taste_description = "bad cooking"
+ value = REAGENT_VALUE_NONE
/datum/reagent/toxin/condensed_cooking_oil
name = "Condensed Cooking Oil"
@@ -504,6 +529,7 @@
toxpwr = 0
taste_mult = -2
taste_description = "awful cooking"
+ value = REAGENT_VALUE_NONE
/datum/reagent/toxin/condensed_cooking_oil/on_mob_life(mob/living/carbon/M)
if(prob(5))
@@ -551,6 +577,7 @@
color = "#7F10C0"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
toxpwr = 2.5
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/toxin/initropidril/on_mob_life(mob/living/carbon/C)
if(prob(25))
@@ -582,6 +609,7 @@
metabolization_rate = 0.25 * REAGENTS_METABOLISM
toxpwr = 0
taste_mult = 0 // undetectable, I guess?
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/carbon/M)
if(current_cycle >= 10)
@@ -598,6 +626,7 @@
color = "#6496FA"
metabolization_rate = 0.75 * REAGENTS_METABOLISM
toxpwr = 0
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/M)
if(current_cycle >= 10)
@@ -626,6 +655,7 @@
color = "#FFFFFF"
toxpwr = 0
metabolization_rate = 0.5 * REAGENTS_METABOLISM
+ value = REAGENT_VALUE_RARE
/datum/reagent/toxin/amanitin/on_mob_end_metabolize(mob/living/M)
var/toxdamage = current_cycle*3*REM
@@ -656,6 +686,7 @@
color = "#7DC3A0"
metabolization_rate = 0.06 * REAGENTS_METABOLISM
toxpwr = 1.75
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/toxin/coniine/on_mob_life(mob/living/carbon/M)
M.losebreath += 5
@@ -670,6 +701,7 @@
overdose_threshold = 29
toxpwr = 0
taste_description = "vomit"
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/spewium/on_mob_life(mob/living/carbon/C)
.=..()
@@ -693,6 +725,7 @@
color = "#191919"
metabolization_rate = 0.125 * REAGENTS_METABOLISM
toxpwr = 1
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/M)
if(current_cycle >= 11)
@@ -708,6 +741,7 @@
color = "#C8C8C8" //RGB: 200, 200, 200
metabolization_rate = 0.2 * REAGENTS_METABOLISM
toxpwr = 0
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/heparin/on_mob_life(mob/living/carbon/M)
if(ishuman(M))
@@ -726,6 +760,7 @@
metabolization_rate = 0.6 * REAGENTS_METABOLISM
toxpwr = 0.5
taste_description = "spinning"
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/M)
if(M.hud_used)
@@ -752,6 +787,7 @@
metabolization_rate = 0.8 * REAGENTS_METABOLISM
toxpwr = 0.25
taste_description = "skewing"
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/toxin/skewium/on_mob_life(mob/living/carbon/M)
/*
@@ -788,6 +824,7 @@
color = "#3C5133"
metabolization_rate = 0.08 * REAGENTS_METABOLISM
toxpwr = 0.15
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M)
var/remove_amt = 5
@@ -809,6 +846,7 @@
taste_description = "acid"
self_consuming = TRUE
pH = 2.75
+ value = REAGENT_VALUE_NONE
/datum/reagent/toxin/acid/reaction_mob(mob/living/carbon/C, method=TOUCH, reac_volume)
if(!istype(C))
@@ -840,6 +878,7 @@
color = "#5050FF"
toxpwr = 2
acidpwr = 42.0
+ value = REAGENT_VALUE_COMMON
/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(current_cycle/10, 0)
@@ -853,6 +892,7 @@
metabolization_rate = 0 //stays in the system until active.
var/actual_metaboliztion_rate = REAGENTS_METABOLISM
toxpwr = 0
+ value = REAGENT_VALUE_VERY_RARE
var/actual_toxpwr = 5
var/delay = 30
@@ -871,6 +911,7 @@
color = "#F0F8FF" // rgb: 240, 248, 255
toxpwr = 0
taste_description = "stillness"
+ value = REAGENT_VALUE_RARE
/datum/reagent/toxin/mimesbane/on_mob_metabolize(mob/living/L)
ADD_TRAIT(L, TRAIT_EMOTEMUTE, type)
@@ -885,6 +926,7 @@
toxpwr = 0
taste_description = "bone hurting"
overdose_threshold = 20
+ value = REAGENT_VALUE_VERY_RARE //because it's very funny.
/datum/reagent/toxin/bonehurtingjuice/on_mob_add(mob/living/carbon/M)
M.say("oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice)
@@ -944,6 +986,7 @@
toxpwr = 0
taste_description = "brain hurting"
metabolization_rate = 5
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/toxin/brainhurtingjuice/on_mob_life(mob/living/carbon/M)
if(prob(50))
@@ -962,6 +1005,7 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
toxpwr = 0
taste_description = "tannin"
+ value = REAGENT_VALUE_RARE
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_HEART, 3)
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index f3ac118134..cfb6d92723 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -36,6 +36,9 @@ other types of metals and chemistry for reagents).
var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed.
var/departmental_flags = ALL //bitflags for deplathes.
var/list/datum/techweb_node/unlocked_by = list()
+ ///minimum and security levels the design can be printed on. Currently only available for rnd production machinery and mechfab.
+ var/min_security_level = SEC_LEVEL_GREEN
+ var/max_security_level = SEC_LEVEL_DELTA
var/research_icon //Replaces the item icon in the research console
var/research_icon_state
var/icon_cache
diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm
index c2bf817ddf..2cf9df6d50 100644
--- a/code/modules/research/designs/biogenerator_designs.dm
+++ b/code/modules/research/designs/biogenerator_designs.dm
@@ -2,6 +2,9 @@
///////Biogenerator Designs ///////
///////////////////////////////////
+//Please be wary to not add inorganic items to the results such as generic glass bottles and metal.
+//as they kind of defeat the design of this feature.
+
/datum/design/milk
name = "10u Milk"
id = "milk"
@@ -18,22 +21,6 @@
make_reagents = list(/datum/reagent/consumable/cream = 10)
category = list("initial","Food")
-/datum/design/milk_carton
- name = "Milk Carton"
- id = "milk_carton"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/food/condiment/milk
- category = list("initial","Food")
-
-/datum/design/cream_carton
- name = "Cream Carton"
- id = "cream_carton"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 300)
- build_path = /obj/item/reagent_containers/food/drinks/bottle/cream
- category = list("initial","Food")
-
/datum/design/black_pepper
name = "10u Black Pepper"
id = "black_pepper"
@@ -42,15 +29,6 @@
make_reagents = list(/datum/reagent/consumable/blackpepper = 10)
category = list("initial","Food")
-/datum/design/pepper_mill
- name = "Pepper Mill"
- id = "pepper_mill"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/reagent_containers/food/condiment/peppermill
- make_reagents = list()
- category = list("initial","Food")
-
/datum/design/enzyme
name = "10u Universal Enzyme"
id = "enzyme"
@@ -59,14 +37,6 @@
make_reagents = list(/datum/reagent/consumable/enzyme = 10)
category = list("initial","Food")
-/datum/design/flour_sack
- name = "Flour Sack"
- id = "flour_sack"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 150)
- build_path = /obj/item/reagent_containers/food/condiment/flour
- category = list("initial","Food")
-
/datum/design/monkey_cube
name = "Monkey Cube"
id = "mcube"
@@ -84,43 +54,43 @@
category = list("initial", "Food")
/datum/design/ez_nut
- name = "E-Z Nutrient"
+ name = "10u E-Z Nutrient"
id = "ez_nut"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 10)
- build_path = /obj/item/reagent_containers/glass/bottle/nutrient/ez
+ materials = list(/datum/material/biomass = 2)
+ make_reagents = list(/datum/reagent/plantnutriment/eznutriment = 10)
category = list("initial","Botany Chemicals")
/datum/design/l4z_nut
- name = "Left 4 Zed"
+ name = "10u Left 4 Zed"
id = "l4z_nut"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 20)
- build_path = /obj/item/reagent_containers/glass/bottle/nutrient/l4z
+ materials = list(/datum/material/biomass = 4)
+ make_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 10)
category = list("initial","Botany Chemicals")
/datum/design/rh_nut
- name = "Robust Harvest"
+ name = "10u Robust Harvest"
id = "rh_nut"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 25)
- build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh
+ materials = list(/datum/material/biomass = 5)
+ make_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 10)
category = list("initial","Botany Chemicals")
/datum/design/weed_killer
name = "Weed Killer"
id = "weed_killer"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/reagent_containers/glass/bottle/killer/weedkiller
+ materials = list(/datum/material/biomass = 10)
+ make_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 10)
category = list("initial","Botany Chemicals")
/datum/design/pest_spray
name = "Pest Killer"
id = "pest_spray"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller
+ materials = list(/datum/material/biomass = 10)
+ make_reagents = list(/datum/reagent/toxin/pestkiller = 10)
category = list("initial","Botany Chemicals")
/datum/design/ammonia
@@ -139,13 +109,13 @@
make_reagents = list(/datum/reagent/saltpetre = 10)
category = list("initial","Botany Chemicals")
-/datum/design/botany_bottle
- name = "Empty Bottle"
- id = "botany_bottle"
+/datum/design/empty_carton
+ name = "Small Empty Carton Box"
+ id = "empty_carton"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 5)
- build_path = /obj/item/reagent_containers/glass/bottle/nutrient/empty
- category = list("initial", "Botany Chemicals")
+ materials = list(/datum/material/biomass = 15)
+ build_path = /obj/item/reagent_containers/food/drinks/bottle/bio_carton
+ category = list("initial", "Organic Materials")
/datum/design/cloth
name = "Roll of Cloth"
diff --git a/code/modules/research/designs/nanite_designs.dm b/code/modules/research/designs/nanite_designs.dm
index c72ee4fb8c..b157d0c349 100644
--- a/code/modules/research/designs/nanite_designs.dm
+++ b/code/modules/research/designs/nanite_designs.dm
@@ -529,7 +529,6 @@
////////////////////NANITE PROTOCOLS//////////////////////////////////////
//Note about the category name: The UI cuts the last 8 characters from the category name to remove the " Nanites" in the other categories
//Because of this, Protocols was getting cut down to "P", so i had to add some padding
-/*
/datum/design/nanites/kickstart
name = "Kickstart Protocol"
desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation."
@@ -557,4 +556,10 @@
id = "offline_nanites"
program_type = /datum/nanite_program/protocol/offline
category = list("Protocols_Nanites")
-*/
+
+/datum/design/nanites/synergy
+ name = "Synergy Protocol"
+ desc = "Replication Protocol: the nanites syncronize their tasks and processes within a host, leading to an increase in replication speed proportional to the current nanite volume."
+ id = "synergy_nanites"
+ program_type = /datum/nanite_program/protocol/synergy
+ category = list("Protocols_Nanites")
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 42b8a4dcbb..cc02e271f9 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -101,7 +101,7 @@ Note: Must be placed within 3 tiles of the R&D Console
if(!istype(loaded_item) || !istype(linked_console))
return FALSE
- if (id && id != RESEARCH_MATERIAL_RECLAMATION_ID)
+ if (id && id != RESEARCH_MATERIAL_RECLAMATION_ID && id != RESEARCH_DEEP_SCAN_ID)
var/datum/techweb_node/TN = SSresearch.techweb_node_by_id(id)
if(!istype(TN))
return FALSE
@@ -125,7 +125,7 @@ Note: Must be placed within 3 tiles of the R&D Console
if(destroy_item(loaded_item))
linked_console.stored_research.boost_with_path(SSresearch.techweb_node_by_id(TN.id), dpath)
- else
+ else if(id == RESEARCH_MATERIAL_RECLAMATION_ID)
var/list/point_value = techweb_item_point_check(loaded_item)
if(linked_console.stored_research.deconstructed_items[loaded_item.type])
point_value = list()
@@ -143,6 +143,15 @@ Note: Must be placed within 3 tiles of the R&D Console
if(destroy_item(loaded_item))
linked_console.stored_research.add_point_list(point_value)
linked_console.stored_research.deconstructed_items[loaded_type] = point_value
+ else if(id == RESEARCH_DEEP_SCAN_ID)
+ var/list/return_list = list()
+ . = SEND_SIGNAL(loaded_item, COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN, src, user, return_list)
+ flick("d_analyzer_process", src)
+ if(. & COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION)
+ say("New information uncovered from item deep scan[length(return_list)? ": [english_list(return_list)]" : ""].")
+ else
+ say("Item deep scan uncovered no new information.")
+
return TRUE
/obj/machinery/rnd/destructive_analyzer/proc/unload_item()
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index bd571607d2..0550fa9334 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -3,6 +3,7 @@
desc = "Makes researched and prototype items with materials and energy."
layer = BELOW_OBJ_LAYER
var/consoleless_interface = TRUE //Whether it can be used without a console.
+ var/offstation_security_levels = TRUE
var/efficiency_coeff = 1 //Materials needed / coeff = actual.
var/list/categories = list()
var/datum/component/remote_materials/materials
@@ -98,6 +99,7 @@
var/obj/item/I = O
I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this.
I.set_custom_materials(matlist.Copy())
+ I.rnd_crafted(src)
SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]"))
investigate_log("[key_name(user)] built [amount] of [path] at [src]([type]).", INVESTIGATE_RESEARCH)
@@ -134,6 +136,12 @@
if(D.build_type && !(D.build_type & allowed_buildtypes))
say("This machine does not have the necessary manipulation systems for this design. Please contact Nanotrasen Support!")
return FALSE
+ if(!(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z)))
+ if(GLOB.security_level < D.min_security_level)
+ say("Minimum security alert level required to print this design not met, please contact the command staff.")
+ return FALSE
+ if(GLOB.security_level > D.max_security_level)
+ say("Exceeded maximum security alert level required to print this design, please contact the command staff.")
if(!materials.mat_container)
say("No connection to material storage, please contact the quartermaster.")
return FALSE
@@ -275,15 +283,26 @@
temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]"
c = min(c,t)
- if (c >= 1)
+ var/clearance = !(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z))
+ var/sec_text = ""
+ if(clearance && (D.min_security_level > SEC_LEVEL_GREEN || D.max_security_level < SEC_LEVEL_DELTA))
+ sec_text = " (Allowed security levels: "
+ for(var/n in D.min_security_level to D.max_security_level)
+ sec_text += NUM2SECLEVEL(n)
+ if(n + 1 <= D.max_security_level)
+ sec_text += ", "
+ sec_text += ")"
+
+ clearance = !clearance || ISINRANGE(GLOB.security_level, D.min_security_level, D.max_security_level)
+ if (c >= 1 && clearance)
l += "[D.name][RDSCREEN_NOBREAK]"
if(c >= 5)
l += "x5[RDSCREEN_NOBREAK]"
if(c >= 10)
l += "x10[RDSCREEN_NOBREAK]"
- l += "[temp_material][RDSCREEN_NOBREAK]"
+ l += "[temp_material][sec_text][RDSCREEN_NOBREAK]"
else
- l += "[D.name][temp_material][RDSCREEN_NOBREAK]"
+ l += "[D.name][temp_material][sec_text][RDSCREEN_NOBREAK]"
l += ""
return l
diff --git a/code/modules/research/machinery/circuit_imprinter.dm b/code/modules/research/machinery/circuit_imprinter.dm
index 948dad61db..661ebe31c0 100644
--- a/code/modules/research/machinery/circuit_imprinter.dm
+++ b/code/modules/research/machinery/circuit_imprinter.dm
@@ -30,3 +30,9 @@
total_rating += M.rating * 2 //There is only one.
total_rating = max(1, total_rating)
efficiency_coeff = total_rating
+ var/obj/item/circuitboard/machine/circuit_imprinter/C = circuit
+ offstation_security_levels = C.offstation_security_levels
+
+/obj/machinery/rnd/production/circuit_imprinter/offstation
+ offstation_security_levels = FALSE
+ circuit = /obj/item/circuitboard/machine/circuit_imprinter/offstation
diff --git a/code/modules/research/machinery/protolathe.dm b/code/modules/research/machinery/protolathe.dm
index 684f27ccad..b1b31a279c 100644
--- a/code/modules/research/machinery/protolathe.dm
+++ b/code/modules/research/machinery/protolathe.dm
@@ -23,3 +23,12 @@
/obj/machinery/rnd/production/protolathe/disconnect_console()
linked_console.linked_lathe = null
..()
+
+/obj/machinery/rnd/production/protolathe/calculate_efficiency()
+ . = ..()
+ var/obj/item/circuitboard/machine/protolathe/C = circuit
+ offstation_security_levels = C.offstation_security_levels
+
+/obj/machinery/rnd/production/protolathe/offstation
+ offstation_security_levels = FALSE
+ circuit = /obj/item/circuitboard/machine/protolathe/offstation
diff --git a/code/modules/research/nanites/nanite_program_hub.dm b/code/modules/research/nanites/nanite_program_hub.dm
index ea4392f236..47ee2447d2 100644
--- a/code/modules/research/nanites/nanite_program_hub.dm
+++ b/code/modules/research/nanites/nanite_program_hub.dm
@@ -21,7 +21,7 @@
list(name = "Augmentation Nanites"),
list(name = "Suppression Nanites"),
list(name = "Weaponized Nanites"),
- //list(name = "Protocols") B.E.P.I.S Content, which we dont have
+ list(name = "Protocols") //Moved to default techweb from B.E.P.I.S. research, for now
)
/obj/machinery/nanite_program_hub/Initialize()
diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm
index 72f969a77e..faa81be0a5 100644
--- a/code/modules/research/nanites/nanite_programs.dm
+++ b/code/modules/research/nanites/nanite_programs.dm
@@ -290,7 +290,7 @@
qdel(src)
///A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once.
-//Currently unused due to us lacking the B.E.P.I.S
+//Moved to being 'normally' researched due to lack of B.E.P.I.S.
/datum/nanite_program/protocol
name = "Nanite Protocol"
var/protocol_class = NONE
diff --git a/code/modules/research/nanites/nanite_programs/protocols.dm b/code/modules/research/nanites/nanite_programs/protocols.dm
index 73976abe09..3830e7c8ba 100644
--- a/code/modules/research/nanites/nanite_programs/protocols.dm
+++ b/code/modules/research/nanites/nanite_programs/protocols.dm
@@ -105,3 +105,14 @@
/datum/nanite_program/protocol/offline/active_effect()
nanites.adjust_nanites(null, boost)
+
+/datum/nanite_program/protocol/synergy
+ name = "Synergy Protocol"
+ desc = "Replication Protocol: the nanites syncronize their tasks and processes within a host, leading to an increase in replication speed proportional to the current nanite volume."
+ use_rate = 0
+ rogue_types = list(/datum/nanite_program/necrotic)
+ protocol_class = NANITE_PROTOCOL_REPLICATION
+ var/max_boost = 2 //The maximum boost this program applies to the nanite replication, multiplied with the current nanite 'saturation' percentage
+
+/datum/nanite_program/protocol/synergy/active_effect()
+ nanites.adjust_nanites(null, round(max_boost * (nanites.nanite_volume / nanites.max_nanites), 0.1))
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index ddc732d132..9bef00d5bf 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -47,6 +47,9 @@ Nothing else in the console has ID requirements.
var/research_control = TRUE
+ /// Long action cooldown to prevent spam
+ var/last_long_action = 0
+
/obj/machinery/computer/rdconsole/production
circuit = /obj/item/circuitboard/computer/rdconsole/production
research_control = FALSE
@@ -301,15 +304,26 @@ Nothing else in the console has ID requirements.
temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]"
c = min(c,t)
- if (c >= 1)
+ var/clearance = !(linked_lathe.obj_flags & EMAGGED) && (linked_lathe.offstation_security_levels || is_station_level(linked_lathe.z))
+ var/sec_text = ""
+ if(clearance && (D.min_security_level > SEC_LEVEL_GREEN || D.max_security_level < SEC_LEVEL_DELTA))
+ sec_text = " (Allowed security levels: "
+ for(var/n in D.min_security_level to D.max_security_level)
+ sec_text += NUM2SECLEVEL(n)
+ if(n + 1 <= D.max_security_level)
+ sec_text += ", "
+ sec_text += ")"
+
+ clearance = !clearance || ISINRANGE(GLOB.security_level, D.min_security_level, D.max_security_level)
+ if (c >= 1 && clearance)
l += "[D.name][RDSCREEN_NOBREAK]"
if(c >= 5)
l += "x5[RDSCREEN_NOBREAK]"
if(c >= 10)
l += "x10[RDSCREEN_NOBREAK]"
- l += "[temp_material][RDSCREEN_NOBREAK]"
+ l += "[temp_material][sec_text][RDSCREEN_NOBREAK]"
else
- l += "[D.name][temp_material][RDSCREEN_NOBREAK]"
+ l += "[D.name][temp_material][sec_text][RDSCREEN_NOBREAK]"
l += ""
l += ""
return l
@@ -572,10 +586,8 @@ Nothing else in the console has ID requirements.
l += "| [icon2html(linked_destroy.loaded_item, usr)] | [linked_destroy.loaded_item.name] Eject |
[RDSCREEN_NOBREAK]"
l += "Select a node to boost by deconstructing this item. This item can boost:"
- var/anything = FALSE
var/list/boostable_nodes = techweb_item_boost_check(linked_destroy.loaded_item)
for(var/id in boostable_nodes)
- anything = TRUE
var/list/worth = boostable_nodes[id]
var/datum/techweb_node/N = SSresearch.techweb_node_by_id(id)
@@ -609,7 +621,6 @@ Nothing else in the console has ID requirements.
// point deconstruction and material reclamation use the same ID to prevent accidentally missing the points
var/list/point_values = techweb_item_point_check(linked_destroy.loaded_item)
if(point_values)
- anything = TRUE
l += "[RDSCREEN_NOBREAK]"
if (stored_research.deconstructed_items[linked_destroy.loaded_item.type])
l += "Point Deconstruction"
@@ -625,10 +636,8 @@ Nothing else in the console has ID requirements.
for (var/M in materials)
l += "* [CallMaterialName(M)] x [materials[M]]"
l += "
[RDSCREEN_NOBREAK]"
- anything = TRUE
- if (!anything)
- l += "Nothing!"
+ l += ""
l += ""
return l
@@ -915,6 +924,9 @@ Nothing else in the console has ID requirements.
screen = RDSCREEN_MENU
say("Ejecting Technology Disk")
if(ls["deconstruct"])
+ if((last_long_action + 1 SECONDS) > world.time)
+ return
+ last_long_action = world.time
if(QDELETED(linked_destroy))
say("No Destructive Analyzer Linked!")
return
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 24b9ccf81c..002bb3d64b 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -957,6 +957,14 @@
design_ids = list("spreading_nanites","mindcontrol_nanites","mitosis_nanites")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
+/datum/techweb_node/nanite_replication_protocols
+ id = "nanite_replication_protocols"
+ display_name = "Nanite Replication Protocols"
+ description = "Advanced behaviours that allow nanites to exploit certain circumstances to replicate faster."
+ prereq_ids = list("nanite_smart")
+ design_ids = list("kickstart_nanites","factory_nanites","tinker_nanites","offline_nanites","synergy_nanites")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
+
////////////////////////Alien technology////////////////////////
/datum/techweb_node/alientech //AYYYYYYYYLMAOO tech
id = "alientech"
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index fd4e508e1b..e153176cbe 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -191,7 +191,7 @@
alert_type = /obj/screen/alert/status_effect/bloodchill
/datum/status_effect/bloodchill/on_apply()
- owner.add_movespeed_modifier("bloodchilled", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = 3)
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill)
return ..()
/datum/status_effect/bloodchill/tick()
@@ -199,7 +199,7 @@
owner.adjustFireLoss(2)
/datum/status_effect/bloodchill/on_remove()
- owner.remove_movespeed_modifier("bloodchilled")
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill)
return ..()
/obj/screen/alert/status_effect/bloodchill
@@ -213,7 +213,7 @@
alert_type = /obj/screen/alert/status_effect/bonechill
/datum/status_effect/bonechill/on_apply()
- owner.add_movespeed_modifier("bonechilled", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = 3)
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill)
return ..()
/datum/status_effect/bonechill/tick()
@@ -223,7 +223,7 @@
owner.adjust_bodytemperature(-10)
/datum/status_effect/bonechill/on_remove()
- owner.remove_movespeed_modifier("bonechilled")
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill)
return ..()
/obj/screen/alert/status_effect/bonechill
@@ -385,11 +385,11 @@ datum/status_effect/rebreathing/tick()
duration = 30
/datum/status_effect/tarfoot/on_apply()
- owner.add_movespeed_modifier(MOVESPEED_ID_TARFOOT, update=TRUE, priority=100, multiplicative_slowdown=0.5, blacklisted_movetypes=(FLYING|FLOATING))
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/tarfoot)
return ..()
/datum/status_effect/tarfoot/on_remove()
- owner.remove_movespeed_modifier(MOVESPEED_ID_TARFOOT)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/tarfoot)
return ..()
/datum/status_effect/spookcookie
@@ -707,15 +707,15 @@ datum/status_effect/stabilized/blue/on_remove()
/datum/status_effect/stabilized/sepia/tick()
if(prob(50) && mod > -1)
mod--
- owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 1)
else if(mod < 1)
mod++
// yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly
- owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=0, blacklisted_movetypes=(FLYING|FLOATING))
+ owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 0)
return ..()
/datum/status_effect/stabilized/sepia/on_remove()
- owner.remove_movespeed_modifier(MOVESPEED_ID_SEPIA)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia)
return ..()
/datum/status_effect/stabilized/cerulean
@@ -777,11 +777,11 @@ datum/status_effect/stabilized/blue/on_remove()
colour = "red"
/datum/status_effect/stabilized/red/on_apply()
- owner.ignore_slowdown("slimestatus")
- return ..()
+ . = ..()
+ owner.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/equipment_speedmod)
/datum/status_effect/stabilized/red/on_remove()
- owner.unignore_slowdown("slimestatus")
+ owner.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/equipment_speedmod)
return ..()
/datum/status_effect/stabilized/green
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 8a58563407..b9dc9b92d3 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -41,7 +41,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
var/list/data = list()
data["waiting"] = waiting
data["auth_required"] = event_source ? event_source.event : 0
- data["red_alert"] = (seclevel2num(get_security_level()) >= SEC_LEVEL_RED) ? 1 : 0
+ data["red_alert"] = (SECLEVEL2NUM(NUM2SECLEVEL(GLOB.security_level)) >= SEC_LEVEL_RED) ? 1 : 0
data["emergency_maint"] = GLOB.emergency_access
data["bsa_unlock"] = GLOB.bsa_unlock
return data
diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm
index 887891ca16..52fafb81be 100644
--- a/code/modules/security_levels/security_levels.dm
+++ b/code/modules/security_levels/security_levels.dm
@@ -5,20 +5,17 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
//SEC_LEVEL_RED = code red
//SEC_LEVEL_DELTA = code delta
+ /*
+ * All security levels, per ascending alert. Nothing too fancy, really.
+ * Their positions should also match their numerical values.
+ */
+GLOBAL_LIST_INIT(all_security_levels, list("green", "blue", "amber", "red", "delta"))
+
//config.alert_desc_blue_downto
/proc/set_security_level(level)
- switch(level)
- if("green")
- level = SEC_LEVEL_GREEN
- if("blue")
- level = SEC_LEVEL_BLUE
- if("amber")
- level = SEC_LEVEL_AMBER
- if("red")
- level = SEC_LEVEL_RED
- if("delta")
- level = SEC_LEVEL_DELTA
+ if(!isnum(level))
+ level = GLOB.all_security_levels.Find(level)
//Will not be announced if you try to set to the same level as it already is
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != GLOB.security_level)
@@ -111,46 +108,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
if(D.red_alert_access)
D.visible_message("[D] whirrs as it automatically lifts access requirements!")
playsound(D, 'sound/machines/boltsup.ogg', 50, TRUE)
- SSblackbox.record_feedback("tally", "security_level_changes", 1, get_security_level())
+ SSblackbox.record_feedback("tally", "security_level_changes", 1, NUM2SECLEVEL(GLOB.security_level))
SSnightshift.check_nightshift()
else
return
-
-/proc/get_security_level()
- switch(GLOB.security_level)
- if(SEC_LEVEL_GREEN)
- return "green"
- if(SEC_LEVEL_BLUE)
- return "blue"
- if(SEC_LEVEL_AMBER)
- return "amber"
- if(SEC_LEVEL_RED)
- return "red"
- if(SEC_LEVEL_DELTA)
- return "delta"
-
-/proc/num2seclevel(num)
- switch(num)
- if(SEC_LEVEL_GREEN)
- return "green"
- if(SEC_LEVEL_BLUE)
- return "blue"
- if(SEC_LEVEL_AMBER)
- return "amber"
- if(SEC_LEVEL_RED)
- return "red"
- if(SEC_LEVEL_DELTA)
- return "delta"
-
-/proc/seclevel2num(seclevel)
- switch( lowertext(seclevel) )
- if("green")
- return SEC_LEVEL_GREEN
- if("blue")
- return SEC_LEVEL_BLUE
- if("amber")
- return SEC_LEVEL_AMBER
- if("red")
- return SEC_LEVEL_RED
- if("delta")
- return SEC_LEVEL_DELTA
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index cd08b7290a..f3b4cbddc9 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -310,7 +310,7 @@
/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signalOrigin, reason, redAlert, set_coefficient=null, silent = FALSE)
if(!isnum(set_coefficient))
- var/security_num = seclevel2num(get_security_level())
+ var/security_num = SECLEVEL2NUM(NUM2SECLEVEL(GLOB.security_level))
switch(security_num)
if(SEC_LEVEL_GREEN)
set_coefficient = 2
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 033187e353..87f9b55aa9 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -122,7 +122,7 @@
/obj/structure/table/abductor/wabbajack/proc/sleeper_dreams(mob/living/sleeper)
if(sleeper in sleepers)
to_chat(sleeper, "While you slumber, you have the strangest dream, like you can see yourself from the outside.")
- sleeper.ghostize(TRUE)
+ sleeper.ghostize(TRUE, voluntary = TRUE)
/obj/structure/table/abductor/wabbajack/left
desc = "You sleep so it may wake."
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index 2aae17b0f3..6c21456e63 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -276,7 +276,7 @@
ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, "dna_vault")
if(VAULT_SPEED)
to_chat(H, "Your legs feel faster.")
- H.add_movespeed_modifier(MOVESPEED_ID_DNA_VAULT, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ H.add_movespeed_modifier(/datum/movespeed_modifier/dna_vault_speedup)
if(VAULT_QUICK)
to_chat(H, "Your arms move as fast as lightning.")
H.next_move_modifier = 0.5
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index f5b0ed1a75..dd31145491 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -164,8 +164,8 @@
return FALSE
switch(animal_origin)
- if(ALIEN_BODYPART,LARVA_BODYPART) //aliens take double burn //nothing can burn with so much snowflake code around
- burn *= 2
+ if(ALIEN_BODYPART,LARVA_BODYPART) //aliens take some additional burn //nothing can burn with so much snowflake code around
+ burn *= 1.2
var/can_inflict = max_damage - get_damage()
if(can_inflict <= 0)
diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm
index 9da20e4921..c737e8bc30 100644
--- a/code/modules/surgery/organs/appendix.dm
+++ b/code/modules/surgery/organs/appendix.dm
@@ -12,12 +12,10 @@
var/inflamed
/obj/item/organ/appendix/on_life()
- ..()
- if(!(organ_flags & ORGAN_FAILING))
+ . = ..()
+ if(. || !owner)
return
- var/mob/living/carbon/M = owner
- if(M)
- M.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person
+ owner.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person
/obj/item/organ/appendix/update_icon_state()
if(inflamed)
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 47a452cc76..46092ff0c2 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -16,7 +16,8 @@
slot = ORGAN_SLOT_STOMACH_AID
/obj/item/organ/cyberimp/chest/nutriment/on_life()
- if(synthesizing)
+ . = ..()
+ if(!. || synthesizing)
return
if(owner.nutrition <= hunger_threshold)
@@ -59,23 +60,25 @@
var/convalescence_time = 0
/obj/item/organ/cyberimp/chest/reviver/on_life()
+ . = ..()
if(reviving)
- var/do_heal = world.time < convalescence_time
+ var/do_heal = . && world.time < convalescence_time
if(revive_cost >= MAX_HEAL_COOLDOWN)
do_heal = FALSE
- else if(owner.stat && owner.stat != DEAD)
+ else if(owner?.stat && owner.stat != DEAD)
do_heal = TRUE
else if(!do_heal)
convalescence_time = world.time + DEF_CONVALESCENCE_TIME
- if(do_heal)
+ if(. && (do_heal || world.time < convalescence_time))
addtimer(CALLBACK(src, .proc/heal), 3 SECONDS)
else
cooldown = revive_cost + world.time
reviving = FALSE
- to_chat(owner, "Your reviver implant shuts down and starts recharging. It will be ready again in [DisplayTimeText(revive_cost)].")
+ if(owner)
+ to_chat(owner, "Your reviver implant shuts down and starts recharging. It will be ready again in [DisplayTimeText(revive_cost)].")
return
- if(cooldown > world.time || owner.stat == CONSCIOUS || owner.stat == DEAD || owner.suiciding)
+ if(!. || cooldown > world.time || owner.stat == CONSCIOUS || owner.stat == DEAD || owner.suiciding)
return
revive_cost = 0
@@ -165,14 +168,14 @@
if(allow_thrust(0.01))
ion_trail.start()
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/move_react)
- owner.add_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER, priority=100, multiplicative_slowdown=-2, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK)
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic)
if(!silent)
to_chat(owner, "You turn your thrusters set on.")
else
ion_trail.stop()
if(!QDELETED(owner))
UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
- owner.remove_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic)
if(!silent)
to_chat(owner, "You turn your thrusters set off.")
on = FALSE
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index a678482ef3..6705b4c7b4 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -102,8 +102,8 @@
slot = ORGAN_SLOT_BRAIN_ANTISTUN
/obj/item/organ/cyberimp/brain/anti_stun/on_life()
- ..()
- if(crit_fail || !(organ_flags & ORGAN_FAILING))
+ . = ..()
+ if(!. || crit_fail)
return
owner.adjustStaminaLoss(-3.5, FALSE) //Citadel edit, makes it more useful in Stamina based combat
owner.HealAllImmobilityUpTo(STUN_SET_AMOUNT)
diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm
index 63febd1a9f..c1e33c7dac 100644
--- a/code/modules/surgery/organs/ears.dm
+++ b/code/modules/surgery/organs/ears.dm
@@ -29,22 +29,17 @@
var/damage_multiplier = 1
/obj/item/organ/ears/on_life()
- if(!iscarbon(owner))
- return
- ..()
- var/mob/living/carbon/C = owner
- if((damage < maxHealth) && (organ_flags & ORGAN_FAILING)) //ear damage can be repaired from the failing condition
- organ_flags &= ~ORGAN_FAILING
+ . = ..()
// genetic deafness prevents the body from using the ears, even if healthy
- if(HAS_TRAIT(C, TRAIT_DEAF))
+ if(owner && HAS_TRAIT(owner, TRAIT_DEAF))
deaf = max(deaf, 1)
- else if(!(organ_flags & ORGAN_FAILING)) // if this organ is failing, do not clear deaf stacks.
+ else if(.) // if this organ is failing, do not clear deaf stacks.
deaf = max(deaf - 1, 0)
if(prob(damage / 20) && (damage > low_threshold))
adjustEarDamage(0, 4)
- SEND_SOUND(C, sound('sound/weapons/flash_ring.ogg'))
- to_chat(C, "The ringing in your ears grows louder, blocking out any external noises for a moment.")
- else if((organ_flags & ORGAN_FAILING) && (deaf == 0))
+ SEND_SOUND(owner, sound('sound/weapons/flash_ring.ogg'))
+ to_chat(owner, "The ringing in your ears grows louder, blocking out any external noises for a moment.")
+ else if(!. && !deaf)
deaf = 1 //stop being not deaf you deaf idiot
/obj/item/organ/ears/proc/restoreEars()
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index e5aac2a47d..049fc5b5d4 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -1,3 +1,7 @@
+#define BLURRY_VISION_ONE 1
+#define BLURRY_VISION_TWO 2
+#define BLIND_VISION_THREE 3
+
/obj/item/organ/eyes
name = BODY_ZONE_PRECISE_EYES
icon_state = "eyeballs"
@@ -10,7 +14,7 @@
decay_factor = STANDARD_ORGAN_DECAY
maxHealth = 0.5 * STANDARD_ORGAN_THRESHOLD //half the normal health max since we go blind at 30, a permanent blindness at 50 therefore makes sense unless medicine is administered
high_threshold = 0.3 * STANDARD_ORGAN_THRESHOLD //threshold at 30
- low_threshold = 0.15 * STANDARD_ORGAN_THRESHOLD //threshold at 15
+ low_threshold = 0.2 * STANDARD_ORGAN_THRESHOLD //threshold at 15
low_threshold_passed = "Distant objects become somewhat less tangible."
high_threshold_passed = "Everything starts to look a lot less clear."
@@ -27,14 +31,17 @@
var/flash_protect = 0
var/see_invisible = SEE_INVISIBLE_LIVING
var/lighting_alpha
- var/damaged = FALSE //damaged indicates that our eyes are undergoing some level of negative effect
+ var/eye_damaged = FALSE //indicates that our eyes are undergoing some level of negative effect
/obj/item/organ/eyes/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE)
. = ..()
if(!.)
return
- if(damage == initial(damage))
- clear_eye_trauma()
+ switch(eye_damaged)
+ if(BLURRY_VISION_ONE, BLURRY_VISION_TWO)
+ owner.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, eye_damaged)
+ if(BLIND_VISION_THREE)
+ owner.become_blind(EYE_DAMAGE)
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
old_eye_color = H.eye_color
@@ -48,46 +55,49 @@
owner.update_sight()
/obj/item/organ/eyes/Remove(special = FALSE)
- clear_eye_trauma()
. = ..()
var/mob/living/carbon/C = .
- if(!QDELETED(C))
- if(ishuman(C) && eye_color)
- var/mob/living/carbon/human/H = C
- H.eye_color = old_eye_color
- if(!special)
- H.dna.species.handle_body(H)
+ if(QDELETED(C))
+ return
+ switch(eye_damaged)
+ if(BLURRY_VISION_ONE, BLURRY_VISION_TWO)
+ C.clear_fullscreen("eye_damage")
+ if(BLIND_VISION_THREE)
+ C.cure_blind(EYE_DAMAGE)
+ if(ishuman(C) && eye_color)
+ var/mob/living/carbon/human/H = C
+ H.eye_color = old_eye_color
if(!special)
- C.update_tint()
- C.update_sight()
+ H.dna.species.handle_body(H)
+ if(!special)
+ C.update_tint()
+ C.update_sight()
-/obj/item/organ/eyes/on_life()
- ..()
- var/mob/living/carbon/C = owner
- //since we can repair fully damaged eyes, check if healing has occurred
- if((organ_flags & ORGAN_FAILING) && (damage < maxHealth))
- organ_flags &= ~ORGAN_FAILING
- C.cure_blind(EYE_DAMAGE)
- //various degrees of "oh fuck my eyes", from "point a laser at your eye" to "staring at the Sun" intensities
- if(damage > 20)
- damaged = TRUE
- if(organ_flags & ORGAN_FAILING)
- C.become_blind(EYE_DAMAGE)
- else if(damage > 30)
- C.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2)
+
+/obj/item/organ/eyes/applyOrganDamage(d, maximum = maxHealth)
+ . = ..()
+ if(!.)
+ return
+ var/old_damaged = eye_damaged
+ switch(damage)
+ if(INFINITY to maxHealth)
+ eye_damaged = BLIND_VISION_THREE
+ if(maxHealth to high_threshold)
+ eye_damaged = BLURRY_VISION_TWO
+ if(high_threshold to low_threshold)
+ eye_damaged = BLURRY_VISION_ONE
else
- C.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1)
- //called once since we don't want to keep clearing the screen of eye damage for people who are below 20 damage
- else if(damaged)
- damaged = FALSE
- C.clear_fullscreen("eye_damage")
- return
-
-/obj/item/organ/eyes/proc/clear_eye_trauma()
- var/mob/living/carbon/C = owner
- C.clear_fullscreen("eye_damage")
- C.cure_blind(EYE_DAMAGE)
- damaged = FALSE
+ eye_damaged = FALSE
+ if(eye_damaged == old_damaged || !owner)
+ return
+ if(old_damaged == BLIND_VISION_THREE)
+ owner.cure_blind(EYE_DAMAGE)
+ else if(eye_damaged == BLIND_VISION_THREE)
+ owner.become_blind(EYE_DAMAGE)
+ if(eye_damaged && eye_damaged != BLIND_VISION_THREE)
+ owner.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, eye_damaged)
+ else
+ owner.clear_fullscreen("eye_damage")
/obj/item/organ/eyes/night_vision
name = "shadow eyes"
@@ -382,4 +392,8 @@
/obj/item/organ/eyes/ipc
name = "ipc eyes"
- icon_state = "cybernetic_eyeballs"
\ No newline at end of file
+ icon_state = "cybernetic_eyeballs"
+
+#undef BLURRY_VISION_ONE
+#undef BLURRY_VISION_TWO
+#undef BLIND_VISION_THREE
\ No newline at end of file
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index ea98ecd32b..1fee605b12 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -15,6 +15,7 @@
// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
var/beating = 1
+ var/no_pump = FALSE
var/icon_base = "heart"
attack_verb = list("beat", "thumped")
var/beat = BEAT_NONE//is this mob having a heatbeat sound played? if so, which?
@@ -66,27 +67,28 @@
return S
/obj/item/organ/heart/on_life()
- ..()
+ . = ..()
+ if(!owner || no_pump)
+ return
if(owner.client && beating)
failed = FALSE
var/sound/slowbeat = sound('sound/health/slowbeat.ogg', repeat = TRUE)
var/sound/fastbeat = sound('sound/health/fastbeat.ogg', repeat = TRUE)
- var/mob/living/carbon/H = owner
- if(H.health <= H.crit_threshold && beat != BEAT_SLOW)
+ if(owner.health <= owner.crit_threshold && beat != BEAT_SLOW)
beat = BEAT_SLOW
- H.playsound_local(get_turf(H), slowbeat,40,0, channel = CHANNEL_HEARTBEAT)
+ owner.playsound_local(get_turf(owner), slowbeat,40,0, channel = CHANNEL_HEARTBEAT)
to_chat(owner, "You feel your heart slow down...")
- if(beat == BEAT_SLOW && H.health > H.crit_threshold)
- H.stop_sound_channel(CHANNEL_HEARTBEAT)
+ if(beat == BEAT_SLOW && owner.health > owner.crit_threshold)
+ owner.stop_sound_channel(CHANNEL_HEARTBEAT)
beat = BEAT_NONE
- if(H.jitteriness)
- if(H.health > HEALTH_THRESHOLD_FULLCRIT && (!beat || beat == BEAT_SLOW))
- H.playsound_local(get_turf(H),fastbeat,40,0, channel = CHANNEL_HEARTBEAT)
+ if(owner.jitteriness)
+ if(owner.health > HEALTH_THRESHOLD_FULLCRIT && (!beat || beat == BEAT_SLOW))
+ owner.playsound_local(get_turf(owner),fastbeat,40,0, channel = CHANNEL_HEARTBEAT)
beat = BEAT_FAST
else if(beat == BEAT_FAST)
- H.stop_sound_channel(CHANNEL_HEARTBEAT)
+ owner.stop_sound_channel(CHANNEL_HEARTBEAT)
beat = BEAT_NONE
if(organ_flags & ORGAN_FAILING) //heart broke, stopped beating, death imminent
@@ -107,6 +109,7 @@ obj/item/organ/heart/slime
icon_state = "cursedheart-off"
icon_base = "cursedheart"
decay_factor = 0
+ no_pump = TRUE
actions_types = list(/datum/action/item_action/organ_action/cursed_heart)
var/last_pump = 0
var/add_colour = TRUE //So we're not constantly recreating colour datums
@@ -128,6 +131,9 @@ obj/item/organ/heart/slime
return ..()
/obj/item/organ/heart/cursed/on_life()
+ . = ..()
+ if(!owner)
+ return
if(world.time > (last_pump + pump_delay))
if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects.
var/mob/living/carbon/human/H = owner
@@ -208,6 +214,8 @@ obj/item/organ/heart/slime
obj/item/organ/heart/cybernetic/upgraded/on_life()
. = ..()
+ if(!.)
+ return
if(dose_available && owner.health <= owner.crit_threshold && !owner.reagents.has_reagent(rid))
owner.reagents.add_reagent(rid, ramount)
used_dose()
@@ -233,7 +241,7 @@ obj/item/organ/heart/cybernetic/upgraded/on_life()
/obj/item/organ/heart/freedom/on_life()
. = ..()
- if(owner.health < 5 && world.time > min_next_adrenaline)
+ if(. && owner.health < 5 && world.time > min_next_adrenaline)
min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes
to_chat(owner, "You feel yourself dying, but you refuse to give up!")
owner.heal_overall_damage(15, 15)
diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm
index 6e5ea0e111..b24034ca4a 100755
--- a/code/modules/surgery/organs/liver.dm
+++ b/code/modules/surgery/organs/liver.dm
@@ -25,25 +25,24 @@
var/cachedmoveCalc = 1
/obj/item/organ/liver/on_life()
- var/mob/living/carbon/C = owner
+ . = ..()
+ if(!. || !owner)//can't process reagents with a failing liver
+ return
- if(istype(C))
- if(!(organ_flags & ORGAN_FAILING))//can't process reagents with a failing liver
+ if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER))
+ //handle liver toxin filtration
+ for(var/datum/reagent/toxin/T in owner.reagents.reagent_list)
+ var/thisamount = owner.reagents.get_reagent_amount(T.type)
+ if (thisamount && thisamount <= toxTolerance)
+ owner.reagents.remove_reagent(T.type, 1)
+ else
+ damage += (thisamount*toxLethality)
- if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER))
- //handle liver toxin filtration
- for(var/datum/reagent/toxin/T in C.reagents.reagent_list)
- var/thisamount = C.reagents.get_reagent_amount(T.type)
- if (thisamount && thisamount <= toxTolerance)
- C.reagents.remove_reagent(T.type, 1)
- else
- damage += (thisamount*toxLethality)
+ //metabolize reagents
+ owner.reagents.metabolize(owner, can_overdose=TRUE)
- //metabolize reagents
- C.reagents.metabolize(C, can_overdose=TRUE)
-
- if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability
- to_chat(C, "You feel a dull pain in your abdomen.")
+ if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability
+ to_chat(owner, "You feel a dull pain in your abdomen.")
/obj/item/organ/liver/prepare_eat()
var/obj/S = ..()
@@ -56,22 +55,22 @@
return
if(damage >= high_threshold)
var/move_calc = 1+((round(damage) - high_threshold)/(high_threshold/3))
- owner.add_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = move_calc)
+ owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/liver_cirrhosis, multiplicative_slowdown = move_calc)
sizeMoveMod(move_calc, owner)
else
- owner.remove_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/liver_cirrhosis)
sizeMoveMod(1, owner)
/obj/item/organ/liver/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE)
. = ..()
if(. && damage >= high_threshold)
var/move_calc = 1+((round(damage) - high_threshold)/(high_threshold/3))
- M.add_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = move_calc)
+ M.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/liver_cirrhosis, multiplicative_slowdown = move_calc)
sizeMoveMod(move_calc, owner)
/obj/item/organ/liver/Remove(special = FALSE)
if(!QDELETED(owner))
- owner.remove_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/liver_cirrhosis)
sizeMoveMod(1, owner)
return ..()
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 1b66af6232..b3020ae13f 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -446,17 +446,17 @@
if(prob(20))
to_chat(H, "You feel [hot_message] in your [name]!")
-
-/obj/item/organ/lungs/on_life()
- ..()
- if((!failed) && ((organ_flags & ORGAN_FAILING)))
- if(owner.stat == CONSCIOUS)
+/obj/item/organ/lungs/applyOrganDamage(d, maximum = maxHealth)
+ . = ..()
+ if(!.)
+ return
+ if(!failed && organ_flags & ORGAN_FAILING)
+ if(owner && owner.stat == CONSCIOUS)
owner.visible_message("[owner] grabs [owner.p_their()] throat, struggling for breath!", \
"You suddenly feel like you can't breathe!")
failed = TRUE
else if(!(organ_flags & ORGAN_FAILING))
failed = FALSE
- return
/obj/item/organ/lungs/prepare_eat()
var/obj/S = ..()
@@ -547,5 +547,6 @@
color = "#68e83a"
/obj/item/organ/lungs/yamerol/on_life()
- ..()
- damage += 2 //Yamerol lungs are temporary
\ No newline at end of file
+ . = ..()
+ if(.)
+ applyOrganDamage(2) //Yamerol lungs are temporary
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 4e4268c5fe..534261f63d 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -108,7 +108,7 @@
var/datum/gas_mixture/enviro = T.return_air()
local_temp = enviro.temperature
- else if(istype(loc, /mob/) && !owner)
+ else if(!owner && ismob(loc))
var/mob/M = loc
if(is_type_in_typecache(M.loc, GLOB.freezing_objects))
if(!(organ_flags & ORGAN_FROZEN))
@@ -134,18 +134,17 @@
organ_flags &= ~ORGAN_FROZEN
return FALSE
-/obj/item/organ/proc/on_life() //repair organ damage if the organ is not failing
- if(organ_flags & ORGAN_FAILING)
- return
- if(is_cold())
- return
- ///Damage decrements by a percent of its maxhealth
- var/healing_amount = -(maxHealth * healing_factor)
- ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's health
- healing_amount -= owner.satiety > 0 ? 4 * healing_factor * owner.satiety / MAX_SATIETY : 0
- if(healing_amount)
- applyOrganDamage(healing_amount) //to FERMI_TWEAK
- //Make it so each threshold is stuck.
+/obj/item/organ/proc/on_life() //repair organ damage if the organ is not failing or synthetic
+ if(organ_flags & ORGAN_FAILING || !owner)
+ return FALSE
+ if(!is_cold() && damage)
+ ///Damage decrements by a percent of its maxhealth
+ var/healing_amount = -(maxHealth * healing_factor)
+ ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's satiety
+ healing_amount -= owner.satiety > 0 ? 4 * healing_factor * owner.satiety / MAX_SATIETY : 0
+ if(healing_amount)
+ applyOrganDamage(healing_amount) //to FERMI_TWEAK
+ return TRUE
/obj/item/organ/examine(mob/user)
. = ..()
@@ -205,9 +204,7 @@
///Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage
/obj/item/organ/proc/applyOrganDamage(var/d, var/maximum = maxHealth) //use for damaging effects
- if(!d) //Micro-optimization.
- return FALSE
- if(maximum < damage)
+ if(!d || maximum < damage) //Micro-optimization.
return FALSE
damage = clamp(damage + d, 0, maximum)
var/mess = check_damage_thresholds()
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index 3b383581cf..d9cbf9be03 100755
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -17,33 +17,24 @@
low_threshold_cleared = "The last bouts of pain in your stomach have died out."
/obj/item/organ/stomach/on_life()
- ..()
- var/datum/reagent/consumable/nutriment/Nutri
+ . = ..()
+ if(!owner)
+ return
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
- if(!(organ_flags & ORGAN_FAILING))
+ if(.)
H.dna.species.handle_digestion(H)
handle_disgust(H)
- Nutri = locate(/datum/reagent/consumable/nutriment) in H.reagents.reagent_list
- if(Nutri)
- if(prob((damage/40) * Nutri.volume * Nutri.volume))
- H.vomit(damage)
- to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
-
- else if(Nutri && damage > high_threshold)
- if(prob((damage/10) * Nutri.volume * Nutri.volume))
- H.vomit(damage)
- to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
-
-
- else if(iscarbon(owner))
- var/mob/living/carbon/C = owner
- Nutri = locate(/datum/reagent/consumable/nutriment) in C.reagents.reagent_list
-
- if(damage < low_threshold)
+ if(!damage)
return
-
+ var/datum/reagent/consumable/nutriment/Nutri = locate(/datum/reagent/consumable/nutriment) in owner.reagents.reagent_list
+ if(!Nutri)
+ return
+ var/prob_divisor = damage > high_threshold ? 10 : 40
+ if(prob((damage/prob_divisor) * (Nutri.volume**2)))
+ owner.vomit(damage)
+ to_chat(owner, "Your stomach reels in pain as you're incapable of holding down all that food!")
/obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/H)
if(H.disgust)
diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm
index 1857f8db48..7127b41ee3 100644
--- a/code/modules/surgery/surgery_step.dm
+++ b/code/modules/surgery/surgery_step.dm
@@ -58,7 +58,10 @@
return FALSE
if(tool)
speed_mod = tool.toolspeed
- if(do_after(user, time * speed_mod, target = target))
+ var/skill_mod = 1
+ if(user?.mind?.skill_holder)
+ skill_mod = SURGERY_SKILL_SPEEDUP_NUMERICAL_SCALE(user.mind.skill_holder.get_skill_value(/datum/skill/numerical/surgery))
+ if(do_after(user, time * speed_mod * skill_mod, target = target))
var/prob_chance = 100
if(implement_type) //this means it isn't a require hand or any item step.
prob_chance = implements[implement_type]
@@ -66,6 +69,7 @@
if((prob(prob_chance) || (iscyborg(user) && !silicons_obey_prob)) && chem_check(target) && !try_to_fail)
if(success(user, target, target_zone, tool, surgery))
+ user?.mind?.skill_holder?.auto_gain_experience(/datum/skill/numerical/surgery, SKILL_GAIN_SURGERY_PER_STEP)
advance = TRUE
else
if(failure(user, target, target_zone, tool, surgery))
diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm
index 194281ded6..cda83cf684 100644
--- a/code/modules/uplink/uplink_items/uplink_devices.dm
+++ b/code/modules/uplink/uplink_items/uplink_devices.dm
@@ -188,6 +188,16 @@
item = /obj/item/healthanalyzer/rad_laser
cost = 3
+/datum/uplink_item/device_tools/riflery_primer
+ name = "Riflery Primer"
+ desc = "An old book with blood and vodka stains on it. Freshly pulled from a dusty crate in some old warehouse, \
+ this primer of questionable worth and value is rumored to increase your rifle-bolt-working and/or shotgun \
+ racking fivefold. Then again, the techniques here only work on bolt-actions and pump-actions..."
+ item = /obj/item/book/granter/trait/rifleman
+ cost = 3
+ restricted_roles = list("Operative") // i want it to be surplusable but i also want it to be mostly nukie only, please advise
+ surplus = 90
+
/datum/uplink_item/device_tools/stimpack
name = "Stimpack"
desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about \
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 4f7502bb02..e27431f8ee 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -579,39 +579,36 @@ GLOBAL_LIST_EMPTY(vending_products)
if(!R || !istype(R) || !R.product_path)
vend_ready = TRUE
return
+ if(R.amount <= 0)
+ to_chat(usr, "Sold out.")
+ vend_ready = TRUE
+ return
if(R in hidden_records)
if(!extended_inventory)
vend_ready = TRUE
return
else if(R in coin_records)
- if(!(coin))
- to_chat(usr, "You need to a coin to get this item!")
+ if(!coin)
+ to_chat(usr, "You need to insert a coin to get this item!")
vend_ready = TRUE
return
if(coin && coin.string_attached)
- if(!prob(50))
- to_chat(usr, "You weren't able to pull [coin] out fast enough, the machine ate it, string and all!")
- QDEL_NULL(coin)
- return
- if(!usr.CanReach(src))
- to_chat(usr, "You successfully pull [coin] out of [src] to the floor.")
- coin = null
- if(!usr.put_in_hands(coin))
+ if(prob(50))
+ if(usr.put_in_hands(coin))
+ to_chat(usr, "You successfully pull [coin] out before [src] could swallow it.")
+ coin = null
+ else
to_chat(usr, "You couldn't pull [coin] out because your hands are full!")
QDEL_NULL(coin)
- to_chat(usr, "You successfully pull [coin] out before [src] could swallow it.")
- coin = null
- QDEL_NULL(coin)
+ else
+ to_chat(usr, "You weren't able to pull [coin] out fast enough, the machine ate it, string and all!")
+ QDEL_NULL(coin)
+ else
+ QDEL_NULL(coin)
else if(!(R in product_records))
vend_ready = TRUE
message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!")
return
- if(R.amount <= 0)
- to_chat(usr, "Sold out.")
- vend_ready = TRUE
- return
- else
- R.amount--
if(((last_reply + 200) <= world.time) && vend_reply)
speak(vend_reply)
last_reply = world.time
@@ -623,8 +620,7 @@ GLOBAL_LIST_EMPTY(vending_products)
to_chat(usr, "You take [R.name] out of the slot.")
else
to_chat(usr, "[capitalize(R.name)] falls onto the floor!")
-
-
+ R.amount--
SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]"))
vend_ready = TRUE
return
diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm
index ec741ef574..b1a6297981 100644
--- a/code/modules/vending/security.dm
+++ b/code/modules/vending/security.dm
@@ -21,7 +21,7 @@
/obj/item/clothing/head/helmet/blueshirt = 1,
/obj/item/clothing/suit/armor/vest/blueshirt = 1,
/obj/item/clothing/under/rank/security/officer/blueshirt = 1,
- /obj/item/clothing/gloves/tackler = 5,
+ /obj/item/clothing/gloves/tackler = 5,
/obj/item/ssword_kit = 1)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
diff --git a/config/awaymissionconfig.txt b/config/awaymissionconfig.txt
index 545394f3e9..c6a5d9ef8f 100644
--- a/config/awaymissionconfig.txt
+++ b/config/awaymissionconfig.txt
@@ -7,16 +7,16 @@
#Do NOT tick the maps during compile -- the game uses this list to decide which map to load. Ticking the maps will result in them ALL being loaded at once.
#DO tick the associated code file for the away mission you are enabling. Otherwise, the map will be trying to reference objects which do not exist, which will cause runtime errors!
-#_maps/RandomZLevels/blackmarketpackers.dmm
-#_maps/RandomZLevels/spacebattle.dmm
-#_maps/RandomZLevels/TheBeach.dmm
-#_maps/RandomZLevels/Academy.dmm
-#_maps/RandomZLevels/wildwest.dmm
-#_maps/RandomZLevels/challenge.dmm
-#_maps/RandomZLevels/centcomAway.dmm
-#_maps/RandomZLevels/moonoutpost19.dmm
-#_maps/RandomZLevels/undergroundoutpost45.dmm
-#_maps/RandomZLevels/caves.dmm
-#_maps/RandomZLevels/snowdin.dmm
-#_maps/RandomZLevels/research.dmm
-#_maps/RandomZLevels/Cabin.dmm
+#_maps/RandomZLevels/away_mission/blackmarketpackers.dmm
+#_maps/RandomZLevels/away_mission/spacebattle.dmm
+#_maps/RandomZLevels/away_mission/TheBeach.dmm
+#_maps/RandomZLevels/away_mission/Academy.dmm
+#_maps/RandomZLevels/away_mission/wildwest.dmm
+#_maps/RandomZLevels/away_mission/challenge.dmm
+#_maps/RandomZLevels/away_mission/centcomAway.dmm
+#_maps/RandomZLevels/away_mission/moonoutpost19.dmm
+#_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm
+#_maps/RandomZLevels/away_mission/caves.dmm
+#_maps/RandomZLevels/away_mission/snowdin.dmm
+#_maps/RandomZLevels/away_mission/research.dmm
+#_maps/RandomZLevels/away_mission/Cabin.dmm
diff --git a/config/game_options.txt b/config/game_options.txt
index e1294f688a..781be6d5b1 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -288,6 +288,9 @@ MINIMUM_SECBORG_ALERT 3
## Uncomment to load one of the missions from awaymissionconfig.txt at roundstart.
#ROUNDSTART_AWAY
+## Uncomment to load one of the virtual reality levels from vr_config at roundstart.
+#ROUNDSTART_VR
+
## How long the delay is before the Away Mission gate opens. Default is half an hour.
## 600 is one minute.
GATEWAY_DELAY 18000
diff --git a/config/vr_config.txt b/config/vr_config.txt
new file mode 100644
index 0000000000..0c6354f8fe
--- /dev/null
+++ b/config/vr_config.txt
@@ -0,0 +1,13 @@
+#List the potential virtual reality Z-levels here. awaymissionconfig copypasta follows.
+
+#Maps must be the full path to them
+#Maps should be 255x255 or smaller and be bounded. Falling off the edge of the map will result in undefined behavior.
+#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START
+
+#!!IMPORTANT NOTES FOR HOSTING VR MAPS!!:
+#Do NOT tick the maps during compile -- the game uses this list to decide which map to load. Ticking the maps will result in them ALL being loaded at once.
+#DO tick the associated code file for the virtual reality levels you are enabling. Otherwise, the map will be trying to reference objects which do not exist, which will cause runtime errors!
+
+#_maps/RandomZLevels/VR/murderdome.dmm
+#_maps/RandomZLevels/VR/snowdin_VR.dmm
+#_maps/RandomZLevels/VR/syndicate_trainer.dmm
\ No newline at end of file
diff --git a/html/changelog.html b/html/changelog.html
index b02b2d74a5..3d05d75736 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -833,555 +833,6 @@
box brig miscellaneous issues
box station hos office
-
- 26 February 2020
- AnturK ported by kevinz000 updated:
-
- - Dueling pistols have been added.
-
- Arturlang updated:
-
- - Replaces a lot of ingame UIs with TGUI next, increasing performance drastically.
- - Each night for bloodsuckers will last longer due to the sun dimming.
- - You cant level up for free, now you have to pay blood for power.
- - Bloodsuckers are no longer as resistant to hard stuns and regenerate less stamina. and a lot of their cooldowns are a lot higher.
- - Removed text macros from the chem dispenser.
- - Replaced with dispenser input recording macros.
- - Fancifying makeshift switchblades now works
- - Shields will no longer block lasers, and will break if they take too much damage.
- - Added a TGUI Next interface for crafting
- - Removed the old TGUI slow crafting interface
- - The MK2 hypospray now
- - The debug outfit is now kitted out for whatever debbuging needs.
- - Fixed the pandemic naming and the radiation healing symptom UI crashing
- - Hyposprays now switch modes on CTRL click, instead of alt, as it was already reserved for dispension amount.
- - Nanite interfaces have gotten a rework to TGUI Next, and can now support sub-programs. add:Adds the nanite sting program, which will allow you to manually sting people to give them nanites, changeling style.
- - The pandemic can no longer make vaccines or synthblood as quickly.
- - The syndicate uplinks interface has been redone in TGUI Next
- - Valentines can now be converted by bloodsuckers
-
- Bhijn updated:
-
- - Click-dragging will now only perform the quick item usage behavior if you're in combat mode.
-
- BlueWildrose updated:
-
- - podpeople tail wagging
- - lifebringer ghost role fixes
-
- BuffEngineering, nemvar. updated:
-
- - Addicts can now feel like they're getting their fix or kicking it.
- - Aheals now remove addictions and restore your mood to default.
-
- CameronWoof updated:
-
- - Lighting looks better now. I can say that because the PR wouldn't be merged and you wouldn't be reading this if it wasn't true.
- - Ammonia and saltpetre can now be made at the biogenerator.
-
- Commandersand updated:
-
- - uplink centcomm suit doesn't have sensors
-
- DeltaFire15 updated:
-
- - Nar'Sie runes no longer benefit from runed floors.
-
- Detective-Google updated:
-
- - the POOL. remove: boxstation dorms 7
- - valentines candy no longer prefbreaks
- - Loudness Booster pAI program
- - Encryption Key pAI program
-
- EmeraldSundisk updated:
-
- - Connects mining's disposal unit on Delta.
- - Slight visual adjustments to the immediate affected area.
-
- Feasel updated:
-
- - Buffed dissection success chances.
-
- Ghommie updated:
-
- - The anomalous honking crystal should now properly clown your mind.
- - Stopped the ellipsis question mark from being displayed twice in the examine message for masked/unknown human mobs.
- - Made the aforementioned ellipsis question mark display on flavor-text-less masked/unknown human mobs too for consistency.
- - Stopped an APTFT exploit with spray bottles.
- - Fixed the detective revolver being quite risky to use.
- - Hair styles and undergarments are yet again free from gender restrictions.
- - Clown ops will find bombananas and clown bomb beacons instead of minibombs and bomb beacons in their infiltrator ship now.
- - For safety, the syndicate shuttle minibombs and bombananas come shipped in a box. Please don't instinctively eat any of those nanas, thank you.
- - Uplink items excluded (such as mulligan, chameleon, ebow) from or exclusive (such as cyber implants) to normal nuke ops will now be properly unavailable/available to clown ops.
- - Fixed bananium energy sword/shield slips.
- - Buffed said slips to ignore no-grav/crawling/flying as well as adding some deadly force to the e-sword.
- - Fixed the 'stache grenade anti-non-clumsy user check.
- - Doubled the timer for the sticky mustaches effect from the above grenade (from 1 to 2 minutes)
- - Fixed an edge case with the chaplain armaments beacon spawning the box in nullspace.
- - The playback device's cooldown now proportionally increases with messages longer than 60 characters (3 seconds is the default assembly cooldown).
- - Fixed space ninjas "Nothing" objective. Now you gotta steal some dandy stuff such as corgi meat and pinpointers as a ninja too.
- - Fixed maploaded APC terminals direction.
- - Nerfed magnetic rifles/pistols by re(?)adding power cell requirements for it. These firearms must be recharged after firing 2 magazines worth of projectiles and are slightly more susceptible to EMPs.
- - Fixed the tearstache nade not properly working.
- - Buffed it against space helmet internals.
- - Holographic fans won't display above mobs and other objects anymore.
- - Fixed paraplegics appearing as shoeless.
- - Fixed the petting element.
- - Fixed slipping.
- - Refactored mob holders into an element.
- - Fixed a few minor issues with that feature. such as mismatching sprites for certain held mobs and a slight lack of safety checks.
- - holdable mobs can't force themselves into people's hands anymore.
- - Milkies fix.
- - Fixed some mounted defibrillator issue with the altclicking functionality.
- - Fixed no-grav lavaland labor/mining shuttle areas.
- - Fixed a little issue with sleeper UI and blood types.
- - Fixing accidental nerfs to the magpistol magazine.
- - The Lavaland's Herald speech sound should only play if they are actually speaking.
- - Nerfed cargo passive points generation from 500 to 125 creds per minute.
- - Fixed whitelisted/donor loadouts
- - Childproofs double-esword and hypereuplastic blade toys.
- - Some reagent holders (such as cigarettes, food) are not suitable for reagents export anymore, while unprocessed botany crops will only net 1/3 of the standard reagents values.
- - Export scanners now include the reagents value in the price report.
- - Fixed a little inconvenience with the character setup preview dummy having extra unwarranted bits.
- - Stopped role restricted uplink items from being discounted despite not being purchasable most times.
- - Missing words replacement file for the gondola mask.
- - Fixed an issue with the nearsighted prescription glasses taking over worn eyewear.
- - Fixed AI unanchoring not properly removing the no teleport trait. My bad.
- - Fixed another issue with hering comsig.
- - Fixed dozen missing privates sprites.
- - A little fix concerning some R&D and reagents.
- - Further mob holder fixes.
- - Fixed being unable to dump a trash bag's contents directly into disposal bins.
- - Doubled the halved flavor text maximum length.
- - Reduced tongue organ damage and tasting pH message spam.
- - Fixed agent IDs not registering the inputted name. Thanks MrPerson.
- - Fixed solar panels/trackers (de)construction being a bit wonky.
- - Fixed something about slime blood and the law of conservation of mass.
- - Fixed flypeople being emetic machine guns.
- - Fixed virology being unable to be done with synthetic blood.
- - Renamed "blaster carbine" and "blaster rifles" back to "energy gun" and "laser gun" respectively
- - Fixed magnetic rifles & co being inconsistent with printed energy guns and start with an empty power cell.
- - Reverted practice laser gun sprites back to their former glory. Mostly.
- - Fixed sprint buffer cost and regen being rounded down.
- - Nerfed the fermenting barrel export industry.
- - Reagent dispensers selling price no longer takes in account the reagents volume. It's already handled by reagents export.
- - pAIs are yet again unable to perform certain silicon interactions with machineries yet again.
- - Fixed pAI radios inability to be toggled on/off.
-
- Ghommie (original PRs by Floyd/Qustinnus, 4Dplanner, Willox, ninjanomnom, mrdoombringer, Fikou, Fox McCloud, TheChosenEvilOne, nemvar, bobbahbrown, Time-Green, Stonebaykyle, MrPerson, ArcaneMusic and zxaber) updated:
-
- - You can now make toolboxes out of almost any solid material in an autolathe
- - adds Knight's Armour made out of any materials
- - new ruin found in lavaland protected by dark wizards, I wonder what they're guarding
- - You can now put a bunch more mats in the coin mint and autolathe
- - Adamantine and Mythril are now materials (Adamantine still only from xenobio, Mythril still only from badminnery). Adamantine boosts an item's force by 1.5, Mythril gives an item RPG statistics.
- - most custom sprites for coins have been lost
- - You can now give your ass acute radiation poisoning
- - floydmats now apply to all objs / items
- - you can now make tables and chairs out of any material
- - Fixes being able to exploit fully upgraded destructive analyzers to multiply materials
- - An old monastery from a previously abandoned sector of space has recently resurfaced in some regions surrounding the station.
- - Latent scans of the surrounding systems have picked up trace signs of new, smaller cult constructs, however these signatures quickly vanished.
- - In other news, scavengers in your sector have been seen occasionally with classically recreated maces, so autolathe firmware has been upgraded to accommodate this.
-
- Hatterhat updated:
-
- - Zombie powder is now instant when ingested, but delayed when injected or applied through touch.
- - The H.E.C.K. suit is now goliath tentacle resistant and probably better for acid resistance.
- - The Engineering techfab can now print standard and large RCD compressed matter cartridges.
- - The Experimental Tools node now has the Combifan projector, blocking both temperature and atmospheric changes.
- - fiddles with the seed extractor upgrade examine to make it not shit
- - Formaldehyde prevents organ decay and corpses' miasma production at 1u in the body.
- - Epinephrine pens now contain 3u formaldehyde. This should not kill you.
- - The ships often crashed by Free Golems on Lavaland now have GPSes. They're off, by default, but an awakening Golem could easily turn one on.
- - Standard RCD ammo can now be printed from Engineering-keyed techfabs once you hit Industrial Engineering.
- - Consoleless interfaces are now default - this means unrestricted protolathes and circuit imprinters can now be interfaced with by interacting with the machine itself.
- - Multitools can now actually be printed from Engineering and Science protolathes/techfabs once you unlock Basic Tools.
- - Husking (from being burned to shit) can now be reverted! 5u rezadone or 100u synthflesh, at below 50 burn.
- - Turning a body into a burnt husk now takes more effort. 300 burn's worth of effort.
- - Buckshot individual pellet damage up from 10 to 12.5. Still firing 6 pellets.
- - Preservahyde! Made with water, bromine, and formaldehyde, it doesn't decay into histamine. Instead, it just prevents your organs from rotting into nothing.
- - You can now purify eldritch longswords with a bible. This creates purified longswords, which do not have anti-magic properties, but are still good for swinging at cultists.
- - Extend votes! Ported from Hyper, ported from AUstation.
- - mechs with stock parts now have icons
- - Pie reagent transfer now requires an uncovered mouth.
- - Biogenerators can now actually generate universal enzyme.
- - The Basic Tools node now unlocks the multitool for printing on Engineering and Science fabricators.
- - The Ash Walkers' nest on Lavaland now starts with three bowyery slabs.
- - You can now welder-harden arrows. It might take longer.
- - Silkstring's costs adjusted for bows and whatnot.
- - Grammar adjusted on a lot of things relating to bows.
- - Pipe bows' bowstring doesn't look like it replicated itself upon draw.
-
- IHOPMommyLich updated:
-
- - Changed the multiplicative_slowdown of Stimulants from -1 to -0.5
-
- IronEleven updated:
-
- - Minor stat changes to Choking, Spontaneous Combustion, Autophagocytosis Necrosis, Hallucigen, Narcolepsy, Shivering, and Vomiting symptoms.
-
- KathrinBailey updated:
-
- - Missing turf_decals in Cargo Office.
- - Turns on the docking beacons on Box.
- - Fixes Starboard Quarter maint room being spaced. It was never intended to be like how it was.
- - The aforementioned maint room not having stuff in it.
- - varedited photocopier sometimes not opening any UI.
- - Atmos differences in Starboard Quarter maint.
- - Atmos differences in destroyed shuttle/EVA bridge. Plating replaced with airless plating.
- - Rotates AI satellite computers. These have probably been like this since computers had the old sprites and no directional ones. You shouldn't sit at a chair to operate a sideways computer.
-
- KrabSpider updated:
-
- - The Van Dyke is no longer Fu Manchu.
- - Gets rid of a Fu Manchu imitation.
-
- Kraseo updated:
-
- - You can no longer pull before wearing boxing gloves to bypass the grab check.
- - Nightmares no longer delete entire guns from existence for merely having a light on them.
-
- Linzolle updated:
-
- - Bows now will not delete an arrow if it cant fire it.
- - bows now like and respect sprite changes
-
- MalricB updated:
-
- - "Shaggy" sprite from virgo
- - "shaggy" option in the character customization
-
- MrJWhit updated:
-
- - Removed meteor defense tech node
- - TEG
-
- Naksu updated:
-
- - Odysseus chem synthesizing now works again.
-
- Owai-Seek updated:
-
- - Burger, Cargo Packaging, Dirty Magazine, Air Pump, and Scrubber crates.
- - Duplicate Crate, Festive Wrapping Paper Crate, Contraband Monkey Meat Crate
- - Gave Seed Crate Ambrosia Seed, gave Biker Gang Crate Spraypaint.
- - Organised some crates with sub-categories. Also, moved all vendor refills to a new tab.
- - Moved Grill to Service Tab
- - Engineering Hardsuit Access
- - Blood Crate now has all of the current blood types.
- - Birthday Cake Recipe is now the same as TG.
- - Added Soy Sauce and BBQ Packets to Dinnerware Vendor.
- - Added nurse outfit, nurse cap, and mailman hat to loadout.
- - Changed the name of scrubs to blue, green, and purple scrubs.
- - Bacon and Eggs food item. Delicious! Added a Lemony Poppy Seed Muffin.
- - Snack Vendor has Chocolates, Tortilla Chips, and a Marshmallow Box
- - Mops can now be printed at service lathe once tools are researched.
- - Biobags can hold most organic limbs/organs, but not brains, implants, or cybernetics.
- - Trash Bag can now hold limbs (but not heads.)
- - Most snack vendor items reduced by 1.
- - Trash Cans are now actually craftable, and only require metal instead of plastic.
- - Bacon and Eggs, Drying Agent Bottle.
- - Mugs now show reagent colors of contained reagents. Thanks Seris!
- - Reorganized all food recipes, (hopefully) making things easier to find.
- - Trays now have a whitelist, allowing them to pick up normal sized foods, bowls, glassware, booze, ect.
- - Easter foods are no longer their own Misc Food Category on the top of the menu.
- - fixed a few typos/capitalization consistency.
- - Mexican Foods are their own Subcategory.
- - Donuts are their own Subcategory
- - Moved Sweets from Misc Food in with Pies. Renamed to Pies & Sweets
- - BROOM
- - Janitor Vendor now has gear for two Janitors.
-
- PersianXerxes updated:
-
- - SMES and PACMAN attached to gulag Security to power electrified windows remove: Removed Sec vendor from gulag Security
- - Separation of gulag and public mining
- - Better clarified the comment explaining the contraband tag.
- - Cargo nuclear defusal kits now require an emag'd drop pod console to be purchased.
- - Added Kilo Station
- - Adjusts Kilo Station to be more in line with Citadel standards
- - Added area icons required to make Kilo Station editable on Citadel code
- - Fixed a reagent container on Kilo pointing to a nonexistent reagent
- - Adds Kilo Station to the maps config file, does not fix Meta Station's population requirement
-
- Psody-Mordheim updated:
-
- - You can now make synth-flesh with synthetic blood.
- - You can now make synthetic blood via mixing saline glucose, iron, stable plasma and heating it to 350 temp.
- - You can mix synthetic blood and cryoxadone to create synth-meat in addition to normal blood.
- - Disfiguration Symptom.
- - Deoxyribonucleic Acid Saboteur Symptom.
- - Polyvitiligo Symptom.
- - Revitiligo Symptom.
- - Vitiligo Symptom.
-
- Putnam3145 updated:
-
- - Added logging to various consent things.
- - Lots of new traitor objectives
- - gender change potion now respects prefs
- - Hypno prefs work better.
- - Panic bunker is now round-to-round persistent
- - Relief valve now has a TGUI-next UI
- - Atmos reaction priority works now.
- - map voting doesn't suck anymore
- - Dynamic now defaults to "classic" storyteller instead of just failing if the vote didn't choose a storyteller.
- - antag quirk blacklisting works now
- - default should be... default
- - all supermatter damage is now hardcapped
- - Supermatter sabotage objective no longer shows up with no supermatter
- - Mining vendors no longer fail and eat your points iff you have precisely enough points to pay for an item
- - Licking pref
- - Fixed IRV.
- - Runtime if nobody has a chaos pref set
- - IRV fixed... again
- - temporary flavor text can now be of reasonable length
- - Shooting the supermatter now adds to the supermatter's power. CO2 setups beware!
- - Logging for renaming
-
- Raiq & Linzolle updated:
-
- - Bone bow - Ash walkers crafting , bone arrows - Ash walkers crafting, silk string used in bow crafting, harden arrows - Ash walkers crafting, ash walker only crafting book, basic pipe bow, and bow & arrow selling. Quivers for ash walkers as well, just to hold some arrows well out on the hunt!
-
- Seris02 updated:
-
- - tweaked the way the SM works
- - custom reagent pie smite
- - hijack implant
- - changed mentions of the issilion proc to hasSiliconAccessInArea based on what the proc is used for
- - recipe for mammal mutation toxin
- - polychromic winter coat
- - thief's gloves
- - crushing magboots
- - golden plastitanium toolbox being actually plastitanuium
- - character slot amount
- - rebalanced rising bass
- - string highlighting whitespace
- - glitch with PKA
- - meteor hallucinations (again)
- - Added naked hallucination
- - crowbarring manifests off crates
- - makes RCDs cost a better amount
- - apc icons
- - rest hotkey
- - hsl instead of sum of rgb for spraycan lum check
- - bloodcrawl's cooldown
-
- ShadeAware updated:
-
- - Craftable Switchblades, a weaker subtype of normal switchblades that can be crafted using a Kitchen Knife, Modular Receiver, Rifle Stock and some Cable Coil. Requires a welder to complete.
- - You can now actually craft Switchblades.
- - Switchblades no longer regain their old Makeshift sprite after retracting if you've made them fancy with Silver.
- - The Captain's Wardrobe, a special one-of-a-kind and ID-locked wardrobe for the Captain that holds all of their snowflakey gear. Remove: Snowflake gear from the Captain's locker, since now it has its own vendor.
-
- Tlaltecuhtli, ported by Hatterhat updated:
-
- - Ripley, Firefighter, Odysseus and H.O.N.K. mechs now also use scanning modules and capacitors on construction. This means that they also gain reduced power consumption and EMP protection from higher-tier stock parts.
-
- Trilbyspaceclone updated:
-
- - Vault hallway door being all access
- - Updates change logs
- - Crafts are now made of plasteel and can be made with 5 sheets
- - Takes away NT's connections to the Aliens that run the Syndicats
- - Carps have evolved to take more damage
- - restock crates for each vender
- - restock units for all station venders
- - Sec-vender missing icon
- - Box station captain office issues maping: Gulag on box can now be accessed
- - Alien stools and chairs
- - Bone armor/Dagger are now crafting from bones rather then crafting menu
- - Firing pins that only works when not on station
- - Medical locked crates
- - Russian gear crates have less gear in some cases but all will cost more
- - Medical locked crates that were not locked
- - Crates that were out of date are corrected
- - Heads of staff have been better screened by NT before being promoted
- - The suit full of spiders also known as a ninja now is a tactical turtleneck
- - The Wiznerds now dont have suits set to max
- - Meat wheat no longer has blood
- - Flat guns can no longer be suppressed
- - replaced stickmans .45 caliber with 10mm, for consistency.
- - Meatwheat and Oats now have rarity
- - Oats now have at lest 50% more flour in them
- - BDM now uses a PKA rather then a normal KA
- - Gang tower shield is no longer transparent
- - Cosmic winter coat now glows like the bedsheet, and holds normal winter coat gear
- - Express console is now logging what it buys, like the normal console should
- - Crabs are now made of crab meat.
- - AIs now understand the old ways of drunken dwarfs
- - Removes some armored Russian hats from box station round start
- - Doner items spawning
- - Engi/Sec Trek suit no longer has 10% melee protection
- - IPC hearts are now made of robomeat and roboblood thats emp proof. Heals and is all and all just like an normal heart
- - All robotic organs now have an animation.
- - IPC's now organs now look like robotic ones, even tho thats not the case game wise
- - Added a new bee themed bar sign
- - Makes plywood chair not look as bad.
- - corndog sprite being miss-spelled
- - Ash from land of lava now is useable for sandstone
- - Peach cake slices are no long made by mimes
-
- Tupinambis updated:
-
- - the portion of laws that require harm prevention by silicons has been removed.
- - silicon_laws.txt config file is required to be modified for full implementation.
- - masks no longer improperly stick out of helmets when they should be hidden.
- - Status Displays should now update correctly.
- - stunbatons now take 4 hits to inflict hard crit, up from 3.
- - stunbatons no longer disarm targets.
-
- Yakumo Chen updated:
-
- - Rings for your fingers!
- - New cargo crates and loadout options to bling your rings!
-
- YakumoChen updated:
-
- - Observe is back in the OOC tab
- - Rings look nicer. Sprites used from RP.
- - Ring on-hands. Diamond rings sparkle!
- - You can now propose using a diamond ring in your hand.
- - Legion skulls behave like bees!!!!
-
- Zellular updated:
-
- - Movement state for pupdozer and its decals
- - Tweaked the movement state for the pupdozer's eyes
-
- ancientpower updated:
-
- - Fixes an error in pH strips' feedback message.
- - Ported drink sliding from /vg/station.
- - Fixes color mismatching with the "genitals use skintone" preference.
- - Bunny ear style for humanoid species.
- - Ghosts are now literate.
-
- bunny232 updated:
-
- - Changes the simple animal sentience event from the xenomorph preference to sentience potion preference.
-
- coiax updated:
-
- - Admin and event only pair pinpointers! They come in a box of two, and each pinpointer will always point at its corresponding pair. Aww.
-
- deathride58 updated:
-
- - Spacemen no longer run at lightspeed on local servers.
-
- kappa-sama updated:
-
- - the plant dudes can actually make plant disks now
-
- keronshb updated:
-
- - Added repairable turrets
- - Adds Tiny Fans to the pirate ship
- - changes some reinforced windows to plastinanium pirate windows
- - made the pirate shuttle + turrets bomb resistant
- - made most pirate machines + consoles indestructible
- - increased pirate turret health
- - Adds the CogChamp drink and Sprite
- - Added burn and knockback to stunhand during HALOS on cult.
- - fixed accelerated regeneration nanites
- - fixed mechanical repair nanites
- - fixed bio reconstruction nanites
-
- kevinz000 updated:
-
- - Custom snowflake plushies are now in config rather than code.
- - Abductor mindsnapping (aka abductee objectives) can now be "cured" with brain surgery.
- - Shuttle hijacking has been completely reworked. Alt-click the shuttle as a hijack-capable mind (so traitors, and especially traitors with hijack) to begin or continue a hacking process.
- - A good amount of the blood RGB rework was cleaned up/reverted, with some notable gameplay changes including: Gibs and blood not having max blood by default (no more easy rampages, cultists), infinite gib streaking, etc etc.
- - meteor waves are now directional and announces the direction on the command report.
- - CTF CLAYMORES
- - shoves buffed, now shoving into a wall twice rapidly will also disarm their weapon.
- - traitor+bro gamemode minimum population set to 25 until there can be more in depth configuration systems for gamemodes.
- - no more bluespace skittish locker diving,
- - moths now have unique laughs and can *chitter.
- - nuke explosion is now full dev radius for anti lag purposes
- - Gangs can now only tag with a gang uplink bought spraycan.
- - dueling pistol accesses have been changed to be more accessible.
- - mechs no longer have admin logs flooding into IC control console log viewing
- - Guncode and energy guns have been refactored a bit.
- - You can now combat mode ight click on an energy gun to attempt to switch firing modes. This only works on guns without right click functions overridden.
- - shoes can now fit magpistols again.
- - Projectiles now always hit chest if targeting chest, snipers have 100% targeting zone accuracy. All other cases are unchanged.
- - The lawyer's PDA cartridge has been rebranded to something more accurate to its true nature.
- - Refactored ghostreading/etc
- - Cyborgization will now de-gang people, even gangheads.
- - reactive repulse armor now has an item limit
- - beam rifle runtime fix during aiming_beam
- - fail2topic runtime fix: taking out an ip while incrementing index resulted in accessing the next-next entry instead of the next and results in out of bound errors.
- - gravity gun repulse and chaos now work in all angles, rather than just basic cardinals and diagonals. fun.
- - Public autolathes can no longer be hacked.
- - Energy weapons now once again have their lens in contents.
- - pais are no longer muted for literally a whole hour on emp.
- - auto profiler subsystem from tg
- - Brig cells now are more accurate by using timeofday instead of realtime
- - Cryo now actually transfers reagents at tier 4 on enter rather than every 80 machine fire()-process()s regardless of if it was "reset" by open/close.
- - cmo now gets advanced surgery drapes that techweb-sync for advanced surgeries without an operating console.
- - ctf claymores now actually spawn (and fit).
- - STOP_PROCESSING now removes from currentrun to prevent another process cycle from happening where it shouldn't.
- - hand teleporters now require 30 deciseconds of still movement by the user to dispel portals. there's a beam effect too.
- - Sort of a bugfix but cult blood magic and all guns now respect stamina softcrit.
- - Organ healing rate doubled. Organ decay rate halved to match its define (15 minutes for full decay, so at around 8-10 minutes it'll be really fucked).
- - Storage now caches max screen size and only stores when being opened by a non ghost, meaning ghosts will no longer distort living player screens when viewing storage.
- - Stunbatons changed yet again.
- - the game's built in autoclicker aka CanMobAutoclick no longer triggers client/Click()'s anti clickspam guard.
- - pais can no longer bodyblock bullets
- - pai radio short changed to 3 minutes down from 5
- - pais are no longer fulltile click opacity.
- - vampire "immortal haste" has been reworked to be more reliable and consistent.
- - hand teles use a less atrocious beam
-
- necromanceranne updated:
-
- - Ebows now disarm people hit by them.
- - Ebows now do 60 stamina damage on hit.
- - Ebows no longer inflict drowsiness
- - Miniature ebows do 15 toxin damage, up from 8.
- - Ebows have considerably shorter knockdowns.
- - Ebows now make you slur rather than stutter.
- - Large ebows are now heavy and bulky.
- - You can no longer order spinfusors or their ammo from cargo.
- - Removed the formal security officer jacket from the secdrobe
- - formal security jackets are now armor vests
- - Bullets causing bleed rates equal to unmitigated damage through all forms of defense.
- - Reverted #9092, crew mecha no longer spawn with tracking beacons.
- - [Port] Mecha ballistics weapons now require ammo created from an Exosuit Fabricator or the Security Protolathe, though they will start with a full magazine and in most cases enough for one full reload. Reloading these weapons no longer chunks your power cell. Clown (and mime) mecha equipment have not changed.
- - [Port] The SRM-8 Missile Launcher has been replaced with the BRM-6 Breaching Missile Launcher in techwebs (Nukie Mauler remains equipped with the SRM-8).
- - [Port] Both Missile Launchers and the Clusterbang Launcher do not have an ammo cache, and cannot be reloaded by the pilot. Once the initial loaded ammo has been spent, you can use the appropriate ammo box to load the weapon directly.
- - [Port] Utility mechs that have a clamp equipped can load ammo from their own cargo hold into other mechs.
- - [Port] Nuke Ops can purchase spare ammo duffel bags for their mecha weapons, should they run low.
- - Literally unclickability with a cham projector
-
- nemvar updated:
-
- - Slight changes the self-repair borg module. It no longer references the borg that owns it.
- - Trash from food now gets generated at the location of the food item, instead of in the hands of the eater.
- - Changed mob biotypes from lists to flags.
-
- r4d6 updated:
-
- - Added a dwarf language
- - Added more engines
- - RPD subcategories and preview icons reorganized.
- - RPD now starts with painting turned off, hitting pipes with build and no paint will target the turf underneath instead. Bye bye turf pixelhunting.
- - Made dwarves into a roundstart races
- - Meteor Timer back to 3-5 minutes
- - Mining no longer lead to spess
- - Added Plasteel Pickaxe
- - Added Titanium Pickaxe
- - fixed a missing tile
-
- tralezab, bandit, Skoglol updated:
-
- - The mime's PDA messages are silent now!
- - 30 new emoji have been added. Mime buff, mime now OP.
-
GoonStation 13 Development Team
diff --git a/icons/mob/clothing/uniform_digi.dmi b/icons/mob/clothing/uniform_digi.dmi
index 7a638ef54c..6a538bc85e 100644
Binary files a/icons/mob/clothing/uniform_digi.dmi and b/icons/mob/clothing/uniform_digi.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index 528fd42d23..aa6d38ad07 100644
Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi
index 5bf347fabf..01f77ca8c9 100644
Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index c58fb5d940..58c1cd921c 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index c178cdba04..27caef76b2 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi
index b1d78fa078..5ee3db49e9 100644
Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ
diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi
index e54f55ed46..691d5c8362 100644
Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ
diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi
index e7d134c85f..a157d333b0 100644
Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 369fb377a5..62fe30f2d7 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -76,7 +76,7 @@
to_chat(H, "Your enormous breasts are way too large to fit anything over them!")
if(last_checked_size != B.cached_size)
- H.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
+ H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/breast_hypertrophy, multiplicative_slowdown = moveCalc)
sizeMoveMod(moveCalc)
if (B.size == "huge")
@@ -93,7 +93,7 @@
/datum/status_effect/chem/breast_enlarger/on_remove()
log_game("FERMICHEM: [owner]'s breasts has reduced to an acceptable size. ID: [owner.key]")
to_chat(owner, "Your expansive chest has become a more managable size, liberating your movements.")
- owner.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/breast_hypertrophy)
sizeMoveMod(1)
return ..()
@@ -152,18 +152,18 @@
playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1)
to_chat(H, "Your enormous package is way to large to fit anything over!")
- if(P.length < 22 && H.has_movespeed_modifier(DICK_MOVEMENT_SPEED))
+ if(P.length < 22 && H.has_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy))
to_chat(owner, "Your rascally willy has become a more managable size, liberating your movements.")
- H.remove_movespeed_modifier(DICK_MOVEMENT_SPEED)
- else if(P.length >= 22 && !H.has_movespeed_modifier(DICK_MOVEMENT_SPEED))
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy)
+ else if(P.length >= 22 && !H.has_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy))
to_chat(H, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!")
- H.add_movespeed_modifier(DICK_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
+ H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy, multiplicative_slowdown = moveCalc)
H.AdjustBloodVol(bloodCalc)
..()
/datum/status_effect/chem/penis_enlarger/on_remove()
log_game("FERMICHEM: [owner]'s dick has reduced to an acceptable size. ID: [owner.key]")
- owner.remove_movespeed_modifier(DICK_MOVEMENT_SPEED)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy)
owner.ResetBloodVol()
return ..()
@@ -280,7 +280,7 @@
var/mob/living/carbon/M = owner
//chem calculations
- if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall/test))
+ if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall))
if (phase < 3 && phase != 0)
deltaResist += 3//If you've no chem, then you break out quickly
if(prob(5))
@@ -532,7 +532,7 @@
cooldown += 1 //Cooldown doesn't process till status is done
else if(status == "charge")
- owner.add_movespeed_modifier(MOVESPEED_ID_MKULTRA, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/mkultra)
status = "charged"
if(lewd)
to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!")
@@ -542,7 +542,7 @@
else if (status == "charged")
if (statusStrength < 0)
status = null
- owner.remove_movespeed_modifier(MOVESPEED_ID_MKULTRA)
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/mkultra)
owner.DefaultCombatKnockdown(50)
to_chat(owner, "Your body gives out as the adrenaline in your system runs out.")
else
diff --git a/modular_citadel/code/game/machinery/wishgranter.dm b/modular_citadel/code/game/machinery/wishgranter.dm
index 7758c0d613..6cfe07b7a0 100644
--- a/modular_citadel/code/game/machinery/wishgranter.dm
+++ b/modular_citadel/code/game/machinery/wishgranter.dm
@@ -94,9 +94,8 @@
var/mob/living/simple_animal/hostile/venus_human_trap/killwish = new /mob/living/simple_animal/hostile/venus_human_trap(loc)
killwish.maxHealth = 1500
killwish.health = killwish.maxHealth
- killwish.grasp_range = 6
+ killwish.vine_grab_distance = 6
killwish.melee_damage_upper = 30
- killwish.grasp_chance = 50
killwish.loot = list(/obj/item/twohanded/dualsaber/hypereutactic)
charges--
insisting = FALSE
diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm
index e0e1b37a3d..69d2c791e7 100644
--- a/modular_citadel/code/modules/arousal/genitals.dm
+++ b/modular_citadel/code/modules/arousal/genitals.dm
@@ -150,7 +150,8 @@
aroused_state = FALSE
/obj/item/organ/genital/on_life()
- if(!reagents || !owner)
+ . = ..()
+ if(!reagents || !.)
return
reagents.maximum_volume = fluid_max_volume
if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION))
diff --git a/modular_citadel/code/modules/language/sylvan.dm b/modular_citadel/code/modules/language/sylvan.dm
new file mode 100644
index 0000000000..c9458bb4cf
--- /dev/null
+++ b/modular_citadel/code/modules/language/sylvan.dm
@@ -0,0 +1,23 @@
+// The language of the vinebings. Yes, it's a shameless ripoff of elvish.
+/datum/language/sylvan
+ name = "Sylvan"
+ desc = "A complicated, ancient language spoken by vine like beings."
+ speech_verb = "expresses"
+ ask_verb = "inquires"
+ exclaim_verb = "declares"
+ key = "h"
+ space_chance = 20
+ syllables = list(
+ "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres",
+ "fal", "tis", "bis", "qel", "aras", "losk", "rasa", "eob", "hil", "tanl", "aere",
+ "fer", "bal", "pii", "dala", "ban", "foe", "doa", "cii", "uis", "mel", "wex",
+ "incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa",
+ "la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu"
+ )
+ icon = 'icons/obj/hydroponics/harvest.dmi'
+ icon_state = "lily"
+ default_priority = 90
+
+/datum/language_holder/venus
+ languages = list(/datum/language/common, /datum/language/sylvan, /datum/language/machine)
+ only_speaks_language = /datum/language/sylvan
diff --git a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm
index 6963714f04..17c3f17ad8 100644
--- a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm
+++ b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm
@@ -15,7 +15,7 @@
if(!forced && (status_flags & GODMODE))
return FALSE
var/obj/item/bodypart/BP = isbodypart(affected_zone)? affected_zone : (get_bodypart(check_zone(affected_zone)) || bodyparts[1])
- if(amount > 0? BP.receive_damage(0, 0, amount * incomingstammult) : BP.heal_damage(0, 0, abs(amount)))
+ if(amount > 0? BP.receive_damage(0, 0, amount * incomingstammult) : BP.heal_damage(0, 0, abs(amount), FALSE, FALSE))
update_damage_overlays()
if(updating_health)
updatehealth()
diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
index a4b6429bea..bcc156a22e 100644
--- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
+++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
@@ -131,7 +131,7 @@
item_state = "particleblaster"
lefthand_file = 'modular_citadel/icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'modular_citadel/icons/mob/inhands/guns_righthand.dmi'
- ammo_type = list(/obj/item/ammo_casing/energy/electrode/pump, /obj/item/ammo_casing/energy/laser/pump)
+ ammo_type = list(/obj/item/ammo_casing/energy/disabler/pump, /obj/item/ammo_casing/energy/laser/pump)
ammo_x_offset = 2
modifystate = 1
@@ -152,19 +152,19 @@
fire_sound = 'sound/weapons/LaserSlugv3.ogg'
/obj/item/ammo_casing/energy/laser/pump
- projectile_type = /obj/item/projectile/beam/weak
- e_cost = 200
+ projectile_type = /obj/item/projectile/beam/pump
+ e_cost = 350
select_name = "kill"
- pellets = 3
+ pellets = 6
variance = 15
fire_sound = 'sound/weapons/ParticleBlaster.ogg'
-/obj/item/ammo_casing/energy/electrode/pump
- projectile_type = /obj/item/projectile/energy/electrode/pump
- select_name = "stun"
+/obj/item/ammo_casing/energy/disabler/pump
+ projectile_type = /obj/item/projectile/energy/disabler/pump
+ select_name = "disable"
fire_sound = 'sound/weapons/LaserSlugv3.ogg'
- e_cost = 300
- pellets = 3
+ e_cost = 150
+ pellets = 6
variance = 20
//PROJECTILES
@@ -181,19 +181,13 @@
speed = 0.6
icon_state = "disablerslug"
-/obj/item/projectile/energy/electrode/pump
- name = "electron blast"
- icon_state = "stunjectile"
+/obj/item/projectile/beam/pump
+ damage = 9
+ range = 6
+
+/obj/item/projectile/energy/disabler/pump
+ name = "disabling blast"
+ icon_state = "disablerslug"
color = null
- nodamage = TRUE
- knockdown = 100
- knockdown_stamoverride = 0
- knockdown_stam_max = 0
- stamina = 18
- stutter = 5
- jitter = 20
- strong_tase = FALSE
- tase_duration = 0
- hitsound = 'sound/weapons/taserhit.ogg'
- range = 3
- strong_tase = FALSE
+ stamina = 13
+ range = 6
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index 2364c617f0..89a7f58cee 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -144,20 +144,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
pH = 10
chemical_flags = REAGENT_ONMOBMERGE | REAGENT_DONOTSPLIT //Procs on_mob_add when merging into a human
can_synth = FALSE
-
-
-/datum/reagent/fermi/enthrall/test
- name = "MKUltraTest"
- description = "A forbidden deep red mixture that makes you like Fermis a little too much. Unobtainable and due to be removed from the wiki."
- data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo")
- creatorID = "honkatonkbramblesnatch"//ckey
- creatorGender = "Mistress"
- creatorName = "Fermis Yakumo"
- purity = 1
-
-/datum/reagent/fermi/enthrall/test/on_new()
- ..()
- creator = get_mob_by_key(creatorID)
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/fermi/enthrall/on_new(list/data)
creatorID = data["creatorID"]
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
index 5f9ea5924d..319cad1714 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
@@ -52,6 +52,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
inverse_chem_val = 0.5
inverse_chem = /datum/reagent/impure/SDZF
can_synth = TRUE
+ value = REAGENT_VALUE_RARE
//Main SDGF chemical
@@ -309,6 +310,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
can_synth = TRUE
taste_description = "a weird chemical fleshy flavour"
chemical_flags = REAGENT_SNEAKYNAME
+ value = REAGENT_VALUE_RARE
/datum/reagent/impure/SDZF/on_mob_life(mob/living/carbon/M) //If you're bad at fermichem, turns your clone into a zombie instead.
switch(current_cycle)//Pretends to be normal
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
index a8ac66ef20..8348569fbb 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
@@ -30,6 +30,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
inverse_chem_val = 0.25
can_synth = FALSE
var/datum/action/chem/astral/AS = new/datum/action/chem/astral()
+ value = REAGENT_VALUE_AMAZING
/datum/action/chem/astral
name = "Return to body"
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
index e0b7a6fa14..28645cdc7b 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
@@ -29,6 +29,7 @@
var/teleBool = FALSE
pH = 3.7
can_synth = TRUE
+ value = REAGENT_VALUE_EXCEPTIONAL
/datum/reagent/fermi/eigenstate/on_new(list/data)
location_created = data["location_created"]
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
index 97261e07f2..7403de6215 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
@@ -29,6 +29,7 @@
inverse_chem_val = 0.35
inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse
can_synth = FALSE
+ value = REAGENT_VALUE_VERY_RARE
var/message_spam = FALSE
/datum/reagent/fermi/breast_enlarger/on_mob_metabolize(mob/living/M)
@@ -126,6 +127,7 @@
taste_description = "a milky ice cream like flavour."
metabolization_rate = 0.25
can_synth = FALSE
+ value = REAGENT_VALUE_RARE
/datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M)
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
@@ -186,6 +188,7 @@
inverse_chem_val = 0.35
inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead.
can_synth = FALSE
+ value = REAGENT_VALUE_VERY_RARE
var/message_spam = FALSE
/datum/reagent/fermi/penis_enlarger/on_mob_metabolize(mob/living/M)
@@ -273,6 +276,7 @@
taste_description = "chinese dragon powder"
metabolization_rate = 0.5
can_synth = FALSE
+ value = REAGENT_VALUE_RARE
/datum/reagent/fermi/PEsmaller/on_mob_life(mob/living/carbon/M)
if(!ishuman(M))
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
index d98ec7059d..48c9ffb7e6 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
@@ -9,6 +9,7 @@
inverse_chem_val = 0.4
inverse_chem = /datum/reagent/impure/yamerol_tox
can_synth = TRUE
+ value = REAGENT_VALUE_VERY_RARE
/datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C)
var/obj/item/organ/tongue/T = C.getorganslot(ORGAN_SLOT_TONGUE)
@@ -100,6 +101,7 @@
data = list("grown_volume" = 0, "injected_vol" = 0)
var/borrowed_health
color = "#FFDADA"
+ value = REAGENT_VALUE_COMMON
/datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
if(iscarbon(M))
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm
deleted file mode 100644
index 87f9d71ce2..0000000000
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ /dev/null
@@ -1,32 +0,0 @@
-/datum/reagent/syndicateadrenals
- name = "Syndicate Adrenaline"
- description = "Regenerates your stamina and increases your reaction time."
- color = "#E62111"
- overdose_threshold = 6
-
-/datum/reagent/syndicateadrenals/on_mob_life(mob/living/M)
- M.adjustStaminaLoss(-5*REM)
- . = ..()
-
-/datum/reagent/syndicateadrenals/on_mob_metabolize(mob/living/M)
- . = ..()
- if(istype(M))
- M.next_move_modifier *= 0.5
- to_chat(M, "You feel an intense surge of energy rushing through your veins.")
-
-/datum/reagent/syndicateadrenals/on_mob_end_metabolize(mob/living/M)
- . = ..()
- if(istype(M))
- M.next_move_modifier *= 2
- to_chat(M, "You feel as though the world around you is going faster.")
-
-/datum/reagent/syndicateadrenals/overdose_start(mob/living/M)
- to_chat(M, "You feel an intense pain in your chest...")
- return
-
-/datum/reagent/syndicateadrenals/overdose_process(mob/living/M)
- if(iscarbon(M))
- var/mob/living/carbon/C = M
- if(!C.undergoing_cardiac_arrest())
- C.set_heartattack(TRUE)
- return
diff --git a/modular_citadel/icons/obj/guns/pumpactionblaster.dmi b/modular_citadel/icons/obj/guns/pumpactionblaster.dmi
index 363faf3c57..aed4d49956 100644
Binary files a/modular_citadel/icons/obj/guns/pumpactionblaster.dmi and b/modular_citadel/icons/obj/guns/pumpactionblaster.dmi differ
diff --git a/sound/voice/medbot/owo.ogg b/sound/voice/medbot/owo.ogg
new file mode 100644
index 0000000000..0fdaa9d483
Binary files /dev/null and b/sound/voice/medbot/owo.ogg differ
diff --git a/strings/tips.txt b/strings/tips.txt
index f396b3f542..c8f233bb1a 100644
--- a/strings/tips.txt
+++ b/strings/tips.txt
@@ -63,6 +63,7 @@ As a Roboticist, you can reset a cyborg's module by cutting and mending the rese
As a Roboticist, you can greatly help out Shaft Miners by building a Firefighter APLU equipped with a hydraulic clamp and plasma cutter. The mech is ash storm proof and can even walk across lava!
As a Roboticist, you can augment people with cyborg limbs. Augmented limbs can easily be repaired with cables and welders.
As a Roboticist, you can use your printer that is linked to the ore silo to teleport mats into your work place!
+As a Roboticist, you can upgrade cleanbots with adv mops and brooms to make them faster and better!
As the AI, you can click on people's names to look at them. This only works if there are cameras that can see them.
As the AI, you can quickly open and close doors by holding shift while clicking them, bolt them when holding ctrl, and even shock them while holding alt.
As the AI, you can take pictures with your camera and upload them to newscasters.
diff --git a/tgstation.dme b/tgstation.dme
index 7892d06f57..9aa47506d3 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -96,6 +96,7 @@
#include "code\__DEFINES\rust_g.config.dm"
#include "code\__DEFINES\rust_g.dm"
#include "code\__DEFINES\say.dm"
+#include "code\__DEFINES\security_levels.dm"
#include "code\__DEFINES\shuttles.dm"
#include "code\__DEFINES\sight.dm"
#include "code\__DEFINES\sound.dm"
@@ -124,6 +125,7 @@
#include "code\__DEFINES\dcs\signals.dm"
#include "code\__DEFINES\flags\shields.dm"
#include "code\__DEFINES\misc\return_values.dm"
+#include "code\__DEFINES\skills\skills.dm"
#include "code\__HELPERS\_cit_helpers.dm"
#include "code\__HELPERS\_lists.dm"
#include "code\__HELPERS\_logging.dm"
@@ -176,6 +178,7 @@
#include "code\_globalvars\logging.dm"
#include "code\_globalvars\misc.dm"
#include "code\_globalvars\regexes.dm"
+#include "code\_globalvars\traits.dm"
#include "code\_globalvars\lists\flavor_misc.dm"
#include "code\_globalvars\lists\maintenance_loot.dm"
#include "code\_globalvars\lists\mapping.dm"
@@ -389,6 +392,7 @@
#include "code\datums\components\explodable.dm"
#include "code\datums\components\footstep.dm"
#include "code\datums\components\forced_gravity.dm"
+#include "code\datums\components\identification.dm"
#include "code\datums\components\igniter.dm"
#include "code\datums\components\infective.dm"
#include "code\datums\components\jousting.dm"
@@ -519,6 +523,7 @@
#include "code\datums\elements\mob_holder.dm"
#include "code\datums\elements\polychromic.dm"
#include "code\datums\elements\spellcasting.dm"
+#include "code\datums\elements\squish.dm"
#include "code\datums\elements\swimming.dm"
#include "code\datums\elements\sword_point.dm"
#include "code\datums\elements\update_icon_blocker.dm"
@@ -567,6 +572,10 @@
#include "code\datums\ruins\lavaland.dm"
#include "code\datums\ruins\space.dm"
#include "code\datums\ruins\station.dm"
+#include "code\datums\skills\_check_skills.dm"
+#include "code\datums\skills\_skill.dm"
+#include "code\datums\skills\_skill_holder.dm"
+#include "code\datums\skills\medical.dm"
#include "code\datums\status_effects\buffs.dm"
#include "code\datums\status_effects\debuffs.dm"
#include "code\datums\status_effects\gas.dm"
@@ -2197,7 +2206,6 @@
#include "code\modules\mob\mob_defines.dm"
#include "code\modules\mob\mob_helpers.dm"
#include "code\modules\mob\mob_movement.dm"
-#include "code\modules\mob\mob_movespeed.dm"
#include "code\modules\mob\mob_transformation_simple.dm"
#include "code\modules\mob\say.dm"
#include "code\modules\mob\say_vr.dm"
@@ -2593,6 +2601,14 @@
#include "code\modules\modular_computers\hardware\printer.dm"
#include "code\modules\modular_computers\hardware\recharger.dm"
#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm"
+#include "code\modules\movespeed\_movespeed_modifier.dm"
+#include "code\modules\movespeed\modifiers\components.dm"
+#include "code\modules\movespeed\modifiers\innate.dm"
+#include "code\modules\movespeed\modifiers\items.dm"
+#include "code\modules\movespeed\modifiers\misc.dm"
+#include "code\modules\movespeed\modifiers\mobs.dm"
+#include "code\modules\movespeed\modifiers\reagents.dm"
+#include "code\modules\movespeed\modifiers\status_effects.dm"
#include "code\modules\newscaster\_news.dm"
#include "code\modules\newscaster\feed_channel.dm"
#include "code\modules\newscaster\feed_comment.dm"
@@ -2964,6 +2980,7 @@
#include "code\modules\research\nanites\extra_settings\type.dm"
#include "code\modules\research\nanites\nanite_programs\buffing.dm"
#include "code\modules\research\nanites\nanite_programs\healing.dm"
+#include "code\modules\research\nanites\nanite_programs\protocols.dm"
#include "code\modules\research\nanites\nanite_programs\rogue.dm"
#include "code\modules\research\nanites\nanite_programs\sensor.dm"
#include "code\modules\research\nanites\nanite_programs\suppression.dm"
@@ -3302,6 +3319,7 @@
#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
+#include "modular_citadel\code\modules\language\sylvan.dm"
#include "modular_citadel\code\modules\mentor\dementor.dm"
#include "modular_citadel\code\modules\mentor\follow.dm"
#include "modular_citadel\code\modules\mentor\mentor.dm"
@@ -3340,7 +3358,6 @@
#include "modular_citadel\code\modules\reagents\chemistry\reagents\fermi_reagents.dm"
#include "modular_citadel\code\modules\reagents\chemistry\reagents\healing.dm"
#include "modular_citadel\code\modules\reagents\chemistry\reagents\MKUltra.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\other_reagents.dm"
#include "modular_citadel\code\modules\reagents\chemistry\reagents\SDGF.dm"
#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm"
#include "modular_citadel\code\modules\reagents\objects\clothes.dm"