diff --git a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm
index 53e5b229578..778809373dc 100644
--- a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm
@@ -89,7 +89,7 @@
/turf/open/floor/mineral/titanium/yellow/airless,
/area/ruin/space/has_grav/powered/mechtransport)
"x" = (
-/obj/structure/mecha_wreckage/ripley/firefighter,
+/obj/structure/mecha_wreckage/clarke,
/turf/open/floor/mineral/titanium/yellow/airless,
/area/ruin/space/has_grav/powered/mechtransport)
"y" = (
diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm
index 7b0f7df9201..7bdb3072b98 100644
--- a/_maps/RandomZLevels/Academy.dmm
+++ b/_maps/RandomZLevels/Academy.dmm
@@ -2648,30 +2648,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/awaymission/academy/academygate)
-"km" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
-"kn" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
-"ko" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
-"kp" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
"kq" = (
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -2682,29 +2658,6 @@
/mob/living/simple_animal/hostile/wizard,
/turf/open/floor/plasteel,
/area/awaymission/academy/classrooms)
-"kr" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
-"ks" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
-"kt" = (
-/obj/machinery/gateway,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
-"ku" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/awaymission/academy/academygate)
"kv" = (
/obj/machinery/light,
/turf/open/floor/carpet,
@@ -2775,7 +2728,7 @@
/turf/open/floor/plasteel/cafeteria,
/area/awaymission/academy/academyaft)
"kI" = (
-/obj/machinery/gateway/centeraway,
+/obj/machinery/gateway/away,
/obj/structure/cable,
/turf/open/floor/plating,
/area/awaymission/academy/academygate)
@@ -12010,9 +11963,9 @@ jZ
jU
ke
ke
-km
-kp
-ks
+kf
+kf
+kf
ke
kf
ky
@@ -12140,9 +12093,9 @@ jY
jU
jW
kf
-kn
+kf
kI
-kt
+ke
ke
kf
ky
@@ -12270,9 +12223,9 @@ jY
jU
jW
kf
-ko
-kr
-ku
+kf
+kf
+kf
kf
kf
ky
diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm
index d3c5febdabf..78572ff2fdd 100644
--- a/_maps/RandomZLevels/SnowCabin.dmm
+++ b/_maps/RandomZLevels/SnowCabin.dmm
@@ -644,24 +644,6 @@
/obj/machinery/processor,
/turf/open/floor/plasteel/freezer,
/area/awaymission/cabin)
-"cb" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/turf/open/floor/wood,
-/area/awaymission/cabin)
-"cc" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/awaymission/cabin)
-"cd" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/turf/open/floor/wood,
-/area/awaymission/cabin)
"ce" = (
/obj/structure/chair/wood{
dir = 4
@@ -744,20 +726,8 @@
"cn" = (
/turf/open/lava,
/area/awaymission/cabin/caves/mountain)
-"co" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/awaymission/cabin)
"cp" = (
-/obj/machinery/gateway/centeraway,
-/turf/open/floor/wood,
-/area/awaymission/cabin)
-"cq" = (
-/obj/machinery/gateway{
- dir = 4
- },
+/obj/machinery/gateway/away,
/turf/open/floor/wood,
/area/awaymission/cabin)
"cr" = (
@@ -798,23 +768,6 @@
},
/turf/open/floor/plasteel/white,
/area/awaymission/cabin)
-"cw" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/turf/open/floor/wood,
-/area/awaymission/cabin)
-"cx" = (
-/obj/machinery/gateway,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/awaymission/cabin)
-"cy" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/turf/open/floor/wood,
-/area/awaymission/cabin)
"cz" = (
/obj/machinery/light{
dir = 1
@@ -35823,9 +35776,9 @@ an
bk
bJ
an
-cb
-co
-cw
+aq
+aq
+aq
eg
cH
cQ
@@ -36080,9 +36033,9 @@ an
nU
an
an
-cc
+aq
cp
-cx
+eg
eg
aq
cQ
@@ -36337,9 +36290,9 @@ an
jf
ay
an
-cd
-cq
-cy
+aq
+aq
+aq
eg
cH
cQ
diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm
index 5252ff3af74..032492a31ec 100644
--- a/_maps/RandomZLevels/TheBeach.dmm
+++ b/_maps/RandomZLevels/TheBeach.dmm
@@ -224,65 +224,15 @@
/mob/living/simple_animal/crab,
/turf/open/floor/plating/beach/sand,
/area/awaymission/beach)
-"aL" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 9
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
-"aM" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 1
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
-"aN" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 5
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
"aO" = (
/obj/effect/baseturf_helper/beach/sand,
/turf/open/floor/plating/beach/sand,
/area/awaymission/beach)
-"aP" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 8
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
"aQ" = (
-/obj/machinery/gateway/centeraway,
+/obj/machinery/gateway/away,
/obj/effect/turf_decal/sand,
/turf/open/floor/plating/beach/sand,
/area/awaymission/beach)
-"aR" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 4
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
"aS" = (
/obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime{
pixel_x = -12;
@@ -295,32 +245,6 @@
dir = 8
},
/area/awaymission/beach)
-"aU" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 10
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
-"aV" = (
-/obj/machinery/gateway,
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line,
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
-"aW" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/sand,
-/obj/effect/turf_decal/stripes/asteroid/line{
- dir = 6
- },
-/turf/open/floor/plating/beach/sand,
-/area/awaymission/beach)
"aX" = (
/turf/closed/wall/mineral/sandstone,
/area/awaymission/beach)
@@ -6908,9 +6832,9 @@ ak
ak
ak
ak
-aL
-aP
-aU
+bf
+bp
+bx
ak
ak
ba
@@ -7015,9 +6939,9 @@ ak
ak
ak
ak
-aM
+bg
aQ
-aV
+by
ba
ba
ba
@@ -7122,9 +7046,9 @@ ak
ak
ak
ak
-aN
-aR
-aW
+bh
+br
+bz
ak
ak
ak
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm
index ea53ccb6d4b..8172b4435d5 100644
--- a/_maps/RandomZLevels/caves.dmm
+++ b/_maps/RandomZLevels/caves.dmm
@@ -392,54 +392,14 @@
initial_gas_mix = "n2=23;o2=14"
},
/area/awaymission/caves/BMP_asteroid/level_three)
-"bi" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
-"bj" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
-"bk" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
-"bl" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
"bm" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/turf/open/floor/engine/cult{
initial_gas_mix = "n2=23;o2=14"
},
/area/awaymission/caves/BMP_asteroid/level_four)
-"bn" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
"bo" = (
/obj/structure/flora/rock,
/obj/item/soulstone/anybody,
@@ -447,28 +407,6 @@
initial_gas_mix = "n2=23;o2=14"
},
/area/awaymission/caves/BMP_asteroid/level_three)
-"bp" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
-"bq" = (
-/obj/machinery/gateway,
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
-"br" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/turf/open/floor/engine/cult{
- initial_gas_mix = "n2=23;o2=14"
- },
-/area/awaymission/caves/BMP_asteroid/level_four)
"bs" = (
/obj/structure/trap/stun{
desc = "A rune inscribed in the floor, the air feeling electrified around it.";
@@ -58099,9 +58037,9 @@ ao
ao
ao
bf
-bi
-bl
-bp
+ao
+ao
+ao
aw
ao
bz
@@ -58356,9 +58294,9 @@ ao
ao
bf
ap
-bj
+ao
bm
-bq
+ao
bf
bw
bA
@@ -58613,9 +58551,9 @@ ao
ao
ao
bf
-bk
-bn
-br
+ao
+ao
+ao
ao
ao
bz
diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm
index 3fd422e6ec4..8e8eb46c5d6 100644
--- a/_maps/RandomZLevels/challenge.dmm
+++ b/_maps/RandomZLevels/challenge.dmm
@@ -882,110 +882,13 @@
},
/turf/open/floor/plating,
/area/awaymission/challenge/end)
-"cR" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
-"cS" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
-"cT" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
-"cV" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
"cW" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/turf/open/floor/plasteel/dark,
/area/awaymission/challenge/end)
-"cX" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
-"cY" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
"cZ" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -999,22 +902,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/awaymission/challenge/end)
-"da" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/awaymission/challenge/end)
"db" = (
/obj/structure/window/reinforced,
/turf/open/floor/circuit,
@@ -29035,9 +28922,9 @@ cd
cn
cH
cN
-cR
-cV
-cY
+co
+co
+co
db
dg
cd
@@ -29292,7 +29179,7 @@ cd
cn
cH
cN
-cS
+co
cW
cZ
dc
@@ -29549,9 +29436,9 @@ cd
cn
cH
cN
-cT
-cX
-da
+co
+co
+co
db
dh
cd
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index 2f6d0af8bde..2aa95211057 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -181,45 +181,6 @@
},
/area/awaymission/moonoutpost19/syndicate)
"aG" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/moonoutpost19/syndicate)
-"aH" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/moonoutpost19/syndicate)
-"aI" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -270,26 +231,8 @@
heat_capacity = 1e+006
},
/area/awaymission/moonoutpost19/syndicate)
-"aO" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/moonoutpost19/syndicate)
"aP" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/obj/structure/cable,
@@ -297,24 +240,6 @@
heat_capacity = 1e+006
},
/area/awaymission/moonoutpost19/syndicate)
-"aQ" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/moonoutpost19/syndicate)
"aR" = (
/obj/machinery/light{
dir = 4
@@ -357,26 +282,7 @@
heat_capacity = 1e+006
},
/area/awaymission/moonoutpost19/syndicate)
-"aW" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/moonoutpost19/syndicate)
"aX" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -393,9 +299,6 @@
},
/area/awaymission/moonoutpost19/syndicate)
"aY" = (
-/obj/machinery/gateway{
- dir = 6
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -41596,8 +41499,8 @@ ac
at
az
aG
-aO
-aW
+aG
+aG
aV
br
bB
@@ -41852,7 +41755,7 @@ ac
ac
at
aA
-aH
+aG
aP
aX
bg
@@ -42109,8 +42012,8 @@ ac
ac
at
aB
-aI
-aQ
+aG
+aG
aY
bh
bt
diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm
index 49d1047fc38..7991d86d059 100644
--- a/_maps/RandomZLevels/research.dmm
+++ b/_maps/RandomZLevels/research.dmm
@@ -548,27 +548,18 @@
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bA" = (
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bB" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bC" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/stripes/line{
dir = 5
},
@@ -718,25 +709,19 @@
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bS" = (
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bT" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bU" = (
-/obj/machinery/gateway{
- dir = 4
- },
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -785,25 +770,18 @@
/turf/open/floor/plasteel/white,
/area/awaymission/research/interior/engineering)
"bY" = (
-/obj/machinery/gateway{
- dir = 10
- },
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"bZ" = (
-/obj/machinery/gateway,
/obj/effect/landmark/awaystart,
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/gateway)
"ca" = (
-/obj/machinery/gateway{
- dir = 6
- },
/obj/effect/turf_decal/stripes/line{
dir = 6
},
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm
index 21b7920d961..c059e9ac776 100644
--- a/_maps/RandomZLevels/snowdin.dmm
+++ b/_maps/RandomZLevels/snowdin.dmm
@@ -2429,23 +2429,6 @@
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
"fG" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/awaymission/snowdin/post/gateway)
-"fH" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/awaymission/snowdin/post/gateway)
-"fI" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
@@ -2793,15 +2776,12 @@
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
"gw" = (
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
"gx" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/obj/effect/turf_decal/bot,
@@ -2809,13 +2789,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
-"gy" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/awaymission/snowdin/post/gateway)
"gz" = (
/obj/machinery/light/broken{
dir = 4
@@ -3143,25 +3116,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
-"hl" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/awaymission/snowdin/post/gateway)
"hm" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/gateway)
"hn" = (
-/obj/machinery/gateway{
- dir = 6
- },
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -25755,7 +25716,7 @@ en
fh
fG
gw
-hl
+gw
hR
iA
ju
@@ -26010,7 +25971,7 @@ bE
dK
eo
fh
-fH
+fG
gx
hm
hS
@@ -26267,8 +26228,8 @@ dk
dK
ep
fh
-fI
-gy
+fG
+fG
hn
hT
iC
diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm
index eadb2d9ae34..17826ee8e9f 100644
--- a/_maps/RandomZLevels/spacebattle.dmm
+++ b/_maps/RandomZLevels/spacebattle.dmm
@@ -819,7 +819,7 @@
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"dL" = (
-/obj/mecha/working/ripley/firefighter{
+/obj/mecha/working/clarke{
ruin_mecha = 1
},
/turf/open/floor/plating,
@@ -944,24 +944,6 @@
},
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
-"ec" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
-"ed" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
-"ee" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
"ef" = (
/mob/living/simple_animal/hostile/syndicate/melee/spacebattle,
/turf/open/floor/mineral/plastitanium/red,
@@ -999,24 +981,12 @@
"el" = (
/turf/open/floor/engine,
/area/awaymission/spacebattle/cruiser)
-"em" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
"en" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
-"eo" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
"ep" = (
/obj/structure/chair{
dir = 1
@@ -1030,22 +1000,6 @@
"er" = (
/turf/closed/wall/mineral/plastitanium,
/area/awaymission/spacebattle/syndicate4)
-"et" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
-"eu" = (
-/obj/machinery/gateway,
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
-"ev" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/awaymission/spacebattle/cruiser)
"ew" = (
/obj/structure/chair,
/turf/open/floor/mineral/plastitanium/red,
@@ -2553,13 +2507,13 @@
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"jK" = (
-/mob/living/simple_animal/hostile/syndicate/melee/sword,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/mob/living/simple_animal/hostile/syndicate/melee/sword,
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
"jL" = (
@@ -26891,9 +26845,9 @@ cc
cc
bT
cK
-ec
-em
-et
+cK
+cK
+cK
cK
cK
cK
@@ -27148,9 +27102,9 @@ cA
cc
bT
cK
-ed
+cK
en
-eu
+cK
cK
cK
cK
@@ -27405,9 +27359,9 @@ cc
cc
bT
cK
-ee
-eo
-ev
+cK
+cK
+cK
cK
jF
fb
diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm
index 4215651a728..3c73800f206 100644
--- a/_maps/RandomZLevels/undergroundoutpost45.dmm
+++ b/_maps/RandomZLevels/undergroundoutpost45.dmm
@@ -3276,45 +3276,6 @@
},
/area/awaymission/undergroundoutpost45/central)
"gR" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/undergroundoutpost45/gateway)
-"gS" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/undergroundoutpost45/gateway)
-"gT" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -3585,26 +3546,8 @@
heat_capacity = 1e+006
},
/area/awaymission/undergroundoutpost45/crew_quarters)
-"ht" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/undergroundoutpost45/gateway)
"hu" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/obj/structure/cable,
@@ -3612,24 +3555,6 @@
heat_capacity = 1e+006
},
/area/awaymission/undergroundoutpost45/gateway)
-"hv" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/undergroundoutpost45/gateway)
"hw" = (
/obj/structure/chair{
dir = 8
@@ -3906,26 +3831,7 @@
heat_capacity = 1e+006
},
/area/awaymission/undergroundoutpost45/central)
-"hY" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/undergroundoutpost45/gateway)
"hZ" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -3941,24 +3847,6 @@
heat_capacity = 1e+006
},
/area/awaymission/undergroundoutpost45/gateway)
-"ia" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark{
- heat_capacity = 1e+006
- },
-/area/awaymission/undergroundoutpost45/gateway)
"ib" = (
/obj/structure/chair{
dir = 8
@@ -32687,8 +32575,8 @@ ad
gv
gJ
gR
-ht
-hY
+gR
+gR
it
iO
jh
@@ -32943,7 +32831,7 @@ ad
ad
gv
gJ
-gS
+gR
hu
hZ
iu
@@ -33200,9 +33088,9 @@ ad
ad
gw
gJ
-gT
-hv
-ia
+gR
+gR
+gR
iv
iQ
jj
diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm
index aec2943c9aa..fef54d42efc 100644
--- a/_maps/RandomZLevels/wildwest.dmm
+++ b/_maps/RandomZLevels/wildwest.dmm
@@ -63,58 +63,12 @@
/obj/structure/destructible/cult/pylon,
/turf/open/floor/circuit/green/off,
/area/awaymission/wildwest/vault)
-"ar" = (
-/obj/machinery/gateway{
- dir = 9
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
-"as" = (
-/obj/machinery/gateway{
- dir = 1
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
-"at" = (
-/obj/machinery/gateway{
- dir = 5
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
-"au" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
"av" = (
-/obj/machinery/gateway/centeraway{
+/obj/machinery/gateway/away{
calibrated = 0
},
/turf/open/floor/circuit/green/off,
/area/awaymission/wildwest/vault)
-"aw" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
-"ax" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
-"ay" = (
-/obj/machinery/gateway,
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
-"az" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/turf/open/floor/circuit/green/off,
-/area/awaymission/wildwest/vault)
"aA" = (
/obj/effect/meatgrinder,
/turf/open/floor/circuit/green/off,
@@ -47405,9 +47359,9 @@ aa
ab
ab
ab
-ar
-au
-ax
+ao
+ao
+ao
ao
ao
ao
@@ -47662,9 +47616,9 @@ aa
ab
ab
ab
-as
+ao
av
-ay
+ao
ao
ao
ao
@@ -47919,9 +47873,9 @@ aa
aa
ab
ab
-at
-aw
-az
+ao
+ao
+ao
ao
ao
ao
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 66b7b1a1a68..99bff1230c8 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -9922,9 +9922,6 @@
/turf/open/space,
/area/space/nearstation)
"azJ" = (
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -9945,9 +9942,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"azL" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -9962,9 +9956,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"azM" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -10454,43 +10445,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/ai_monitored/nuke_storage)
-"aBd" = (
-/obj/machinery/gateway{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"aBe" = (
/turf/open/floor/plasteel/dark,
/area/gateway)
-"aBf" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"aBg" = (
/obj/machinery/gateway/centerstation,
/turf/open/floor/plasteel/dark,
@@ -10814,42 +10771,7 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/nuke_storage)
-"aBX" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/bot_white/left,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
-"aBY" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/bot_white/right,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"aBZ" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -11905,8 +11827,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/nuke_storage)
"aEQ" = (
-/obj/structure/table,
-/obj/item/paper/pamphlet/gateway,
+/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel,
/area/gateway)
"aER" = (
@@ -11920,6 +11841,7 @@
},
/obj/item/storage/firstaid/regular,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/item/paper/pamphlet/gateway,
/turf/open/floor/plasteel,
/area/gateway)
"aES" = (
@@ -79036,8 +78958,8 @@ awb
axt
ayG
azJ
-aBd
-aBX
+azM
+azL
aDi
aEQ
aFW
@@ -79550,8 +79472,8 @@ awc
axt
ayG
azL
-aBf
-aBY
+azM
+azJ
aDw
aES
aJh
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index c75362bab0e..365fe0a6e59 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -69031,12 +69031,11 @@
/obj/structure/table,
/obj/item/storage/firstaid/regular,
/obj/effect/turf_decal/bot,
+/obj/item/paper/pamphlet/gateway,
+/obj/item/paper/pamphlet/gateway,
/turf/open/floor/plasteel,
/area/gateway)
"cyE" = (
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
@@ -69052,9 +69051,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"cyF" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/machinery/status_display/evac{
pixel_y = 32
},
@@ -69073,9 +69069,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"cyG" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
@@ -69954,20 +69947,13 @@
/turf/open/floor/plasteel,
/area/gateway)
"cAg" = (
-/obj/structure/table,
-/obj/item/clipboard,
-/obj/item/paper/pamphlet/gateway,
-/obj/item/paper/pamphlet/gateway,
-/obj/item/paper/pamphlet/gateway,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/obj/structure/cable,
+/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel,
/area/gateway)
"cAi" = (
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
@@ -69988,24 +69974,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/gateway)
-"cAk" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"cAl" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/camera{
@@ -70730,9 +70698,6 @@
/turf/closed/wall,
/area/gateway)
"cBD" = (
-/obj/machinery/gateway{
- dir = 10
- },
/obj/machinery/light{
dir = 8
},
@@ -70751,7 +70716,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"cBE" = (
-/obj/machinery/gateway,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
@@ -70768,9 +70732,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"cBF" = (
-/obj/machinery/gateway{
- dir = 6
- },
/obj/effect/decal/cleanable/dirt,
/obj/machinery/camera{
c_tag = "Bridge - Gateway Chamber";
@@ -159324,7 +159285,7 @@ cuk
cvE
cvz
cyG
-cAk
+cAi
cBF
cDm
cFa
diff --git a/_maps/map_files/Donutstation/Donutstation_LVL2.dmm b/_maps/map_files/Donutstation/Donutstation_LVL2.dmm
index c42949bfd3a..a5c071597c4 100644
--- a/_maps/map_files/Donutstation/Donutstation_LVL2.dmm
+++ b/_maps/map_files/Donutstation/Donutstation_LVL2.dmm
@@ -2680,9 +2680,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"gg" = (
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -2917,9 +2914,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/upper)
"gG" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -2938,9 +2932,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"gH" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -3007,9 +2998,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/upper)
"gN" = (
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -3069,44 +3057,7 @@
},
/turf/open/floor/plating,
/area/quartermaster/sorting)
-"gS" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/gateway)
-"gT" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/bot_white/left,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"gU" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -3128,24 +3079,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/upper)
-"gW" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/bot_white/right,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"gX" = (
/obj/effect/turf_decal/trimline/white/filled/corner{
dir = 8
@@ -3222,13 +3155,13 @@
/area/gateway)
"hd" = (
/obj/effect/turf_decal/bot,
-/obj/structure/closet/secure_closet/exile,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel,
/area/gateway)
"he" = (
@@ -20906,6 +20839,17 @@
},
/turf/open/openspace/airless,
/area/hallway/primary/upper)
+"Ya" = (
+/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/closet/secure_closet/exile,
+/turf/open/floor/plasteel,
+/area/gateway)
"YH" = (
/turf/open/openspace/airless,
/area/hallway/primary/upper)
@@ -57547,7 +57491,7 @@ lK
eL
gg
gN
-gT
+gH
gY
hc
tC
@@ -58060,10 +58004,10 @@ lz
lK
eL
gH
-gS
-gW
+gN
+gg
uf
-hc
+Ya
tE
tK
ob
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index f739061cf53..e25cfdbf54e 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -2778,7 +2778,6 @@
/turf/open/floor/plating/airless,
/area/maintenance/starboard/fore)
"aeH" = (
-/obj/structure/closet/cardboard,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small{
dir = 4
@@ -2787,6 +2786,7 @@
dir = 8;
pixel_x = 32
},
+/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel/dark,
/area/gateway)
"aeI" = (
@@ -7579,9 +7579,6 @@
/turf/open/floor/plasteel/dark,
/area/tcommsat/computer)
"amk" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -14359,9 +14356,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/machinery/gateway{
- dir = 10
- },
/obj/effect/decal/cleanable/dirt,
/obj/machinery/airalarm{
dir = 4;
@@ -81458,9 +81452,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/gateway)
@@ -81527,9 +81518,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/decal/cleanable/dirt,
/obj/machinery/camera{
c_tag = "Gateway";
@@ -82905,9 +82893,6 @@
dir = 8
},
/obj/effect/decal/cleanable/greenglow,
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/gateway)
@@ -82924,9 +82909,6 @@
dir = 4
},
/obj/effect/decal/cleanable/greenglow,
-/obj/machinery/gateway{
- dir = 4
- },
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/gateway)
@@ -82988,7 +82970,6 @@
dir = 8
},
/obj/effect/decal/cleanable/greenglow,
-/obj/machinery/gateway,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/gateway)
@@ -83001,9 +82982,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/machinery/gateway{
- dir = 6
- },
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/gateway)
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 0bee8c656a1..4b199b029fb 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -39280,14 +39280,12 @@
dir = 1
},
/obj/structure/cable,
+/obj/item/paper/pamphlet/gateway,
/turf/open/floor/plasteel{
dir = 1
},
/area/gateway)
"bJY" = (
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -39302,9 +39300,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"bJZ" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/machinery/status_display/evac{
pixel_y = 32
},
@@ -39322,9 +39317,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"bKa" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -39956,19 +39948,15 @@
/turf/open/floor/plasteel,
/area/gateway)
"bLB" = (
-/obj/structure/table,
-/obj/item/paper/pamphlet/gateway,
/obj/effect/turf_decal/bot{
dir = 1
},
+/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel{
dir = 1
},
/area/gateway)
"bLD" = (
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -39986,23 +39974,6 @@
/obj/machinery/gateway/centerstation,
/turf/open/floor/plasteel/dark,
/area/gateway)
-"bLF" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"bLG" = (
/obj/item/cigbutt,
/obj/effect/landmark/blobstart,
@@ -40790,25 +40761,7 @@
dir = 1
},
/area/gateway)
-"bNp" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/bot_white/left,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"bNq" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -40823,23 +40776,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/gateway)
-"bNr" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/bot_white/right,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"bNs" = (
/obj/structure/cable,
/turf/open/floor/plating,
@@ -45519,13 +45455,6 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"bYy" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 4;
- name = "N2 to Airmix"
- },
-/turf/open/floor/plasteel,
-/area/engine/atmos)
"bYz" = (
/obj/machinery/atmospherics/components/trinary/mixer/airmix{
dir = 4
@@ -45990,9 +45919,8 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bZH" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 4;
- name = "N2 to Pure"
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 6
},
/turf/open/floor/plasteel,
/area/engine/atmos)
@@ -46714,10 +46642,6 @@
/area/engine/atmos)
"cbf" = (
/obj/structure/window/reinforced,
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 1;
- name = "Nitrogen Outlet"
- },
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
},
@@ -46731,6 +46655,10 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1;
+ name = "N2 to Airmix"
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"cbg" = (
@@ -46747,6 +46675,10 @@
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
},
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1;
+ name = "N2 to Pure"
+ },
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cbh" = (
@@ -48682,11 +48614,6 @@
/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/open/space,
/area/space/nearstation)
-"cfv" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/turf/open/space,
-/area/space/nearstation)
"cfw" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
@@ -108758,7 +108685,7 @@ bGQ
bGM
bJY
bLD
-bNp
+bKa
bOK
bQu
bRL
@@ -109271,8 +109198,8 @@ bFd
bGS
bGM
bKa
-bLF
-bNr
+bLD
+bJY
bOM
bQw
bRM
@@ -120075,11 +120002,11 @@ bHu
bVJ
bXj
bYx
-bMg
+bKx
cbf
ccP
ceh
-cfv
+cfw
cgA
chP
cje
@@ -120331,12 +120258,12 @@ bxd
bUA
bVK
bXk
-bYy
+bIS
bZH
cbg
-ccQ
-bza
-aaf
+ccP
+ceh
+cfx
bAR
bAR
bAR
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 156ef59c0d5..c4e6195b69e 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -5430,9 +5430,6 @@
/turf/closed/wall,
/area/maintenance/fore)
"aoA" = (
-/obj/machinery/gateway{
- dir = 9
- },
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -5447,9 +5444,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"aoB" = (
-/obj/machinery/gateway{
- dir = 1
- },
/obj/machinery/light{
dir = 1
},
@@ -5467,9 +5461,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"aoC" = (
-/obj/machinery/gateway{
- dir = 5
- },
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -5763,9 +5754,6 @@
/turf/open/space,
/area/space/nearstation)
"apq" = (
-/obj/machinery/gateway{
- dir = 8
- },
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -5784,23 +5772,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/gateway)
-"aps" = (
-/obj/machinery/gateway{
- dir = 4
- },
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"apt" = (
/obj/structure/chair{
dir = 4
@@ -5933,25 +5904,7 @@
"apT" = (
/turf/closed/wall/r_wall,
/area/ai_monitored/nuke_storage)
-"apU" = (
-/obj/machinery/gateway{
- dir = 10
- },
-/obj/effect/turf_decal/bot_white/left,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"apV" = (
-/obj/machinery/gateway,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -5966,23 +5919,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/gateway)
-"apW" = (
-/obj/machinery/gateway{
- dir = 6
- },
-/obj/effect/turf_decal/bot_white/right,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/gateway)
"apX" = (
/turf/closed/wall,
/area/crew_quarters/dorms)
@@ -6782,12 +6718,11 @@
c_tag = "Gateway";
dir = 4
},
-/obj/structure/table,
/obj/structure/sign/warning/biohazard{
pixel_x = -32
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/item/paper/pamphlet,
+/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel,
/area/gateway)
"arY" = (
@@ -6842,6 +6777,7 @@
pixel_x = 32
},
/obj/item/radio/off,
+/obj/item/paper/pamphlet,
/turf/open/floor/plasteel,
/area/gateway)
"asb" = (
@@ -94588,7 +94524,7 @@ aaa
lcZ
aoA
apq
-apU
+aoC
aqQ
arX
ata
@@ -95101,8 +95037,8 @@ aiS
aaa
lcZ
aoC
-aps
-apW
+apq
+aoA
aqS
arZ
atc
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index b4f95f407b8..40e4ebca05c 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -239,6 +239,8 @@
#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity))
#define COMSIG_CARBON_GAIN_ORGAN "carbon_gain_organ" //from /item/organ/proc/Insert() (/obj/item/organ/)
#define COMSIG_CARBON_LOSE_ORGAN "carbon_lose_organ" //from /item/organ/proc/Remove() (/obj/item/organ/)
+#define COMSIG_CARBON_EQUIP_HAT "carbon_equip_hat" //from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent)
+#define COMSIG_CARBON_UNEQUIP_HAT "carbon_unequip_hat" //from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent)
// /mob/living/simple_animal/hostile signals
#define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget"
diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm
index ae2a753f1c6..6b8ef7bd567 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,67 +6,7 @@
#define MOVE_CONFLICT_JETPACK "JETPACK"
//ids
+#define MOVESPEED_ID_SANITY "sanity_component"
-#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_CARBON_CRAWLING "CARBON_CRAWLING"
-
-#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_SNAIL_CRAWL "SNAIL_CRAWL_SPEED_MOD"
-
-#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER"
-#define MOVESPEED_ID_JETPACK "JETPACK"
-
-#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER"
-#define MOVESPEED_ID_DIE_OF_FATE "DIE_OF_FATE"
-
-#define MOVESPEED_ID_SHOVE "SHOVE"
-#define MOVESPEED_ID_BULKY_DRAGGING "BULKY_DRAG"
-#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY"
-#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER"
-#define MOVESPEED_ID_PEPPER_SPRAY "PEPPER_SPRAYED"
-#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_LENTURI "LENTURI_SLOWDOWN"
-
+#define MOVESPEED_ID_MOB_GRAB_STATE "mob_grab_state"
+#define MOVESPEED_ID_MOB_WALK_RUN "mob_walk_run"
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index ee34f958d27..f7a95f2f311 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -28,6 +28,7 @@
#define ROLE_OVERTHROW "Syndicate Mutineer" //Role removed, left here for safety.
#define ROLE_HIVE "Hivemind Host" //Role removed, left here for safety.
#define ROLE_OBSESSED "Obsessed"
+#define ROLE_SPACE_DRAGON "Space Dragon"
#define ROLE_SENTIENCE "Sentience Potion Spawn"
#define ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime"
#define ROLE_MIND_TRANSFER "Mind Transfer Potion"
@@ -55,6 +56,7 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_BLOB,
ROLE_NINJA,
ROLE_OBSESSED,
+ ROLE_SPACE_DRAGON,
ROLE_MONKEY = /datum/game_mode/monkey,
ROLE_REVENANT,
ROLE_ABDUCTOR,
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index daa1fb27f78..76df451ed9e 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -210,6 +210,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_FRIENDLY "friendly"
#define TRAIT_GRABWEAKNESS "grab_weakness"
#define TRAIT_SNOB "snob"
+#define TRAIT_BALD "bald"
// common trait sources
#define TRAIT_GENERIC "generic"
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index ce5bf4beb56..fdcfc6506f4 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -36,8 +36,7 @@ GLOBAL_LIST_EMPTY(deathsquadspawn)
GLOBAL_LIST_EMPTY(emergencyresponseteamspawn)
GLOBAL_LIST_EMPTY(ruin_landmarks)
- //away missions
-GLOBAL_LIST_EMPTY(awaydestinations) //a list of landmarks that the warpgate can take you to
+//away missions
GLOBAL_LIST_EMPTY(vr_spawnpoints)
//used by jump-to-area etc. Updated by area/updateName()
diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm
index 589de62f61f..285ec2fb94c 100644
--- a/code/_onclick/observer.dm
+++ b/code/_onclick/observer.dm
@@ -68,18 +68,9 @@
// And here are some good things for free:
// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu
-/obj/machinery/gateway/centerstation/attack_ghost(mob/user)
- if(awaygate)
- user.forceMove(awaygate.loc)
- else
- to_chat(user, "[src] has no destination.")
- return ..()
-
-/obj/machinery/gateway/centeraway/attack_ghost(mob/user)
- if(stationgate)
- user.forceMove(stationgate.loc)
- else
- to_chat(user, "[src] has no destination.")
+/obj/effect/gateway_portal_bumper/attack_ghost(mob/user)
+ if(gateway)
+ gateway.Transfer(user)
return ..()
/obj/machinery/teleport/hub/attack_ghost(mob/user)
diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index 41eaba33c61..1ec0829c701 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -243,9 +243,19 @@
/datum/config_entry/number/movedelay/run_delay
integer = FALSE
+/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
integer = FALSE
+/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()
+
/////////////////////////////////////////////////Outdated move delay
/datum/config_entry/number/outdated_movedelay
deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index 2ab53766a6a..02f23c4b839 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -456,18 +456,6 @@ GLOBAL_LIST_EMPTY(the_station_areas)
message_admins("Loading [away_name] failed!")
return
-
- if(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.
- new_gate = G
- break
- //Link station gate with away gate and remove wait time.
- GLOB.the_gateway.awaygate = new_gate
- GLOB.the_gateway.wait = world.time
-
/datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override)
UNTIL((!z || reservation_ready["[z]"]) && !clearing_reserved_turfs)
var/datum/turf_reservation/reserve = new type
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index afdc2821a95..c3e46d289e2 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -205,27 +205,27 @@
switch(sanity)
if(SANITY_INSANE to SANITY_CRAZY)
setInsanityEffect(MAJOR_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/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=0.5, 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.25, 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/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm
index 31e1931b23b..3d494a6b3e7 100644
--- a/code/datums/components/plumbing/_plumbing.dm
+++ b/code/datums/components/plumbing/_plumbing.dm
@@ -29,16 +29,13 @@
RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED), .proc/disable)
RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), .proc/toggle_active)
RegisterSignal(parent, list(COMSIG_OBJ_HIDE), .proc/hide)
- RegisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS), .proc/create_overlays)
+ RegisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS), .proc/create_overlays) //called by lateinit on startup
if(start)
//timer 0 so it can finish returning initialize, after which we're added to the parent.
//Only then can we tell the duct next to us they can connect, because only then is the component really added. this was a fun one
addtimer(CALLBACK(src, .proc/enable), 0)
- if(use_overlays)
- create_overlays()
-
/datum/component/plumbing/process()
if(!demand_connects || !reagents)
STOP_PROCESSING(SSfluids, src)
@@ -101,7 +98,7 @@
reagents.trans_to(target.parent, amount, round_robin = TRUE)//we deal with alot of precise calculations so we round_robin=TRUE. Otherwise we get floating point errors, 1 != 1 and 2.5 + 2.5 = 6
///We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize()
-/datum/component/plumbing/proc/create_overlays(atom/A, list/overlays)
+/datum/component/plumbing/proc/create_overlays(atom/movable/AM, list/overlays)
if(tile_covered || !use_overlays)
return
@@ -126,9 +123,10 @@
direction = "east"
if(WEST)
direction = "west"
- I = image('icons/obj/plumbing/plumbers.dmi', "[direction]-[color]", layer = A.layer - 1)
+ I = image('icons/obj/plumbing/plumbers.dmi', "[direction]-[color]", layer = AM.layer - 1)
+
else
- I = image('icons/obj/plumbing/plumbers.dmi', color, layer = A.layer - 1) //color is not color as in the var, it's just the name
+ I = image('icons/obj/plumbing/plumbers.dmi', color,layer = AM.layer - 1) //color is not color as in the var, it's just the name of the icon_state
I.dir = D
overlays += I
diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm
index 2bd1f1b938f..87af417a28c 100644
--- a/code/datums/components/riding.dm
+++ b/code/datums/components/riding.dm
@@ -224,13 +224,13 @@
/datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
var/mob/living/carbon/human/H = parent
- H.remove_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING)
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/human_carry)
. = ..()
/datum/component/riding/human/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE)
. = ..()
var/mob/living/carbon/human/H = parent
- H.add_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING, multiplicative_slowdown = HUMAN_CARRY_SLOWDOWN)
+ H.add_movespeed_modifier(/datum/movespeed_modifier/human_carry)
/datum/component/riding/human/proc/on_host_unarmed_melee(atom/target)
var/mob/living/carbon/human/H = parent
diff --git a/code/datums/components/shrink.dm b/code/datums/components/shrink.dm
index 48ab864c79d..3dfd131923a 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, movetypes=GROUND)
+ L.add_movespeed_modifier(/datum/movespeed_modifier/shrink_ray)
if(iscarbon(L))
var/mob/living/carbon/C = L
C.unequip_everything()
@@ -27,7 +27,6 @@
"Everything grows bigger!")
QDEL_IN(src, shrink_time)
-
/datum/component/shrink/Destroy()
var/atom/parent_atom = parent
parent_atom.transform = parent_atom.transform.Scale(2,2)
@@ -35,7 +34,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/tackle.dm b/code/datums/components/tackle.dm
index 2719cf65a0a..9980a2fc96f 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -86,7 +86,7 @@
to_chat(user, "You're not ready to tackle!")
return
- if(user.has_movespeed_modifier(MOVESPEED_ID_SHOVE)) // can't tackle if you just got shoved
+ if(user.has_movespeed_modifier(/datum/movespeed_modifier/shove)) // can't tackle if you just got shoved
to_chat(user, "You're too off balance to tackle!")
return
@@ -167,8 +167,8 @@
to_chat(target, "[user] lands a weak tackle on you, briefly knocking you off-balance!")
user.Knockdown(30)
- if(ishuman(target) && !T.has_movespeed_modifier(MOVESPEED_ID_SHOVE))
- T.add_movespeed_modifier(MOVESPEED_ID_SHOVE, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH) // maybe define a slightly more severe/longer slowdown for this
+ if(ishuman(target) && !T.has_movespeed_modifier(/datum/movespeed_modifier/shove))
+ T.add_movespeed_modifier(/datum/movespeed_modifier/shove) // maybe define a slightly more severe/longer slowdown for this
addtimer(CALLBACK(T, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH)
if(-1 to 0) // decent hit, both parties are about equally inconvenienced
diff --git a/code/datums/elements/snail_crawl.dm b/code/datums/elements/snail_crawl.dm
index 9352ab7beda..0e322c7c9d2 100644
--- a/code/datums/elements/snail_crawl.dm
+++ b/code/datums/elements/snail_crawl.dm
@@ -16,13 +16,13 @@
. = ..()
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
if(istype(target))
- target.remove_movespeed_modifier(MOVESPEED_ID_SNAIL_CRAWL)
+ target.remove_movespeed_modifier(/datum/movespeed_modifier/snail_crawl)
/datum/element/snailcrawl/proc/snail_crawl(mob/living/carbon/snail)
if(snail.resting && !snail.buckled && lubricate(snail))
- snail.add_movespeed_modifier(MOVESPEED_ID_SNAIL_CRAWL, update=TRUE, priority=100, multiplicative_slowdown=-7, movetypes=GROUND)
+ snail.add_movespeed_modifier(/datum/movespeed_modifier/snail_crawl)
else
- snail.remove_movespeed_modifier(MOVESPEED_ID_SNAIL_CRAWL)
+ snail.remove_movespeed_modifier(/datum/movespeed_modifier/snail_crawl)
/datum/element/snailcrawl/proc/lubricate(atom/movable/snail)
var/turf/open/OT = get_turf(snail)
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index e23a5169e9a..3980534472e 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -241,3 +241,7 @@
/datum/mood_event/nanite_sadness/add_effects(message)
description = "+++++++[message]+++++++\n"
+
+/datum/mood_event/bald
+ description ="I need something to cover my head...\n"
+ mood_change = -3
diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm
index 0540529518c..280e7004a36 100644
--- a/code/datums/mood_events/generic_positive_events.dm
+++ b/code/datums/mood_events/generic_positive_events.dm
@@ -189,3 +189,7 @@
/datum/mood_event/area/add_effects(_mood_change, _description)
mood_change = _mood_change
description = _description
+
+/datum/mood_event/confident_mane
+ description = "I'm feeling confident with a head full of hair.\n"
+ mood_change = 2
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index c69d13d1792..64b6cec0e07 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -168,3 +168,55 @@
SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H)
to_chat(quirk_holder, "There is a pinpointer [where], which can help you find your way around. Click in-hand to activate.")
+
+/datum/quirk/bald
+ name = "Smooth-Headed"
+ desc = "You have no hair and are quite insecure about it! Keep your wig on, or at least your head covered up."
+ value = 0
+ mob_trait = TRAIT_BALD
+ gain_text = "Your head is as smooth as can be, it's terrible."
+ lose_text = "Your head itches, could it be... growing hair?!"
+ medical_record_text = "Patient starkly refused to take off headwear during examination."
+ ///The user's starting hairstyle
+ var/old_hair
+
+/datum/quirk/bald/add()
+ var/mob/living/carbon/human/H = quirk_holder
+ old_hair = H.hairstyle
+ H.hairstyle = "Bald"
+ H.update_hair()
+ RegisterSignal(H, COMSIG_CARBON_EQUIP_HAT, .proc/equip_hat)
+ RegisterSignal(H, COMSIG_CARBON_UNEQUIP_HAT, .proc/unequip_hat)
+
+/datum/quirk/bald/remove()
+ var/mob/living/carbon/human/H = quirk_holder
+ H.hairstyle = old_hair
+ H.update_hair()
+ UnregisterSignal(H, list(COMSIG_CARBON_EQUIP_HAT, COMSIG_CARBON_UNEQUIP_HAT))
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "bad_hair_day")
+
+/datum/quirk/bald/on_spawn()
+ var/mob/living/carbon/human/H = quirk_holder
+ var/obj/item/clothing/head/wig/natural/W = new(get_turf(H))
+ if (old_hair == "Bald")
+ W.hairstyle = pick(GLOB.hairstyles_list - "Bald")
+ else
+ W.hairstyle = old_hair
+ W.update_icon()
+ var/list/slots = list (
+ "head" = ITEM_SLOT_HEAD,
+ "backpack" = ITEM_SLOT_BACKPACK,
+ "hands" = ITEM_SLOT_HANDS,
+ )
+ H.equip_in_one_of_slots(W, slots , qdel_on_fail = TRUE)
+
+///Checks if the headgear equipped is a wig and sets the mood event accordingly
+/datum/quirk/bald/proc/equip_hat(mob/user, obj/item/hat)
+ if(istype(hat, /obj/item/clothing/head/wig))
+ SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "bad_hair_day", /datum/mood_event/confident_mane) //Our head is covered, but also by a wig so we're happy.
+ else
+ SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "bad_hair_day") //Our head is covered
+
+///Applies a bad moodlet for having an uncovered head
+/datum/quirk/bald/proc/unequip_hat(mob/user, obj/item/clothing, force, newloc, no_move, invdrop, silent)
+ SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "bad_hair_day", /datum/mood_event/bald)
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
index 755a26a2e73..0133e142808 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
@@ -450,3 +450,48 @@
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by the midround ruleset.")
log_game("DYNAMIC: [key_name(S)] was spawned as a Nightmare by the midround ruleset.")
return S
+
+//////////////////////////////////////////////
+// //
+// SPACE DRAGON (GHOST) //
+// //
+//////////////////////////////////////////////
+
+/datum/dynamic_ruleset/midround/from_ghosts/space_dragon
+ name = "Space Dragon"
+ antag_datum = /datum/antagonist/space_dragon
+ antag_flag = "Space Dragon"
+ antag_flag_override = ROLE_SPACE_DRAGON
+ enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ required_enemies = list(2,2,1,1,1,1,1,0,0,0)
+ required_candidates = 1
+ weight = 4
+ cost = 10
+ requirements = list(101,101,101,80,60,50,30,20,10,10)
+ high_population_requirement = 50
+ repeatable = TRUE
+ var/list/spawn_locs = list()
+
+/datum/dynamic_ruleset/midround/from_ghosts/space_dragon/execute()
+ for(var/obj/effect/landmark/carpspawn/C in GLOB.landmarks_list)
+ spawn_locs += (C.loc)
+ if(!spawn_locs.len)
+ message_admins("No valid spawn locations found, aborting...")
+ return MAP_ERROR
+ . = ..()
+
+/datum/dynamic_ruleset/midround/from_ghosts/space_dragon/generate_ruleset_body(mob/applicant)
+ var/datum/mind/player_mind = new /datum/mind(applicant.key)
+ player_mind.active = TRUE
+
+ var/mob/living/simple_animal/hostile/space_dragon/S = new (pick(spawn_locs))
+ player_mind.transfer_to(S)
+ player_mind.assigned_role = "Space Dragon"
+ player_mind.special_role = "Space Dragon"
+ player_mind.add_antag_datum(/datum/antagonist/space_dragon)
+
+ playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Space Dragon by the midround ruleset.")
+ log_game("DYNAMIC: [key_name(S)] was spawned as a Space Dragon by the midround ruleset.")
+ priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert")
+ return S
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index 684e2d5675c..0e08ce802b9 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -322,6 +322,14 @@ Class Procs:
/obj/machinery/attack_robot(mob/user)
if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user))
return FALSE
+ if(Adjacent(user) && can_buckle && has_buckled_mobs()) //so that borgs (but not AIs, sadly (perhaps in a future PR?)) can unbuckle people from machines
+ if(buckled_mobs.len > 1)
+ var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in sortNames(buckled_mobs)
+ if(user_unbuckle_mob(unbuckled,user))
+ return TRUE
+ else
+ if(user_unbuckle_mob(buckled_mobs[1],user))
+ return TRUE
return _try_interact(user)
/obj/machinery/attack_ai(mob/user)
diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm
index 81fa9ce15cc..c75ed084a09 100644
--- a/code/game/machinery/bank_machine.dm
+++ b/code/game/machinery/bank_machine.dm
@@ -3,8 +3,8 @@
desc = "A machine used to deposit and withdraw station funds."
icon = 'goon/icons/obj/goon_terminals.dmi'
idle_power_usage = 100
- ui_x = 320
- ui_y = 165
+ ui_x = 335
+ ui_y = 160
var/siphoning = FALSE
var/next_warning = 0
var/obj/item/radio/radio
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 6790607b466..5dde9f02171 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -21,6 +21,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
/obj/item/toy/prize/odysseus = 1,
/obj/item/toy/prize/phazon = 1,
/obj/item/toy/prize/reticence = 1,
+ /obj/item/toy/prize/clarke = 1,
/obj/item/toy/cards/deck = 2,
/obj/item/toy/nuke = 2,
/obj/item/toy/minimeteor = 2,
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 234e307ebe1..917d6f9f7af 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -82,29 +82,25 @@
if("killbot")
if(allowed(usr))
var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs
- if(can_control(usr, R))
- var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort")
- if(choice == "Confirm" && can_control(usr, R) && !..())
- var/turf/T = get_turf(R)
- message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!")
- log_game("\[key_name(usr)] detonated [key_name(R)]!")
- if(R.connected_ai)
- to_chat(R.connected_ai, "
ALERT - Cyborg detonation detected: [R.name]
")
- R.self_destruct()
+ if(can_control(usr, R) && !..())
+ var/turf/T = get_turf(R)
+ message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!")
+ log_game("\[key_name(usr)] detonated [key_name(R)]!")
+ if(R.connected_ai)
+ to_chat(R.connected_ai, "
ALERT - Cyborg detonation detected: [R.name]
")
+ R.self_destruct()
else
to_chat(usr, "Access Denied.")
if("stopbot")
if(allowed(usr))
var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs
- if(can_control(usr, R))
- var/choice = input("Are you certain you wish to [!R.lockcharge ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort")
- if(choice == "Confirm" && can_control(usr, R) && !..())
- message_admins("[ADMIN_LOOKUPFLW(usr)] [!R.lockcharge ? "locked down" : "released"] [ADMIN_LOOKUPFLW(R)]!")
- log_game("[key_name(usr)] [!R.lockcharge ? "locked down" : "released"] [key_name(R)]!")
- R.SetLockdown(!R.lockcharge)
- to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]")
- if(R.connected_ai)
- to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
")
+ if(can_control(usr, R) && !..())
+ message_admins("[ADMIN_LOOKUPFLW(usr)] [!R.lockcharge ? "locked down" : "released"] [ADMIN_LOOKUPFLW(R)]!")
+ log_game("[key_name(usr)] [!R.lockcharge ? "locked down" : "released"] [key_name(R)]!")
+ R.SetLockdown(!R.lockcharge)
+ to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]")
+ if(R.connected_ai)
+ to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
")
else
to_chat(usr, "Access Denied.")
if("magbot")
diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm
index 249a3a074d6..4028a1347aa 100644
--- a/code/game/machinery/computer/teleporter.dm
+++ b/code/game/machinery/computer/teleporter.dm
@@ -5,8 +5,8 @@
icon_keyboard = "teleport_key"
light_color = LIGHT_COLOR_BLUE
circuit = /obj/item/circuitboard/computer/teleporter
- ui_x = 475
- ui_y = 130
+ ui_x = 470
+ ui_y = 140
var/regime_set = "Teleporter"
var/id
var/obj/machinery/teleport/station/power_station
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index a891197ce03..7b91c44d328 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -953,25 +953,25 @@
if(user.a_intent != INTENT_HELP)
if(!W.tool_start_check(user, amount=0))
return
- user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \
+ user.visible_message("[user] begins [welded ? "unwelding":"welding"] the airlock.", \
"You begin [welded ? "unwelding":"welding"] the airlock...", \
"You hear welding.")
if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user)))
welded = !welded
- user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \
+ user.visible_message("[user] [welded? "welds shut":"unwelds"] [src].", \
"You [welded ? "weld the airlock shut":"unweld the airlock"].")
update_icon()
else
if(obj_integrity < max_integrity)
if(!W.tool_start_check(user, amount=0))
return
- user.visible_message("[user] is welding the airlock.", \
+ user.visible_message("[user] begins welding the airlock.", \
"You begin repairing the airlock...", \
"You hear welding.")
if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user)))
obj_integrity = max_integrity
machine_stat &= ~BROKEN
- user.visible_message("[user.name] has repaired [src].", \
+ user.visible_message("[user] finishes welding [src].", \
"You finish repairing the airlock.")
update_icon()
else
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 57e4ed55e89..9e263df3f42 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -184,9 +184,9 @@
if(W.tool_behaviour == TOOL_MULTITOOL)
detecting = !detecting
if (src.detecting)
- user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.")
+ user.visible_message("[user] reconnects [src]'s detecting unit!", "You reconnect [src]'s detecting unit.")
else
- user.visible_message("[user] has disconnected [src]'s detecting unit!", "You disconnect [src]'s detecting unit.")
+ user.visible_message("[user] disconnects [src]'s detecting unit!", "You disconnect [src]'s detecting unit.")
return
else if(W.tool_behaviour == TOOL_WIRECUTTER)
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index 9a2dd768340..a8196b91573 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -63,7 +63,7 @@
if (bulb)
user.visible_message("[user] begins to disconnect [src]'s flashbulb.", "You begin to disconnect [src]'s flashbulb...")
if(W.use_tool(src, user, 30, volume=50) && bulb)
- user.visible_message("[user] has disconnected [src]'s flashbulb!", "You disconnect [src]'s flashbulb.")
+ user.visible_message("[user] disconnects [src]'s flashbulb!", "You disconnect [src]'s flashbulb.")
bulb.forceMove(loc)
bulb = null
power_change()
diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm
index bccd3feccd4..c872fa661a7 100644
--- a/code/game/machinery/gulag_item_reclaimer.dm
+++ b/code/game/machinery/gulag_item_reclaimer.dm
@@ -8,8 +8,8 @@
use_power = IDLE_POWER_USE
idle_power_usage = 100
active_power_usage = 2500
- ui_x = 300
- ui_y = 300
+ ui_x = 325
+ ui_y = 400
var/list/stored_items = list()
var/obj/machinery/gulag_teleporter/linked_teleporter = null
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index 1883f125d1b..4d97055d7d5 100644
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -100,9 +100,9 @@
add_fingerprint(user)
src.disable = !src.disable
if (src.disable)
- user.visible_message("[user] has disabled \the [src]!", "You disable the connection to \the [src].")
+ user.visible_message("[user] disables \the [src]!", "You disable the connection to \the [src].")
if (!src.disable)
- user.visible_message("[user] has reconnected \the [src]!", "You fix the connection to \the [src].")
+ user.visible_message("[user] reconnects \the [src]!", "You fix the connection to \the [src].")
update_icon()
else
return ..()
diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm
index 8daab3a9e16..da8111f5714 100644
--- a/code/game/machinery/stasis.dm
+++ b/code/game/machinery/stasis.dm
@@ -161,9 +161,4 @@
/obj/machinery/stasis/nap_violation(mob/violator)
unbuckle_mob(violator, TRUE)
-/obj/machinery/stasis/attack_robot(mob/user)
- if(Adjacent(user) && occupant)
- unbuckle_mob(occupant)
- else
- ..()
#undef STASIS_TOGGLE_COOLDOWN
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index 538ad08eff6..ed53c567222 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -323,7 +323,7 @@
if(length(mobs))
var/mob/living/carbon/M = pick(mobs)
var/R
- mechsyringe.visible_message(" [M] was hit by the syringe!")
+ mechsyringe.visible_message(" [M] is hit by the syringe!")
if(M.can_inject(null, 1))
if(mechsyringe.reagents)
for(var/datum/reagent/A in mechsyringe.reagents.reagent_list)
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 7ac11a09af7..9feb2e8a3e6 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -24,8 +24,8 @@
var/list/part_sets = list(
"Cyborg",
"Ripley",
- "Firefighter",
"Odysseus",
+ "Clarke",
"Gygax",
"Durand",
"H.O.N.K",
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 3d845303bfb..dc964eb6d14 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -3,7 +3,7 @@
desc = "Exosuit"
icon = 'icons/mecha/mecha.dmi'
density = TRUE //Dense. To raise the heat.
- opacity = 1 ///opaque. Menacing.
+ opacity = TRUE //opaque. Menacing.
move_force = MOVE_FORCE_VERY_STRONG
move_resist = MOVE_FORCE_EXTREMELY_STRONG
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -25,9 +25,12 @@
armor = list("melee" = 20, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
var/list/facing_modifiers = list(MECHA_FRONT_ARMOUR = 1.5, MECHA_SIDE_ARMOUR = 1, MECHA_BACK_ARMOUR = 0.5)
var/equipment_disabled = 0 //disabled due to EMP
- var/obj/item/stock_parts/cell/cell ///Keeps track of the mech's cell
- var/obj/item/stock_parts/scanning_module/scanmod ///Keeps track of the mech's scanning module
- var/obj/item/stock_parts/capacitor/capacitor ///Keeps track of the mech's capacitor
+ /// Keeps track of the mech's cell
+ var/obj/item/stock_parts/cell/cell
+ /// Keeps track of the mech's scanning module
+ var/obj/item/stock_parts/scanning_module/scanmod
+ /// Keeps track of the mech's capacitor
+ var/obj/item/stock_parts/capacitor/capacitor
var/construction_state = MECHA_LOCKED
var/last_message = 0
var/add_req_access = 1
@@ -108,6 +111,8 @@
var/phasing_energy_drain = 200
var/phase_state = "" //icon_state when phasing
var/strafe = FALSE //If we are strafing
+ var/canstrafe = TRUE //if we can turn on strafing
+ var/haslights = TRUE //if we can turn on lights
var/nextsmash = 0
var/smashcooldown = 3 //deciseconds
diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm
index 67247b766eb..11c063ae015 100644
--- a/code/game/mecha/mecha_actions.dm
+++ b/code/game/mecha/mecha_actions.dm
@@ -6,9 +6,11 @@
if(enclosed)
internals_action.Grant(user, src)
cycle_action.Grant(user, src)
- lights_action.Grant(user, src)
+ if(haslights)
+ lights_action.Grant(user, src)
stats_action.Grant(user, src)
- strafing_action.Grant(user, src)
+ if(canstrafe)
+ strafing_action.Grant(user, src)
/obj/mecha/proc/RemoveActions(mob/living/user, human_occupant = 0)
@@ -16,9 +18,11 @@
eject_action.Remove(user)
internals_action.Remove(user)
cycle_action.Remove(user)
- lights_action.Remove(user)
+ if(haslights)
+ lights_action.Remove(user)
stats_action.Remove(user)
- strafing_action.Remove(user)
+ if(canstrafe)
+ strafing_action.Remove(user)
/datum/action/innate/mecha
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 55b0fc19233..d6265da7615 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -59,7 +59,7 @@
. = user.transferItemToLoc(I, parent)
if(.)
var/atom/parent_atom = parent
- user.visible_message("[user] has connected [I] to [parent].", "You connect [I] to [parent].")
+ user.visible_message("[user] connects [I] to [parent].", "You connect [I] to [parent].")
parent_atom.add_overlay(I.icon_state+"+o")
qdel(I)
@@ -537,156 +537,164 @@
user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.")
return TRUE
-/datum/component/construction/unordered/mecha_chassis/firefighter
- result = /datum/component/construction/mecha/firefighter
+/datum/component/construction/unordered/mecha_chassis/clarke
+ result = /datum/component/construction/mecha/clarke
steps = list(
- /obj/item/mecha_parts/part/ripley_torso,
- /obj/item/mecha_parts/part/ripley_left_arm,
- /obj/item/mecha_parts/part/ripley_right_arm,
- /obj/item/mecha_parts/part/ripley_left_leg,
- /obj/item/mecha_parts/part/ripley_right_leg,
- /obj/item/clothing/suit/fire
+ /obj/item/mecha_parts/part/clarke_torso,
+ /obj/item/mecha_parts/part/clarke_left_arm,
+ /obj/item/mecha_parts/part/clarke_right_arm,
+ /obj/item/mecha_parts/part/clarke_head
)
-/datum/component/construction/mecha/firefighter
- result = /obj/mecha/working/ripley/firefighter
- base_icon = "fireripley"
+/datum/component/construction/mecha/clarke
+ result = /obj/mecha/working/clarke
+ base_icon = "clarke"
- circuit_control = /obj/item/circuitboard/mecha/ripley/main
- circuit_periph = /obj/item/circuitboard/mecha/ripley/peripherals
+ circuit_control = /obj/item/circuitboard/mecha/clarke/main
+ circuit_periph = /obj/item/circuitboard/mecha/clarke/peripherals
inner_plating = /obj/item/stack/sheet/plasteel
inner_plating_amount = 5
-/datum/component/construction/mecha/firefighter/get_outer_plating_steps()
+ outer_plating = /obj/item/stack/sheet/mineral/gold
+ outer_plating_amount = 5
+
+/datum/component/construction/mecha/clarke/get_frame_steps()
return list(
list(
- "key" = /obj/item/stack/sheet/plasteel,
- "amount" = 5,
- "back_key" = TOOL_WELDER,
- "desc" = "Internal armor is welded."
- ),
- list(
- "key" = /obj/item/stack/sheet/plasteel,
- "amount" = 5,
- "back_key" = TOOL_CROWBAR,
- "desc" = "External armor is being installed."
+ "key" = /obj/item/stack/conveyor,
+ "amount" = 4,
+ "desc" = "The treads are added."
),
list(
"key" = TOOL_WRENCH,
"back_key" = TOOL_CROWBAR,
- "desc" = "External armor is installed."
+ "desc" = "The hydraulic systems are disconnected."
),
list(
- "key" = TOOL_WELDER,
+ "key" = TOOL_SCREWDRIVER,
"back_key" = TOOL_WRENCH,
- "desc" = "External armor is wrenched."
+ "desc" = "The hydraulic systems are connected."
),
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ )
)
-/datum/component/construction/mecha/firefighter/custom_action(obj/item/I, mob/living/user, diff)
+
+
+/datum/component/construction/mecha/clarke/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
//TODO: better messages.
switch(index)
if(1)
- user.visible_message("[user] connects [parent] hydraulic systems.", "You connect [parent] hydraulic systems.")
+ user.visible_message("[user] adds the tread systems.", "You add the tread systems.")
if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] connects [parent] hydraulic systems.", "You connect [parent] hydraulic systems.")
+ else
+ user.visible_message("[user] removes the tread systems.", "You remove the tread systems.")
+
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.")
else
user.visible_message("[user] disconnects [parent] hydraulic systems.", "You disconnect [parent] hydraulic systems.")
- if(3)
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].")
else
user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.")
- if(4)
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].")
else
user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].")
- if(5)
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
else
user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].")
- if(6)
+ if(7)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
else
user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].")
- if(7)
+ if(8)
if(diff==FORWARD)
- user.visible_message("[user] installs [I]into [parent].", "You install [I]into [parent].")
+ user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- if(8)
+ if(9)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
else
user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].")
- if(9)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- if(10)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] secures the scanner module.", "You secure the scanner module.")
else
user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].")
- if(11)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].")
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
- if(12)
+ if(13)
if(diff==FORWARD)
user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
else
user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].")
- if(13)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
else
user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
- if(14)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] secures the power cell.", "You secure the power cell.")
else
user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].")
- if(15)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].")
else
user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- if(16)
+ if(17)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
else
user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].")
- if(17)
+ if(18)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].")
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] starts to install the external armor layer to [parent].", "You install the external armor layer to [parent].")
- else
- user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].")
if(19)
if(diff==FORWARD)
- user.visible_message("[user] installs the external reinforced armor layer to [parent].", "You install the external reinforced armor layer to [parent].")
+ user.visible_message("[user] installs the external armor layer to [parent].", "You install the external reinforced armor layer to [parent].")
else
- user.visible_message("[user] removes the external armor from [parent].", "You remove the external armor from [parent].")
+ user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].")
if(20)
if(diff==FORWARD)
user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
else
- user.visible_message("[user] pries external armor layer from [parent].", "You pry external armor layer from [parent].")
+ user.visible_message("[user] pries the external armor layer from [parent].", "You pry the external armor layer from [parent].")
if(21)
if(diff==FORWARD)
user.visible_message("[user] welds the external armor layer to [parent].", "You weld the external armor layer to [parent].")
@@ -694,6 +702,7 @@
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
return TRUE
+
/datum/component/construction/unordered/mecha_chassis/honker
result = /datum/component/construction/mecha/honker
steps = list(
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 74b3cf9b67f..4061030e02a 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -182,12 +182,31 @@
desc = "A set of armor plates for the Durand. Built heavy to resist an incredible amount of brute force."
icon_state = "durand_armor"
-////////// Firefighter
+////////// Clarke
-/obj/item/mecha_parts/chassis/firefighter
- name = "\improper Firefighter chassis"
- construct_type = /datum/component/construction/unordered/mecha_chassis/firefighter
+/obj/item/mecha_parts/chassis/clarke
+ name = "\improper Clarke chassis"
+ construct_type = /datum/component/construction/unordered/mecha_chassis/clarke
+/obj/item/mecha_parts/part/clarke_torso
+ name = "\improper Clarke torso"
+ desc = "A torso part of Clarke. Contains power unit, processing core and life support systems."
+ icon_state = "clarke_harness"
+
+/obj/item/mecha_parts/part/clarke_head
+ name = "\improper Clarke head"
+ desc = "A Clarke head. Contains an integrated diagnostic HUD scanner."
+ icon_state = "clarke_head"
+
+/obj/item/mecha_parts/part/clarke_left_arm
+ name = "\improper Clarke left arm"
+ desc = "A Clarke left arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "clarke_l_arm"
+
+/obj/item/mecha_parts/part/clarke_right_arm
+ name = "\improper Clarke right arm"
+ desc = "A Clarke right arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "clarke_r_arm"
////////// HONK
@@ -352,3 +371,11 @@
/obj/item/circuitboard/mecha/phazon/main
name = "Phazon Central Control module (Exosuit Board)"
+
+/obj/item/circuitboard/mecha/clarke/peripherals
+ name = "Clarke Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/clarke/main
+ name = "Clarke Central Control module (Exosuit Board)"
+ icon_state = "mainboard"
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index 91b2a2bbf2a..88d72f037f9 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -147,7 +147,8 @@
/obj/structure/mecha_wreckage/ripley
name = "\improper Ripley wreckage"
icon_state = "ripley-broken"
- parts = list(/obj/item/mecha_parts/part/ripley_torso,
+ parts = list(
+ /obj/item/mecha_parts/part/ripley_torso,
/obj/item/mecha_parts/part/ripley_left_arm,
/obj/item/mecha_parts/part/ripley_right_arm,
/obj/item/mecha_parts/part/ripley_left_leg,
@@ -157,15 +158,15 @@
name = "\improper Ripley MK-II wreckage"
icon_state = "ripleymkii-broken"
-/obj/structure/mecha_wreckage/ripley/firefighter
- name = "\improper Firefighter wreckage"
- icon_state = "firefighter-broken"
- parts = list(/obj/item/mecha_parts/part/ripley_torso,
- /obj/item/mecha_parts/part/ripley_left_arm,
- /obj/item/mecha_parts/part/ripley_right_arm,
- /obj/item/mecha_parts/part/ripley_left_leg,
- /obj/item/mecha_parts/part/ripley_right_leg,
- /obj/item/clothing/suit/fire)
+/obj/structure/mecha_wreckage/clarke
+ name = "\improper Clarke wreckage"
+ icon_state = "clarke-broken"
+ parts = list(
+ /obj/item/mecha_parts/part/clarke_torso,
+ /obj/item/mecha_parts/part/clarke_head,
+ /obj/item/mecha_parts/part/clarke_left_arm,
+ /obj/item/mecha_parts/part/clarke_right_arm,
+ /obj/item/stack/conveyor)
/obj/structure/mecha_wreckage/ripley/deathripley
name = "\improper Death-Ripley wreckage"
@@ -177,7 +178,6 @@
icon_state = "honker-broken"
desc = "All is right in the universe."
parts = list(
- /obj/item/mecha_parts/chassis/honker,
/obj/item/mecha_parts/part/honker_torso,
/obj/item/mecha_parts/part/honker_head,
/obj/item/mecha_parts/part/honker_left_arm,
@@ -199,6 +199,14 @@
/obj/structure/mecha_wreckage/phazon
name = "\improper Phazon wreckage"
icon_state = "phazon-broken"
+ parts = list(
+ /obj/item/mecha_parts/part/phazon_torso,
+ /obj/item/mecha_parts/part/phazon_head,
+ /obj/item/mecha_parts/part/phazon_left_arm,
+ /obj/item/mecha_parts/part/phazon_right_arm,
+ /obj/item/mecha_parts/part/phazon_left_leg,
+ /obj/item/mecha_parts/part/phazon_right_leg)
+
/obj/structure/mecha_wreckage/odysseus
diff --git a/code/game/mecha/working/clarke.dm b/code/game/mecha/working/clarke.dm
new file mode 100644
index 00000000000..c76668342f5
--- /dev/null
+++ b/code/game/mecha/working/clarke.dm
@@ -0,0 +1,80 @@
+///Lavaproof, fireproof, fast mech with low armor and higher energy consumption, cannot strafe and has an internal ore box.
+/obj/mecha/working/clarke
+ desc = "Combining man and machine for a better, stronger engineer. Can even resist lava!"
+ name = "\improper Clarke"
+ icon_state = "clarke"
+ max_temperature = 65000
+ max_integrity = 200
+ step_in = 1.25
+ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ lights_power = 7
+ deflect_chance = 10
+ step_energy_drain = 15 //slightly higher energy drain since you movin those wheels FAST
+ armor = list("melee" = 20, "bullet" = 10, "laser" = 20, "energy" = 10, "bomb" = 60, "bio" = 0, "rad" = 70, "fire" = 100, "acid" = 100) //low armor to compensate for fire protection and speed
+ max_equip = 7
+ wreckage = /obj/structure/mecha_wreckage/clarke
+ enter_delay = 40
+ canstrafe = FALSE
+ /// Handles an internal ore box for Clarke
+ var/obj/structure/ore_box/box
+
+/obj/mecha/working/clarke/Initialize()
+ . = ..()
+ box = new /obj/structure/ore_box(src)
+ var/obj/item/mecha_parts/mecha_equipment/orebox_manager/ME = new(src)
+ ME.attach(src)
+
+/obj/mecha/working/clarke/Destroy()
+ box.dump_box_contents()
+ return ..()
+
+/obj/mecha/working/clarke/moved_inside(mob/living/carbon/human/H)
+ . = ..()
+ if(.)
+ var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_DIAGNOSTIC_ADVANCED]
+ hud.add_hud_to(H)
+
+/obj/mecha/working/clarke/go_out()
+ if(isliving(occupant))
+ var/mob/living/L = occupant
+ var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_DIAGNOSTIC_ADVANCED]
+ hud.remove_hud_from(L)
+ return ..()
+
+/obj/mecha/working/clarke/mmi_moved_inside(obj/item/mmi/M, mob/user)
+ . = ..()
+ if(.)
+ var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_DIAGNOSTIC_ADVANCED]
+ var/mob/living/brain/B = M.brainmob
+ hud.add_hud_to(B)
+
+//Ore Box Controls
+
+///Special equipment for the Clarke mech, handles moving ore without giving the mech a hydraulic clamp and cargo compartment.
+/obj/item/mecha_parts/mecha_equipment/orebox_manager
+ name = "ore storage module"
+ desc = "An automated ore box management device."
+ icon_state = "mecha_clamp" //None of this should matter, this shouldn't ever exist outside a mech anyway.
+ selectable = FALSE
+ detachable = FALSE
+ salvageable = FALSE
+ /// Var to avoid istype checking every time the topic button is pressed. This will only work inside Clarke mechs.
+ var/obj/mecha/working/clarke/hostmech
+
+/obj/item/mecha_parts/mecha_equipment/orebox_manager/attach(obj/mecha/M)
+ . = ..()
+ if(istype(M, /obj/mecha/working/clarke))
+ hostmech = M
+
+/obj/item/mecha_parts/mecha_equipment/orebox_manager/detach()
+ hostmech = null //just in case
+ return ..()
+
+/obj/item/mecha_parts/mecha_equipment/orebox_manager/Topic(href,href_list)
+ . = ..()
+ if(!hostmech || !hostmech.box)
+ return
+ hostmech.box.dump_box_contents()
+
+/obj/item/mecha_parts/mecha_equipment/orebox_manager/get_equip_info()
+ return "[..()] [hostmech?.box ? "Unload Cargo" : "Error"]"
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index b9512af99c8..f23fb7d0a94 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -4,8 +4,10 @@
icon_state = "ripley"
silicon_icon_state = "ripley-empty"
step_in = 1.5 //Move speed, lower is faster.
- var/fast_pressure_step_in = 1.5 //step_in while in low pressure conditions
- var/slow_pressure_step_in = 2.0 //step_in while in normal pressure conditions
+ /// How fast the mech is in low pressure
+ var/fast_pressure_step_in = 1.5
+ /// How fast the mech is in normal pressure
+ var/slow_pressure_step_in = 2
max_temperature = 20000
max_integrity = 200
lights_power = 7
@@ -14,35 +16,21 @@
max_equip = 6
wreckage = /obj/structure/mecha_wreckage/ripley
internals_req_access = list(ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_MINING)
- var/list/cargo = new
- var/cargo_capacity = 15
- var/hides = 0
enclosed = FALSE //Normal ripley has an open cockpit design
enter_delay = 10 //can enter in a quarter of the time of other mechs
exit_delay = 10
opacity = FALSE //Ripley has a window
+ /// Amount of Goliath hides attached to the mech
+ var/hides = 0
+ /// List of all things in Ripley's Cargo Compartment
+ var/list/cargo = new
+ /// How much things Ripley can carry in their Cargo Compartment
+ var/cargo_capacity = 15
/obj/mecha/working/ripley/Move()
. = ..()
- if(.)
- collect_ore()
update_pressure()
-/obj/mecha/working/ripley/proc/collect_ore()
- if(locate(/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp) in equipment)
- var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in cargo
- if(ore_box)
- for(var/obj/item/stack/ore/ore in range(1, src))
- if(ore.Adjacent(src) && ((get_dir(src, ore) & dir) || ore.loc == loc)) //we can reach it and it's in front of us? grab it!
- ore.forceMove(ore_box)
-
-/obj/mecha/working/ripley/Destroy()
- for(var/atom/movable/A in cargo)
- A.forceMove(drop_location())
- step_rand(A)
- cargo.Cut()
- return ..()
-
/obj/mecha/working/ripley/go_out()
..()
update_icon()
@@ -56,40 +44,29 @@
possible_int_damage -= (MECHA_INT_TEMP_CONTROL + MECHA_INT_TANK_BREACH) //if we don't even have an air tank, these two doesn't make a ton of sense.
. = ..()
-
/obj/mecha/working/ripley/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate,3,/obj/item/stack/sheet/animalhide/goliath_hide,list("melee" = 10, "bullet" = 5, "laser" = 5))
+/obj/mecha/working/ripley/Destroy()
+ for(var/atom/movable/A in cargo)
+ A.forceMove(drop_location())
+ step_rand(A)
+ cargo.Cut()
+ return ..()
+
/obj/mecha/working/ripley/mkii
- desc = "Autonomous Power Loader Unit MK-II. This prototype Ripley is refitted with a pressurized cabin, trading its prior speed for atmospheric protection"
+ desc = "Autonomous Power Loader Unit MK-II. This prototype Ripley is refitted with a pressurized cabin, trading its prior speed for atmospheric protection and armor."
name = "\improper APLU MK-II \"Ripley\""
icon_state = "ripleymkii"
fast_pressure_step_in = 2 //step_in while in low pressure conditions
slow_pressure_step_in = 4 //step_in while in normal pressure conditions
step_in = 4
- armor = list("melee" = 40, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
- wreckage = /obj/structure/mecha_wreckage/ripley/mkii
- enclosed = TRUE
- enter_delay = 40
- silicon_icon_state = null
- opacity = TRUE
-
-/obj/mecha/working/ripley/firefighter
- desc = "Autonomous Power Loader Unit MK-III. This model is refitted with a pressurized cabin and additional thermal protection."
- name = "\improper APLU MK-III \"Firefighter\""
- icon_state = "firefighter"
- max_temperature = 65000
+ max_temperature = 30000
max_integrity = 250
- fast_pressure_step_in = 2 //step_in while in low pressure conditions
- slow_pressure_step_in = 4 //step_in while in normal pressure conditions
- step_in = 4
- resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- lights_power = 7
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 60, "bio" = 0, "rad" = 70, "fire" = 100, "acid" = 100)
- max_equip = 5 // More armor, less tools
- wreckage = /obj/structure/mecha_wreckage/ripley/firefighter
+ wreckage = /obj/structure/mecha_wreckage/ripley/mkii
enclosed = TRUE
enter_delay = 40
silicon_icon_state = null
@@ -197,18 +174,6 @@
output += ""
return output
-/obj/mecha/working/ripley/proc/update_pressure()
- var/turf/T = get_turf(loc)
-
- if(lavaland_equipment_pressure_check(T))
- step_in = fast_pressure_step_in
- for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment)
- drill.equip_cooldown = initial(drill.equip_cooldown)/2
- else
- step_in = slow_pressure_step_in
- for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment)
- drill.equip_cooldown = initial(drill.equip_cooldown)
-
/obj/mecha/working/ripley/relay_container_resist(mob/living/user, obj/O)
to_chat(user, "You lean on the back of [O] and start pushing so it falls out of [src].")
if(do_after(user, 300, target = O))
@@ -220,3 +185,20 @@
else
if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded.
to_chat(user, "You fail to push [O] out of [src]!")
+/**
+ * Makes the mecha go faster and halves the mecha drill cooldown if in Lavaland pressure.
+ *
+ * Checks for Lavaland pressure, if that works out the mech's speed is equal to fast_pressure_step_in and the cooldown for the mecha drill is halved. If not it uses slow_pressure_step_in and drill cooldown is normal.
+ */
+/obj/mecha/working/ripley/proc/update_pressure()
+ var/turf/T = get_turf(loc)
+
+ if(lavaland_equipment_pressure_check(T))
+ step_in = fast_pressure_step_in
+ for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment)
+ drill.equip_cooldown = initial(drill.equip_cooldown) * 0.5
+
+ else
+ step_in = slow_pressure_step_in
+ for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment)
+ drill.equip_cooldown = initial(drill.equip_cooldown)
diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm
index b3e9c4ba55e..874313b0666 100644
--- a/code/game/mecha/working/working.dm
+++ b/code/game/mecha/working/working.dm
@@ -1,2 +1,20 @@
/obj/mecha/working
internal_damage_threshold = 60
+
+/obj/mecha/working/Move()
+ . = ..()
+ if(.)
+ collect_ore()
+
+/**
+ * Handles collecting ore.
+ *
+ * Checks for a hydraulic clamp or ore box manager and if it finds an ore box inside them puts ore in the ore box.
+ */
+/obj/mecha/working/proc/collect_ore()
+ if((locate(/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp) in equipment) || (locate(/obj/item/mecha_parts/mecha_equipment/orebox_manager) in equipment))
+ var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in contents
+ if(ore_box)
+ for(var/obj/item/stack/ore/ore in range(1, src))
+ if(ore.Adjacent(src) && ((get_dir(src, ore) & dir) || ore.loc == loc)) //we can reach it and it's in front of us? grab it!
+ ore.forceMove(ore_box)
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 7d6662a6876..4d483fa8de4 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -20,6 +20,20 @@
if(user_unbuckle_mob(buckled_mobs[1],user))
return 1
+//literally just the above extension of attack_hand(), but for silicons instead (with an adjacency check, since attack_robot() being called doesn't mean that you're adjacent to something)
+/atom/movable/attack_robot(mob/living/user)
+ . = ..()
+ if(.)
+ return
+ if(Adjacent(user) && can_buckle && has_buckled_mobs())
+ if(buckled_mobs.len > 1)
+ var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in sortNames(buckled_mobs)
+ if(user_unbuckle_mob(unbuckled,user))
+ return TRUE
+ else
+ if(user_unbuckle_mob(buckled_mobs[1],user))
+ return TRUE
+
/atom/movable/MouseDrop_T(mob/living/M, mob/living/user)
. = ..()
return mouse_buckle_handling(M, user)
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index daff05e223c..e0660523811 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -178,7 +178,7 @@
if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber.
U.welded = TRUE
U.update_icon()
- U.visible_message("[U] was frozen shut!")
+ U.visible_message("[U] is frozen shut!")
for(var/mob/living/L in T)
L.ExtinguishMob()
for(var/obj/item/Item in T)
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index c2a6194cca6..1193ce213c2 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -177,7 +177,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 d627ceb2283..01705a8f89d 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -519,11 +519,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
user.do_attack_animation(M)
if(M != user)
- M.visible_message("[user] has stabbed [M] in the eye with [src]!", \
+ M.visible_message("[user] stabs [M] in the eye with [src]!", \
"[user] stabs you in the eye with [src]!")
else
user.visible_message( \
- "[user] has stabbed [user.p_them()]self in the eyes with [src]!", \
+ "[user] stabs [user.p_them()]self in the eyes with [src]!", \
"You stab yourself in the eyes with [src]!" \
)
if(is_human_victim)
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 98a08fedfe7..52d043d441c 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -188,6 +188,9 @@
if(!get_location_accessible(H, location))
to_chat(user, "The headgear is in the way!")
return
+ if(HAS_TRAIT(H, TRAIT_BALD))
+ to_chat(H, "[H] is just way too bald. Like, really really bald.")
+ return
user.visible_message("[user] tries to change [H]'s hairstyle using [src].", "You try to change [H]'s hairstyle using [src].")
if(new_style && do_after(user, 60, target = H))
user.visible_message("[user] successfully changes [H]'s hairstyle using [src].", "You successfully change [H]'s hairstyle using [src].")
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 204e18ee016..bdd99549d69 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -463,8 +463,8 @@
if(!req_defib && !combat)
return
busy = TRUE
- M.visible_message("[user] has touched [M] with [src]!", \
- "[user] has touched [M] with [src]!")
+ M.visible_message("[user] touches [M] with [src]!", \
+ "[user] touches [M] with [src]!")
M.adjustStaminaLoss(60)
M.Knockdown(75)
M.Jitter(50)
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 573c06c2f8a..ae381240b2f 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -924,12 +924,12 @@ GLOBAL_LIST_EMPTY(PDAs)
switch(scanmode)
if(PDA_SCANNER_MEDICAL)
- C.visible_message("[user] has analyzed [C]'s vitals!")
+ C.visible_message("[user] analyzes [C]'s vitals.")
healthscan(user, C, 1)
add_fingerprint(user)
if(PDA_SCANNER_HALOGEN)
- C.visible_message("[user] has analyzed [C]'s radiation levels!")
+ C.visible_message("[user] analyzes [C]'s radiation levels.")
user.show_message("Analyzing Results for [C]:")
if(C.radiation)
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index de808acbd90..5dd9c4db557 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -174,7 +174,7 @@
AddUses(new_bulbs)
bulb_shards = bulb_shards % shards_required
if(new_bulbs != 0)
- to_chat(user, "\The [src] has fabricated a new bulb from the broken glass it has stored. It now has [uses] uses.")
+ to_chat(user, "\The [src] fabricates a new bulb from the broken glass it has stored. It now has [uses] uses.")
playsound(src.loc, 'sound/machines/ding.ogg', 50, TRUE)
return new_bulbs
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index f617e8dc300..de4623298cb 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -85,14 +85,8 @@
frequency = new_frequency
SSradio.add_object(src, frequency, RADIO_SIGNALER)
-/obj/item/electropack/ui_status(mob/user)
- var/mob/living/carbon/C = user
- if(C?.back == src)
- return UI_CLOSE
- return ..()
-
/obj/item/electropack/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
- datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
+ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "electropack", name, ui_x, ui_y, master_ui, state)
@@ -111,10 +105,6 @@
if(..())
return
- var/mob/living/carbon/C = usr
- if(C?.back == src)
- return
-
switch(action)
if("power")
on = !on
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 6b8e96368fd..1578b2b7072 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -535,7 +535,7 @@ GENE SCANNER
var/icon = target
var/render_list = list()
if(!silent && isliving(user))
- user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(user))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].")
+ user.visible_message("[user] uses the analyzer on [icon2html(icon, viewers(user))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].")
render_list += "Results of analysis of [icon2html(icon, user)] [target]."
var/list/airs = islist(mixture) ? mixture : list(mixture)
@@ -684,7 +684,7 @@ GENE SCANNER
gene_scan(M, user)
else
- user.visible_message("[user] failed to analyse [M]'s genetic sequence.", "[M] has no readable genetic sequence!")
+ user.visible_message("[user] fails to analyze [M]'s genetic sequence.", "[M] has no readable genetic sequence!")
/obj/item/sequence_scanner/attack_self(mob/user)
display_sequence(user)
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index a30a22b6777..6258d0d41c6 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -194,7 +194,7 @@
return
/obj/item/transfer_valve/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
- datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
+ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "transfer_valve", name, ui_x, ui_y, master_ui, state)
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index 25210566996..35d3e469403 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -208,7 +208,7 @@ obj/item/dice/d6/ebony
if(special_faces.len == sides)
result = special_faces[result]
if(user != null) //Dice was rolled in someone's hand
- user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
+ user.visible_message("[user] throws [src]. It lands on [result]. [comment]", \
"You throw [src]. It lands on [result]. [comment]", \
"You hear [src] rolling, it sounds like a [fake_result].")
else if(!src.throwing) //Dice was thrown and is coming to rest
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 07a222e403f..bf1a0f70469 100644
--- a/code/game/objects/items/granters.dm
+++ b/code/game/objects/items/granters.dm
@@ -188,7 +188,7 @@
user.set_nutrition(0)
/obj/item/book/granter/spell/blind
- spell = /obj/effect/proc_holder/spell/targeted/trigger/blind
+ spell = /obj/effect/proc_holder/spell/pointed/trigger/blind
spellname = "blind"
icon_state ="bookblind"
desc = "This book looks blurry, no matter how you look at it."
diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm
index b5af9750bf0..69d7bb2b1bb 100644
--- a/code/game/objects/items/implants/implantchair.dm
+++ b/code/game/objects/items/implants/implantchair.dm
@@ -90,12 +90,12 @@
if(istype(I, /obj/item/implant))
var/obj/item/implant/P = I
if(P.implant(M))
- visible_message("[M] has been implanted by [src].")
+ visible_message("[M] is implanted by [src].")
return TRUE
else if(istype(I, /obj/item/organ))
var/obj/item/organ/P = I
P.Insert(M, FALSE, FALSE)
- visible_message("[M] has been implanted by [src].")
+ visible_message("[M] is implanted by [src].")
return TRUE
/obj/machinery/implantchair/update_icon_state()
diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm
index 77e3c2c95a6..ffa2ddf349a 100644
--- a/code/game/objects/items/implants/implanter.dm
+++ b/code/game/objects/items/implants/implanter.dm
@@ -35,7 +35,7 @@
if (M == user)
to_chat(user, "You implant yourself.")
else
- M.visible_message("[user] has implanted [M].", "[user] implants you.")
+ M.visible_message("[user] implants [M].", "[user] implants you.")
imp = null
update_icon()
else
diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm
index be7915f67f0..f9d2aa9d34d 100644
--- a/code/game/objects/items/manuals.dm
+++ b/code/game/objects/items/manuals.dm
@@ -101,14 +101,6 @@
Install the external reinforced armor plating (Not included due to Nanotrasen regulations. Can be made using 5 reinforced metal sheets.)
Secure the external reinforced armor plating with a wrench
Weld the external reinforced armor plating to the chassis
-
- Additional Information:
- The firefighting variation is made in a similar fashion.
- A firesuit must be connected to the Firefighter chassis for heat shielding.
- Internal armor is plasteel for additional strength.
- External armor must be installed in 2 parts, totaling 10 sheets.
- Completed mech is more resiliant against fire, and is a bit more durable overall
- Nanotrasen is determined to the safety of its investments employees.