diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index b7199a51f12..50a89115cac 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -451,11 +451,11 @@
"abi" = (
/obj/structure/grille,
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"abj" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"abk" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -1083,11 +1083,11 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"acF" = (
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"acG" = (
/obj/structure/cable{
icon_state = "0-4";
@@ -1095,7 +1095,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"acH" = (
/obj/structure/chair/stool,
/turf/simulated/shuttle/floor{
@@ -5619,7 +5619,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"alX" = (
/obj/structure/cable{
d1 = 1;
@@ -5694,7 +5694,7 @@
/area/maintenance/fsmaint)
"ami" = (
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"amj" = (
/obj/machinery/door/poddoor/shutters{
density = 0;
@@ -12161,7 +12161,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ayH" = (
/obj/machinery/conveyor{
dir = 4;
@@ -12728,7 +12728,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"azS" = (
/obj/effect/decal/warning_stripes/southeast,
/obj/effect/decal/warning_stripes/northwestcorner,
@@ -12860,7 +12860,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aAf" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/unary/heat_reservoir/heater{
@@ -12909,7 +12909,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aAj" = (
/obj/structure/cable{
d1 = 1;
@@ -13824,7 +13824,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aBW" = (
/obj/structure/cable{
d1 = 1;
@@ -14710,7 +14710,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aDD" = (
/obj/structure/cable{
d1 = 2;
@@ -14991,7 +14991,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aEb" = (
/obj/structure/cable{
icon_state = "0-2";
@@ -15123,7 +15123,7 @@
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aEq" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel,
@@ -15774,7 +15774,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aFA" = (
/turf/simulated/wall,
/area/crew_quarters/bar)
@@ -16598,7 +16598,7 @@
icon_state = "brokengrille"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aGX" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -17778,7 +17778,7 @@
dir = 6
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aIU" = (
/obj/structure/cable{
d1 = 1;
@@ -18105,12 +18105,12 @@
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aJz" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aJA" = (
/obj/structure/cable{
d1 = 4;
@@ -19496,7 +19496,7 @@
/obj/item/wrench,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aLU" = (
/turf/simulated/wall,
/area/crew_quarters/bar/atrium)
@@ -20753,7 +20753,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aOp" = (
/obj/structure/table/wood,
/obj/item/clothing/glasses/sunglasses,
@@ -21053,7 +21053,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aOV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4;
@@ -21067,7 +21067,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aOX" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4;
@@ -23876,7 +23876,7 @@
icon_state = "pipe-c"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aTT" = (
/obj/structure/cable{
d1 = 1;
@@ -23899,7 +23899,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aTV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5;
@@ -27687,7 +27687,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aZZ" = (
/obj/item/radio/intercom{
dir = 4;
@@ -27709,7 +27709,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bab" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -28097,7 +28097,7 @@
req_access_txt = "67"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"baP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
@@ -33395,12 +33395,12 @@
"bkt" = (
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bku" = (
/obj/structure/lattice,
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bkv" = (
/obj/machinery/light/small{
dir = 8
@@ -34368,7 +34368,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bmp" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -34409,7 +34409,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bmt" = (
/obj/machinery/atmospherics/unary/outlet_injector/on{
dir = 4;
@@ -35184,7 +35184,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bnN" = (
/obj/structure/window/reinforced{
dir = 8
@@ -35229,7 +35229,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bnS" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
@@ -36084,7 +36084,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bpn" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -36156,7 +36156,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bpv" = (
/turf/simulated/floor/engine/insulated/vacuum,
/area/atmos)
@@ -36944,7 +36944,7 @@
pixel_y = 0
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bqJ" = (
/obj/machinery/hologram/holopad,
/obj/effect/decal/warning_stripes/yellow/hollow,
@@ -37321,7 +37321,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"brr" = (
/obj/structure/lattice,
/obj/structure/window/reinforced{
@@ -37329,14 +37329,14 @@
layer = 2.9
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"brs" = (
/obj/structure/window/reinforced{
dir = 1;
layer = 2.9
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"brt" = (
/obj/structure/lattice,
/obj/structure/window/reinforced{
@@ -37345,7 +37345,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bru" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
dir = 4;
@@ -37362,7 +37362,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/space,
-/area/space)
+/area/space/nearstation)
"brw" = (
/obj/structure/lattice,
/obj/structure/window/reinforced{
@@ -37373,7 +37373,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"brx" = (
/obj/machinery/light/small{
dir = 8
@@ -38788,12 +38788,12 @@
/obj/structure/closet/emcloset,
/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel,
-/area/space)
+/area/space/nearstation)
"btJ" = (
/obj/structure/closet/firecloset,
/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel,
-/area/space)
+/area/space/nearstation)
"btK" = (
/obj/structure/cable{
d1 = 1;
@@ -39582,7 +39582,7 @@
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bvi" = (
/obj/machinery/door/airlock/external{
name = "Labor Shuttle Airlock";
@@ -44212,7 +44212,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bCJ" = (
/turf/simulated/wall,
/area/security/prisonershuttle)
@@ -49717,7 +49717,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bLN" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5;
@@ -49769,7 +49769,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bLS" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -49779,7 +49779,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bLT" = (
/obj/structure/window/reinforced{
dir = 8
@@ -49810,7 +49810,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space)
+/area/space/nearstation)
"bLV" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -49836,7 +49836,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space)
+/area/space/nearstation)
"bLW" = (
/obj/structure/cable{
d1 = 4;
@@ -51873,7 +51873,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPD" = (
/obj/structure/cable{
d1 = 4;
@@ -52078,10 +52078,10 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPS" = (
/turf/simulated/wall,
-/area/space)
+/area/space/nearstation)
"bPT" = (
/obj/structure/lattice,
/obj/structure/window/reinforced,
@@ -52090,7 +52090,7 @@
icon_state = "D-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPU" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -52098,12 +52098,12 @@
icon_state = "E-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPV" = (
/obj/structure/lattice,
/obj/structure/transit_tube,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPW" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -52111,7 +52111,7 @@
icon_state = "W-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPX" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -52119,7 +52119,7 @@
icon_state = "D-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPY" = (
/obj/structure/table/reinforced,
/obj/machinery/cell_charger,
@@ -52899,7 +52899,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bRn" = (
/obj/structure/rack,
/obj/item/ammo_box/shotgun/rubbershot,
@@ -53136,7 +53136,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bRH" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4;
@@ -53241,28 +53241,28 @@
icon_state = "D-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bRP" = (
/obj/structure/transit_tube{
tag = "icon-D-NE";
icon_state = "D-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bRQ" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
icon_state = "NW-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bRR" = (
/obj/structure/transit_tube{
tag = "icon-D-SW";
icon_state = "D-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bRS" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/light/small{
@@ -54806,7 +54806,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bUc" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -55200,7 +55200,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bUK" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/navbeacon{
@@ -55458,7 +55458,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bVg" = (
/obj/structure/cable{
d1 = 4;
@@ -55675,7 +55675,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bVt" = (
/obj/structure/sign/vacuum{
pixel_x = -32;
@@ -56126,28 +56126,28 @@
icon_state = "D-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bWa" = (
/obj/structure/transit_tube{
tag = "icon-D-SE";
icon_state = "D-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bWb" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
icon_state = "NE-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bWc" = (
/obj/structure/transit_tube{
tag = "icon-D-NW";
icon_state = "D-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bWd" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -56155,7 +56155,7 @@
icon_state = "D-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bWe" = (
/obj/structure/cable{
d1 = 4;
@@ -56502,7 +56502,7 @@
pixel_y = -22
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bWD" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -57190,7 +57190,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bXG" = (
/obj/structure/cable{
d1 = 1;
@@ -57200,7 +57200,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bXH" = (
/obj/item/twohanded/required/kirbyplants,
/obj/machinery/light,
@@ -57308,7 +57308,7 @@
icon_state = "D-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bXR" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -57316,7 +57316,7 @@
icon_state = "E-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bXS" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -57324,7 +57324,7 @@
icon_state = "W-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bXT" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -57332,7 +57332,7 @@
icon_state = "D-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bXU" = (
/turf/simulated/wall/r_wall,
/area/engine/engineering)
@@ -57393,7 +57393,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bYb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/sign/securearea{
@@ -57476,7 +57476,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bYm" = (
/obj/structure/cable{
d1 = 4;
@@ -57490,7 +57490,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bYn" = (
/obj/structure/sign/directions/evac{
pixel_y = -8
@@ -57699,7 +57699,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bYK" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -57920,7 +57920,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bZg" = (
/obj/structure/table/reinforced,
/obj/structure/reagent_dispensers/peppertank{
@@ -58095,7 +58095,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bZx" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -58980,7 +58980,7 @@
/obj/effect/decal/warning_stripes/west,
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cbb" = (
/turf/simulated/floor/plating/airless,
/area/engine/engineering)
@@ -62781,7 +62781,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"chx" = (
/obj/structure/cable{
d1 = 4;
@@ -63157,10 +63157,10 @@
/obj/effect/decal/warning_stripes/east,
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cif" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cig" = (
/obj/structure/table/reinforced,
/obj/item/book/manual/engineering_guide{
@@ -63832,7 +63832,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cjm" = (
/obj/structure/closet/crate,
/obj/effect/spawner/lootdrop/maintenance{
@@ -64010,11 +64010,11 @@
"cjH" = (
/obj/effect/decal/warning_stripes/northwestcorner,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cjI" = (
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cjJ" = (
/obj/machinery/power/tesla_coil{
anchored = 1
@@ -64022,7 +64022,7 @@
/obj/structure/cable/yellow,
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cjK" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -64031,7 +64031,7 @@
},
/obj/effect/decal/warning_stripes/northeastcorner,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cjL" = (
/obj/machinery/door/poddoor{
density = 0;
@@ -65079,7 +65079,7 @@
"clp" = (
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"clq" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'RADIOACTIVE AREA'";
@@ -66345,7 +66345,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cnI" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/item/twohanded/required/kirbyplants,
@@ -66468,7 +66468,7 @@
/obj/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cnW" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
@@ -66478,7 +66478,7 @@
/obj/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cnY" = (
/obj/structure/lattice,
/obj/structure/window/reinforced,
@@ -66486,7 +66486,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cnZ" = (
/obj/machinery/field/generator{
anchored = 1;
@@ -66494,7 +66494,7 @@
},
/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"coa" = (
/obj/machinery/field/generator{
anchored = 1;
@@ -66502,7 +66502,7 @@
},
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cob" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -66511,7 +66511,7 @@
},
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"coc" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/yellow{
@@ -66568,7 +66568,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"coj" = (
/obj/structure/cable/yellow{
d1 = 2;
@@ -67042,7 +67042,7 @@
"cpg" = (
/obj/item/wrench,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cph" = (
/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel,
@@ -68035,11 +68035,11 @@
},
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cqO" = (
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cqP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -68051,7 +68051,7 @@
"cqQ" = (
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cqR" = (
/obj/structure/particle_accelerator/particle_emitter/right{
dir = 8
@@ -69035,7 +69035,7 @@
/obj/structure/transit_tube,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"css" = (
/obj/structure/table/reinforced,
/obj/machinery/cell_charger,
@@ -69096,7 +69096,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"csz" = (
/obj/structure/closet/crate{
name = "solar pack crate"
@@ -69743,7 +69743,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ctJ" = (
/obj/structure/transit_tube{
tag = "icon-E-NW";
@@ -69754,7 +69754,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ctK" = (
/obj/structure/table/wood,
/obj/item/storage/fancy/crayons,
@@ -69903,7 +69903,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ctZ" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -70407,7 +70407,7 @@
},
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cuP" = (
/obj/structure/cable/yellow{
d1 = 2;
@@ -70421,7 +70421,7 @@
},
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cuQ" = (
/obj/machinery/field/generator{
anchored = 1;
@@ -70429,7 +70429,7 @@
},
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cuR" = (
/obj/machinery/pipedispenser,
/obj/effect/decal/warning_stripes/yellow/hollow,
@@ -71280,15 +71280,15 @@
"cwt" = (
/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cwu" = (
/obj/effect/decal/warning_stripes/southeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cwv" = (
/obj/effect/decal/warning_stripes/southwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cww" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -72854,7 +72854,7 @@
},
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"czj" = (
/obj/structure/closet/secure_closet/engineering_welding,
/obj/machinery/light_switch{
@@ -73002,7 +73002,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"czx" = (
/obj/structure/cable{
d1 = 1;
@@ -74444,7 +74444,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cBV" = (
/obj/structure/chair/office/dark,
/obj/machinery/newscaster{
@@ -77537,7 +77537,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cHu" = (
/obj/effect/decal/cleanable/cobweb,
/obj/effect/decal/cleanable/dirt,
@@ -78384,7 +78384,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cJf" = (
/obj/structure/sign/directions/evac{
pixel_y = -8
@@ -78831,7 +78831,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cKk" = (
/obj/structure/cable{
d1 = 4;
@@ -78846,7 +78846,7 @@
/obj/structure/window/reinforced,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cKm" = (
/obj/structure/cable{
d1 = 2;
@@ -80282,7 +80282,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cNo" = (
/obj/structure/cable{
d1 = 1;
@@ -80751,7 +80751,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cOa" = (
/obj/structure/table/reinforced,
/obj/item/book/manual/security_space_law,
@@ -80927,7 +80927,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cOn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9;
@@ -81686,7 +81686,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cPL" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -81854,7 +81854,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cPY" = (
/obj/machinery/access_button{
command = "cycle_exterior";
@@ -81867,7 +81867,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cPZ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/wall,
@@ -99561,7 +99561,7 @@
"dvU" = (
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dvV" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -104257,7 +104257,7 @@
},
/obj/effect/decal/warning_stripes/southwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dEy" = (
/obj/structure/cable{
d1 = 1;
@@ -110940,7 +110940,7 @@
},
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dQD" = (
/obj/machinery/field/generator{
anchored = 1;
@@ -110948,11 +110948,11 @@
},
/obj/effect/decal/warning_stripes/southeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dQE" = (
/obj/effect/decal/warning_stripes/southwestcorner,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dQF" = (
/obj/structure/table,
/obj/item/storage/firstaid/regular,
@@ -112707,7 +112707,7 @@
width = 11
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dTV" = (
/obj/machinery/power/solar{
name = "Aft Starboard Solar Panel"
@@ -113083,7 +113083,7 @@
},
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dUF" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -113092,7 +113092,7 @@
},
/obj/effect/decal/warning_stripes/southeastcorner,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dUG" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
@@ -115003,7 +115003,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"dXY" = (
/obj/structure/table/reinforced,
/obj/item/reagent_containers/iv_bag/blood/random,
@@ -115461,7 +115461,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"dYR" = (
/obj/structure/cable{
d2 = 2;
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 0e64cefc7aa..fd4abd040cc 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -13,7 +13,7 @@
width = 18
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aac" = (
/obj/machinery/porta_turret/syndicate,
/turf/space,
@@ -549,17 +549,17 @@
"abd" = (
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"abe" = (
/obj/structure/grille/broken,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"abf" = (
/obj/structure/grille,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"abg" = (
/obj/machinery/recharge_station/upgraded,
/turf/simulated/shuttle/floor{
@@ -654,7 +654,7 @@
"abq" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"abr" = (
/obj/machinery/door/window{
dir = 4;
@@ -1324,7 +1324,7 @@
dir = 8;
icon_state = "diagonalWall3"
},
-/area/space)
+/area/space/nearstation)
"acH" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall3";
@@ -1352,7 +1352,7 @@
dir = 1;
icon_state = "diagonalWall3"
},
-/area/space)
+/area/space/nearstation)
"acK" = (
/obj/item/beach_ball/holoball,
/obj/structure/holohoop{
@@ -2123,7 +2123,7 @@
"aef" = (
/turf/simulated/floor/plating/airless/catwalk,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aeg" = (
/obj/structure/cable{
d1 = 1;
@@ -9928,12 +9928,12 @@
/area/shuttle/vox)
"arA" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"arB" = (
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"arC" = (
/obj/structure/cable{
d1 = 1;
@@ -10885,7 +10885,7 @@
"ata" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"atb" = (
/obj/item/flashlight/lamp,
/obj/structure/extinguisher_cabinet{
@@ -11587,7 +11587,7 @@
/obj/structure/lattice,
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"auq" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -13911,7 +13911,7 @@
opened = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ayz" = (
/obj/structure/cable{
d1 = 1;
@@ -14600,7 +14600,7 @@
pixel_y = 2
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"azJ" = (
/obj/machinery/door/airlock/external,
/turf/simulated/floor/plating,
@@ -16074,7 +16074,7 @@
},
/obj/item/stack/rods,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aCo" = (
/turf/simulated/shuttle/wall{
icon_state = "swall3";
@@ -16673,11 +16673,11 @@
"aDo" = (
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aDp" = (
/obj/item/stack/cable_coil,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aDq" = (
/turf/simulated/shuttle/floor,
/area/shuttle/mining)
@@ -18331,7 +18331,7 @@
network = list("Singulo")
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aGa" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable/yellow{
@@ -20306,7 +20306,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aJu" = (
/obj/machinery/door/airlock/maintenance{
name = "Law Office Maintenance";
@@ -20345,7 +20345,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aJy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security/glass{
@@ -20493,7 +20493,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aJK" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
@@ -20632,7 +20632,7 @@
state = 2
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aJX" = (
/turf/simulated/floor/wood,
/area/lawoffice)
@@ -20663,7 +20663,7 @@
icon_state = "2-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aKb" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -21569,7 +21569,7 @@
/obj/item/wirecutters,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aLy" = (
/obj/machinery/computer/guestpass{
pixel_x = 30
@@ -21688,7 +21688,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aLO" = (
/obj/machinery/power/grounding_rod{
anchored = 1
@@ -22185,7 +22185,7 @@
anchored = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aMJ" = (
/obj/machinery/door/window{
dir = 1;
@@ -23083,7 +23083,7 @@
"aOj" = (
/obj/item/crowbar,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aOk" = (
/obj/machinery/alarm{
dir = 4;
@@ -23102,7 +23102,7 @@
"aOm" = (
/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aOn" = (
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
@@ -23131,7 +23131,7 @@
"aOq" = (
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aOr" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -23518,7 +23518,7 @@
},
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aPe" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/decal/warning_stripes/west,
@@ -23545,7 +23545,7 @@
icon_state = "2-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aPh" = (
/obj/structure/table,
/obj/item/hatchet,
@@ -23712,7 +23712,7 @@
},
/obj/structure/cable,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aPz" = (
/obj/item/seeds/apple,
/obj/item/seeds/banana,
@@ -24085,7 +24085,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aQg" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -24167,7 +24167,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aQo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -24580,7 +24580,7 @@
"aRe" = (
/obj/item/weldingtool,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aRf" = (
/obj/item/wirecutters,
/obj/structure/cable{
@@ -24608,7 +24608,7 @@
"aRh" = (
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aRi" = (
/obj/machinery/pipedispenser,
/turf/simulated/floor/plating,
@@ -25199,7 +25199,7 @@
"aSk" = (
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aSl" = (
/obj/machinery/navbeacon{
codes_txt = "delivery";
@@ -25233,7 +25233,7 @@
"aSp" = (
/obj/effect/decal/warning_stripes/southwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aSq" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -25990,7 +25990,7 @@
"aTG" = (
/obj/effect/decal/warning_stripes/southeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aTH" = (
/obj/machinery/power/apc{
dir = 4;
@@ -26024,7 +26024,7 @@
},
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aTJ" = (
/obj/structure/cable{
d1 = 1;
@@ -26059,7 +26059,7 @@
d2 = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aTN" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall3";
@@ -26646,7 +26646,7 @@
icon_state = "2-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aUN" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -26724,12 +26724,12 @@
"aUU" = (
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aUV" = (
/obj/structure/window/reinforced,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aUW" = (
/obj/structure/chair{
dir = 1
@@ -27657,7 +27657,7 @@
"aWw" = (
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aWx" = (
/obj/machinery/door/airlock/maintenance{
name = "Storage Room";
@@ -27712,7 +27712,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aWD" = (
/turf/simulated/wall,
/area/hallway/secondary/entry{
@@ -28311,7 +28311,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aXI" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -28369,13 +28369,13 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aXO" = (
/obj/structure/window/reinforced{
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aXP" = (
/obj/item/crowbar,
/turf/simulated/floor/plating,
@@ -29805,7 +29805,7 @@
icon_state = "1-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"baq" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -32575,7 +32575,7 @@
anchored = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bfa" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5;
@@ -33702,7 +33702,7 @@
},
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bgN" = (
/obj/structure/lattice,
/turf/space,
@@ -33807,7 +33807,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bgV" = (
/obj/machinery/conveyor_switch/oneway{
id = "packageSort2";
@@ -38279,7 +38279,7 @@
name = "EXTERNAL AIRLOCK"
},
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bop" = (
/obj/machinery/computer/med_data,
/turf/simulated/floor/plasteel{
@@ -38945,7 +38945,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bps" = (
/obj/structure/window/reinforced{
dir = 1
@@ -39972,7 +39972,7 @@
icon_state = "D-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bqZ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
@@ -40029,10 +40029,10 @@
},
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bre" = (
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"brf" = (
/obj/structure/window/reinforced{
dir = 8
@@ -40618,7 +40618,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bse" = (
/obj/structure/window/reinforced{
dir = 1
@@ -40627,7 +40627,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsf" = (
/obj/structure/window/reinforced{
dir = 4
@@ -40971,12 +40971,12 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsJ" = (
/obj/structure/transit_tube,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsK" = (
/obj/structure/transit_tube{
tag = "icon-W-SE";
@@ -40984,14 +40984,14 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsL" = (
/obj/structure/transit_tube{
tag = "icon-D-SW";
icon_state = "D-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsM" = (
/turf/simulated/wall/r_wall,
/area/turret_protected/tcomfoyer{
@@ -41003,7 +41003,7 @@
icon_state = "D-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsO" = (
/obj/structure/table/reinforced,
/obj/structure/cable/yellow{
@@ -41041,7 +41041,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsQ" = (
/obj/structure/transit_tube{
icon_state = "E-W-Pass"
@@ -41049,7 +41049,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsR" = (
/obj/structure/transit_tube{
icon_state = "E-SW";
@@ -41057,13 +41057,13 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsS" = (
/obj/structure/transit_tube{
icon_state = "W-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bsT" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -41842,7 +41842,7 @@
icon_state = "NE-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bue" = (
/obj/structure/sign/double/map/left{
desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown).";
@@ -42205,14 +42205,14 @@
tag = "icon-D-SW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"buM" = (
/obj/structure/transit_tube{
icon_state = "D-NW";
tag = "icon-D-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"buN" = (
/obj/structure/transit_tube{
icon_state = "S-NW"
@@ -42239,7 +42239,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"buP" = (
/obj/structure/window/reinforced{
dir = 1
@@ -42760,7 +42760,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space)
+/area/space/nearstation)
"bvw" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -43601,7 +43601,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bwM" = (
/obj/structure/transit_tube{
tag = "icon-S-NE";
@@ -43622,7 +43622,7 @@
icon_state = "vault";
dir = 8
},
-/area/space)
+/area/space/nearstation)
"bwN" = (
/obj/item/assembly/prox_sensor,
/obj/structure/cable/yellow{
@@ -43729,7 +43729,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bwV" = (
/obj/machinery/vending/coffee,
/turf/simulated/floor/plasteel{
@@ -43752,7 +43752,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bwX" = (
/obj/structure/transit_tube{
tag = "icon-D-SE";
@@ -43771,7 +43771,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bwY" = (
/obj/structure/transit_tube,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -43783,7 +43783,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bwZ" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -43909,7 +43909,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bxj" = (
/obj/structure/transit_tube{
tag = "icon-S-NE";
@@ -43917,14 +43917,14 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bxk" = (
/obj/structure/transit_tube{
tag = "icon-D-NE";
icon_state = "D-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bxl" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -43936,7 +43936,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bxm" = (
/obj/structure/transit_tube{
icon_state = "W-NE-SE"
@@ -43952,7 +43952,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bxn" = (
/obj/structure/transit_tube{
tag = "icon-D-SW";
@@ -43973,7 +43973,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bxo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4;
@@ -43986,7 +43986,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bxp" = (
/obj/structure/transit_tube/station{
icon_state = "closed";
@@ -44027,7 +44027,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"bxr" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
req_access_txt = 1
@@ -45168,7 +45168,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bzd" = (
/obj/structure/transit_tube{
tag = "icon-N-SW";
@@ -45176,7 +45176,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bze" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/ai_slipper{
@@ -45403,7 +45403,7 @@
icon_state = "NW-SE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bzu" = (
/obj/structure/transit_tube{
icon_state = "N-SW"
@@ -45963,7 +45963,7 @@
icon_state = "vault";
dir = 8
},
-/area/space)
+/area/space/nearstation)
"bAu" = (
/obj/machinery/vending/boozeomat,
/turf/simulated/wall,
@@ -46292,7 +46292,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bAY" = (
/obj/structure/transit_tube{
tag = "icon-W-NE";
@@ -46300,7 +46300,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bAZ" = (
/obj/structure/lattice,
/obj/structure/transit_tube{
@@ -46308,14 +46308,14 @@
icon_state = "D-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bBa" = (
/obj/structure/transit_tube{
tag = "icon-E-NW";
icon_state = "E-NW"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bBb" = (
/obj/structure/transit_tube{
icon_state = "D-SE";
@@ -46325,7 +46325,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bBc" = (
/obj/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
@@ -47212,7 +47212,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space)
+/area/space/nearstation)
"bCx" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
@@ -47502,7 +47502,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space)
+/area/space/nearstation)
"bCZ" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -48824,12 +48824,12 @@
/obj/structure/lattice,
/obj/structure/grille,
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bFc" = (
/obj/structure/grille,
/obj/structure/lattice,
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bFd" = (
/obj/machinery/computer/security/telescreen{
dir = 8;
@@ -48932,7 +48932,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bFl" = (
/turf/simulated/floor/plasteel{
icon_state = "grimy"
@@ -49802,13 +49802,13 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bGN" = (
/obj/structure/transit_tube{
icon_state = "W-NE"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bGO" = (
/obj/structure/window/reinforced{
dir = 1
@@ -50623,7 +50623,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bIv" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
@@ -51768,7 +51768,7 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/insulated,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bKy" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 1
@@ -53038,7 +53038,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bMk" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/visible/green{
@@ -53087,7 +53087,7 @@
},
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bMo" = (
/obj/machinery/telecomms/processor/preset_one,
/turf/simulated/floor/bluegrid{
@@ -54076,7 +54076,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bNZ" = (
/obj/machinery/telecomms/bus/preset_one,
/turf/simulated/floor/bluegrid{
@@ -54973,20 +54973,20 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bPG" = (
/obj/structure/lattice,
/obj/structure/grille,
/obj/structure/lattice,
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bPH" = (
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bPI" = (
/obj/machinery/light/small{
dir = 8
@@ -55794,7 +55794,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bRn" = (
/obj/machinery/message_server,
/turf/simulated/floor/bluegrid{
@@ -55829,7 +55829,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bRq" = (
/obj/machinery/door/airlock/hatch{
name = "Telecoms Server Room"
@@ -59662,7 +59662,7 @@
dir = 5
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bXP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/extinguisher_cabinet{
@@ -63185,7 +63185,7 @@
},
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/engine/vacuum,
-/area/space)
+/area/space/nearstation)
"cdS" = (
/obj/machinery/camera{
c_tag = "Atmospherics Tank - CO2";
@@ -67010,7 +67010,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ckp" = (
/obj/structure/window/reinforced{
dir = 4
@@ -67020,7 +67020,7 @@
layer = 2.9
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ckq" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -67030,7 +67030,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ckr" = (
/obj/structure/cable{
icon_state = "0-2";
@@ -67942,7 +67942,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"clI" = (
/obj/machinery/requests_console{
announcementConsole = 0;
@@ -68501,31 +68501,31 @@
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/green,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cmL" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cmM" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/manifold/visible/yellow{
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cmN" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 9
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cmO" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/cyan,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cmP" = (
/obj/structure/window/reinforced{
dir = 1
@@ -71960,11 +71960,11 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/binary/pump/on,
/turf/space,
-/area/space)
+/area/space/nearstation)
"csp" = (
/obj/item/wrench,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"csq" = (
/obj/machinery/light/small,
/turf/simulated/floor/engine{
@@ -72780,7 +72780,7 @@
icon_state = "pipe-c"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ctt" = (
/obj/structure/disposaloutlet{
dir = 2
@@ -72789,7 +72789,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ctu" = (
/turf/simulated/wall/r_wall/coated,
/area/maintenance/incinerator)
@@ -75747,7 +75747,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cyo" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/door/poddoor/shutters{
@@ -76392,7 +76392,7 @@
"czm" = (
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"czn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4;
@@ -78499,7 +78499,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cCA" = (
/turf/simulated/floor/plasteel{
dir = 8;
@@ -78816,7 +78816,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cDa" = (
/obj/machinery/door/airlock/maintenance{
name = "airlock access";
@@ -78950,7 +78950,7 @@
"cDn" = (
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/engine/vacuum,
-/area/space)
+/area/space/nearstation)
"cDo" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden{
@@ -81330,7 +81330,7 @@
"cHf" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"cHg" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -83393,7 +83393,7 @@
/area/medical/surgery2)
"cKI" = (
/turf/simulated/wall,
-/area/space)
+/area/space/nearstation)
"cKJ" = (
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
@@ -86874,7 +86874,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cPV" = (
/obj/structure/closet/wardrobe/robotics_black{
pixel_x = 2
@@ -88571,13 +88571,13 @@
icon_state = "pipe-c"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cSA" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cSB" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel{
@@ -89153,7 +89153,7 @@
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cTy" = (
/obj/structure/morgue,
/turf/simulated/floor/plasteel{
@@ -95292,14 +95292,14 @@
"ddO" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ddP" = (
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/structure/disposaloutlet,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ddQ" = (
/obj/docking_port/stationary{
dheight = 9;
@@ -95445,7 +95445,7 @@
d2 = 2
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dea" = (
/obj/structure/cable{
d1 = 1;
@@ -95453,7 +95453,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"deb" = (
/obj/machinery/vending/wallmed1{
name = "Emergency NanoMed";
@@ -95472,7 +95472,7 @@
icon_state = "1-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ded" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -95673,7 +95673,7 @@
dir = 6
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dex" = (
/obj/structure/rack{
dir = 1
@@ -95692,7 +95692,7 @@
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dez" = (
/obj/structure/disposalpipe/segment{
dir = 8;
diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm
index 50a81f6e6e8..199577ece74 100644
--- a/_maps/map_files/MetaStation/z2.dmm
+++ b/_maps/map_files/MetaStation/z2.dmm
@@ -10,9 +10,6 @@
dir = 8
},
/area/space)
-"ad" = (
-/turf/space/transit,
-/area/syndicate_station/transit)
"ae" = (
/turf/unsimulated/wall{
tag = "icon-iron6";
@@ -1284,7 +1281,7 @@
width = 18
},
/turf/space/transit,
-/area/syndicate_station/transit)
+/area/space)
"dy" = (
/obj/docking_port/stationary/transit{
dir = 8;
@@ -14886,15 +14883,15 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -15137,21 +15134,21 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -15394,21 +15391,21 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -15651,21 +15648,21 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -15901,28 +15898,28 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16158,25 +16155,25 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16415,27 +16412,27 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16672,27 +16669,27 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16929,27 +16926,27 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17186,27 +17183,27 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17443,27 +17440,27 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17700,25 +17697,25 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17957,28 +17954,28 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
aa
dx
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18223,19 +18220,19 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18480,19 +18477,19 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18741,15 +18738,15 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18998,15 +18995,15 @@ aa
aa
aa
aa
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
diff --git a/_maps/map_files/MetaStation/z3.dmm b/_maps/map_files/MetaStation/z3.dmm
index c1e20ddacaa..6784ca8ceca 100644
--- a/_maps/map_files/MetaStation/z3.dmm
+++ b/_maps/map_files/MetaStation/z3.dmm
@@ -145,7 +145,7 @@
"ay" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"az" = (
/obj/effect/landmark/damageturf,
/turf/simulated/floor/plating/airless{
@@ -156,31 +156,31 @@
"be" = (
/obj/item/trash/cheesie,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bj" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bk" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bl" = (
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bm" = (
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bn" = (
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"bo" = (
/obj/structure/girder,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bp" = (
/turf/simulated/wall/r_wall,
/area/tcommsat/chamber)
@@ -198,7 +198,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bt" = (
/obj/structure/window/reinforced{
dir = 8
@@ -258,7 +258,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bE" = (
/obj/structure/cable{
d1 = 1;
@@ -285,7 +285,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bI" = (
/turf/simulated/floor/plating/airless,
/area/tcommsat/chamber)
@@ -355,7 +355,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bV" = (
/obj/item/folder/yellow,
/turf/simulated/floor/plating/airless,
@@ -372,7 +372,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bY" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -383,7 +383,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bZ" = (
/obj/structure/window/reinforced{
dir = 8
@@ -399,18 +399,18 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cb" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cc" = (
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cd" = (
/obj/structure/sign/securearea,
/turf/simulated/wall/r_wall,
@@ -520,20 +520,20 @@
dir = 4
},
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"cv" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/structure/grille/broken,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cw" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cx" = (
/obj/structure/disposaloutlet{
dir = 4
@@ -542,7 +542,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cy" = (
/obj/structure/window/reinforced{
dir = 8
@@ -562,20 +562,20 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cA" = (
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cB" = (
/obj/structure/window/reinforced{
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cC" = (
/obj/structure/table,
/obj/item/radio/off,
@@ -606,14 +606,14 @@
/turf/simulated/floor/plasteel{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"cI" = (
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cJ" = (
/obj/structure/window/reinforced{
dir = 8
@@ -679,7 +679,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cQ" = (
/obj/structure/window/reinforced{
dir = 4
@@ -846,19 +846,19 @@
},
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"du" = (
/obj/structure/window/reinforced,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dz" = (
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dA" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -886,7 +886,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dJ" = (
/obj/structure/lattice,
/obj/item/stack/rods,
@@ -894,7 +894,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dK" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -906,7 +906,7 @@
"dM" = (
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dO" = (
/obj/machinery/door/airlock/hatch,
/turf/simulated/floor/plasteel,
@@ -943,7 +943,7 @@
"ed" = (
/obj/item/crowbar,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ej" = (
/obj/structure/computerframe,
/turf/simulated/floor/plating,
diff --git a/_maps/map_files/MetaStation/z4.dmm b/_maps/map_files/MetaStation/z4.dmm
index 95277b92bf9..526fd945efd 100644
--- a/_maps/map_files/MetaStation/z4.dmm
+++ b/_maps/map_files/MetaStation/z4.dmm
@@ -5,7 +5,7 @@
"ab" = (
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ac" = (
/obj/machinery/power/solar/fake,
/turf/simulated/floor/plating/airless{
@@ -18,7 +18,7 @@
"ae" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"af" = (
/turf/simulated/wall,
/area/djstation)
@@ -350,7 +350,7 @@
"aY" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aZ" = (
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
@@ -460,7 +460,7 @@
},
/obj/structure/disposaloutlet,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bl" = (
/turf/simulated/floor/plating/airless{
tag = "icon-platingdmg2";
@@ -646,7 +646,7 @@
/area/derelict/bridge/ai_upload)
"bE" = (
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"bF" = (
/turf/simulated/floor/plasteel,
/area/derelict/solar_control)
@@ -843,7 +843,7 @@
/area/derelict/solar_control)
"ce" = (
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"cf" = (
/obj/machinery/porta_turret,
/turf/simulated/floor/plasteel,
@@ -877,7 +877,7 @@
"cj" = (
/obj/structure/grille/broken,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ck" = (
/obj/machinery/light/small,
/turf/simulated/floor/plasteel,
@@ -908,7 +908,7 @@
"co" = (
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cp" = (
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
@@ -1019,7 +1019,7 @@
"cH" = (
/obj/structure/closet/crate,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cI" = (
/turf/simulated/floor/plating/airless{
icon_state = "damaged4"
@@ -1115,7 +1115,7 @@
/turf/simulated/floor/plating/airless{
icon_state = "damaged4"
},
-/area/space)
+/area/space/nearstation)
"cZ" = (
/obj/structure/cable{
d1 = 1;
@@ -1167,7 +1167,7 @@
/area/derelict/bridge/ai_upload)
"df" = (
/turf/simulated/wall,
-/area/space)
+/area/space/nearstation)
"dg" = (
/obj/structure/cable{
d1 = 1;
@@ -1197,7 +1197,7 @@
/obj/item/stack/ore/iron,
/obj/item/stack/ore/iron,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dl" = (
/turf/simulated/floor/plating/airless{
icon_state = "damaged2"
@@ -1309,7 +1309,7 @@
"dE" = (
/obj/item/stack/ore/slag,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dF" = (
/obj/structure/cable{
d1 = 1;
@@ -1490,7 +1490,7 @@
/turf/simulated/floor/plating/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"eb" = (
/obj/structure/cable{
d1 = 4;
@@ -1536,7 +1536,7 @@
"ef" = (
/obj/item/stack/cable_coil/cut,
/turf/space,
-/area/space)
+/area/space/nearstation)
"eg" = (
/obj/machinery/light/small{
dir = 8
@@ -1893,7 +1893,7 @@
"fk" = (
/obj/item/stack/rods,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"fl" = (
/obj/structure/grille,
/obj/structure/window/reinforced,
@@ -2088,7 +2088,7 @@
"fK" = (
/obj/item/stack/rods,
/turf/space,
-/area/space)
+/area/space/nearstation)
"fL" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -2283,7 +2283,7 @@
/area/derelict/bridge/access)
"gp" = (
/turf/simulated/wall/mineral/bananium,
-/area/space)
+/area/space/nearstation)
"gq" = (
/obj/structure/window/reinforced{
dir = 4
@@ -2460,7 +2460,7 @@
"gO" = (
/obj/machinery/door/airlock/bananium,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"gP" = (
/obj/structure/cable{
d1 = 2;
@@ -2513,28 +2513,28 @@
"gX" = (
/obj/item/flag/clown,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"gY" = (
/obj/effect/landmark/damageturf,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"gZ" = (
/obj/effect/landmark/burnturf,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ha" = (
/obj/effect/mob_spawn/human/corpse/clownmili{
name = "Clown Pilot"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hb" = (
/obj/effect/mob_spawn/human/corpse/clownmili,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hc" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hd" = (
/obj/machinery/light/small{
dir = 4
@@ -2627,7 +2627,7 @@
/turf/simulated/floor/plating/airless{
icon_state = "floorscorched2"
},
-/area/space)
+/area/space/nearstation)
"hp" = (
/obj/structure/computerframe,
/obj/effect/landmark/damageturf,
@@ -2648,7 +2648,7 @@
name = "Clown Pilot"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hs" = (
/obj/structure/closet,
/obj/structure/window/reinforced{
@@ -2707,7 +2707,7 @@
"hB" = (
/obj/item/shard,
/turf/space,
-/area/space)
+/area/space/nearstation)
"hC" = (
/obj/structure/window/reinforced,
/turf/simulated/floor/plating/airless,
@@ -2738,7 +2738,7 @@
dir = 5
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"hG" = (
/turf/simulated/wall/r_wall,
/area/derelict/arrival)
@@ -2769,7 +2769,7 @@
/obj/structure/lattice,
/obj/structure/window/basic,
/turf/space,
-/area/space)
+/area/space/nearstation)
"hN" = (
/obj/structure/table,
/turf/simulated/floor/plasteel,
@@ -2901,7 +2901,7 @@
name = "External Engineering"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"il" = (
/obj/machinery/light{
icon_state = "tube1";
@@ -2970,7 +2970,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"iv" = (
/obj/structure/table,
/turf/simulated/floor/plasteel{
@@ -2996,7 +2996,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"iz" = (
/obj/structure/lattice,
/obj/structure/lattice,
@@ -3004,7 +3004,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"iA" = (
/turf/simulated/floor/plating,
/area/derelict/arrival)
@@ -3014,7 +3014,7 @@
},
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"iC" = (
/turf/simulated/floor/plasteel{
dir = 8;
@@ -3106,7 +3106,7 @@
"iN" = (
/obj/item/stack/cable_coil/cut,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iO" = (
/obj/structure/table,
/obj/structure/window/reinforced{
@@ -3204,7 +3204,7 @@
"jb" = (
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"jc" = (
/obj/structure/window/reinforced{
dir = 4
@@ -3212,7 +3212,7 @@
/obj/structure/window/reinforced,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"jd" = (
/obj/structure/window/reinforced{
dir = 1
@@ -3283,13 +3283,13 @@
"jl" = (
/obj/item/shard,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jm" = (
/obj/structure/window/reinforced,
/turf/simulated/floor/plating/airless{
icon_state = "white"
},
-/area/space)
+/area/space/nearstation)
"jn" = (
/obj/structure/cable{
d1 = 4;
@@ -3337,7 +3337,7 @@
icon_state = "medium"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jt" = (
/obj/structure/cable{
d1 = 4;
@@ -3380,13 +3380,13 @@
"jw" = (
/obj/structure/closet/l3closet,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jx" = (
/obj/structure/window/reinforced{
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jy" = (
/obj/item/pen,
/turf/simulated/floor/plasteel,
@@ -3396,7 +3396,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"jA" = (
/obj/structure/window/reinforced{
dir = 4
@@ -3406,7 +3406,7 @@
},
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"jB" = (
/obj/structure/cable{
d1 = 2;
@@ -3453,7 +3453,7 @@
"jG" = (
/obj/item/cigbutt,
/turf/space,
-/area/space)
+/area/space/nearstation)
"jH" = (
/obj/structure/table,
/obj/item/stock_parts/cell,
@@ -3496,7 +3496,7 @@
/turf/simulated/floor/plating/airless{
icon_state = "white"
},
-/area/space)
+/area/space/nearstation)
"jN" = (
/obj/machinery/light{
icon_state = "tube1";
@@ -3554,7 +3554,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jT" = (
/obj/structure/cable{
d1 = 2;
@@ -3562,7 +3562,7 @@
icon_state = "2-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jU" = (
/obj/structure/closet/wardrobe/genetics_white,
/turf/simulated/floor/plating/airless{
@@ -3577,7 +3577,7 @@
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jW" = (
/obj/machinery/light/small{
dir = 4
@@ -3593,12 +3593,12 @@
icon_state = "medium"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"jY" = (
/turf/simulated/floor/plating/airless{
icon_state = "white"
},
-/area/space)
+/area/space/nearstation)
"jZ" = (
/obj/structure/cable{
d1 = 1;
@@ -3606,7 +3606,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ka" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
@@ -3615,7 +3615,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"kb" = (
/obj/machinery/light/small{
dir = 4
@@ -3629,7 +3629,7 @@
icon_state = "medium"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"kd" = (
/obj/structure/window/basic{
dir = 1
@@ -3640,7 +3640,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ke" = (
/obj/machinery/door/window{
dir = 8
@@ -3652,7 +3652,7 @@
icon_state = "small"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"kg" = (
/obj/machinery/light/small{
dir = 1
@@ -3667,7 +3667,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ki" = (
/obj/structure/cable{
d1 = 4;
@@ -3728,13 +3728,13 @@
"kp" = (
/obj/structure/window/basic,
/turf/space,
-/area/space)
+/area/space/nearstation)
"kq" = (
/obj/structure/window/basic{
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"kr" = (
/obj/structure/cable{
d1 = 4;
@@ -3827,12 +3827,12 @@
},
/obj/structure/window/basic,
/turf/space,
-/area/space)
+/area/space/nearstation)
"kE" = (
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"kF" = (
/obj/machinery/door/airlock/external{
name = "Arrivals Docking Bay 1"
@@ -3972,7 +3972,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"kV" = (
/obj/machinery/door/airlock/maintenance{
name = "Atmospherics Access";
@@ -4017,7 +4017,7 @@
},
/obj/structure/window/reinforced,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ld" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
tag = "icon-manifold-b-f (EAST)";
@@ -4038,26 +4038,26 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"lg" = (
/obj/structure/window/basic{
dir = 5
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lh" = (
/obj/structure/grille,
/obj/structure/window/basic{
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"li" = (
/obj/structure/window/basic{
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lj" = (
/obj/machinery/door/airlock/maintenance{
name = "Atmospherics Access";
@@ -4114,7 +4114,7 @@
icon_state = "4-8"
},
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"lt" = (
/obj/structure/cable{
d1 = 4;
@@ -4130,14 +4130,14 @@
"lv" = (
/obj/structure/girder,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lw" = (
/obj/structure/lattice,
/obj/structure/window/basic{
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"lx" = (
/obj/structure/girder,
/obj/structure/window/basic,
@@ -4191,13 +4191,13 @@
"lD" = (
/obj/machinery/door/window,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lE" = (
/obj/item/shard{
icon_state = "small"
},
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"lF" = (
/obj/structure/window/basic{
dir = 1
@@ -4223,7 +4223,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"lJ" = (
/obj/machinery/vending/sovietsoda,
/turf/simulated/floor/plating/airless,
@@ -4235,24 +4235,24 @@
"lL" = (
/obj/structure/table,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lM" = (
/obj/structure/window/reinforced{
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lN" = (
/obj/item/paper{
info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lO" = (
/obj/structure/lattice,
/obj/item/stack/cable_coil/cut,
/turf/space,
-/area/space)
+/area/space/nearstation)
"lP" = (
/obj/structure/girder,
/turf/simulated/floor/plating,
@@ -4273,13 +4273,13 @@
"lS" = (
/obj/structure/closet/wardrobe/orange,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"lT" = (
/obj/structure/window/basic{
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"lU" = (
/obj/structure/grille,
/turf/simulated/floor/plating,
@@ -4328,7 +4328,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"me" = (
/turf/simulated/wall/r_wall,
/area/derelict/atmospherics)
@@ -4343,7 +4343,7 @@
"mg" = (
/obj/structure/window/reinforced,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mh" = (
/obj/structure/grille,
/obj/structure/grille,
@@ -4354,11 +4354,11 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mi" = (
/obj/structure/bed,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mj" = (
/turf/simulated/floor/plating/airless{
icon_state = "floorgrime"
@@ -4403,7 +4403,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mr" = (
/obj/structure/closet/wardrobe/mixed,
/turf/simulated/floor/plasteel,
@@ -4411,7 +4411,7 @@
"ms" = (
/obj/item/pickaxe,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mt" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 4
@@ -4458,7 +4458,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"my" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -4515,7 +4515,7 @@
dir = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mH" = (
/obj/machinery/light/small{
dir = 1
@@ -4601,7 +4601,7 @@
dir = 5
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"mP" = (
/obj/structure/window/reinforced,
/turf/simulated/floor/plasteel,
@@ -4782,7 +4782,7 @@
icon_state = "right"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"nl" = (
/obj/machinery/door/window{
base_state = "right";
@@ -5039,7 +5039,7 @@
/obj/item/stack/cable_coil/cut,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"nM" = (
/turf/simulated/floor/plating/airless{
icon_state = "derelict1"
@@ -5173,7 +5173,7 @@
"oi" = (
/obj/structure/girder/reinforced,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"oj" = (
/obj/structure/cable{
d1 = 1;
@@ -5238,7 +5238,7 @@
req_access_txt = "46"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"os" = (
/obj/structure/table,
/obj/item/stack/sheet/metal{
@@ -5264,7 +5264,7 @@
opened = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ou" = (
/obj/structure/shuttle/engine/propulsion{
color = "#FFFF00";
@@ -5272,7 +5272,7 @@
icon_state = "propulsion_l"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ov" = (
/obj/machinery/atmospherics/unary/vent_pump{
on = 1
@@ -5292,7 +5292,7 @@
/turf/simulated/floor/plating/airless{
color = "#FFFF00"
},
-/area/space)
+/area/space/nearstation)
"ox" = (
/turf/simulated/floor/plating/airless,
/area/derelict/se_solar)
@@ -5314,7 +5314,7 @@
/turf/simulated/floor/plating/airless{
color = "#FFFF00"
},
-/area/space)
+/area/space/nearstation)
"oB" = (
/obj/machinery/light/small{
dir = 4
@@ -5373,10 +5373,10 @@
/area/derelict/teleporter)
"pr" = (
/turf/simulated/mineral/random,
-/area/space)
+/area/space/nearstation)
"ps" = (
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
(1,1,1) = {"
aa
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm
index 7411218a3f0..5d578d212b5 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm
@@ -315,7 +315,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aL" = (
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -356,7 +356,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aR" = (
/obj/machinery/light/small{
dir = 4
@@ -754,7 +754,7 @@
"bK" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"bL" = (
/obj/machinery/light/small{
dir = 8
@@ -781,7 +781,7 @@
"bP" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bQ" = (
/obj/machinery/shieldwallgen{
active = 2;
@@ -803,7 +803,7 @@
},
/obj/structure/disposaloutlet,
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"bS" = (
/obj/structure/cable{
d1 = 1;
@@ -828,11 +828,11 @@
"bV" = (
/obj/machinery/shieldwallgen,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bW" = (
/obj/item/shard,
/turf/space,
-/area/space)
+/area/space/nearstation)
(1,1,1) = {"
aa
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict2.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict2.dmm
index dbe0bc5d16c..95ad761e62c 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/derelict2.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict2.dmm
@@ -9,7 +9,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"c" = (
/obj/machinery/door/airlock/external,
/turf/simulated/floor/plating,
@@ -21,7 +21,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"e" = (
/obj/structure/window/reinforced{
tag = "icon-rwindow (EAST)";
@@ -65,7 +65,7 @@
"k" = (
/obj/structure/window/reinforced,
/turf/space,
-/area/space)
+/area/space/nearstation)
"l" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -113,7 +113,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"q" = (
/obj/machinery/light/small{
tag = "icon-bulb1 (WEST)";
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict3.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict3.dmm
index 78054b180c1..be313cd7770 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/derelict3.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict3.dmm
@@ -11,12 +11,12 @@
"d" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"e" = (
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
(1,1,1) = {"
a
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm
index c7fc01bccd8..adbb913421a 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm
@@ -7,7 +7,7 @@
/area/ruin/unpowered)
"c" = (
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"d" = (
/turf/simulated/floor/plating/airless/asteroid,
/area/ruin/unpowered)
@@ -66,7 +66,7 @@
/area/ruin/unpowered)
"r" = (
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
(1,1,1) = {"
a
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
index bd53ea5a0f1..02ee81bf42d 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
@@ -171,7 +171,7 @@
"D" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"E" = (
/obj/item/stack/rods,
/turf/simulated/floor/plating/airless,
@@ -205,7 +205,7 @@
"K" = (
/obj/item/stack/sheet/metal,
/turf/space,
-/area/space)
+/area/space/nearstation)
"L" = (
/obj/effect/decal/mecha_wreckage/gygax,
/turf/simulated/shuttle/floor{
@@ -215,7 +215,7 @@
/area/ruin/powered)
"M" = (
/turf/unsimulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"N" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall14";
@@ -231,7 +231,7 @@
"P" = (
/obj/item/stack/rods,
/turf/space,
-/area/space)
+/area/space/nearstation)
"Q" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall15";
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
index 9a43faaf8ed..8f19d1cc390 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
@@ -11,7 +11,7 @@
tag = ""
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ac" = (
/obj/structure/lattice,
/obj/structure/cable{
@@ -21,7 +21,7 @@
tag = ""
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ad" = (
/obj/structure/lattice,
/obj/structure/cable{
@@ -30,7 +30,7 @@
icon_state = "2-8"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ae" = (
/obj/structure/lattice,
/obj/item/stack/cable_coil/cut{
@@ -39,7 +39,7 @@
icon_state = "coil_red2"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"af" = (
/obj/structure/lattice,
/obj/structure/cable{
@@ -49,7 +49,7 @@
tag = ""
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ag" = (
/turf/simulated/wall,
/area/ruin/onehalf/dorms_med)
@@ -66,7 +66,7 @@
icon_state = "1-2"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aj" = (
/turf/unsimulated/floor/plating/airless,
/area/ruin/onehalf/hallway)
@@ -155,7 +155,7 @@
"aw" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ax" = (
/obj/structure/lattice,
/turf/space,
@@ -806,7 +806,7 @@
"bU" = (
/obj/item/stack/sheet/metal,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bV" = (
/obj/structure/disposalpipe/segment,
/obj/item/stack/rods,
@@ -903,11 +903,11 @@
"ck" = (
/obj/structure/girder/reinforced,
/turf/unsimulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cl" = (
/obj/effect/landmark/damageturf,
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"cm" = (
/obj/structure/lattice,
/obj/structure/disposalpipe/segment{
@@ -926,7 +926,7 @@
icon_state = "small"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"co" = (
/obj/structure/grille,
/obj/structure/window/full/reinforced,
@@ -1009,15 +1009,15 @@
"cv" = (
/obj/item/stack/rods,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cw" = (
/turf/unsimulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cx" = (
/obj/structure/lattice,
/obj/item/stack/sheet/plasteel,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cy" = (
/obj/structure/lattice,
/obj/item/shard{
@@ -1072,7 +1072,7 @@
"cE" = (
/obj/item/stack/tile/wood,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cF" = (
/turf/space,
/area/ruin/onehalf/hallway)
@@ -1162,7 +1162,7 @@
"cR" = (
/obj/item/stack/sheet/plasteel,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cS" = (
/obj/structure/lattice,
/obj/structure/cable{
@@ -1223,7 +1223,7 @@
icon_state = "2-8"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"db" = (
/obj/structure/table,
/obj/item/flashlight,
@@ -1258,12 +1258,12 @@
icon_state = "1-2"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dg" = (
/obj/structure/girder/reinforced,
/obj/item/stack/sheet/plasteel,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dj" = (
/obj/structure/grille,
/obj/item/shard,
@@ -1352,7 +1352,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dp" = (
/obj/structure/lattice,
/obj/structure/cable{
@@ -1368,7 +1368,7 @@
},
/obj/item/stack/rods,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dq" = (
/obj/structure/lattice,
/obj/structure/cable{
@@ -1384,7 +1384,7 @@
tag = ""
},
/turf/space,
-/area/space)
+/area/space/nearstation)
(1,1,1) = {"
aa
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
index 54e511a4373..c376fc59361 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
@@ -4,10 +4,10 @@
/area/space)
"ab" = (
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"ac" = (
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"ad" = (
/obj/structure/grille,
/obj/structure/window/full/reinforced,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm
index dd00d8bd38d..96e43773146 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm
@@ -5,7 +5,7 @@
"b" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"c" = (
/obj/structure/grille,
/turf/simulated/floor/plating,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
index 28df12718e6..016c4cbf447 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
@@ -502,7 +502,7 @@
/area/ruin/unpowered)
"bH" = (
/turf/simulated/wall/mineral/titanium,
-/area/space)
+/area/space/nearstation)
"bI" = (
/obj/structure/window/reinforced,
/turf/simulated/floor/mineral/plasma,
diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm
index 37406781007..5dd4050d567 100644
--- a/_maps/map_files/RandomZLevels/academy.dmm
+++ b/_maps/map_files/RandomZLevels/academy.dmm
@@ -264,7 +264,7 @@
"aP" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aQ" = (
/obj/machinery/door/airlock/gold{
locked = 1
@@ -1517,7 +1517,7 @@
"et" = (
/obj/singularity/academy,
/turf/space,
-/area/space)
+/area/space/nearstation)
"eu" = (
/obj/structure/window/reinforced{
dir = 8
@@ -3716,7 +3716,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"jz" = (
/obj/machinery/igniter,
/turf/simulated/floor/plating,
@@ -4490,12 +4490,7 @@
/turf/simulated/floor/plasteel{
icon_state = "hydrofloor"
},
-/area/space)
-"lu" = (
-/turf/simulated/floor/plasteel{
- icon_state = "hydrofloor"
- },
-/area/space)
+/area/awaymission/academy/academyaft)
"lv" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 5;
@@ -4504,7 +4499,7 @@
/turf/simulated/floor/plasteel{
icon_state = "hydrofloor"
},
-/area/space)
+/area/awaymission/academy/academyaft)
"lw" = (
/obj/machinery/door/poddoor/shutters{
dir = 2;
@@ -15432,10 +15427,10 @@ hM
lp
hp
hp
-lu
-lu
-lu
-lu
+hp
+hp
+hp
+hp
hp
hp
gZ
@@ -15564,8 +15559,8 @@ lq
lr
lt
lv
-lu
-lu
+hp
+hp
hp
hp
gZ
diff --git a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
index 8f9d8ce8133..2a6fedbbdc7 100644
--- a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
+++ b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
@@ -16,7 +16,7 @@
/obj/item/circular_saw,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"af" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall12";
@@ -46,7 +46,7 @@
"aj" = (
/mob/living/simple_animal/hostile/carp,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ak" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall12";
@@ -97,7 +97,7 @@
"as" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"at" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -2626,14 +2626,6 @@
},
/turf/simulated/floor/engine,
/area/awaymission/BMPship/Aft)
-"gy" = (
-/turf/space,
-/turf/simulated/shuttle/wall{
- tag = "icon-swall_f5";
- icon_state = "swall_f5";
- dir = 2
- },
-/area/space)
"gz" = (
/obj/item/shard,
/obj/effect/landmark/damageturf,
@@ -3273,7 +3265,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ip" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall13";
@@ -3522,12 +3514,6 @@
/obj/machinery/portable_atmospherics/canister/air,
/turf/simulated/floor/plating,
/area/awaymission)
-"jf" = (
-/turf/space,
-/area/crew_quarters/bar)
-"jg" = (
-/turf/space,
-/area/exploration/methlab)
"jh" = (
/obj/machinery/door_control{
id = "packerMed";
@@ -9820,7 +9806,7 @@ eW
fF
ee
aW
-gy
+gg
aa
aa
gP
@@ -13998,7 +13984,7 @@ aa
aa
aa
aa
-jf
+aa
aa
aa
aa
@@ -14389,11 +14375,11 @@ aa
aa
aa
aa
-jg
-jg
-jg
-jg
-jg
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -14518,12 +14504,12 @@ aa
aa
aa
aa
-jg
-jg
-jg
-jg
-jg
-jg
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -14648,13 +14634,13 @@ aa
aa
aa
aa
-jg
-jg
-jg
-jg
-jg
-jg
-jg
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -14779,9 +14765,9 @@ aa
aa
aa
aa
-jg
-jg
-jg
+aa
+aa
+aa
aa
aa
aa
@@ -14908,8 +14894,8 @@ aa
aa
aa
aa
-jg
-jg
+aa
+aa
aa
aa
aa
@@ -15038,12 +15024,12 @@ aa
aa
aa
aa
-jg
-jg
-jg
-jg
-jg
-jg
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -15168,12 +15154,12 @@ aa
aa
aa
aa
-jg
-jg
-jg
-jg
-jg
-jg
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -15300,7 +15286,7 @@ aa
aa
aa
aa
-jg
+aa
aa
aa
aa
diff --git a/_maps/map_files/RandomZLevels/centcomAway.dmm b/_maps/map_files/RandomZLevels/centcomAway.dmm
index bd6b40c51de..3fa3d569c09 100644
--- a/_maps/map_files/RandomZLevels/centcomAway.dmm
+++ b/_maps/map_files/RandomZLevels/centcomAway.dmm
@@ -483,7 +483,7 @@
"bm" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bn" = (
/turf/simulated/floor/plasteel{
icon_state = "vault";
@@ -1264,7 +1264,7 @@
pixel_y = 0
},
/turf/simulated/floor/plating,
-/area/space)
+/area/awaymission/centcomAway/maint)
"dl" = (
/turf/simulated/shuttle/wall{
icon_state = "swallc1";
@@ -1887,12 +1887,6 @@
icon_state = "floor"
},
/area/awaymission/centcomAway/general)
-"eP" = (
-/turf/space,
-/area/awaycontent/a2{
- has_gravity = 1;
- name = "MO19 Research"
- })
"eQ" = (
/turf/simulated/shuttle/wall{
icon_state = "swall2";
@@ -3595,20 +3589,6 @@
dir = 4
},
/area/awaymission/centcomAway/general)
-"iZ" = (
-/obj/structure/grille,
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/simulated/floor/plating,
-/area/space)
"ja" = (
/obj/structure/grille,
/obj/structure/window/reinforced,
@@ -5805,8 +5785,8 @@
icon_state = "propulsion_r";
dir = 1
},
-/turf/space,
-/area/space)
+/turf/simulated/shuttle/plating,
+/area/awaymission/centcomAway/thunderdome)
"nV" = (
/obj/machinery/light,
/turf/simulated/floor/plasteel{
@@ -5818,15 +5798,15 @@
icon_state = "propulsion_l";
dir = 1
},
-/turf/space,
-/area/space)
+/turf/simulated/shuttle/plating,
+/area/awaymission/centcomAway/thunderdome)
"nX" = (
/obj/structure/shuttle/engine/propulsion{
icon_state = "propulsion";
dir = 1
},
-/turf/space,
-/area/space)
+/turf/simulated/shuttle/plating,
+/area/awaymission/centcomAway/thunderdome)
"nY" = (
/obj/structure/computerframe,
/turf/simulated/floor/plasteel{
@@ -16520,7 +16500,7 @@ eO
oa
lb
eF
-iZ
+fg
eF
lV
mc
@@ -20660,7 +20640,7 @@ cc
aa
aa
aa
-eP
+aa
aa
aa
aa
@@ -20790,7 +20770,7 @@ cc
aa
aa
aa
-eP
+aa
aa
aa
aa
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 674c8099882..85763845c2b 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -1,7 +1,7 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/simulated/mineral/random,
-/area/space)
+/area/space/nearstation)
"ab" = (
/turf/space,
/area/space)
@@ -2617,23 +2617,23 @@
"iq" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ir" = (
/obj/effect/mob_spawn/human/corpse/syndicatesoldier,
/turf/space,
-/area/space)
+/area/space/nearstation)
"is" = (
/turf/simulated/shuttle/wall{
icon_state = "wall3"
},
-/area/space)
+/area/space/nearstation)
"it" = (
/turf/space,
/turf/simulated/shuttle/wall{
dir = 1;
icon_state = "diagonalWall3"
},
-/area/space)
+/area/space/nearstation)
"iu" = (
/obj/machinery/sleeper,
/turf/simulated/floor/plasteel/airless{
@@ -2641,14 +2641,14 @@
icon_state = "floor4";
dir = 10
},
-/area/space)
+/area/space/nearstation)
"iv" = (
/turf/simulated/floor/plasteel/airless{
tag = "icon-floor4 (SOUTHWEST)";
icon_state = "floor4";
dir = 10
},
-/area/space)
+/area/space/nearstation)
"iw" = (
/obj/effect/mob_spawn/human/corpse/syndicatesoldier,
/turf/simulated/floor/plasteel/airless{
@@ -2656,7 +2656,7 @@
icon_state = "floor4";
dir = 10
},
-/area/space)
+/area/space/nearstation)
"ix" = (
/obj/machinery/door/airlock/external,
/turf/simulated/floor/plasteel/airless{
@@ -2664,7 +2664,7 @@
icon_state = "floor4";
dir = 10
},
-/area/space)
+/area/space/nearstation)
"iy" = (
/obj/item/stack/rods,
/turf/simulated/floor/plasteel/airless{
@@ -2672,7 +2672,7 @@
icon_state = "floor4";
dir = 10
},
-/area/space)
+/area/space/nearstation)
"iz" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -2695,7 +2695,7 @@
"iC" = (
/obj/machinery/sleeper,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"iD" = (
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -2712,14 +2712,14 @@
/turf/simulated/shuttle/wall{
icon_state = "diagonalWall3"
},
-/area/space)
+/area/space/nearstation)
"iG" = (
/turf/space,
/turf/simulated/shuttle/wall{
dir = 4;
icon_state = "diagonalWall3"
},
-/area/space)
+/area/space/nearstation)
"iH" = (
/obj/machinery/sleeper,
/turf/simulated/shuttle/floor{
@@ -2741,11 +2741,11 @@
dir = 1
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"iK" = (
/obj/structure/shuttle/engine/propulsion,
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"iL" = (
/obj/machinery/door/airlock/external,
/turf/simulated/shuttle/floor{
@@ -2853,7 +2853,7 @@
/area/awaymission/spacebattle/syndicate6)
"jc" = (
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"jd" = (
/turf/simulated/wall/mineral/plasma,
/area/awaymission/spacebattle/secret)
@@ -2898,7 +2898,7 @@
tag = "icon-propulsion_l (WEST)"
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"Jj" = (
/obj/structure/shuttle/engine/propulsion{
tag = "icon-propulsion_l (NORTH)";
diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm
index 73d86c17201..add5efa4d1c 100644
--- a/_maps/map_files/RandomZLevels/spacehotel.dmm
+++ b/_maps/map_files/RandomZLevels/spacehotel.dmm
@@ -2113,30 +2113,30 @@
id = "turbinespace"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dQ" = (
/turf/unsimulated/wall,
-/area/space)
+/area/space/nearstation)
"dR" = (
/turf/unsimulated/wall/fakeglass{
dir = 8;
icon_state = "fakewindows";
opacity = 0
},
-/area/space)
+/area/space/nearstation)
"dS" = (
/turf/unsimulated/wall/fakeglass{
icon_state = "fakewindows2";
dir = 8
},
-/area/space)
+/area/space/nearstation)
"dT" = (
/turf/unsimulated/wall/fakeglass{
dir = 4;
icon_state = "fakewindows";
opacity = 0
},
-/area/space)
+/area/space/nearstation)
"dU" = (
/turf/unsimulated/wall/fakeglass{
dir = 8;
@@ -2409,7 +2409,7 @@
icon_state = "fakewindows";
dir = 1
},
-/area/space)
+/area/space/nearstation)
"eC" = (
/obj/machinery/light{
dir = 1
@@ -2425,7 +2425,7 @@
icon_state = "fakewindows2";
dir = 1
},
-/area/space)
+/area/space/nearstation)
"eF" = (
/obj/structure/closet/crate/can,
/turf/unsimulated/floor/carpet,
@@ -2463,7 +2463,7 @@
/area/awaymission/spacehotel)
"eL" = (
/turf/unsimulated/wall/fakeglass,
-/area/space)
+/area/space/nearstation)
"eM" = (
/turf/unsimulated/floor{
dir = 2;
@@ -2684,7 +2684,7 @@
/turf/unsimulated/wall/fakeglass{
icon_state = "fakewindows3"
},
-/area/space)
+/area/space/nearstation)
"fv" = (
/obj/effect/landmark/map_loader/hotel_room{
dir = 1
@@ -3124,12 +3124,6 @@
icon_state = "cafeteria"
},
/area/awaymission/spacehotel/kitchen)
-"gE" = (
-/mob/living/carbon/human/interactive/away/hotel/chef,
-/turf/unsimulated/floor{
- icon_state = "cafeteria"
- },
-/area/awaymission/spacehotel/kitchen)
"gF" = (
/obj/machinery/camera{
c_tag = "Room 201";
@@ -3277,12 +3271,6 @@
icon_state = "whiteyellowfull"
},
/area/awaymission/spacehotel)
-"ha" = (
-/mob/living/carbon/human/interactive/away/hotel/bartender,
-/turf/unsimulated/floor{
- icon_state = "whiteyellowfull"
- },
-/area/awaymission/spacehotel)
"hb" = (
/turf/unsimulated/wall/fakeglass,
/area/awaymission/spacehotel)
@@ -3685,7 +3673,7 @@
dir = 1;
icon_state = "fakewindows2"
},
-/area/space)
+/area/space/nearstation)
"if" = (
/obj/effect/view_portal{
id = "hotel_13"
@@ -4134,12 +4122,6 @@
},
/turf/unsimulated/floor/carpet,
/area/awaymission/spacehotel)
-"jm" = (
-/obj/effect/spawner/snpc_squad{
- squad_type = /mob/living/carbon/human/interactive/away/hotel/guard
- },
-/turf/unsimulated/floor/carpet,
-/area/awaymission/spacehotel)
"jn" = (
/obj/structure{
desc = "It appears to be similar to a SMES.";
@@ -4489,7 +4471,6 @@
/obj/structure/chair{
dir = 8
},
-/mob/living/carbon/human/interactive/away/hotel/concierge,
/turf/unsimulated/floor/carpet,
/area/awaymission/spacehotel/reception)
"kk" = (
@@ -4512,12 +4493,6 @@
/obj/structure/table/reinforced,
/turf/unsimulated/floor/carpet,
/area/awaymission/spacehotel/reception)
-"kn" = (
-/obj/structure/chair{
- dir = 8
- },
-/turf/unsimulated/floor/carpet,
-/area/awaymission/spacehotel/reception)
"ko" = (
/obj/structure/filingcabinet/filingcabinet,
/obj/machinery/light{
@@ -4577,14 +4552,14 @@
dir = 10;
icon_state = "fakewindows"
},
-/area/space)
+/area/space/nearstation)
"ky" = (
/turf/unsimulated/wall/fakeglass{
dir = 4;
icon_state = "fakewindows";
opacity = 1
},
-/area/space)
+/area/space/nearstation)
"kz" = (
/obj/machinery/door/airlock/external{
name = "Arrival Airlock"
@@ -4596,13 +4571,13 @@
icon_state = "fakewindows";
dir = 8
},
-/area/space)
+/area/space/nearstation)
"kB" = (
/turf/unsimulated/wall/fakeglass{
icon_state = "fakewindows";
dir = 6
},
-/area/space)
+/area/space/nearstation)
"kC" = (
/turf/simulated/shuttle/wall{
icon_state = "swall_s6";
@@ -4656,19 +4631,19 @@
icon_state = "swall_s6";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"kL" = (
/turf/simulated/shuttle/wall{
icon_state = "swall12";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"kM" = (
/turf/simulated/shuttle/wall{
icon_state = "swall_s10";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"kN" = (
/turf/unsimulated/wall/fakeglass{
icon_state = "fakewindows3"
@@ -4726,22 +4701,22 @@
icon_state = "swallc4";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"kX" = (
/turf/simulated/shuttle/wall/interior,
-/area/space)
+/area/space/nearstation)
"kY" = (
/turf/simulated/shuttle/wall{
icon_state = "swall3"
},
-/area/space)
+/area/space/nearstation)
"kZ" = (
/obj/structure/shuttle/engine/propulsion{
dir = 4;
icon_state = "propulsion"
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"la" = (
/obj/structure/chair{
dir = 8
@@ -4793,13 +4768,13 @@
icon_state = "swall_s5";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"li" = (
/turf/simulated/shuttle/wall{
icon_state = "swallc1";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"lj" = (
/turf/simulated/shuttle/wall{
icon_state = "swall_s9";
@@ -4811,7 +4786,7 @@
icon_state = "swall_s9";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"ll" = (
/obj/machinery/shower{
dir = 8
@@ -9762,7 +9737,7 @@ cl
jF
jT
kj
-kn
+kj
jT
kv
dS
@@ -10655,7 +10630,7 @@ gh
eb
gp
gw
-gE
+gD
gN
gT
gD
@@ -11058,7 +11033,7 @@ cl
iw
iI
eG
-jm
+eb
jH
jV
cl
@@ -18978,7 +18953,7 @@ dX
gI
gP
gX
-ha
+gX
hq
cl
hB
diff --git a/_maps/map_files/RandomZLevels/stationCollision.dmm b/_maps/map_files/RandomZLevels/stationCollision.dmm
index a8e3a533033..2f225fea612 100644
--- a/_maps/map_files/RandomZLevels/stationCollision.dmm
+++ b/_maps/map_files/RandomZLevels/stationCollision.dmm
@@ -41,7 +41,7 @@
"ak" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"al" = (
/obj/machinery/door/window/westright,
/turf/simulated/floor/plasteel/airless,
@@ -256,10 +256,10 @@
/turf/simulated/shuttle/wall{
icon_state = "wall3"
},
-/area/space)
+/area/space/nearstation)
"ba" = (
/turf/simulated/wall,
-/area/space)
+/area/space/nearstation)
"bb" = (
/obj/machinery/door/airlock/engineering,
/turf/simulated/floor/plasteel/airless,
@@ -4123,7 +4123,7 @@
/turf/simulated/floor/plasteel,
/area/awaymission/arrivalblock)
"kG" = (
-/obj/item/clothing/shoes/syndigaloshes,
+/obj/item/clothing/shoes/chameleon/noslip,
/obj/item/clothing/under/syndicate,
/obj/effect/decal/remains/human{
desc = "This guy seemed to have died in terrible way! Half his remains are dust.";
diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm
index 1a64a0d7f0a..ed0bb019b83 100644
--- a/_maps/map_files/RandomZLevels/terrorspiders.dmm
+++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm
@@ -13398,7 +13398,7 @@
/area/awaymission/UO71/loot)
"zt" = (
/obj/structure/chair/wood/normal,
-/obj/item/clothing/shoes/syndigaloshes,
+/obj/item/clothing/shoes/chameleon/noslip,
/turf/simulated/floor/carpet,
/area/awaymission/UO71/loot)
"zu" = (
diff --git a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm
index 9a7b73800c2..6a59267ed05 100644
--- a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm
+++ b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm
@@ -13,12 +13,6 @@
power_light = 0;
poweralm = 0
})
-"ab" = (
-/turf/unsimulated/wall{
- icon_state = "rock";
- name = "rock"
- },
-/area/space)
"ac" = (
/turf/simulated/mineral/random/labormineral,
/area/awaycontent/a7{
@@ -6998,7 +6992,10 @@
dir = 9;
icon_state = "warnwhite"
},
-/area/space)
+/area/awaycontent/a5{
+ has_gravity = 1;
+ name = "UO45 Research"
+ })
"lc" = (
/obj/structure/sink{
pixel_y = 25
@@ -27794,10 +27791,10 @@ aa
aa
"}
(72,1,1) = {"
-ab
-ab
-ab
-ab
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -27944,10 +27941,10 @@ aa
aa
"}
(73,1,1) = {"
-ab
-ab
-ab
-ab
+aa
+aa
+aa
+aa
aa
aa
aa
diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm
index a60988466a1..f5f7d96e4ea 100644
--- a/_maps/map_files/RandomZLevels/wildwest.dmm
+++ b/_maps/map_files/RandomZLevels/wildwest.dmm
@@ -204,7 +204,7 @@
/area/awaymission/wwvaultdoors)
"aG" = (
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"aH" = (
/obj/structure/cable{
d2 = 8;
@@ -268,7 +268,7 @@
name = "Blocker"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aQ" = (
/obj/effect/forcefield{
desc = "You can't get in. Heh.";
@@ -276,7 +276,7 @@
name = "Blocker"
},
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"aR" = (
/obj/effect/forcefield{
desc = "You can't get in. Heh.";
@@ -349,7 +349,7 @@
/area/awaymission/wwmines)
"be" = (
/turf/simulated/wall/mineral/sandstone,
-/area/space)
+/area/space/nearstation)
"bf" = (
/obj/structure/largecrate,
/turf/simulated/floor/plating,
@@ -393,7 +393,7 @@
"bp" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bq" = (
/obj/effect/mine/dnascramble,
/obj/item/ammo_box/c10mm,
@@ -431,14 +431,14 @@
icon_state = "fwindow"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bx" = (
/obj/structure/window/reinforced{
tag = "icon-fwindow";
icon_state = "fwindow"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"by" = (
/obj/structure/closet/secure_closet/freezer/fridge,
/turf/simulated/floor/plasteel{
@@ -605,7 +605,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bV" = (
/obj/structure/window/reinforced{
tag = "icon-fwindow (NORTH)";
@@ -668,7 +668,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cb" = (
/obj/machinery/light/small{
tag = "icon-bulb1 (WEST)";
@@ -736,7 +736,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ck" = (
/turf/simulated/floor/wood,
/area/awaymission/wwgov)
@@ -810,7 +810,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cs" = (
/obj/effect/decal/cleanable/blood/splatter,
/turf/simulated/floor/carpet,
@@ -981,7 +981,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cT" = (
/obj/structure/chair/comfy/black{
dir = 4
@@ -1075,7 +1075,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dg" = (
/obj/machinery/light/small{
tag = "icon-bulb1 (WEST)";
@@ -1701,7 +1701,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"eM" = (
/obj/structure/lattice,
/obj/structure/window/reinforced{
@@ -1710,7 +1710,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"eN" = (
/obj/structure/window/reinforced{
tag = "icon-fwindow (EAST)";
@@ -1739,7 +1739,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"eP" = (
/obj/structure/window/reinforced{
tag = "icon-fwindow (NORTH)";
@@ -1752,7 +1752,7 @@
dir = 8
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"eQ" = (
/obj/structure/window/reinforced{
tag = "icon-fwindow (EAST)";
@@ -2080,7 +2080,7 @@
/area/awaymission/wwrefine)
"fI" = (
/turf/simulated/floor/plasteel,
-/area/space)
+/area/space/nearstation)
"fJ" = (
/obj/effect/decal/cleanable/cobweb,
/obj/structure/chair/office/dark{
@@ -2329,7 +2329,7 @@
icon_state = "fwindow"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"gp" = (
/obj/structure/window/reinforced{
tag = "icon-fwindow (WEST)";
@@ -2341,7 +2341,7 @@
icon_state = "fwindow"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"gq" = (
/obj/item/paper{
info = "The syndicate have invaded. Their ships appeared out of nowhere and now they likely intend to kill us all and take everything. On the off-chance that the Vault may grant us sanctuary, many of us have decided to force our way inside and bolt the door, taking as many provisions with us as we can carry. In case you find this, send for help immediately and open the Vault. Find us inside.";
@@ -2422,7 +2422,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"gC" = (
/obj/item/gun/projectile/shotgun,
/turf/simulated/floor/wood,
@@ -2473,7 +2473,7 @@
dir = 8
},
/turf/simulated/floor/plasteel,
-/area/space)
+/area/space/nearstation)
"gK" = (
/obj/item/gun/projectile/revolver/russian,
/turf/simulated/floor/wood,
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 15154bd85d3..7596727d426 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -5,7 +5,7 @@
"aab" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aac" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall12";
@@ -696,7 +696,7 @@
"abM" = (
/obj/structure/lattice,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"abN" = (
/turf/simulated/wall/r_wall,
/area/security/permabrig)
@@ -714,7 +714,7 @@
},
/obj/structure/lattice,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"abQ" = (
/turf/simulated/shuttle/wall{
dir = 4;
@@ -2670,7 +2670,7 @@
pixel_x = -30
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"afn" = (
/obj/structure/chair{
dir = 8
@@ -2937,7 +2937,7 @@
/area/security/podbay)
"afO" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"afP" = (
/obj/machinery/door/window{
dir = 4;
@@ -3037,7 +3037,7 @@
"afX" = (
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"afY" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/medical/glass{
@@ -6541,11 +6541,11 @@
/obj/structure/grille,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"alw" = (
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"alx" = (
/obj/item/broken_bottle,
/turf/simulated/shuttle/floor4/vox,
@@ -6955,7 +6955,7 @@
/obj/structure/grille/broken,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ami" = (
/obj/structure/chair{
dir = 4
@@ -7402,7 +7402,7 @@
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"amX" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/reagent_containers/glass/bucket,
@@ -8851,7 +8851,7 @@
"apo" = (
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"app" = (
/obj/structure/cable{
icon_state = "0-4";
@@ -9371,7 +9371,7 @@
icon_state = "brokengrille"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aqq" = (
/obj/item/soap,
/turf/simulated/floor/plating,
@@ -13088,7 +13088,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"avN" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
@@ -13973,7 +13973,7 @@
/obj/structure/lattice,
/obj/item/stack/cable_coil,
/turf/space,
-/area/space)
+/area/space/nearstation)
"axo" = (
/obj/structure/chair{
dir = 4
@@ -14544,7 +14544,7 @@
/obj/structure/lattice,
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ayj" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
@@ -15172,7 +15172,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"azc" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable,
@@ -15296,7 +15296,7 @@
"azo" = (
/obj/item/clothing/mask/gas/clown_hat,
/turf/space,
-/area/space)
+/area/space/nearstation)
"azp" = (
/obj/machinery/door/airlock{
name = "Bathroom";
@@ -16451,7 +16451,7 @@
"aBm" = (
/obj/item/stack/rods,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aBn" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -16538,11 +16538,11 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aBy" = (
/obj/effect/landmark/damageturf,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"aBz" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
@@ -16741,7 +16741,7 @@
/obj/item/paper/crumpled,
/obj/effect/landmark/damageturf,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"aBU" = (
/obj/machinery/light_construct/small{
dir = 8
@@ -16788,7 +16788,7 @@
"aBZ" = (
/obj/effect/landmark/damageturf,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"aCa" = (
/obj/machinery/ai_status_display{
pixel_x = 32
@@ -18256,7 +18256,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"aEN" = (
/obj/structure/closet/emcloset,
/turf/simulated/floor/plating,
@@ -21774,7 +21774,7 @@
/area/maintenance/electrical)
"aMr" = (
/turf/simulated/wall,
-/area/space)
+/area/space/nearstation)
"aMs" = (
/turf/simulated/wall,
/area/hallway/secondary/entry)
@@ -22951,7 +22951,7 @@
/obj/structure/lattice,
/obj/structure/closet,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aOY" = (
/obj/structure/grille,
/obj/structure/window/reinforced,
@@ -29941,7 +29941,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bco" = (
/obj/structure/filingcabinet,
/turf/simulated/floor/wood,
@@ -32674,7 +32674,7 @@
amount = 10
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bho" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -34583,7 +34583,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"bkJ" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 9;
@@ -50861,7 +50861,7 @@
icon_state = "diagonalWall3"
},
/area/shuttle/administration)
-"bPM" = (
+"bPN" = (
/obj/machinery/door/airlock/external{
id_tag = "s_docking_airlock";
name = "Shuttle Hatch";
@@ -50874,25 +50874,17 @@
id = "admin";
name = "administration shuttle";
roundstart_move = "admin_away";
+ timid = 1;
width = 18
},
/obj/docking_port/stationary{
dir = 2;
- dwidth = 8;
- height = 15;
+ dwidth = 9;
+ height = 18;
id = "admin_home";
name = "port bay 1";
- width = 18
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
-"bPN" = (
-/obj/machinery/door/airlock/external{
- id_tag = "s_docking_airlock";
- name = "Shuttle Hatch";
- req_access_txt = "106"
+ timid = 1;
+ width = 19
},
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -52067,21 +52059,6 @@
icon_state = "wall3"
},
/area/shuttle/administration)
-"bRH" = (
-/obj/machinery/door_control{
- id = "adminshuttleblast";
- name = "blast door control";
- pixel_x = -30;
- req_access_txt = "106"
- },
-/obj/machinery/light{
- icon_state = "tube1";
- dir = 8
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"bRI" = (
/obj/structure/plasticflaps/mining,
/obj/machinery/conveyor/east{
@@ -54159,28 +54136,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/gravitygenerator)
-"bVk" = (
-/obj/machinery/door_control{
- id = "adminshuttleblast";
- name = "blast door control";
- pixel_x = -30;
- req_access_txt = "106"
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
-"bVl" = (
-/obj/machinery/door/airlock/centcom{
- id_tag = "adminshuttle";
- name = "Workshop";
- opacity = 1;
- req_access_txt = "105"
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"bVm" = (
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
@@ -55150,14 +55105,6 @@
icon_state = "floor4"
},
/area/shuttle/administration)
-"bWO" = (
-/obj/structure/shuttle/engine/propulsion{
- dir = 8;
- icon_state = "propulsion_l";
- tag = "icon-propulsion_l (EAST)"
- },
-/turf/simulated/shuttle/plating,
-/area/shuttle/administration)
"bWP" = (
/obj/machinery/door/airlock/external{
id_tag = "s_docking_airlock";
@@ -56132,14 +56079,6 @@
icon_state = "floor4"
},
/area/shuttle/administration)
-"bYu" = (
-/obj/structure/shuttle/engine/propulsion{
- dir = 8;
- icon_state = "propulsion_r";
- tag = "icon-propulsion_r (EAST)"
- },
-/turf/simulated/shuttle/plating,
-/area/shuttle/administration)
"bYv" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -57422,17 +57361,6 @@
"cam" = (
/turf/simulated/wall,
/area/quartermaster/miningdock)
-"can" = (
-/obj/structure/table/reinforced,
-/obj/machinery/light/spot{
- tag = "icon-tube1 (NORTH)";
- icon_state = "tube1";
- dir = 1
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"cao" = (
/obj/structure/filingcabinet,
/turf/simulated/floor/plasteel,
@@ -58236,23 +58164,6 @@
icon_state = "floor4"
},
/area/shuttle/administration)
-"cby" = (
-/obj/machinery/computer/shuttle/admin,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
-"cbz" = (
-/obj/machinery/door/airlock/centcom{
- id_tag = "adminshuttle";
- name = "Bridge";
- opacity = 1;
- req_access_txt = "106"
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"cbA" = (
/obj/machinery/door/poddoor/shutters{
density = 0;
@@ -58311,7 +58222,7 @@
pixel_y = 32
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cbH" = (
/obj/machinery/power/apc{
dir = 1;
@@ -59505,18 +59416,9 @@
icon_state = "floor3"
},
/area/shuttle/administration)
-"cdq" = (
-/obj/machinery/computer/card/centcom,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"cdr" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door_control{
- id = "adminshuttleshutters";
- name = "remote shutter control";
- req_access_txt = "106"
+/obj/machinery/computer/camera_advanced/shuttle_docker/admin{
+ name = "NTV Argos shuttle navigation computer"
},
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -60290,17 +60192,6 @@
tag = "icon-cafeteria (NORTHEAST)"
},
/area/crew_quarters/hor)
-"ceT" = (
-/obj/machinery/door/airlock/centcom{
- id_tag = "adminshuttle";
- name = "Medbay";
- opacity = 1;
- req_access_txt = "103"
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"ceU" = (
/obj/structure/shuttle/engine/propulsion,
/turf/simulated/shuttle/plating,
@@ -68442,7 +68333,7 @@
"csj" = (
/obj/structure/girder,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"csk" = (
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance,
@@ -71917,7 +71808,7 @@
dir = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cxZ" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/decal/cleanable/cobweb,
@@ -72824,7 +72715,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"czF" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -74314,7 +74205,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cCt" = (
/obj/machinery/atmospherics/pipe/simple/visible,
/turf/simulated/floor/plasteel{
@@ -80585,7 +80476,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cNF" = (
/obj/structure/cable{
icon_state = "0-4";
@@ -81591,7 +81482,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cPx" = (
/obj/structure/cable,
/turf/space,
@@ -82017,7 +81908,7 @@
level = 2
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cQq" = (
/obj/structure/cable{
icon_state = "0-2";
@@ -83472,7 +83363,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cSF" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -83480,7 +83371,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cSG" = (
/obj/structure/table/reinforced,
/obj/machinery/photocopier/faxmachine{
@@ -83511,7 +83402,7 @@
icon_state = "1-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cSJ" = (
/obj/structure/cable{
d1 = 1;
@@ -83540,7 +83431,7 @@
icon_state = "2-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cSN" = (
/obj/structure/chair/stool,
/obj/structure/cable/yellow{
@@ -83963,7 +83854,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cTy" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -84034,7 +83925,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cTE" = (
/obj/machinery/power/tesla_coil{
anchored = 1
@@ -84045,7 +83936,7 @@
icon_state = "0-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cTF" = (
/obj/structure/cable/yellow{
d1 = 2;
@@ -84058,7 +83949,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cTG" = (
/obj/machinery/door/airlock/maintenance{
name = "Engineering Shuttle";
@@ -84209,7 +84100,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cTS" = (
/obj/effect/landmark/burnturf,
/turf/simulated/floor/plating,
@@ -84478,7 +84369,7 @@
icon_state = "0-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cUm" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/structure/cable{
@@ -84769,7 +84660,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cUN" = (
/obj/machinery/atmospherics/pipe/simple/visible/green{
dir = 4;
@@ -84794,7 +84685,7 @@
icon_state = "1-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cUP" = (
/obj/structure/window/reinforced{
dir = 8
@@ -84823,7 +84714,7 @@
icon_state = "1-8"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cUR" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -84862,7 +84753,7 @@
level = 2
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cUW" = (
/obj/machinery/atmospherics/unary/outlet_injector{
dir = 8;
@@ -86866,7 +86757,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"cYA" = (
/obj/structure/cable{
icon_state = "0-4";
@@ -87242,7 +87133,7 @@
level = 2
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cZi" = (
/obj/machinery/atmospherics/unary/outlet_injector{
dir = 8;
@@ -87733,7 +87624,7 @@
dir = 10
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dae" = (
/obj/structure/door_assembly/door_assembly_mai,
/turf/simulated/floor/plating,
@@ -88196,7 +88087,7 @@
},
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dbb" = (
/turf/simulated/floor/engine{
carbon_dioxide = 0;
@@ -88543,7 +88434,7 @@
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dbJ" = (
/obj/structure/cable{
d1 = 1;
@@ -88618,7 +88509,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dbQ" = (
/obj/machinery/power/emitter{
anchored = 1;
@@ -88663,7 +88554,7 @@
/obj/structure/grille,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dbU" = (
/obj/structure/rack,
/obj/item/clothing/suit/fire/firefighter,
@@ -88697,7 +88588,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dbY" = (
/obj/structure/disposalpipe/segment{
dir = 1;
@@ -88720,13 +88611,13 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dca" = (
/obj/machinery/atmospherics/unary/passive_vent{
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dcb" = (
/turf/simulated/floor/plasteel{
icon_state = "blue";
@@ -88776,7 +88667,7 @@
d2 = 2
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dcg" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
@@ -89116,7 +89007,7 @@
},
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dcT" = (
/obj/machinery/atmospherics/unary/outlet_injector{
dir = 8;
@@ -89451,12 +89342,12 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ddD" = (
/obj/item/wrench,
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ddE" = (
/obj/structure/cable{
d1 = 1;
@@ -89473,7 +89364,7 @@
pixel_y = 32
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ddG" = (
/obj/machinery/field/generator,
/turf/simulated/floor/plating,
@@ -89530,7 +89421,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ddN" = (
/obj/structure/cable,
/turf/space,
@@ -89543,7 +89434,7 @@
},
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ddP" = (
/obj/structure/cable{
d1 = 2;
@@ -89668,7 +89559,7 @@
tag = "icon-catwalk0";
icon_state = "catwalk0"
},
-/area/space)
+/area/space/nearstation)
"ddY" = (
/obj/structure/shuttle/engine/propulsion/burst{
dir = 8
@@ -89814,7 +89705,7 @@
},
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dem" = (
/turf/simulated/floor/engine{
carbon_dioxide = 50000;
@@ -90912,7 +90803,7 @@
anchored = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dgF" = (
/turf/simulated/shuttle/wall{
icon_state = "swall1";
@@ -90957,7 +90848,7 @@
pixel_y = 32
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dgK" = (
/obj/effect/spawner/lootdrop/trade_sol/sec,
/obj/structure/closet,
@@ -91101,7 +90992,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dhd" = (
/obj/machinery/computer/shuttle/engineering,
/turf/simulated/shuttle/floor{
@@ -91770,7 +91661,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"div" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
@@ -92070,21 +91961,21 @@
level = 2
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"diV" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
level = 2
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"diW" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible{
dir = 5
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"diX" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/green{
@@ -92094,14 +91985,14 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"diY" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"diZ" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
@@ -92111,7 +92002,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"dja" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/cyan{
@@ -92121,26 +92012,26 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"djb" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 4
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"djc" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 9
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"djd" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dje" = (
/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel{
@@ -92279,7 +92170,7 @@
state = 2
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"djr" = (
/obj/structure/closet/emcloset,
/turf/simulated/floor/plating,
@@ -92346,7 +92237,7 @@
/obj/structure/lattice,
/obj/item/wirecutters,
/turf/space,
-/area/space)
+/area/space/nearstation)
"djz" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
@@ -92413,7 +92304,7 @@
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/space,
-/area/space)
+/area/space/nearstation)
"djF" = (
/obj/structure/cable{
d1 = 1;
@@ -92572,7 +92463,7 @@
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"djU" = (
/obj/machinery/atmospherics/pipe/simple/visible,
/obj/structure/grille,
@@ -92952,19 +92843,19 @@
"dkz" = (
/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dkA" = (
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dkB" = (
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dkC" = (
/obj/item/crowbar,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dkD" = (
/obj/machinery/newscaster{
pixel_y = 32
@@ -93371,18 +93262,18 @@
},
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dlf" = (
/obj/item/wrench,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dlg" = (
/obj/machinery/the_singularitygen/tesla{
anchored = 1
},
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dlh" = (
/obj/machinery/door/airlock/external{
frequency = 1450;
@@ -93613,19 +93504,19 @@
"dlE" = (
/obj/item/weldingtool,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dlF" = (
/obj/effect/decal/warning_stripes/southwest,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dlG" = (
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dlH" = (
/obj/effect/decal/warning_stripes/southeast,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dlI" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/binary/pump/on,
@@ -93785,7 +93676,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/purple,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dlZ" = (
/obj/structure/chair{
dir = 8
@@ -93930,7 +93821,7 @@
"dmo" = (
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"dmp" = (
/obj/structure/table,
/obj/item/weldingtool,
@@ -94069,7 +93960,7 @@
/area/turret_protected/aisat_interior)
"dmD" = (
/turf/simulated/wall/r_wall/coated,
-/area/space)
+/area/space/nearstation)
"dmE" = (
/obj/machinery/door/poddoor{
id_tag = "auxiliaryturbinevent";
@@ -94081,7 +93972,7 @@
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/visible/purple,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dmG" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -94163,7 +94054,7 @@
"dmN" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dmO" = (
/obj/structure/cable{
d2 = 2;
@@ -94302,14 +94193,14 @@
"dmW" = (
/obj/structure/transit_tube,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dmX" = (
/obj/structure/transit_tube{
icon_state = "E-W-Pass"
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"dmY" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/hatch{
@@ -94355,7 +94246,7 @@
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dne" = (
/obj/structure/cable,
/obj/machinery/power/turbine,
@@ -94493,7 +94384,7 @@
},
/obj/structure/disposaloutlet,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dnq" = (
/obj/structure/cable{
d1 = 1;
@@ -95261,7 +95152,7 @@
tag = "icon-catwalk0";
icon_state = "catwalk0"
},
-/area/space)
+/area/space/nearstation)
"doF" = (
/turf/simulated/floor/plating,
/area/toxins/launch{
@@ -96553,7 +96444,7 @@
dir = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"gMZ" = (
/obj/machinery/atmospherics/pipe/simple/insulated{
dir = 6
@@ -96572,6 +96463,12 @@
},
/turf/simulated/floor/plating,
/area/toxins/mixing)
+"gQL" = (
+/obj/machinery/computer/card,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"hsy" = (
/obj/machinery/atmospherics/pipe/simple/insulated{
dir = 4
@@ -96598,7 +96495,7 @@
dir = 1
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iJf" = (
/obj/machinery/atmospherics/pipe/simple/insulated,
/obj/machinery/door/poddoor{
@@ -96626,35 +96523,132 @@
/area/toxins/launch{
name = "Toxins Launch Room"
})
+"jnJ" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "Blast door control";
+ pixel_x = -5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/machinery/door_control{
+ id = "adminshuttleshutters";
+ name = "Shutter control";
+ pixel_x = 5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"kOE" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{
dir = 4
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"nMi" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 9
},
/turf/space,
-/area/space)
+/area/space/nearstation)
+"oZV" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Medbay";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"pwN" = (
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "blast door control";
+ pixel_x = -30;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"pZO" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 10
},
/turf/space,
-/area/space)
+/area/space/nearstation)
+"qgG" = (
+/obj/machinery/door/airlock/external{
+ id_tag = "s_docking_airlock";
+ name = "Shuttle Hatch";
+ req_access_txt = "101"
+ },
+/obj/structure/fans/tiny,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"qUv" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
/turf/space,
-/area/space)
+/area/space/nearstation)
+"rEw" = (
+/obj/machinery/computer/shuttle/admin{
+ name = "NTV Argos shuttle console"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"rSv" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 8;
+ icon_state = "propulsion_l";
+ tag = "icon-propulsion_l (EAST)"
+ },
+/turf/space,
+/area/shuttle/administration)
+"rYq" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Bridge";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"uxy" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
+"uBM" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 8;
+ icon_state = "propulsion_r";
+ tag = "icon-propulsion_r (EAST)"
+ },
+/turf/space,
+/area/shuttle/administration)
"uDK" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
tag = "icon-intact (NORTHEAST)";
@@ -96662,21 +96656,21 @@
dir = 5
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"vup" = (
/obj/machinery/atmospherics/pipe/simple/insulated{
dir = 10
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"xAw" = (
/obj/machinery/atmospherics/pipe/manifold/visible{
dir = 8
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"xWg" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
tag = "icon-intact (SOUTHEAST)";
@@ -96684,7 +96678,33 @@
dir = 6
},
/turf/space,
-/area/space)
+/area/space/nearstation)
+"yeP" = (
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "blast door control";
+ pixel_x = -30;
+ req_access_txt = "101"
+ },
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ylx" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Workshop";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
(1,1,1) = {"
aaa
@@ -105049,15 +105069,15 @@ aaa
aaa
aaa
aaa
+bPL
+rSv
+uBM
+cae
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+bPL
+rSv
+uBM
+cae
aaa
aaa
aaa
@@ -105305,18 +105325,18 @@ aaa
aaa
aaa
aaa
-aaa
bPL
-bWO
-bYu
+bPI
+bWG
+bWG
+bPI
+bPI
+bPI
+bWG
+bWG
+bPI
cae
aaa
-bPL
-bWO
-bYu
-cae
-aaa
-aaa
aaa
aaa
aaa
@@ -105561,16 +105581,17 @@ aaa
aaa
aaa
aaa
-aaa
bPL
bPI
-bWG
-bWG
+bVe
+bRA
+bRA
+caf
bPI
-bPI
-bPI
-bWG
-bWG
+cdl
+ceR
+ceR
+cig
bPI
cae
aaa
@@ -105679,7 +105700,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(36,1,1) = {"
aaa
@@ -105813,22 +105833,23 @@ bCd
bCd
bCd
bAR
-aaa
-aaa
+bjQ
aaa
aaa
aaa
bPL
-bPI
-bVe
+bRu
+bRA
+bVf
bRA
bRA
-caf
+cag
bPI
-cdl
+cdm
ceR
ceR
-cig
+ceR
+ckd
bPI
cae
aaa
@@ -105936,7 +105957,6 @@ aaa
aaa
aaa
aaa
-aaa
"}
(37,1,1) = {"
aaa
@@ -106070,25 +106090,25 @@ bCc
bDG
bEK
bAR
-bjQ
+aLd
aaa
aaa
aaa
-bPL
-bRu
-bRA
-bVf
-bRA
-bRA
-cag
bPI
-cdm
-ceR
-ceR
-ceR
-ckd
+bRv
+bRA
+bVg
+cuH
+bRA
+cah
+bPI
+cdp
+ceR
+ceR
+ceR
+ceR
+clC
bPI
-cae
aaa
aaa
aaa
@@ -106327,24 +106347,24 @@ aAi
bCb
bCl
bAR
-aLd
+aSd
aaa
aaa
aaa
bPI
-bRv
+bRw
bRA
-bVg
+bVh
cuH
bRA
-cah
+cai
bPI
-cdp
+cdl
ceR
+cgw
+cih
ceR
-ceR
-ceR
-clC
+clD
bPI
aaa
aaa
@@ -106589,19 +106609,19 @@ aaa
aaa
aaa
bPI
-bRw
-bRA
-bVh
+bRx
+bTl
+bVi
cuH
bRA
-cai
+bRA
bPI
-cdl
+cdo
ceR
-cgw
-cih
-ceR
-clD
+cgx
+cii
+ckf
+clE
bPI
aaa
aaa
@@ -106842,23 +106862,23 @@ bCb
bEL
bAR
aSd
-aaa
-aaa
-aaa
+aSd
+aSd
+aSd
bPI
-bRx
-bTl
-bVi
-cuH
-bRA
-bRA
-bPI
-cdo
-ceR
-cgx
-cii
-ckf
-clE
+bRG
+bRG
+bRG
+bRG
+bYt
+bRG
+bRG
+bRG
+oZV
+bRG
+bRG
+bRG
+bRG
bPI
aaa
aaa
@@ -107099,23 +107119,23 @@ bCb
bEL
bAR
aSd
-aSd
-aSd
-aSd
-bPI
-bRG
-bRG
-bRG
-bRG
-bYt
-bRG
-bRG
-bRG
-ceT
-bRG
-bRG
-bRG
-bRG
+bGm
+bLY
+bKp
+qgG
+yeP
+bTn
+pwN
+bRA
+bRA
+bRA
+bTo
+bRA
+bRA
+bRA
+bRA
+bRA
+bRA
bPI
aaa
aaa
@@ -107356,23 +107376,23 @@ bCb
bEL
bAR
aSd
-bGm
-bLY
+bGl
+bLX
bKp
bPN
-bRH
+bRA
bTn
-bVk
-bRA
-bRA
-bRA
-bTo
bRA
bRA
bRA
bRA
bRA
bRA
+bRA
+bRA
+bRA
+bRA
+clF
bPI
aaa
aaa
@@ -107613,23 +107633,23 @@ bCb
bEL
bAR
aSd
-bGl
-bLX
bKp
-bPM
-bRA
-bTn
-bRA
-bRA
-bRA
-bRA
-bRA
-bRA
-bRA
-bRA
-bRA
-bRA
-clF
+bKp
+bOb
+bPI
+bRG
+bRG
+ylx
+bRG
+bRG
+bRG
+rYq
+bRG
+bRG
+bRG
+cik
+bRG
+bRG
bPI
aaa
aaa
@@ -107870,23 +107890,23 @@ bCb
bAR
bER
aSd
-bKp
-bKp
-bOb
+aMd
+bLZ
+aSd
bPI
-bRG
-bRG
-bVl
-bRG
-bRG
-bRG
-cbz
-bRG
-bRG
-bRG
-cik
-bRG
-bRG
+bRB
+bTo
+bRA
+bWI
+bPI
+gQL
+bRA
+bRA
+bPI
+bRA
+bRA
+ckg
+clG
bPI
aaa
aaa
@@ -108131,19 +108151,19 @@ aMd
bLZ
aSd
bPI
-bRB
-bTo
+bRC
bRA
-bWI
+bRA
+bWJ
+bPI
+jnJ
+cbx
+cbx
bPI
bRA
bRA
bRA
-bPI
-bRA
-bRA
-ckg
-clG
+clI
bPI
aaa
aaa
@@ -108388,19 +108408,19 @@ aMd
bLZ
aSd
bPI
-bRC
+bRD
bRA
bRA
-bWJ
+bWK
bPI
-can
-cbx
+cak
+rEw
cdr
bPI
bRA
bRA
bRA
-clI
+bRA
bPI
aaa
aaa
@@ -108644,21 +108664,21 @@ aSd
aMd
bMa
bjQ
+bPR
bPI
-bRD
-bRA
-bRA
-bWK
-bPI
-cak
-cby
-cdq
-bPI
-bRA
-bRA
+bTp
bRA
bRA
bPI
+car
+cbA
+cds
+bPI
+cgz
+cio
+ckj
+bPI
+bYv
aaa
aaa
aaa
@@ -108901,21 +108921,21 @@ bLs
bmS
bMb
aLd
-bPR
+aaa
+bPI
+bWL
+bRA
+bWM
+bPI
+aaa
+aaa
+aaa
bPI
-bTp
bRA
bRA
+ckh
bPI
-car
-cbA
-cds
-bPI
-cgz
-cio
-ckj
-bPI
-bYv
+aaa
aaa
aaa
aaa
@@ -109159,19 +109179,19 @@ aSf
bLZ
aSd
aaa
+bPR
bPI
-bWL
-bRA
-bWM
+bTl
+bWN
bPI
aaa
aaa
aaa
bPI
-bRA
-bRA
-ckh
+cgA
+cil
bPI
+bYv
aaa
aaa
aaa
@@ -109416,22 +109436,22 @@ aSf
bMc
aSd
aaa
+aaa
bPR
-bPI
-bTl
-bWN
-bPI
-aaa
-aaa
-aaa
-bPI
-cgA
-cil
-bPI
+bRG
+bRG
bYv
aaa
aaa
aaa
+bPR
+bRG
+bRG
+bYv
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -109674,17 +109694,17 @@ bCf
bCf
aaa
aaa
-bPR
-bRG
-bRG
-bYv
aaa
aaa
aaa
-bPR
-bRG
-bRG
-bYv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index ee6ca15f83d..dda71eb7e09 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -8030,11 +8030,12 @@
"tH" = (
/obj/docking_port/stationary{
dir = 2;
- dwidth = 8;
- height = 15;
+ dwidth = 9;
+ height = 18;
id = "admin_away";
name = "centcom bay 1";
- width = 18
+ timid = 1;
+ width = 19
},
/turf/space,
/area/space)
@@ -8543,7 +8544,7 @@
pixel_y = 3
},
/obj/item/clothing/mask/gas/cyborg,
-/obj/item/clothing/mask/gas/voice,
+/obj/item/clothing/mask/chameleon,
/obj/item/clothing/mask/balaclava{
pixel_x = 3;
pixel_y = -3
@@ -8729,7 +8730,7 @@
/area/admin)
"uY" = (
/obj/structure/rack,
-/obj/item/clothing/under/chameleon/all{
+/obj/item/clothing/mask/chameleon{
pixel_x = -3;
pixel_y = 3
},
@@ -9036,7 +9037,7 @@
pixel_y = 3
},
/obj/item/clothing/shoes/centcom,
-/obj/item/clothing/shoes/syndigaloshes{
+/obj/item/clothing/shoes/chameleon/noslip{
pixel_x = 3;
pixel_y = -3
},
@@ -12275,7 +12276,7 @@
"Hv" = (
/obj/structure/rack,
/obj/item/katana/energy,
-/obj/item/clothing/mask/gas/voice/space_ninja,
+/obj/item/clothing/mask/gas/space_ninja,
/turf/unsimulated/floor{
icon_state = "engine"
},
@@ -35340,9 +35341,9 @@ wK
wK
wK
wK
-aN
-aN
-aN
+wK
+wK
+wK
aN
aN
aN
@@ -35581,21 +35582,24 @@ aN
aN
cp
cj
-yt
-yt
-yt
-cr
aN
aN
-cr
-yt
-cr
aN
aN
-cr
-yt
-yt
-yt
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -35638,9 +35642,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jZ
kz
kM
@@ -35838,9 +35839,6 @@ aN
aN
cp
cj
-yt
-yt
-cr
aN
aN
aN
@@ -35850,9 +35848,15 @@ aN
aN
aN
aN
-cr
-yt
-yt
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -35918,9 +35922,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
"}
(91,1,1) = {"
aN
@@ -36095,8 +36096,6 @@ aN
aN
cp
cj
-yt
-cr
aN
aN
aN
@@ -36108,8 +36107,13 @@ aN
aN
aN
aN
-cr
-yt
+aN
+aN
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -36152,9 +36156,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jU
kw
kE
@@ -36352,7 +36353,6 @@ aN
aN
cp
cj
-cr
aN
aN
aN
@@ -36366,7 +36366,11 @@ aN
aN
aN
aN
-cr
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -36408,9 +36412,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jQ
jW
kD
@@ -36624,6 +36625,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -36665,9 +36669,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jP
kt
kx
@@ -36881,6 +36882,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -36922,9 +36926,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jS
kv
kx
@@ -37138,6 +37139,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -37179,9 +37183,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jR
ku
kx
@@ -37395,6 +37396,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -37436,9 +37440,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jT
ka
kA
@@ -37652,6 +37653,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -37694,9 +37698,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
jZ
kz
kM
@@ -37909,6 +37910,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -37974,9 +37978,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
"}
(99,1,1) = {"
aN
@@ -38166,6 +38167,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -38231,9 +38235,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
"}
(100,1,1) = {"
aN
@@ -38423,6 +38424,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -38488,9 +38492,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
"}
(101,1,1) = {"
aN
@@ -38680,6 +38681,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -38713,9 +38717,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
mr
mr
mr
@@ -38937,6 +38938,9 @@ aN
aN
aN
aN
+aN
+aN
+aN
wK
aN
aN
@@ -38970,9 +38974,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
mr
aN
aN
@@ -39179,7 +39180,6 @@ qo
qs
tx
wK
-cr
aN
aN
aN
@@ -39193,7 +39193,11 @@ aN
aN
aN
aN
-cr
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -39227,9 +39231,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
mr
aN
aN
@@ -39436,21 +39437,24 @@ qo
qs
tA
wK
-yt
aN
aN
aN
aN
aN
-yt
-yt
-yt
aN
aN
aN
aN
aN
-yt
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -39484,9 +39488,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
mr
aN
aN
@@ -39693,21 +39694,24 @@ tq
tv
tz
wK
-yt
-cr
aN
aN
aN
aN
-yt
-yt
-yt
aN
aN
aN
aN
-cr
-yt
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -39741,9 +39745,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
mr
aN
aN
@@ -39950,21 +39951,24 @@ wK
wK
wK
wK
-yt
-yt
-cr
aN
aN
-cr
-yt
-yt
-yt
-cr
aN
aN
-cr
-yt
-yt
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
wK
aN
aN
@@ -39998,9 +40002,6 @@ aN
aN
aN
aN
-aN
-aN
-aN
mr
aN
aN
@@ -40207,22 +40208,6 @@ aN
aN
aN
wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
-wK
aN
aN
aN
@@ -40241,6 +40226,22 @@ aN
aN
aN
aN
+wK
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
+aN
aN
aN
aN
@@ -40463,26 +40464,26 @@ aN
aN
aN
aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
+wK
aN
aN
aN
diff --git a/_maps/map_files/cyberiad/z3.dmm b/_maps/map_files/cyberiad/z3.dmm
index 3d298fc02eb..4dd47bcb4be 100644
--- a/_maps/map_files/cyberiad/z3.dmm
+++ b/_maps/map_files/cyberiad/z3.dmm
@@ -5,7 +5,7 @@
"ab" = (
/obj/item/trash/cheesie,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ac" = (
/obj/docking_port/stationary{
dir = 8;
@@ -412,7 +412,7 @@
"aT" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aU" = (
/obj/structure/reagent_dispensers/watertank/high,
/turf/simulated/floor/plating,
@@ -457,28 +457,28 @@
icon_state = "swall_s6";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bb" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall14";
icon_state = "swall14";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bc" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall12";
icon_state = "swall12";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bd" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall_s10";
icon_state = "swall_s10";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"be" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall14";
@@ -503,7 +503,7 @@
icon_state = "swall7";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bj" = (
/turf/simulated/shuttle/floor{
icon_state = "floor3"
@@ -513,12 +513,12 @@
icon_state = "swall_f9";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bk" = (
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
-/area/space)
+/area/space/nearstation)
"bl" = (
/turf/simulated/shuttle/floor{
icon_state = "floor3"
@@ -528,14 +528,14 @@
icon_state = "swall_f5";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bm" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall11";
icon_state = "swall11";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bn" = (
/obj/machinery/vending/hydroseeds,
/turf/simulated/floor/mineral/titanium/purple,
@@ -549,7 +549,7 @@
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
-/area/space)
+/area/space/nearstation)
"bq" = (
/turf/simulated/floor/mineral/titanium/purple,
/area/shuttle/freegolem)
@@ -572,7 +572,7 @@
icon_state = "swall_f10";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bt" = (
/obj/machinery/light{
dir = 1;
@@ -589,7 +589,7 @@
icon_state = "swall_f6";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bv" = (
/obj/machinery/light{
dir = 1;
@@ -608,21 +608,21 @@
icon_state = "swall_s5";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"by" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall13";
icon_state = "swall13";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bz" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall_s9";
icon_state = "swall_s9";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"bA" = (
/obj/machinery/vending/coffee/free,
/turf/simulated/floor/mineral/titanium/purple,
@@ -793,7 +793,7 @@
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bX" = (
/obj/machinery/power/solar,
/obj/structure/cable{
@@ -803,7 +803,7 @@
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"bY" = (
/obj/structure/cable{
d1 = 2;
@@ -817,7 +817,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bZ" = (
/obj/machinery/power/solar,
/obj/structure/cable{
@@ -827,7 +827,7 @@
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"ca" = (
/obj/structure/cable{
d1 = 2;
@@ -846,12 +846,12 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cb" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
/turf/space,
-/area/space)
+/area/space/nearstation)
"cc" = (
/obj/machinery/camera{
c_tag = "Telecomms North Solars";
@@ -859,7 +859,7 @@
network = list("Telecomms")
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"cd" = (
/obj/structure/cable{
d1 = 1;
@@ -868,7 +868,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ce" = (
/obj/structure/cable{
d1 = 4;
@@ -878,7 +878,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cf" = (
/obj/structure/cable{
d1 = 2;
@@ -892,7 +892,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cg" = (
/obj/structure/cable{
d1 = 1;
@@ -901,7 +901,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ch" = (
/obj/structure/cable{
d1 = 1;
@@ -909,7 +909,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ci" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -919,7 +919,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cj" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -931,7 +931,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ck" = (
/obj/structure/grille,
/obj/structure/cable{
@@ -954,7 +954,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cl" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -965,7 +965,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cm" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -976,10 +976,10 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cn" = (
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"co" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -990,7 +990,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cp" = (
/turf/simulated/wall/r_wall,
/area/turret_protected/tcomsat)
@@ -1006,7 +1006,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"cs" = (
/obj/structure/lattice,
/turf/space,
@@ -1619,7 +1619,7 @@
dir = 4
},
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"dP" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -1631,13 +1631,13 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dQ" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dR" = (
/obj/structure/disposaloutlet{
dir = 4
@@ -1646,7 +1646,7 @@
dir = 8
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"dS" = (
/obj/structure/window/reinforced{
dir = 8
@@ -1704,7 +1704,7 @@
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"dY" = (
/obj/structure/cable{
d1 = 1;
@@ -1720,7 +1720,7 @@
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"ea" = (
/obj/machinery/door/window/brigdoor{
dir = 8;
@@ -2043,7 +2043,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"eE" = (
/obj/structure/cable{
d1 = 1;
@@ -2064,7 +2064,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"eF" = (
/obj/structure/cable{
d1 = 2;
@@ -2073,7 +2073,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"eG" = (
/obj/structure/window/reinforced{
dir = 8
@@ -2151,7 +2151,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"eO" = (
/obj/structure/cable{
d1 = 2;
@@ -2173,7 +2173,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"eP" = (
/obj/structure/cable{
d1 = 1;
@@ -2188,7 +2188,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"eQ" = (
/obj/structure/table/wood,
/obj/item/storage/firstaid/brute,
@@ -2334,7 +2334,7 @@
network = list("Telecomms")
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"fd" = (
/obj/structure/window/reinforced{
dir = 4
@@ -2450,7 +2450,7 @@
network = list("Telecomms")
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"fo" = (
/obj/structure/cable{
d1 = 2;
@@ -2464,7 +2464,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"fp" = (
/obj/structure/table/wood,
/obj/item/storage/firstaid/adv,
@@ -2491,7 +2491,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"fr" = (
/obj/structure/window/reinforced{
dir = 8
@@ -2717,7 +2717,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"fJ" = (
/obj/machinery/telecomms/bus/preset_one,
/turf/simulated/floor/plasteel{
@@ -3481,7 +3481,7 @@
},
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hC" = (
/obj/structure/cable{
d1 = 1;
@@ -3790,7 +3790,7 @@
/area/tcommsat/entrance)
"ii" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"ij" = (
/obj/structure/cable,
/obj/machinery/power/terminal{
@@ -3845,7 +3845,7 @@
},
/obj/machinery/power/tracker,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iu" = (
/obj/structure/cable{
d1 = 1;
@@ -3860,7 +3860,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iv" = (
/obj/structure/cable{
d1 = 4;
@@ -3871,7 +3871,7 @@
},
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iw" = (
/obj/machinery/computer/teleporter,
/turf/simulated/floor/plating,
@@ -3895,7 +3895,7 @@
},
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iA" = (
/obj/structure/grille,
/obj/structure/cable{
@@ -3917,7 +3917,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iB" = (
/obj/structure/cable{
d1 = 1;
@@ -3932,7 +3932,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iC" = (
/obj/structure/cable{
d1 = 1;
@@ -3952,7 +3952,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"iD" = (
/obj/machinery/camera{
c_tag = "Telecomms South Solars";
@@ -3960,7 +3960,7 @@
network = list("Telecomms")
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"iF" = (
/turf/simulated/wall/r_wall,
/area/AIsattele)
diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm
index e533422b39a..7e2b21f0e3a 100644
--- a/_maps/map_files/cyberiad/z4.dmm
+++ b/_maps/map_files/cyberiad/z4.dmm
@@ -5,7 +5,7 @@
"ab" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ac" = (
/turf/simulated/wall,
/area/constructionsite/hallway/port)
@@ -554,10 +554,10 @@
/area/constructionsite/hallway/starboard)
"bC" = (
/turf/simulated/wall,
-/area/space)
+/area/space/nearstation)
"bD" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"bE" = (
/obj/machinery/light{
dir = 1;
@@ -850,14 +850,14 @@
tag = "icon-catwalk6";
icon_state = "catwalk6"
},
-/area/space)
+/area/space/nearstation)
"cm" = (
/turf/simulated/floor/plating/airless,
/turf/simulated/floor/plating/airless/catwalk{
tag = "icon-catwalk12";
icon_state = "catwalk12"
},
-/area/space)
+/area/space/nearstation)
"cn" = (
/turf/simulated/floor/plating/airless,
/turf/simulated/floor/plating/airless/catwalk{
@@ -878,7 +878,7 @@
tag = "icon-catwalk10";
icon_state = "catwalk10"
},
-/area/space)
+/area/space/nearstation)
"cq" = (
/obj/structure/inflatable/door,
/turf/simulated/floor/plasteel/airless,
@@ -889,7 +889,7 @@
tag = "icon-catwalk3";
icon_state = "catwalk3"
},
-/area/space)
+/area/space/nearstation)
"cs" = (
/turf/simulated/floor/plating/airless,
/turf/simulated/floor/plating/airless/catwalk{
@@ -1164,7 +1164,7 @@
tag = "icon-catwalk1";
icon_state = "catwalk1"
},
-/area/space)
+/area/space/nearstation)
"cU" = (
/obj/structure/lattice,
/turf/space,
@@ -1208,7 +1208,7 @@
/area/engiestation)
"dc" = (
/turf/simulated/wall/r_wall,
-/area/space)
+/area/space/nearstation)
"dd" = (
/obj/machinery/power/solar,
/obj/structure/cable{
@@ -2024,7 +2024,7 @@
tag = "icon-catwalk9";
icon_state = "catwalk9"
},
-/area/space)
+/area/space/nearstation)
"et" = (
/obj/machinery/door/airlock/maintenance{
req_access_txt = "0";
@@ -2336,7 +2336,7 @@
tag = "icon-catwalk2";
icon_state = "catwalk2"
},
-/area/space)
+/area/space/nearstation)
"fj" = (
/obj/machinery/vending/cola,
/turf/simulated/floor/plasteel{
@@ -2640,7 +2640,7 @@
tag = "icon-catwalk5";
icon_state = "catwalk5"
},
-/area/space)
+/area/space/nearstation)
"fR" = (
/obj/item/lighter/zippo,
/turf/simulated/floor/plating/airless,
@@ -2648,7 +2648,7 @@
tag = "icon-catwalk8";
icon_state = "catwalk8"
},
-/area/space)
+/area/space/nearstation)
"fS" = (
/obj/machinery/shower{
dir = 4;
@@ -2746,7 +2746,7 @@
tag = "icon-catwalk4";
icon_state = "catwalk4"
},
-/area/space)
+/area/space/nearstation)
"gd" = (
/obj/structure/lattice,
/obj/structure/disposaloutlet{
@@ -2756,18 +2756,18 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ge" = (
/obj/structure/disposalpipe/segment{
dir = 8;
icon_state = "pipe-c"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"gf" = (
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"gg" = (
/obj/item/radio/intercom{
dir = 1;
@@ -4077,7 +4077,7 @@
/area/constructionsite/engineering)
"jh" = (
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"ji" = (
/obj/structure/cable{
d1 = 1;
diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm
index a75ca9403e0..59389f18e75 100644
--- a/_maps/map_files/cyberiad/z6.dmm
+++ b/_maps/map_files/cyberiad/z6.dmm
@@ -7,7 +7,7 @@
amount = 2
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ac" = (
/obj/machinery/power/solar/fake,
/turf/simulated/floor/plasteel/airless{
@@ -17,17 +17,17 @@
"ad" = (
/turf/space,
/turf/simulated/floor/plating/airless/catwalk,
-/area/space)
+/area/space/nearstation)
"ae" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"af" = (
/obj/machinery/power/solar/fake,
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"ag" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -41,7 +41,7 @@
icon_state = "brokengrille"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aj" = (
/obj/machinery/power/terminal,
/turf/simulated/floor/plating,
@@ -55,7 +55,7 @@
amount = 1
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"am" = (
/obj/item/extinguisher,
/turf/simulated/floor/plating,
@@ -86,7 +86,7 @@
},
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ap" = (
/obj/structure/cable{
d1 = 1;
@@ -135,12 +135,12 @@
icon_state = "brokengrille"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"au" = (
/obj/structure/lattice,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"av" = (
/obj/structure/grille,
/obj/structure/window/full/shuttle,
@@ -174,7 +174,7 @@
/area/djstation)
"az" = (
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"aA" = (
/obj/structure/grille,
/obj/structure/window/full/shuttle,
@@ -511,7 +511,7 @@
"bj" = (
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bk" = (
/obj/structure/table/reinforced,
/obj/item/ashtray/bronze,
@@ -577,7 +577,7 @@
/obj/structure/lattice,
/obj/structure/grille,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bt" = (
/turf/simulated/wall/mineral/titanium/nodecon,
/area/derelict/arrival)
@@ -1257,7 +1257,7 @@
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
},
-/area/space)
+/area/space/nearstation)
"cJ" = (
/obj/structure/sign/securearea,
/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
@@ -1836,7 +1836,7 @@
"ed" = (
/obj/item/stack/rods,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ee" = (
/obj/structure/grille,
/obj/structure/window/full/shuttle,
@@ -2282,7 +2282,7 @@
"fa" = (
/mob/living/simple_animal/hostile/carp,
/turf/space,
-/area/space)
+/area/space/nearstation)
"fb" = (
/obj/structure/grille,
/obj/structure/window/full/shuttle,
@@ -2510,7 +2510,7 @@
/area/derelict/crew_quarters)
"fC" = (
/turf/simulated/wall/mineral/titanium/nodecon,
-/area/space)
+/area/space/nearstation)
"fD" = (
/obj/machinery/light_switch{
pixel_x = 32;
@@ -2708,7 +2708,7 @@
"fZ" = (
/obj/item/shard,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ga" = (
/obj/structure/toilet{
dir = 8
@@ -3086,7 +3086,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"gV" = (
/obj/structure/coatrack,
/turf/simulated/floor/plasteel{
@@ -3382,7 +3382,7 @@
"hw" = (
/obj/machinery/atmospherics/unary/passive_vent,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hx" = (
/obj/structure/chair/wood/normal,
/turf/simulated/floor/wood{
@@ -4417,7 +4417,7 @@
icon_state = "small"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"ju" = (
/obj/structure/chair{
dir = 4
@@ -4876,7 +4876,7 @@
"kp" = (
/obj/item/stack/ore/uranium,
/turf/space,
-/area/space)
+/area/space/nearstation)
"kq" = (
/obj/structure/table/reinforced,
/obj/item/paper/djstation{
@@ -5221,7 +5221,7 @@
"kZ" = (
/obj/item/stack/ore/iron,
/turf/space,
-/area/space)
+/area/space/nearstation)
"la" = (
/turf/simulated/floor/plasteel{
dir = 8;
@@ -5392,7 +5392,7 @@
dir = 1
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"lu" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -5400,7 +5400,7 @@
icon_state = "swall_f6";
tag = "icon-swall_f6"
},
-/area/space)
+/area/space/nearstation)
"lv" = (
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance,
@@ -5415,7 +5415,7 @@
},
/obj/structure/window/reinforced,
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"lx" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -5423,11 +5423,11 @@
icon_state = "swall_f10";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"ly" = (
/obj/item/stack/tile,
/turf/space,
-/area/space)
+/area/space/nearstation)
"lz" = (
/obj/machinery/light{
dir = 1;
@@ -5454,13 +5454,13 @@
icon_state = "swall11";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"lC" = (
/turf/simulated/shuttle/wall{
icon_state = "swall7";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"lD" = (
/turf/space,
/area/derelict/eva{
@@ -5472,7 +5472,7 @@
icon_state = "swall_f5";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"lF" = (
/turf/space,
/area/syndicate_depot/perimeter)
@@ -5533,13 +5533,13 @@
icon_state = "swall_f9";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"lP" = (
/turf/simulated/shuttle/wall{
icon_state = "swall3";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"lQ" = (
/obj/structure/cable{
d1 = 1;
@@ -5710,19 +5710,19 @@
/obj/item/shard,
/obj/effect/mob_spawn/human/mime/corpse,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mp" = (
/obj/item/broken_bottle,
/obj/effect/mob_spawn/human/mime/corpse,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mq" = (
/obj/item/shard{
icon_state = "medium"
},
/obj/effect/mob_spawn/human/mime/corpse,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mr" = (
/obj/structure/falsewall,
/turf/simulated/floor/plasteel{
@@ -5774,7 +5774,7 @@
icon_state = "swall12";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"my" = (
/turf/simulated/floor/plating/airless/asteroid,
/turf/simulated/shuttle/wall{
@@ -5782,7 +5782,7 @@
icon_state = "swall_f9";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"mz" = (
/obj/structure/closet/crate{
icon_state = "crateopen";
@@ -5791,7 +5791,7 @@
/obj/item/stack/ore/bananium,
/obj/item/grenade/bananade,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mA" = (
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -5814,7 +5814,7 @@
icon_state = "medium"
},
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mE" = (
/obj/structure/cable{
d1 = 1;
@@ -5840,7 +5840,7 @@
tag = "icon-burst_r (WEST)"
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"mG" = (
/obj/structure/shuttle/engine/heater{
tag = "icon-heater (EAST)";
@@ -5851,13 +5851,13 @@
dir = 8
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"mH" = (
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"mI" = (
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"mJ" = (
/obj/effect/decal/cleanable/blood,
/turf/simulated/floor/plasteel{
@@ -5871,7 +5871,7 @@
"mL" = (
/obj/machinery/door/unpowered/shuttle,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mM" = (
/obj/effect/spawner/random_spawners/syndicate/loot,
/turf/simulated/floor/plasteel{
@@ -5900,7 +5900,7 @@
/obj/item/stack/ore/tranquillite,
/obj/item/stack/ore/tranquillite,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mQ" = (
/obj/structure/closet/crate,
/obj/item/stack/ore/tranquillite,
@@ -5911,7 +5911,7 @@
/obj/item/stack/ore/tranquillite,
/obj/item/stack/ore/tranquillite,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mR" = (
/obj/machinery/light{
dir = 1;
@@ -5935,7 +5935,7 @@
"mT" = (
/obj/item/shard,
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"mU" = (
/obj/structure/closet/crate,
/obj/item/stack/ore/bananium,
@@ -5944,25 +5944,25 @@
/obj/item/stack/ore/bananium,
/obj/item/stack/ore/bananium,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mV" = (
/obj/effect/mob_spawn/human/mime/corpse{
name = "Mime Pilot"
},
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mW" = (
/obj/structure/computerframe/HONKputer,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mX" = (
/obj/effect/mob_spawn/human/corpse/clownmili,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mY" = (
/obj/effect/mob_spawn/human/corpse/clownoff,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"mZ" = (
/obj/effect/spawner/random_spawners/syndicate/turret/external,
/turf/simulated/floor/plasteel{
@@ -5979,17 +5979,17 @@
dir = 4
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"nb" = (
/obj/item/shard{
icon_state = "small"
},
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"nc" = (
/obj/item/stack/ore/bananium,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"nd" = (
/obj/item/stack/sheet/metal{
layer = 4.1
@@ -6005,7 +6005,7 @@
tag = "icon-propulsion_l (WEST)"
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"nf" = (
/obj/effect/spawner/random_spawners/syndicate/trap/mine,
/obj/item/stack/sheet/metal{
@@ -6018,14 +6018,14 @@
"ng" = (
/obj/item/paper/clownship,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"nh" = (
/obj/item/shard,
/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"ni" = (
/obj/machinery/light{
dir = 4;
@@ -6039,7 +6039,7 @@
"nj" = (
/obj/effect/mob_spawn/human/clown/corpse,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"nk" = (
/obj/machinery/computer/syndicate_depot/teleporter,
/turf/simulated/floor/plasteel{
@@ -6049,7 +6049,7 @@
"nl" = (
/obj/item/pickaxe,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"nm" = (
/obj/structure/closet/crate,
/obj/item/stack/ore/bananium,
@@ -6057,7 +6057,7 @@
/obj/item/stack/ore/bananium,
/obj/item/stack/ore/bananium,
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"nn" = (
/turf/simulated/floor/plasteel{
dir = 1;
@@ -6080,7 +6080,7 @@
icon_state = "swall_f10";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"nq" = (
/obj/structure/shuttle/engine/propulsion{
dir = 4;
@@ -6093,7 +6093,7 @@
tag = "icon-propulsion_l (WEST)"
},
/turf/simulated/shuttle/plating,
-/area/space)
+/area/space/nearstation)
"nr" = (
/obj/effect/decal/warning_stripes/red,
/obj/structure/window/plasmareinforced{
@@ -6267,13 +6267,13 @@
dir = 8
},
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"nO" = (
/obj/effect/mob_spawn/human/clown/corpse{
name = "Clown Pilot"
},
/turf/simulated/floor/plasteel/airless,
-/area/space)
+/area/space/nearstation)
"nP" = (
/obj/structure/dispenser,
/turf/simulated/floor/plasteel{
@@ -7454,7 +7454,7 @@
/obj/effect/landmark/burnturf,
/obj/structure/grille/broken,
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"qI" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -8047,7 +8047,7 @@
/turf/simulated/wall/mineral/titanium/nodecon/nosmooth{
icon_state = "swall_f10"
},
-/area/space)
+/area/space/nearstation)
"rM" = (
/turf/simulated/floor/plasteel/airless{
dir = 5;
@@ -8965,7 +8965,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"tA" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -10583,7 +10583,7 @@
"wz" = (
/obj/item/stack/sheet/metal,
/turf/space,
-/area/space)
+/area/space/nearstation)
"wC" = (
/obj/effect/landmark/burnturf,
/obj/machinery/light/small{
@@ -11119,7 +11119,7 @@
name = "I PISS ON YOU!"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"yo" = (
/obj/structure/chair/comfy/brown{
dir = 8
@@ -11325,7 +11325,7 @@
max_amount = 30
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"yS" = (
/obj/machinery/door/airlock/external{
frequency = 1501;
@@ -11489,7 +11489,7 @@
icon_state = "small"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"zt" = (
/turf/simulated/wall,
/area/derelict/teleporter)
@@ -11647,7 +11647,7 @@
icon_state = "swall_f5";
dir = 2
},
-/area/space)
+/area/space/nearstation)
"zR" = (
/obj/machinery/portable_atmospherics/canister/toxins,
/obj/machinery/light/small{
diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm
index af8d04699dc..1ee940615a5 100644
--- a/_maps/map_files/generic/z5.dmm
+++ b/_maps/map_files/generic/z5.dmm
@@ -39,7 +39,7 @@
"ag" = (
/obj/spacepod/random,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ah" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -57,7 +57,7 @@
"aj" = (
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"ak" = (
/turf/simulated/mineral/random/high_chance,
/area/mine/dangerous/unexplored)
@@ -104,7 +104,7 @@
icon_state = "pwall";
dir = 1
},
-/area/space)
+/area/mine/abandoned)
"ar" = (
/turf/simulated/floor/plating/airless,
/turf/simulated/shuttle/wall{
@@ -143,7 +143,7 @@
tag = "icon-floor2";
icon_state = "floor2"
},
-/area/space)
+/area/mine/abandoned)
"aw" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8;
@@ -156,7 +156,7 @@
tag = ""
},
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/mine/abandoned)
"ax" = (
/obj/machinery/door/airlock/hatch,
/turf/simulated/shuttle/floor{
@@ -172,7 +172,7 @@
tag = "icon-floor2";
icon_state = "floor2"
},
-/area/space)
+/area/mine/abandoned)
"az" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -223,7 +223,7 @@
icon_state = "pwall";
dir = 5
},
-/area/space)
+/area/mine/abandoned)
"aH" = (
/obj/structure/alien/weeds,
/turf/simulated/floor/plating/airless{
@@ -236,7 +236,7 @@
icon_state = "medium"
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"aJ" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -252,7 +252,7 @@
icon_state = "pwall";
dir = 6
},
-/area/space)
+/area/mine/abandoned)
"aL" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -260,7 +260,7 @@
icon_state = "pwall";
dir = 9
},
-/area/space)
+/area/mine/abandoned)
"aM" = (
/obj/structure/grille,
/obj/structure/window/reinforced{
@@ -305,7 +305,7 @@
/obj/item/stack/rods,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"aS" = (
/obj/item/shard,
/obj/item/stack/rods,
@@ -411,7 +411,7 @@
/obj/item/shard,
/obj/structure/lattice,
/turf/space,
-/area/space)
+/area/space/nearstation)
"bj" = (
/obj/machinery/power/terminal{
dir = 4
@@ -1564,13 +1564,13 @@
/area/mine/abandoned)
"eg" = (
/turf/simulated/mineral/random/labormineral,
-/area/space)
+/area/space/nearstation)
"eh" = (
/turf/simulated/wall/r_wall,
/area/mine/dangerous/explored)
"ei" = (
/turf/simulated/mineral/random,
-/area/space)
+/area/space/nearstation)
"ej" = (
/obj/structure/girder/displaced,
/turf/simulated/floor/plating/airless{
@@ -2494,7 +2494,7 @@
d2 = 4
},
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"gb" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -2526,7 +2526,7 @@
icon_state = "0-8"
},
/turf/simulated/floor/plating,
-/area/space)
+/area/space/nearstation)
"ge" = (
/obj/machinery/computer/shuttle/labor/one_way,
/obj/structure/cable{
@@ -3099,10 +3099,10 @@
/area/mine/west_outpost)
"hu" = (
/turf/simulated/floor/plating/airless,
-/area/space)
+/area/space/nearstation)
"hv" = (
/turf/simulated/mineral,
-/area/space)
+/area/space/nearstation)
"hw" = (
/obj/machinery/computer/mech_bay_power_console,
/obj/structure/window/reinforced{
@@ -4315,12 +4315,6 @@
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel,
/area/mine/eva)
-"kh" = (
-/turf/simulated/floor/plating/airless{
- icon_state = "asteroidwarning";
- dir = 5
- },
-/area/space)
"ki" = (
/obj/machinery/light,
/turf/simulated/floor/plating/airless/asteroid,
@@ -4598,7 +4592,7 @@
icon_state = "asteroidwarning";
dir = 4
},
-/area/space)
+/area/mine/dangerous/explored)
"kR" = (
/obj/machinery/door/airlock/external{
frequency = 1379;
@@ -4774,7 +4768,7 @@
/area/mine/living_quarters)
"ll" = (
/turf/simulated/floor/plating/airless/asteroid,
-/area/space)
+/area/space/nearstation)
"lm" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/door/firedoor,
@@ -5368,12 +5362,6 @@
},
/turf/simulated/floor/plasteel,
/area/mine/eva)
-"mx" = (
-/turf/simulated/floor/plating/airless{
- icon_state = "asteroidwarning";
- dir = 6
- },
-/area/space)
"my" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden,
@@ -6702,7 +6690,7 @@
dir = 4
},
/turf/space,
-/area/space)
+/area/space/nearstation)
"pj" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/obj/effect/decal/warning_stripes/blue/hollow,
@@ -52246,11 +52234,11 @@ bV
bV
bV
bV
-ll
-kh
+bV
+dP
kQ
-mx
-ll
+dK
+bV
mQ
nj
nj
@@ -52503,11 +52491,11 @@ bV
bV
bV
bV
-ll
-ll
-ll
-ll
-ll
+bV
+bV
+bV
+bV
+bV
bV
bV
bV
diff --git a/_maps/map_files/shuttles/admin_admin.dmm b/_maps/map_files/shuttles/admin_admin.dmm
new file mode 100644
index 00000000000..fda5ff55056
--- /dev/null
+++ b/_maps/map_files/shuttles/admin_admin.dmm
@@ -0,0 +1,1092 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/space,
+/area/space)
+"ab" = (
+/turf/space,
+/turf/simulated/shuttle/wall{
+ dir = 8;
+ icon_state = "diagonalWall3"
+ },
+/area/shuttle/administration)
+"ac" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "wall3"
+ },
+/area/shuttle/administration)
+"ad" = (
+/obj/machinery/door/airlock/external{
+ id_tag = "s_docking_airlock";
+ name = "Shuttle Hatch";
+ req_access_txt = "101"
+ },
+/obj/structure/fans/tiny,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ae" = (
+/obj/machinery/door/airlock/external{
+ id_tag = "s_docking_airlock";
+ name = "Shuttle Hatch";
+ req_access_txt = "101"
+ },
+/obj/docking_port/mobile{
+ dir = 2;
+ dwidth = 8;
+ height = 15;
+ id = "admin";
+ name = "admin";
+ roundstart_move = null;
+ timid = 1;
+ width = 18
+ },
+/obj/structure/fans/tiny,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"af" = (
+/turf/space,
+/turf/simulated/shuttle/wall{
+ dir = 1;
+ icon_state = "diagonalWall3"
+ },
+/area/shuttle/administration)
+"ag" = (
+/obj/machinery/vending/boozeomat,
+/turf/simulated/shuttle/wall{
+ icon_state = "wall3"
+ },
+/area/shuttle/administration)
+"ah" = (
+/obj/structure/table/reinforced,
+/obj/machinery/chem_dispenser/beer,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ai" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/drinkingglasses,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aj" = (
+/obj/structure/table/reinforced,
+/obj/machinery/chem_dispenser/soda,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ak" = (
+/turf/simulated/shuttle/wall{
+ dir = 4;
+ icon_state = "wall3"
+ },
+/area/shuttle/administration)
+"al" = (
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "blast door control";
+ pixel_x = -30;
+ req_access_txt = "101"
+ },
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"am" = (
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"an" = (
+/obj/machinery/cell_charger,
+/obj/structure/table,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ao" = (
+/obj/item/storage/toolbox/mechanical,
+/obj/item/multitool,
+/obj/structure/table,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ap" = (
+/obj/structure/table,
+/obj/machinery/recharger{
+ pixel_y = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aq" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (EAST)";
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ar" = (
+/obj/machinery/door/poddoor/preopen{
+ id_tag = "adminshuttleblast";
+ name = "Blast Doors";
+ req_access_txt = "101"
+ },
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "General Access";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"as" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (WEST)";
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"at" = (
+/obj/item/stack/sheet/metal,
+/obj/structure/table,
+/obj/item/stack/sheet/glass{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"au" = (
+/obj/machinery/mecha_part_fabricator/upgraded,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"av" = (
+/obj/machinery/kitchen_machine/microwave/upgraded,
+/obj/structure/table,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aw" = (
+/obj/machinery/door/window/northright{
+ name = "bar"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ax" = (
+/obj/structure/table,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ay" = (
+/obj/item/ashtray/glass,
+/obj/structure/table,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"az" = (
+/obj/item/storage/fancy/cigarettes/dromedaryco,
+/obj/item/lighter/zippo{
+ pixel_x = 5
+ },
+/obj/structure/table,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aA" = (
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "blast door control";
+ pixel_x = -30;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aB" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Workshop";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aC" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 8;
+ icon_state = "propulsion_l";
+ tag = "icon-propulsion_l (EAST)"
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"aD" = (
+/obj/structure/shuttle/engine/heater{
+ tag = "icon-heater (WEST)";
+ icon_state = "heater";
+ dir = 8
+ },
+/obj/structure/window/plasmareinforced{
+ color = "#FF0000";
+ dir = 4
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"aE" = (
+/obj/structure/chair/stool/bar,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aF" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aG" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aH" = (
+/obj/machinery/recharge_station/upgraded,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aI" = (
+/obj/machinery/autolathe/upgraded{
+ hacked = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aJ" = (
+/obj/structure/dispenser,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aK" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 8;
+ icon_state = "propulsion_r";
+ tag = "icon-propulsion_r (EAST)"
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"aL" = (
+/obj/machinery/door/airlock/public/glass,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aM" = (
+/turf/space,
+/turf/simulated/shuttle/wall{
+ dir = 4;
+ icon_state = "diagonalWall3"
+ },
+/area/shuttle/administration)
+"aN" = (
+/turf/space,
+/turf/simulated/shuttle/wall{
+ icon_state = "diagonalWall3"
+ },
+/area/shuttle/administration)
+"aO" = (
+/obj/machinery/vending/snack,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aP" = (
+/obj/machinery/vending/cola,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aQ" = (
+/obj/machinery/vending/coffee,
+/obj/machinery/light/spot,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aR" = (
+/obj/machinery/vending/cigarette,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aS" = (
+/obj/machinery/computer/card,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aT" = (
+/obj/machinery/computer/communications,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aU" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 4;
+ icon_state = "open";
+ id_tag = "adminshuttleshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (WEST)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/shuttle/administration)
+"aV" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "Blast door control";
+ pixel_x = -5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/machinery/door_control{
+ id = "adminshuttleshutters";
+ name = "Shutter control";
+ pixel_x = 5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aW" = (
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aX" = (
+/obj/machinery/computer/shuttle/admin{
+ name = "NTV Argos shuttle console"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aY" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 4;
+ icon_state = "open";
+ id_tag = "adminshuttleshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/shuttle/window{
+ dir = 4;
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_mid";
+ tag = "icon-window5 (EAST)"
+ },
+/turf/simulated/floor/plating,
+/area/shuttle/administration)
+"aZ" = (
+/obj/machinery/dna_scannernew/upgraded,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ba" = (
+/obj/machinery/computer/cloning,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bb" = (
+/obj/machinery/clonepod/upgraded,
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bc" = (
+/obj/machinery/computer/scan_consolenew,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bd" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Bridge";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"be" = (
+/obj/machinery/computer/camera_advanced/shuttle_docker/admin{
+ name = "NTV Argos shuttle navigation computer"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bf" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 4;
+ icon_state = "open";
+ id_tag = "adminshuttleshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (EAST)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/shuttle/administration)
+"bg" = (
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bh" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Medbay";
+ opacity = 1;
+ req_access_txt = "101"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bi" = (
+/obj/machinery/bodyscanner,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bj" = (
+/obj/machinery/body_scanconsole,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bk" = (
+/obj/structure/window/plasmareinforced{
+ color = "#FF0000";
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bl" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (EAST)";
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bm" = (
+/obj/machinery/sleeper/upgraded{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bn" = (
+/obj/machinery/chem_master,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bo" = (
+/obj/machinery/chem_dispenser,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bp" = (
+/obj/machinery/door/airlock/centcom{
+ id_tag = "adminshuttle";
+ name = "Holding Cell";
+ opacity = 1;
+ req_access_txt = "104"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bq" = (
+/obj/machinery/door/window/brigdoor/westleft{
+ color = "#d70000";
+ req_access_txt = "104"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"br" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bs" = (
+/obj/machinery/iv_drip,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bt" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (EAST)";
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bu" = (
+/obj/structure/table,
+/obj/item/storage/box/handcuffs,
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (WEST)";
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bv" = (
+/obj/structure/window/plasmareinforced{
+ color = "#FF0000";
+ dir = 8
+ },
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bw" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bx" = (
+/obj/structure/table,
+/obj/item/bonegel,
+/obj/item/bonesetter,
+/obj/item/hemostat,
+/obj/item/cautery,
+/obj/item/surgicaldrill,
+/obj/item/circular_saw,
+/obj/item/scalpel,
+/obj/item/retractor,
+/obj/item/FixOVein,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"by" = (
+/obj/machinery/optable,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bz" = (
+/obj/machinery/vending/medical,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bA" = (
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bB" = (
+/obj/structure/table,
+/obj/item/storage/lockbox/mindshield,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"bC" = (
+/obj/structure/table,
+/obj/item/storage/box/chemimp{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/obj/item/storage/box/trackimp,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+
+(1,1,1) = {"
+aa
+aa
+aa
+ab
+aC
+aK
+aN
+aa
+ab
+aC
+aK
+aN
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+aa
+ab
+ac
+aD
+aD
+ac
+ac
+ac
+aD
+aD
+ac
+aN
+aa
+aa
+aa
+aa
+aa
+"}
+(3,1,1) = {"
+aa
+ab
+ac
+av
+am
+am
+aO
+ac
+aZ
+bg
+bg
+bm
+ac
+aN
+aa
+aa
+aa
+aa
+"}
+(4,1,1) = {"
+ab
+ag
+am
+aw
+am
+am
+aP
+ac
+ba
+bg
+bg
+bg
+bs
+ac
+aN
+aa
+aa
+aa
+"}
+(5,1,1) = {"
+ac
+ah
+am
+ax
+aE
+am
+aQ
+ac
+bb
+bg
+bg
+bg
+bg
+bx
+ac
+aa
+aa
+aa
+"}
+(6,1,1) = {"
+ac
+ai
+am
+ay
+aE
+am
+aR
+ac
+aZ
+bg
+bi
+bn
+bg
+by
+ac
+aa
+aa
+aa
+"}
+(7,1,1) = {"
+ac
+aj
+aq
+az
+aE
+am
+am
+ac
+bc
+bg
+bj
+bo
+bt
+bz
+ac
+aa
+aa
+aa
+"}
+(8,1,1) = {"
+ac
+ak
+ak
+ak
+ak
+aL
+ak
+ak
+ak
+bh
+ak
+ak
+ak
+ak
+ac
+aa
+aa
+aa
+"}
+(9,1,1) = {"
+ad
+al
+ar
+aA
+am
+am
+am
+as
+am
+am
+am
+am
+am
+am
+ac
+aa
+aa
+aa
+"}
+(10,1,1) = {"
+ae
+am
+ar
+am
+am
+am
+am
+am
+am
+am
+am
+am
+am
+bA
+ac
+aa
+aa
+aa
+"}
+(11,1,1) = {"
+ac
+ak
+ak
+aB
+ak
+ak
+ak
+bd
+ak
+ak
+ak
+bp
+ak
+ak
+ac
+aa
+aa
+aa
+"}
+(12,1,1) = {"
+ac
+an
+as
+am
+aF
+ac
+aS
+am
+am
+ac
+am
+am
+bu
+bB
+ac
+aa
+aa
+aa
+"}
+(13,1,1) = {"
+ac
+ao
+am
+am
+aG
+ac
+aV
+aW
+aW
+ac
+am
+am
+am
+bC
+ac
+aa
+aa
+aa
+"}
+(14,1,1) = {"
+ac
+ap
+am
+am
+aH
+ac
+aT
+aX
+be
+ac
+am
+am
+am
+am
+ac
+aa
+aa
+aa
+"}
+(15,1,1) = {"
+af
+ac
+at
+am
+am
+ac
+aU
+aY
+bf
+ac
+bk
+bq
+bv
+ac
+aM
+aa
+aa
+aa
+"}
+(16,1,1) = {"
+aa
+ac
+au
+am
+aI
+ac
+aa
+aa
+aa
+ac
+am
+am
+bw
+ac
+aa
+aa
+aa
+aa
+"}
+(17,1,1) = {"
+aa
+af
+ac
+aq
+aJ
+ac
+aa
+aa
+aa
+ac
+bl
+br
+ac
+aM
+aa
+aa
+aa
+aa
+"}
+(18,1,1) = {"
+aa
+aa
+af
+ak
+ak
+aM
+aa
+aa
+aa
+af
+ak
+ak
+aM
+aa
+aa
+aa
+aa
+aa
+"}
+(19,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
diff --git a/_maps/map_files/shuttles/admin_hospital.dmm b/_maps/map_files/shuttles/admin_hospital.dmm
new file mode 100644
index 00000000000..de3cacaf413
--- /dev/null
+++ b/_maps/map_files/shuttles/admin_hospital.dmm
@@ -0,0 +1,1661 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/space,
+/area/space)
+"ab" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall_s6";
+ dir = 2
+ },
+/area/shuttle/administration)
+"ac" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall12";
+ dir = 2
+ },
+/area/shuttle/administration)
+"ad" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 2
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 1;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"ae" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_mid";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_mid";
+ dir = 2
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 1;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"af" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (NORTH)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 1
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 1;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"ag" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall14";
+ dir = 2
+ },
+/area/shuttle/administration)
+"ah" = (
+/obj/structure/sign/redcross{
+ desc = "The Star of Life, a symbol of Medical Aid.";
+ icon_state = "lifestar";
+ name = "NHV Asclepius"
+ },
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall8";
+ tag = "icon-swall12"
+ },
+/area/shuttle/administration)
+"ai" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external,
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "asclblast";
+ name = "Blast Door";
+ opacity = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aj" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external,
+/obj/docking_port/mobile{
+ dir = 2;
+ dwidth = 9;
+ height = 18;
+ id = "admin";
+ name = "hospital";
+ roundstart_move = "cc_bay_1";
+ timid = 1;
+ width = 19
+ },
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "asclblast";
+ name = "Blast Door";
+ opacity = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ak" = (
+/obj/structure/sign/redcross{
+ desc = "The Star of Life, a symbol of Medical Aid.";
+ icon_state = "lifestar";
+ name = "NHV Asclepius"
+ },
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall14";
+ icon_state = "swall4";
+ dir = 2
+ },
+/area/shuttle/administration)
+"al" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 1;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/shuttle/window{
+ tag = "icon-window5_mid";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_mid";
+ dir = 2
+ },
+/turf/space,
+/area/shuttle/administration)
+"am" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 1;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (NORTH)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 1
+ },
+/turf/space,
+/area/shuttle/administration)
+"an" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall_s10";
+ dir = 2
+ },
+/area/shuttle/administration)
+"ao" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall3";
+ icon_state = "swall3";
+ dir = 2
+ },
+/area/shuttle/administration)
+"ap" = (
+/obj/machinery/chem_master,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aq" = (
+/obj/machinery/chem_dispenser,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ar" = (
+/obj/machinery/chem_heater,
+/obj/machinery/light{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"as" = (
+/obj/structure/closet/secure_closet/reagents,
+/obj/item/storage/bag/chemistry,
+/obj/item/storage/bag/chemistry,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"at" = (
+/obj/structure/closet/secure_closet/chemical,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"au" = (
+/obj/structure/sign/chemistry{
+ pixel_y = 1
+ },
+/turf/simulated/shuttle/wall{
+ icon_state = "swall3";
+ dir = 2
+ },
+/area/shuttle/administration)
+"av" = (
+/obj/structure/chair{
+ tag = "icon-chair (EAST)";
+ icon_state = "chair";
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aw" = (
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ax" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/camera{
+ dir = 8;
+ icon_state = "camera";
+ name = "NHV Asclepius Lobby";
+ network = list("NHV Asclepius")
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ay" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/glass/beaker/cryoxadone,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"az" = (
+/obj/machinery/clonepod{
+ biomass = 300
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aA" = (
+/obj/machinery/computer/cloning,
+/obj/machinery/light{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aB" = (
+/obj/machinery/dna_scannernew,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aC" = (
+/obj/machinery/atmospherics/unary/cryo_cell,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aD" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall7";
+ dir = 2
+ },
+/area/shuttle/administration)
+"aE" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall3";
+ dir = 2
+ },
+/area/shuttle/administration)
+"aF" = (
+/obj/structure/reagent_dispensers/fueltank/chem{
+ pixel_x = -32
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aG" = (
+/obj/structure/chair/office/light{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aH" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/window/brigdoor/westleft{
+ req_access_txt = "33"
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aI" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aJ" = (
+/obj/structure/sign/nosmoking_2,
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall1";
+ icon_state = "swall1";
+ dir = 2
+ },
+/area/shuttle/administration)
+"aK" = (
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aL" = (
+/obj/structure/shuttle/engine/heater{
+ icon_state = "heater";
+ dir = 4
+ },
+/obj/structure/window/plasmareinforced{
+ dir = 8
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"aM" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 4;
+ icon_state = "propulsion"
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"aN" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/dropper,
+/obj/item/reagent_containers/spray/cleaner{
+ desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'";
+ name = "Chemistry Cleaner"
+ },
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aO" = (
+/obj/structure/closet/crate/can,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aP" = (
+/obj/structure/shuttle/window,
+/obj/structure/grille,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aQ" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aR" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aS" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/syringes,
+/obj/item/storage/box/beakers,
+/obj/machinery/reagentgrinder,
+/obj/machinery/camera{
+ dir = 4;
+ icon_state = "camera";
+ name = "NHV Asclepius Chemistry";
+ network = list("NHV Asclepius")
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aT" = (
+/obj/machinery/door/airlock/shuttle/glass{
+ name = "Chemistry";
+ req_access_txt = "33"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aU" = (
+/obj/machinery/door/airlock/shuttle/glass,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aV" = (
+/obj/machinery/camera{
+ dir = 8;
+ icon_state = "camera";
+ name = "NHV Asclepius Cloning";
+ network = list("NHV Asclepius")
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aW" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall_s9";
+ dir = 2
+ },
+/area/shuttle/administration)
+"aX" = (
+/obj/machinery/iv_drip,
+/obj/item/reagent_containers/iv_bag,
+/obj/structure/reagent_dispensers/fueltank/chem{
+ pixel_x = -32
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aY" = (
+/obj/structure/chair/office/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"aZ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 6
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ba" = (
+/obj/machinery/chem_heater,
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bb" = (
+/obj/machinery/status_display,
+/turf/simulated/shuttle/wall{
+ icon_state = "swall3";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bc" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bd" = (
+/obj/machinery/vending/coffee,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"be" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/spray/cleaner,
+/obj/item/storage/box/gloves,
+/obj/item/storage/box/masks,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bf" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bg" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/firstaid,
+/obj/item/storage/firstaid,
+/obj/item/storage/firstaid/adv,
+/obj/item/storage/firstaid/adv,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bh" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/belt/medical,
+/obj/item/storage/belt/medical,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/glasses/hud/health,
+/obj/item/clothing/glasses/hud/health,
+/obj/item/clothing/glasses/hud/health,
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bi" = (
+/obj/machinery/atmospherics/unary/cold_sink/freezer{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bj" = (
+/obj/machinery/smartfridge/medbay,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bk" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall13";
+ icon_state = "swall13";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bl" = (
+/obj/structure/shuttle/window,
+/obj/structure/grille,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall8";
+ tag = "icon-swall12"
+ },
+/area/shuttle/administration)
+"bm" = (
+/obj/structure/shuttle/window,
+/obj/structure/grille,
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall14";
+ icon_state = "swall4";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bn" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall15";
+ icon_state = "swall15";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bo" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (WEST)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 8
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 8;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"bp" = (
+/obj/machinery/computer/pandemic,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bq" = (
+/obj/machinery/camera{
+ c_tag = "Tech Storage";
+ dir = 2;
+ name = "NHV Asclepius Command Center";
+ network = list("NHV Asclepius")
+ },
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/door_control{
+ dir = 4;
+ id = "Asclshutters";
+ name = "remote shutter control";
+ pixel_x = -5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/machinery/keycard_auth{
+ pixel_y = 24
+ },
+/obj/machinery/door_control{
+ dir = 2;
+ id = "asclblast";
+ name = "blast door control";
+ pixel_x = 5;
+ pixel_y = 35;
+ pixel_z = 0;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"br" = (
+/obj/machinery/recharger/wallcharger{
+ pixel_y = 25
+ },
+/obj/machinery/recharger/wallcharger{
+ pixel_y = 35
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bs" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall1";
+ icon_state = "swall1";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bt" = (
+/obj/structure/sink{
+ icon_state = "sink";
+ dir = 8;
+ pixel_x = -12;
+ pixel_y = 2
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bu" = (
+/obj/machinery/light{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/structure/closet/walllocker/emerglocker{
+ pixel_y = 32
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bv" = (
+/obj/machinery/vending/medical,
+/obj/machinery/light{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bw" = (
+/obj/structure/table/tray,
+/obj/item/stack/medical/bruise_pack/advanced,
+/obj/item/scalpel,
+/obj/item/hemostat,
+/obj/item/retractor,
+/obj/item/circular_saw,
+/obj/item/bonegel,
+/obj/item/bonesetter,
+/obj/item/cautery,
+/obj/item/FixOVein,
+/obj/item/surgicaldrill,
+/obj/item/storage/backpack/duffel/medical,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bx" = (
+/obj/machinery/optable,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"by" = (
+/obj/machinery/computer/operating,
+/obj/machinery/light{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bz" = (
+/obj/structure/closet/secure_closet/medical3,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bA" = (
+/obj/structure/closet/secure_closet/medical2,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bB" = (
+/obj/structure/shuttle/window{
+ dir = 4;
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_mid";
+ tag = "icon-window5 (EAST)"
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 8;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"bC" = (
+/obj/machinery/computer/shuttle/admin{
+ name = "NHV Asclepius shuttle console"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bD" = (
+/obj/machinery/door/airlock/command{
+ name = "Command Center";
+ req_access = null;
+ req_access_txt = "19"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bE" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bF" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall1";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bG" = (
+/obj/machinery/camera{
+ dir = 4;
+ icon_state = "camera";
+ name = "NHV Asclepius OR 1";
+ network = list("NHV Asclepius")
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bH" = (
+/obj/machinery/computer/camera_advanced/shuttle_docker/admin{
+ name = "NHV Asclepius navigation computer"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bI" = (
+/obj/machinery/door/airlock/shuttle/glass{
+ name = "Operating Room";
+ req_access = null;
+ req_access_txt = "45"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bJ" = (
+/obj/structure/sink{
+ dir = 4;
+ icon_state = "sink";
+ pixel_x = 11;
+ pixel_y = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bK" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (EAST)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 4
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 8;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"bL" = (
+/obj/machinery/computer/communications{
+ name = "NHV Asclepius Communications Console"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bM" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bN" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall2";
+ icon_state = "swall2";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bO" = (
+/obj/machinery/sleeper,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bP" = (
+/obj/machinery/sleeper{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bQ" = (
+/obj/structure/bed{
+ name = "Triage: High Priority"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bR" = (
+/obj/machinery/bodyscanner,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bS" = (
+/obj/machinery/body_scanconsole,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bT" = (
+/obj/machinery/light,
+/obj/structure/closet/crate/can,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bU" = (
+/obj/item/reagent_containers/spray/cleaner{
+ desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back.";
+ name = "Surgery Cleaner"
+ },
+/obj/structure/table/glass,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bV" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/obj/machinery/iv_drip,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"bW" = (
+/obj/machinery/status_display,
+/turf/simulated/shuttle/wall{
+ icon_state = "swall12";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bX" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall13";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bY" = (
+/obj/structure/sign/examroom,
+/turf/simulated/shuttle/wall{
+ icon_state = "swall12";
+ dir = 2
+ },
+/area/shuttle/administration)
+"bZ" = (
+/obj/machinery/defibrillator_mount/loaded,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall8";
+ tag = "icon-swall12"
+ },
+/area/shuttle/administration)
+"ca" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/camera{
+ dir = 5;
+ icon_state = "camera";
+ name = "NHV Asclepius Central";
+ network = list("NHV Asclepius")
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cb" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/obj/structure/bed{
+ name = "Triage: High Priority"
+ },
+/obj/machinery/iv_drip,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cc" = (
+/obj/structure/sign/nosmoking_2,
+/turf/simulated/shuttle/wall{
+ icon_state = "swall7";
+ dir = 2
+ },
+/area/shuttle/administration)
+"cd" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall11";
+ dir = 2
+ },
+/area/shuttle/administration)
+"ce" = (
+/obj/machinery/portable_atmospherics/canister/oxygen{
+ name = "Canister: \[O2] (CRYO)"
+ },
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cf" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/glass/beaker/cryoxadone,
+/obj/item/reagent_containers/glass/beaker/cryoxadone,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cg" = (
+/obj/machinery/portable_atmospherics/canister/oxygen{
+ name = "Canister: \[O2] (CRYO)"
+ },
+/obj/machinery/light{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/machinery/camera{
+ dir = 4;
+ icon_state = "camera";
+ name = "NHV Asclepius Cryo";
+ network = list("NHV Asclepius")
+ },
+/obj/machinery/atmospherics/unary/portables_connector,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ch" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/spray/cleaner{
+ desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back.";
+ name = "Surgery Cleaner"
+ },
+/obj/machinery/cell_charger,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ci" = (
+/obj/structure/bed{
+ name = "Triage: High Priority"
+ },
+/obj/machinery/iv_drip,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cj" = (
+/obj/machinery/atmospherics/unary/cold_sink/freezer,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ck" = (
+/obj/machinery/camera{
+ dir = 4;
+ icon_state = "camera";
+ name = "NHV Asclepius OR 2";
+ network = list("NHV Asclepius")
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cl" = (
+/obj/structure/closet/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/suit/radiation,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cm" = (
+/obj/structure/closet/l3closet,
+/obj/item/clothing/head/bio_hood,
+/obj/item/clothing/head/bio_hood,
+/obj/item/clothing/head/bio_hood,
+/obj/item/clothing/suit/bio_suit,
+/obj/item/clothing/suit/bio_suit,
+/obj/item/clothing/suit/bio_suit,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cn" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/item/clothing/head/beret/med,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"co" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cp" = (
+/obj/machinery/suit_storage_unit/cmo/secure/sec_storage,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cq" = (
+/obj/machinery/light,
+/obj/machinery/suit_storage_unit/cmo/secure/sec_storage,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cr" = (
+/obj/structure/dispenser/oxygen,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cs" = (
+/obj/machinery/vending/medical,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"ct" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall_s5";
+ dir = 2
+ },
+/area/shuttle/administration)
+"cu" = (
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 5;
+ icon_state = "intact"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cv" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cw" = (
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"cx" = (
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 9;
+ icon_state = "intact"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/administration)
+"hL" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_mid";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_mid";
+ dir = 2
+ },
+/obj/structure/grille,
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/turf/space,
+/area/shuttle/administration)
+"qa" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 2
+ },
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/turf/space,
+/area/shuttle/administration)
+"Kq" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 2
+ },
+/obj/structure/grille,
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/turf/space,
+/area/shuttle/administration)
+"Vi" = (
+/obj/structure/shuttle/window{
+ tag = "icon-window5_end (NORTH)";
+ icon = 'icons/turf/shuttle.dmi';
+ icon_state = "window5_end";
+ dir = 1
+ },
+/obj/structure/grille,
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/turf/space,
+/area/shuttle/administration)
+
+(1,1,1) = {"
+ab
+ao
+aE
+aE
+aE
+aE
+aE
+aD
+bo
+bB
+bB
+bK
+aD
+aE
+aE
+aE
+aE
+ct
+"}
+(2,1,1) = {"
+ac
+ap
+aF
+aN
+aS
+aX
+ap
+ac
+bp
+bC
+bH
+bL
+ac
+cg
+cu
+aw
+cl
+ac
+"}
+(3,1,1) = {"
+ad
+aq
+aG
+aw
+aw
+aY
+aq
+ac
+bq
+aR
+aR
+bM
+ac
+aC
+cv
+aw
+cm
+qa
+"}
+(4,1,1) = {"
+ae
+ar
+aw
+aw
+aw
+aw
+ba
+ac
+br
+aw
+aw
+aw
+bW
+cf
+cw
+aw
+cn
+hL
+"}
+(5,1,1) = {"
+af
+as
+aw
+aw
+aw
+aw
+aw
+ag
+bs
+bD
+aP
+bN
+bX
+aC
+cv
+aw
+co
+Vi
+"}
+(6,1,1) = {"
+ac
+at
+aw
+aO
+aw
+aw
+aw
+bj
+bt
+aw
+aw
+bO
+bY
+cj
+cx
+aw
+cp
+ac
+"}
+(7,1,1) = {"
+ag
+au
+aH
+aP
+aT
+aP
+bb
+bk
+bu
+aw
+aw
+bP
+bZ
+ch
+aw
+aw
+cq
+ac
+"}
+(8,1,1) = {"
+ah
+av
+aw
+aQ
+aw
+aQ
+bc
+bl
+aw
+aw
+aw
+aw
+ca
+aw
+aw
+aw
+cr
+ac
+"}
+(9,1,1) = {"
+ai
+aw
+aw
+aw
+aw
+aw
+aw
+aU
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bR
+ac
+"}
+(10,1,1) = {"
+aj
+aw
+aw
+aw
+aw
+aw
+aw
+aU
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bS
+ac
+"}
+(11,1,1) = {"
+ak
+ax
+aI
+aR
+aw
+aR
+bd
+bm
+bv
+bE
+aw
+bQ
+cb
+ci
+bQ
+aw
+cs
+ac
+"}
+(12,1,1) = {"
+ag
+ao
+aJ
+aP
+aU
+aP
+bb
+bn
+aP
+bF
+bI
+bN
+cc
+aP
+bF
+bI
+bN
+bX
+"}
+(13,1,1) = {"
+ac
+ay
+aw
+aw
+aw
+aw
+be
+ac
+bw
+bG
+aw
+bR
+ac
+bw
+ck
+aw
+bR
+ac
+"}
+(14,1,1) = {"
+ad
+az
+aw
+aw
+aw
+aw
+bg
+ac
+bx
+aw
+aw
+bS
+ac
+bx
+aw
+aw
+bS
+Kq
+"}
+(15,1,1) = {"
+al
+aA
+aw
+aw
+aw
+aw
+bh
+ac
+by
+aw
+aw
+bT
+ac
+by
+aw
+aw
+bT
+hL
+"}
+(16,1,1) = {"
+am
+aB
+aw
+aw
+aw
+aZ
+bi
+ac
+bz
+aw
+aw
+bU
+ac
+bz
+aw
+aw
+bU
+Vi
+"}
+(17,1,1) = {"
+ac
+aC
+aK
+aK
+aV
+bf
+ce
+ac
+bA
+aw
+bJ
+bV
+ac
+bA
+aw
+bJ
+bV
+ac
+"}
+(18,1,1) = {"
+an
+aD
+aL
+aL
+aD
+aE
+aE
+bn
+aL
+aL
+aD
+aE
+cd
+aD
+aL
+aL
+aD
+aW
+"}
+(19,1,1) = {"
+aa
+an
+aM
+aM
+aW
+aa
+aa
+an
+aM
+aM
+aW
+aa
+aa
+an
+aM
+aM
+aW
+aa
+"}
diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index ede0351993b..a6b346ee1c2 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -11,7 +11,8 @@ Pipelines + Other Objects -> Pipe network
GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
/obj/machinery/atmospherics
anchored = 1
- layer = 2.4 //under wires with their 2.44
+ layer = GAS_PIPE_HIDDEN_LAYER //under wires
+ plane = FLOOR_PLANE
idle_power_usage = 0
active_power_usage = 0
power_channel = ENVIRON
@@ -61,10 +62,14 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
// Icons/overlays/underlays
/obj/machinery/atmospherics/update_icon()
- return null
+ var/turf/T = loc
+ if(level == 2 || !T.intact)
+ plane = GAME_PLANE
+ else
+ plane = FLOOR_PLANE
/obj/machinery/atmospherics/proc/update_pipe_image()
- pipe_image = image(src, loc, layer = 20, dir = dir) //the 20 puts it above Byond's darkness (not its opacity view)
+ pipe_image = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) //the 20 puts it above Byond's darkness (not its opacity view)
pipe_image.plane = HUD_PLANE
/obj/machinery/atmospherics/proc/check_icon_cache(var/safety = 0)
@@ -327,3 +332,4 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
/obj/machinery/atmospherics/update_remote_sight(mob/user)
user.sight |= (SEE_TURFS|BLIND)
+ . = ..()
diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm
index 5b09cc250c5..68a1033a266 100644
--- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm
@@ -3,6 +3,8 @@
initialize_directions = SOUTH|NORTH
use_power = IDLE_POWER_USE
+ layer = GAS_PUMP_LAYER
+
var/datum/gas_mixture/air1
var/datum/gas_mixture/air2
diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm
index 3e18cfb41fa..6bb16cb36c9 100644
--- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm
@@ -15,8 +15,6 @@
var/obj/machinery/power/generator/generator
- layer = 2.45 // Just above wires
-
anchored = 1
density = 1
@@ -112,6 +110,8 @@
..()
/obj/machinery/atmospherics/binary/circulator/update_icon()
+ ..()
+
if(stat & (BROKEN|NOPOWER))
icon_state = "circ[side]-p"
else if(last_pressure_delta > 0)
diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm
index 8f828c178ad..62b4f55470e 100644
--- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm
@@ -71,6 +71,8 @@
add_underlay(T, node2, dir)
/obj/machinery/atmospherics/binary/dp_vent_pump/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index 8becfa37c10..3448655c953 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -28,6 +28,7 @@
return ..()
/obj/machinery/atmospherics/binary/passive_gate/update_icon()
+ ..()
icon_state = "[on ? "on" : "off"]"
/obj/machinery/atmospherics/binary/passive_gate/update_underlays()
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index 8171efa7825..1998e67e17d 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -79,6 +79,8 @@ Thus, the two variables affect pump operation are set in New():
on = 1
/obj/machinery/atmospherics/binary/pump/update_icon()
+ ..()
+
if(!powered())
icon_state = "off"
else
diff --git a/code/ATMOSPHERICS/components/binary_devices/valve.dm b/code/ATMOSPHERICS/components/binary_devices/valve.dm
index dabe548ce9f..f9da99544b5 100644
--- a/code/ATMOSPHERICS/components/binary_devices/valve.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/valve.dm
@@ -16,6 +16,8 @@
icon_state = "map_valve1"
/obj/machinery/atmospherics/binary/valve/update_icon(animation)
+ ..()
+
if(animation)
flick("valve[src.open][!src.open]",src)
else
diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
index 6633c1ac10d..0947b2ee860 100644
--- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
@@ -83,6 +83,8 @@ Thus, the two variables affect pump operation are set in New():
set_frequency(frequency)
/obj/machinery/atmospherics/binary/volume_pump/update_icon()
+ ..()
+
if(!powered())
icon_state = "off"
else
diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
index a3903f278fb..cde1c9e80b0 100644
--- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
+++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
@@ -72,6 +72,8 @@
update_ports()
/obj/machinery/atmospherics/omni/update_icon()
+ ..()
+
if(stat & NOPOWER)
overlays = overlays_off
on = 0
@@ -83,8 +85,6 @@
underlays = underlays_current
- return
-
/obj/machinery/atmospherics/omni/proc/error_check()
return
diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
index a778b01ea86..e45a8c3956f 100755
--- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
@@ -79,6 +79,8 @@ Filter types:
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
/obj/machinery/atmospherics/trinary/filter/update_icon()
+ ..()
+
if(flipped)
icon_state = "m"
else
diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm
index e7c91172e3b..19849582a0f 100644
--- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm
@@ -57,6 +57,8 @@
update_icon()
/obj/machinery/atmospherics/trinary/mixer/update_icon(safety = 0)
+ ..()
+
if(flipped)
icon_state = "m"
else
diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm
index c0787a95612..8087db9966e 100644
--- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm
@@ -4,6 +4,7 @@
use_power = IDLE_POWER_USE
var/on = 0
+ layer = GAS_FILTER_LAYER
var/datum/gas_mixture/air1
var/datum/gas_mixture/air2
diff --git a/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm b/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm
index 3ec4e8443e4..7b3f8299339 100644
--- a/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm
@@ -135,6 +135,7 @@
/obj/machinery/atmospherics/trinary/tvalve/digital/update_icon()
..()
+
if(!powered())
icon_state = "tvalvenopower"
diff --git a/code/ATMOSPHERICS/components/unary_devices/cold_sink.dm b/code/ATMOSPHERICS/components/unary_devices/cold_sink.dm
index 51415223de2..7cae2968a22 100644
--- a/code/ATMOSPHERICS/components/unary_devices/cold_sink.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/cold_sink.dm
@@ -13,6 +13,8 @@
var/current_heat_capacity = 50000 //totally random
/obj/machinery/atmospherics/unary/cold_sink/update_icon()
+ ..()
+
if(node)
icon_state = "intact_[on?("on"):("off")]"
else
@@ -20,8 +22,6 @@
on = 0
- return
-
/obj/machinery/atmospherics/unary/cold_sink/process_atmos()
..()
if(!on)
diff --git a/code/ATMOSPHERICS/components/unary_devices/generator_input.dm b/code/ATMOSPHERICS/components/unary_devices/generator_input.dm
index 42c3676836c..cb095b1e551 100644
--- a/code/ATMOSPHERICS/components/unary_devices/generator_input.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/generator_input.dm
@@ -9,12 +9,12 @@
var/update_cycle
/obj/machinery/atmospherics/unary/generator_input/update_icon()
+ ..()
+
if(node)
icon_state = "intact"
else
icon_state = "exposed"
- return
-
/obj/machinery/atmospherics/unary/generator_input/proc/return_exchange_air()
return air_contents
diff --git a/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm
index 58b374578df..e4afcadc7fa 100644
--- a/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm
@@ -13,13 +13,13 @@
burn_state = LAVA_PROOF
/obj/machinery/atmospherics/unary/heat_exchanger/update_icon()
+ ..()
+
if(node)
icon_state = "intact"
else
icon_state = "exposed"
- return
-
/obj/machinery/atmospherics/unary/heat_exchanger/atmos_init()
if(!partner)
var/partner_connect = turn(dir,180)
diff --git a/code/ATMOSPHERICS/components/unary_devices/heat_source.dm b/code/ATMOSPHERICS/components/unary_devices/heat_source.dm
index 31eb7305ded..b3b1d0c4fdc 100644
--- a/code/ATMOSPHERICS/components/unary_devices/heat_source.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/heat_source.dm
@@ -13,6 +13,8 @@
var/current_heat_capacity = 50000 //totally random
/obj/machinery/atmospherics/unary/heat_reservoir/update_icon()
+ ..()
+
if(node)
icon_state = "intact_[on?("on"):("off")]"
else
@@ -20,8 +22,6 @@
on = 0
- return
-
/obj/machinery/atmospherics/unary/heat_reservoir/process_atmos()
..()
if(!on)
diff --git a/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm b/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm
index 509b36ff8ab..5302a99caa1 100644
--- a/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm
@@ -2,7 +2,7 @@
icon = 'icons/atmos/injector.dmi'
icon_state = "map_injector"
use_power = IDLE_POWER_USE
- layer = 3
+ layer = GAS_SCRUBBER_LAYER
can_unwrench = 1
@@ -38,6 +38,8 @@
return ..()
/obj/machinery/atmospherics/unary/outlet_injector/update_icon()
+ ..()
+
if(!powered())
icon_state = "off"
else
diff --git a/code/ATMOSPHERICS/components/unary_devices/oxygen_generator.dm b/code/ATMOSPHERICS/components/unary_devices/oxygen_generator.dm
index 0f575fb9c3a..a9c3b98ad74 100644
--- a/code/ATMOSPHERICS/components/unary_devices/oxygen_generator.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/oxygen_generator.dm
@@ -14,6 +14,8 @@
var/oxygen_content = 10
/obj/machinery/atmospherics/unary/oxygen_generator/update_icon()
+ ..()
+
if(node)
icon_state = "intact_[on?("on"):("off")]"
else
@@ -21,8 +23,6 @@
on = 0
- return
-
/obj/machinery/atmospherics/unary/oxygen_generator/New()
..()
diff --git a/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm b/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm
index 711a1df3861..7b4ba08af77 100644
--- a/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm
@@ -6,7 +6,7 @@
desc = "For connecting portables devices related to atmospherics control."
can_unwrench = 1
- layer = 2.4
+ layer = GAS_FILTER_LAYER
var/obj/machinery/portable_atmospherics/connected_device
@@ -18,6 +18,7 @@
return ..()
/obj/machinery/atmospherics/unary/portables_connector/update_icon()
+ ..()
icon_state = "connector"
/obj/machinery/atmospherics/unary/portables_connector/update_underlays()
diff --git a/code/ATMOSPHERICS/components/unary_devices/thermal_plate.dm b/code/ATMOSPHERICS/components/unary_devices/thermal_plate.dm
index c245bfc120e..5a6e76a182b 100644
--- a/code/ATMOSPHERICS/components/unary_devices/thermal_plate.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/thermal_plate.dm
@@ -11,10 +11,12 @@
desc = "Transfers heat to and from an area"
/obj/machinery/atmospherics/unary/thermal_plate/update_icon()
- var/prefix=""
+ ..()
+
+ var/prefix = ""
//var/suffix="_idle" // Also available: _heat, _cool
if(level == 1 && istype(loc, /turf/simulated))
- prefix="h"
+ prefix = "h"
icon_state = "[prefix]off"
/obj/machinery/atmospherics/unary/thermal_plate/process_atmos()
diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
index 0ac609cb6ec..2a22052c7dc 100644
--- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
@@ -10,6 +10,8 @@
desc = "Has a valve and pump attached to it"
use_power = IDLE_POWER_USE
+ layer = GAS_SCRUBBER_LAYER
+
can_unwrench = 1
var/open = 0
@@ -77,6 +79,10 @@
air_contents.volume = 1000
/obj/machinery/atmospherics/unary/vent_pump/update_icon(var/safety = 0)
+ ..()
+
+ plane = FLOOR_PLANE
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
index 82cdfa46e97..86f2d3b9973 100644
--- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
@@ -6,6 +6,7 @@
name = "air scrubber"
desc = "Has a valve and pump attached to it"
+ layer = GAS_SCRUBBER_LAYER
use_power = IDLE_POWER_USE
idle_power_usage = 10
@@ -91,6 +92,10 @@
return 1
/obj/machinery/atmospherics/unary/vent_scrubber/update_icon(var/safety = 0)
+ ..()
+
+ plane = FLOOR_PLANE
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm
index 2552f6e0794..8421685d44c 100644
--- a/code/ATMOSPHERICS/pipes/cap.dm
+++ b/code/ATMOSPHERICS/pipes/cap.dm
@@ -4,7 +4,6 @@
icon = 'icons/atmos/pipes.dmi'
icon_state = "cap"
level = 2
- layer = 2.4 //under wires with their 2.44
volume = 35
@@ -55,6 +54,8 @@
node.update_underlays()
/obj/machinery/atmospherics/pipe/cap/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm
index 199942e7a40..13e35d10c7b 100644
--- a/code/ATMOSPHERICS/pipes/manifold.dm
+++ b/code/ATMOSPHERICS/pipes/manifold.dm
@@ -14,7 +14,6 @@
var/obj/machinery/atmospherics/node3
level = 1
- layer = 2.4 //under wires with their 2.44
/obj/machinery/atmospherics/pipe/manifold/New()
@@ -116,6 +115,8 @@
node3.update_underlays()
/obj/machinery/atmospherics/pipe/manifold/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm
index 502795e1da9..d2cee29c0ba 100644
--- a/code/ATMOSPHERICS/pipes/manifold4w.dm
+++ b/code/ATMOSPHERICS/pipes/manifold4w.dm
@@ -15,7 +15,6 @@
var/obj/machinery/atmospherics/node4
level = 1
- layer = 2.4 //under wires with their 2.44
/obj/machinery/atmospherics/pipe/manifold4w/New()
..()
@@ -90,6 +89,8 @@
node4.update_underlays()
/obj/machinery/atmospherics/pipe/manifold4w/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/pipes/pipe.dm b/code/ATMOSPHERICS/pipes/pipe.dm
index 4cd51e66b67..ec4f6bfd7ec 100644
--- a/code/ATMOSPHERICS/pipes/pipe.dm
+++ b/code/ATMOSPHERICS/pipes/pipe.dm
@@ -3,7 +3,6 @@
var/datum/pipeline/parent
var/volume = 0
force = 20
- layer = 2.4 //under wires with their 2.44
use_power = NO_POWER_USE
can_unwrench = 1
var/alert_pressure = 80*ONE_ATMOSPHERE //minimum pressure before check_pressure(...) should be called
diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm
index b2c2750a452..b966690733b 100644
--- a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm
+++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm
@@ -137,6 +137,8 @@
node2.update_underlays()
/obj/machinery/atmospherics/pipe/simple/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm
index 3efd22ed446..db982639c2f 100644
--- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm
+++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm
@@ -28,6 +28,8 @@
icon_state = "map_universal"
/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm
index 9bf085b534a..1ca4da646ac 100644
--- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm
+++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm
@@ -39,6 +39,8 @@
icon_state = "map_universal"
/obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0)
+ ..()
+
if(!check_icon_cache())
return
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index ba4bf0090c7..a8c6b4bd5e8 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -52,12 +52,6 @@
#define GRAB_UPGRADING 4
#define GRAB_KILL 5
-
-//Hostile Mob AI Status
-#define AI_ON 1
-#define AI_IDLE 2
-#define AI_OFF 3
-
//Attack types for checking shields/hit reactions
#define MELEE_ATTACK 1
diff --git a/code/__DEFINES/game.dm b/code/__DEFINES/game.dm
index 68518e80d6c..5c262724a14 100644
--- a/code/__DEFINES/game.dm
+++ b/code/__DEFINES/game.dm
@@ -1,3 +1,4 @@
+#define GAME_STATE_STARTUP 0
#define GAME_STATE_PREGAME 1
#define GAME_STATE_SETTING_UP 2
#define GAME_STATE_PLAYING 3
diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm
index a1e469e3c94..a3efbab50d9 100644
--- a/code/__DEFINES/gamemode.dm
+++ b/code/__DEFINES/gamemode.dm
@@ -8,12 +8,12 @@
#define TARGET_INVALID_EVENT 7
//gamemode istype helpers
-#define GAMEMODE_IS_BLOB (ticker && istype(ticker.mode, /datum/game_mode/blob))
-#define GAMEMODE_IS_CULT (ticker && istype(ticker.mode, /datum/game_mode/cult))
-#define GAMEMODE_IS_HEIST (ticker && istype(ticker.mode, /datum/game_mode/heist))
-#define GAMEMODE_IS_NUCLEAR (ticker && istype(ticker.mode, /datum/game_mode/nuclear))
-#define GAMEMODE_IS_REVOLUTION (ticker && istype(ticker.mode, /datum/game_mode/revolution))
-#define GAMEMODE_IS_WIZARD (ticker && istype(ticker.mode, /datum/game_mode/wizard))
+#define GAMEMODE_IS_BLOB (SSticker && istype(SSticker.mode, /datum/game_mode/blob))
+#define GAMEMODE_IS_CULT (SSticker && istype(SSticker.mode, /datum/game_mode/cult))
+#define GAMEMODE_IS_HEIST (SSticker && istype(SSticker.mode, /datum/game_mode/heist))
+#define GAMEMODE_IS_NUCLEAR (SSticker && istype(SSticker.mode, /datum/game_mode/nuclear))
+#define GAMEMODE_IS_REVOLUTION (SSticker && istype(SSticker.mode, /datum/game_mode/revolution))
+#define GAMEMODE_IS_WIZARD (SSticker && istype(SSticker.mode, /datum/game_mode/wizard))
//special roles
// Distinct from the ROLE_X defines because some antags have multiple special roles but only one ban type
diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index 9da2c725a43..db88f46a676 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -6,7 +6,9 @@
#define PLANE_SPACE -95
#define PLANE_SPACE_PARALLAX -90
-#define GAME_PLANE 0
+#define FLOOR_PLANE -2
+#define GAME_PLANE -1
+#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
#define SPACE_LAYER 1.8
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
@@ -83,23 +85,29 @@
#define ABOVE_LIGHTING_PLANE 16
#define ABOVE_LIGHTING_LAYER 16
-#define BYOND_LIGHTING_PLANE 17
-#define BYOND_LIGHTING_LAYER 17
+#define FLOOR_OPENSPACE_PLANE 17
+#define OPENSPACE_LAYER 17
+
+#define BYOND_LIGHTING_PLANE 18
+#define BYOND_LIGHTING_LAYER 18
+
+#define CAMERA_STATIC_PLANE 19
+#define CAMERA_STATIC_LAYER 19
//HUD layer defines
-#define FULLSCREEN_PLANE 18
-#define FLASH_LAYER 18
-#define FULLSCREEN_LAYER 18.1
-#define UI_DAMAGE_LAYER 18.2
-#define BLIND_LAYER 18.3
-#define CRIT_LAYER 18.4
-#define CURSE_LAYER 18.5
+#define FULLSCREEN_PLANE 20
+#define FLASH_LAYER 20
+#define FULLSCREEN_LAYER 20.1
+#define UI_DAMAGE_LAYER 20.2
+#define BLIND_LAYER 20.3
+#define CRIT_LAYER 20.4
+#define CURSE_LAYER 20.5
-#define HUD_PLANE 19
-#define HUD_LAYER 19
-#define ABOVE_HUD_PLANE 20
-#define ABOVE_HUD_LAYER 20
+#define HUD_PLANE 21
+#define HUD_LAYER 21
+#define ABOVE_HUD_PLANE 22
+#define ABOVE_HUD_LAYER 22
-#define SPLASHSCREEN_LAYER 21
-#define SPLASHSCREEN_PLANE 21
\ No newline at end of file
+#define SPLASHSCREEN_LAYER 23
+#define SPLASHSCREEN_PLANE 23
\ No newline at end of file
diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm
index 3db7c467c24..7357c5f441e 100644
--- a/code/__DEFINES/lighting.dm
+++ b/code/__DEFINES/lighting.dm
@@ -1,42 +1,92 @@
-#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square
-#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources
-#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
+//Bay lighting engine shit, not in /code/modules/lighting because BYOND is being shit about it
+#define LIGHTING_INTERVAL 5 // frequency, in 1/10ths of a second, of the lighting process
-#define LIGHTING_ICON 'icons/effects/lighting_overlay.dmi' // icon used for lighting shading effects
+#define MINIMUM_USEFUL_LIGHT_RANGE 1.4
-#define LIGHTING_ROUND_VALUE (1 / 128) //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
+#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square
+#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources
+#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
+#define LIGHTING_ROUND_VALUE (1 / 64) //Value used to round lumcounts, values smaller than 1/129 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
-#define LIGHTING_SOFT_THRESHOLD 0.05 // If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting overlays.
+#define LIGHTING_ICON 'icons/effects/lighting_object.dmi' // icon used for lighting shading effects
+
+// If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting objects.
+// Set to zero to disable soft lighting. Luminosity changes then work if it's lit at all.
+#define LIGHTING_SOFT_THRESHOLD 0
// If I were you I'd leave this alone.
#define LIGHTING_BASE_MATRIX \
list \
( \
- LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, 0, \
- LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, 0, \
- LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, 0, \
- LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, LIGHTING_SOFT_THRESHOLD, 0, \
+ 1, 1, 1, 0, \
+ 1, 1, 1, 0, \
+ 1, 1, 1, 0, \
+ 1, 1, 1, 0, \
0, 0, 0, 1 \
) \
-// Helpers so we can (more easily) control the colour matrices.
-#define CL_MATRIX_RR 1
-#define CL_MATRIX_RG 2
-#define CL_MATRIX_RB 3
-#define CL_MATRIX_RA 4
-#define CL_MATRIX_GR 5
-#define CL_MATRIX_GG 6
-#define CL_MATRIX_GB 7
-#define CL_MATRIX_GA 8
-#define CL_MATRIX_BR 9
-#define CL_MATRIX_BG 10
-#define CL_MATRIX_BB 11
-#define CL_MATRIX_BA 12
-#define CL_MATRIX_AR 13
-#define CL_MATRIX_AG 14
-#define CL_MATRIX_AB 15
-#define CL_MATRIX_AA 16
-#define CL_MATRIX_CR 17
-#define CL_MATRIX_CG 18
-#define CL_MATRIX_CB 19
-#define CL_MATRIX_CA 20
\ No newline at end of file
+
+//Some defines to generalise colours used in lighting.
+//Important note on colors. Colors can end up significantly different from the basic html picture, especially when saturated
+#define LIGHT_COLOR_WHITE "#FFFFFF"
+#define LIGHT_COLOR_RED "#FA8282" //Warm but extremely diluted red. rgb(250, 130, 130)
+#define LIGHT_COLOR_GREEN "#64C864" //Bright but quickly dissipating neon green. rgb(100, 200, 100)
+#define LIGHT_COLOR_BLUE "#6496FA" //Cold, diluted blue. rgb(100, 150, 250)
+
+#define LIGHT_COLOR_BLUEGREEN "#7DE1AF" //Light blueish green. rgb(125, 225, 175)
+#define LIGHT_COLOR_CYAN "#7DE1E1" //Diluted cyan. rgb(125, 225, 225)
+#define LIGHT_COLOR_LIGHT_CYAN "#40CEFF" //More-saturated cyan. rgb(64, 206, 255)
+#define LIGHT_COLOR_DARK_BLUE "#6496FA" //Saturated blue. rgb(51, 117, 248)
+#define LIGHT_COLOR_PINK "#E17DE1" //Diluted, mid-warmth pink. rgb(225, 125, 225)
+#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
+#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
+#define LIGHT_COLOR_ORANGE "#FA9632" //Mostly pure orange. rgb(250, 150, 50)
+#define LIGHT_COLOR_PURPLE "#952CF4" //Light Purple. rgb(149, 44, 244)
+#define LIGHT_COLOR_LAVENDER "#9B51FF" //Less-saturated light purple. rgb(155, 81, 255)
+
+#define LIGHT_COLOR_HOLY_MAGIC "#FFF743" //slightly desaturated bright yellow.
+#define LIGHT_COLOR_BLOOD_MAGIC "#D00000" //deep crimson
+
+#define LIGHT_COLOR_PURE_CYAN "#00FFFF"
+#define LIGHT_COLOR_DARKRED "#A91515"
+#define LIGHT_COLOR_PURE_RED "#FF0000"
+#define LIGHT_COLOR_DARKGREEN "#50AB00"
+#define LIGHT_COLOR_PURE_GREEN "#00FF00"
+#define LIGHT_COLOR_LIGHTBLUE "#0099FF"
+#define LIGHT_COLOR_DARKBLUE "#315AB4"
+#define LIGHT_COLOR_PURE_BLUE "#0000FF"
+#define LIGHT_COLOR_FADEDPURPLE "#A97FAA"
+
+//These ones aren't a direct colour like the ones above, because nothing would fit
+#define LIGHT_COLOR_FIRE "#FAA019" //Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
+#define LIGHT_COLOR_LAVA "#C48A18" //Very warm yellow, leaning slightly towards orange. rgb(196, 138, 24)
+#define LIGHT_COLOR_FLARE "#FA644B" //Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75)
+#define LIGHT_COLOR_SLIME_LAMP "#AFC84B" //Weird color, between yellow and green, very slimy. rgb(175, 200, 75)
+#define LIGHT_COLOR_TUNGSTEN "#FAE1AF" //Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175)
+#define LIGHT_COLOR_HALOGEN "#F0FAFA" //Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250)
+
+#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow.
+
+#define LIGHTING_PLANE_ALPHA_VISIBLE 255
+#define LIGHTING_PLANE_ALPHA_NV_TRAIT 245
+#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192
+#define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell.
+#define LIGHTING_PLANE_ALPHA_INVISIBLE 0
+
+//lighting area defines
+#define DYNAMIC_LIGHTING_DISABLED 0 //dynamic lighting disabled (area stays at full brightness)
+#define DYNAMIC_LIGHTING_ENABLED 1 //dynamic lighting enabled
+#define DYNAMIC_LIGHTING_FORCED 2 //dynamic lighting enabled even if the area doesn't require power
+#define DYNAMIC_LIGHTING_IFSTARLIGHT 3 //dynamic lighting enabled only if starlight is.
+#define IS_DYNAMIC_LIGHTING(A) A.dynamic_lighting
+
+
+//code assumes higher numbers override lower numbers.
+#define LIGHTING_NO_UPDATE 0
+#define LIGHTING_VIS_UPDATE 1
+#define LIGHTING_CHECK_UPDATE 2
+#define LIGHTING_FORCE_UPDATE 3
+
+#define FLASH_LIGHT_DURATION 2
+#define FLASH_LIGHT_POWER 3
+#define FLASH_LIGHT_RANGE 3.8
\ No newline at end of file
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index dff9426c641..5edb17bd92b 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -114,33 +114,6 @@
#define CHRISTMAS "Christmas"
#define FRIDAY_13TH "Friday the 13th"
-//Light color defs, for light-emitting things
-//Some defs may be pure color- this is for neatness, and configurability. Changing #define COLOR_ is a bad idea.
-#define LIGHT_COLOR_CYAN "#7BF9FF"
-#define LIGHT_COLOR_PURE_CYAN "#00FFFF"
-
-#define LIGHT_COLOR_RED "#B40000"
-#define LIGHT_COLOR_ORANGE "#FF9933"
-#define LIGHT_COLOR_DARKRED "#A91515"
-#define LIGHT_COLOR_PURE_RED "#FF0000"
-
-#define LIGHT_COLOR_GREEN "#00CC00"
-#define LIGHT_COLOR_DARKGREEN "#50AB00"
-#define LIGHT_COLOR_PURE_GREEN "#00FF00"
-
-#define LIGHT_COLOR_BLUE "#6496FA" //Cold, diluted blue. rgb(100, 150, 250)
-#define LIGHT_COLOR_LIGHTBLUE "#0099FF"
-#define LIGHT_COLOR_DARKBLUE "#315AB4"
-#define LIGHT_COLOR_PURE_BLUE "#0000FF"
-
-#define LIGHT_COLOR_FADEDPURPLE "#A97FAA"
-#define LIGHT_COLOR_PURPLE "#CD00CD"
-#define LIGHT_COLOR_PINK "#FF33CC"
-
-#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
-
-#define LIGHT_COLOR_WHITE "#FFFFFF"
-
#define RESIZE_DEFAULT_SIZE 1
//transfer_ai() defines. Main proc in ai_core.dm
@@ -208,33 +181,34 @@
#define MFOAM_IRON 2
//Human Overlays Indexes/////////
-#define BODY_LAYER 37
-#define MUTANTRACE_LAYER 36
-#define TAIL_UNDERLIMBS_LAYER 35 //Tail split-rendering.
-#define LIMBS_LAYER 34
-#define INTORGAN_LAYER 33
-#define MARKINGS_LAYER 32
-#define UNDERWEAR_LAYER 31
-#define MUTATIONS_LAYER 30
-#define H_DAMAGE_LAYER 29
-#define UNIFORM_LAYER 28
-#define ID_LAYER 27
-#define SHOES_LAYER 26
-#define GLOVES_LAYER 25
-#define EARS_LAYER 24
-#define SUIT_LAYER 23
-#define BELT_LAYER 22 //Possible make this an overlay of somethign required to wear a belt?
-#define SUIT_STORE_LAYER 21
-#define BACK_LAYER 20
-#define HEAD_ACCESSORY_LAYER 19
-#define FHAIR_LAYER 18
-#define GLASSES_LAYER 17
-#define HAIR_LAYER 16 //TODO: make part of head layer?
-#define HEAD_ACC_OVER_LAYER 15 //Select-layer rendering.
-#define FHAIR_OVER_LAYER 14 //Select-layer rendering.
-#define GLASSES_OVER_LAYER 13 //Select-layer rendering.
-#define TAIL_LAYER 12 //bs12 specific. this hack is probably gonna come back to haunt me
-#define FACEMASK_LAYER 11
+#define BODY_LAYER 38
+#define MUTANTRACE_LAYER 37
+#define TAIL_UNDERLIMBS_LAYER 36 //Tail split-rendering.
+#define LIMBS_LAYER 35
+#define INTORGAN_LAYER 34
+#define MARKINGS_LAYER 33
+#define UNDERWEAR_LAYER 32
+#define MUTATIONS_LAYER 31
+#define H_DAMAGE_LAYER 30
+#define UNIFORM_LAYER 29
+#define ID_LAYER 28
+#define SHOES_LAYER 27
+#define GLOVES_LAYER 26
+#define EARS_LAYER 25
+#define SUIT_LAYER 24
+#define BELT_LAYER 23 //Possible make this an overlay of somethign required to wear a belt?
+#define SUIT_STORE_LAYER 22
+#define BACK_LAYER 21
+#define HEAD_ACCESSORY_LAYER 20
+#define FHAIR_LAYER 19
+#define GLASSES_LAYER 18
+#define HAIR_LAYER 17 //TODO: make part of head layer?
+#define HEAD_ACC_OVER_LAYER 16 //Select-layer rendering.
+#define FHAIR_OVER_LAYER 15 //Select-layer rendering.
+#define GLASSES_OVER_LAYER 14 //Select-layer rendering.
+#define TAIL_LAYER 13 //bs12 specific. this hack is probably gonna come back to haunt me
+#define FACEMASK_LAYER 12
+#define OVER_MASK_LAYER 11 //Select-layer rendering.
#define HEAD_LAYER 10
#define COLLAR_LAYER 9
#define HANDCUFF_LAYER 8
@@ -245,7 +219,7 @@
#define FIRE_LAYER 3 //If you're on fire
#define MISC_LAYER 2
#define FROZEN_LAYER 1
-#define TOTAL_LAYERS 37
+#define TOTAL_LAYERS 38
///Access Region Codes///
#define REGION_ALL 0
@@ -303,7 +277,7 @@
#define TRIGGER_GUARD_NORMAL 1
// Macro to get the current elapsed round time, rather than total world runtime
-#define ROUND_TIME (round_start_time ? (world.time - round_start_time) : 0)
+#define ROUND_TIME (SSticker.round_start_time ? (world.time - SSticker.round_start_time) : 0)
// Macro that returns true if it's too early in a round to freely ghost out
#define TOO_EARLY_TO_GHOST (config && (ROUND_TIME < (config.round_abandon_penalty_period)))
@@ -318,10 +292,8 @@
#define SHELTER_DEPLOY_BAD_AREA "bad area"
#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects"
-// Client donator levels
-#define DONATOR_LEVEL_NONE 0
-#define DONATOR_LEVEL_ONE 1
-#define DONATOR_LEVEL_TWO 2
+// Maximum donation level
+#define DONATOR_LEVEL_MAX 4
// The cooldown on OOC messages such as OOC, LOOC, praying and adminhelps
#define OOC_COOLDOWN 5
@@ -401,4 +373,17 @@
#define GHOST_ORBIT_TRIANGLE "triangle"
#define GHOST_ORBIT_HEXAGON "hexagon"
#define GHOST_ORBIT_SQUARE "square"
-#define GHOST_ORBIT_PENTAGON "pentagon"
\ No newline at end of file
+#define GHOST_ORBIT_PENTAGON "pentagon"
+
+// Filters
+#define FILTER_AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, border=4, color="#04080FAA")
+
+//Fullscreen overlay resolution in tiles.
+#define FULLSCREEN_OVERLAY_RESOLUTION_X 15
+#define FULLSCREEN_OVERLAY_RESOLUTION_Y 15
+
+//suit sensors: sensor_mode defines
+#define SENSOR_OFF 0
+#define SENSOR_LIVING 1
+#define SENSOR_VITALS 2
+#define SENSOR_COORDS 3
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 0f05c08b2f7..284b0e4d745 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -94,6 +94,13 @@
#define APPEARANCE_ALL_BODY APPEARANCE_ALL_HAIR|APPEARANCE_HEAD_ACCESSORY|APPEARANCE_MARKINGS|APPEARANCE_BODY_ACCESSORY|APPEARANCE_ALT_HEAD
#define APPEARANCE_ALL 32767
+//If you add a new status, be sure to add a list for it to the simple_animals global in _globalvars/lists/mobs.dm
+//Hostile Mob AI Status
+#define AI_ON 1
+#define AI_IDLE 2
+#define AI_OFF 3
+#define AI_Z_OFF 4
+
// Intents
#define INTENT_HELP "help"
#define INTENT_DISARM "disarm"
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index aa3652046b5..22b4334e3be 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -29,10 +29,12 @@
#define UI_DARKMODE 131072
#define DISABLE_KARMA 262144
#define CHAT_NO_MENTORTICKETLOGS 524288
-
#define TYPING_ONCE 1048576
+#define AMBIENT_OCCLUSION 2097152
-#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC)
+#define TOGGLES_TOTAL 4194303 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.
+
+#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC|AMBIENT_OCCLUSION)
// Admin attack logs filter system, see /proc/add_attack_logs and /proc/msg_admin_attack
#define ATKLOG_ALL 0
diff --git a/code/__DEFINES/snpc.dm b/code/__DEFINES/snpc.dm
deleted file mode 100644
index 8d4768005cd..00000000000
--- a/code/__DEFINES/snpc.dm
+++ /dev/null
@@ -1,23 +0,0 @@
-#define SNPC_MAX_RANGE_FIND 32
-#define SNPC_MIN_RANGE_FIND 16
-#define SNPC_FUZZY_CHANCE_HIGH 85
-#define SNPC_FUZZY_CHANCE_LOW 50
-#define SNPC_CHANCE_TALK 15
-
-#define SNPC_BRUTE 1
-#define SNPC_STEALTH 2
-#define SNPC_MARTYR 3
-#define SNPC_PSYCHO 4
-
-#define SNPC_INTERACTING 2
-#define SNPC_TRAVEL 4
-#define SNPC_FIGHTING 8
-#define SNPC_SPECIAL 16
-
-#define TRAIT_ROBUST 2
-#define TRAIT_UNROBUST 4
-#define TRAIT_SMART 8
-#define TRAIT_DUMB 16
-#define TRAIT_MEAN 32
-#define TRAIT_FRIENDLY 64
-#define TRAIT_THIEVING 128
\ No newline at end of file
diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index e7f5262db1f..65fc87c3b34 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -150,7 +150,7 @@
// A logging proc that only outputs after setup is done, to
// help devs test initialization stuff that happens a lot
/proc/log_after_setup(var/message)
- if(ticker && ticker.current_state > GAME_STATE_SETTING_UP)
+ if(SSticker && SSticker.current_state > GAME_STATE_SETTING_UP)
to_chat(world, "[message]")
log_world(message)
diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm
index 2db8621195d..472f7be75f4 100644
--- a/code/__HELPERS/icon_smoothing.dm
+++ b/code/__HELPERS/icon_smoothing.dm
@@ -114,7 +114,7 @@
return
if(QDELETED(A))
return
- if((A.smooth & SMOOTH_TRUE) || (A.smooth & SMOOTH_MORE))
+ if(A.smooth & (SMOOTH_TRUE | SMOOTH_MORE))
var/adjacencies = calculate_adjacencies(A)
if(A.smooth & SMOOTH_DIAGONAL)
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index dad2ecd7630..ed4f3242c4d 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -634,170 +634,214 @@ The _flatIcons list is a cache for generated icon files.
*/
// Creates a single icon from a given /atom or /image. Only the first argument is required.
-/proc/getFlatIcon(image/A, defdir=2, deficon=null, defstate="", defblend=BLEND_DEFAULT)
- // We start with a blank canvas, otherwise some icon procs crash silently
- var/icon/flat = icon('icons/effects/effects.dmi', "icon_state"="nothing") // Final flattened icon
- if(!A)
- return flat
- if(A.alpha <= 0)
- return flat
+/proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE)
+ //Define... defines.
+ var/static/icon/flat_template = icon('icons/effects/effects.dmi', "nothing")
+
+ #define BLANK icon(flat_template)
+ #define SET_SELF(SETVAR) do { \
+ var/icon/SELF_ICON=icon(icon(curicon, curstate, base_icon_dir),"",SOUTH,no_anim?1:null); \
+ if(A.alpha<255) { \
+ SELF_ICON.Blend(rgb(255,255,255,A.alpha),ICON_MULTIPLY);\
+ } \
+ if(A.color) { \
+ if(islist(A.color)){ \
+ SELF_ICON.MapColors(arglist(A.color))} \
+ else{ \
+ SELF_ICON.Blend(A.color,ICON_MULTIPLY)} \
+ } \
+ ##SETVAR=SELF_ICON;\
+ } while (0)
+ #define INDEX_X_LOW 1
+ #define INDEX_X_HIGH 2
+ #define INDEX_Y_LOW 3
+ #define INDEX_Y_HIGH 4
+
+ #define flatX1 flat_size[INDEX_X_LOW]
+ #define flatX2 flat_size[INDEX_X_HIGH]
+ #define flatY1 flat_size[INDEX_Y_LOW]
+ #define flatY2 flat_size[INDEX_Y_HIGH]
+ #define addX1 add_size[INDEX_X_LOW]
+ #define addX2 add_size[INDEX_X_HIGH]
+ #define addY1 add_size[INDEX_Y_LOW]
+ #define addY2 add_size[INDEX_Y_HIGH]
+
+ if(!A || A.alpha <= 0)
+ return BLANK
+
var/noIcon = FALSE
+ if(start)
+ if(!defdir)
+ defdir = A.dir
+ if(!deficon)
+ deficon = A.icon
+ if(!defstate)
+ defstate = A.icon_state
+ if(!defblend)
+ defblend = A.blend_mode
- var/curicon
- if(A.icon)
- curicon = A.icon
- else
- curicon = deficon
+ var/curicon = A.icon || deficon
+ var/curstate = A.icon_state || defstate
- if(!curicon)
- noIcon = TRUE // Do not render this object.
-
- var/curstate
- if(A.icon_state)
- curstate = A.icon_state
- else
- curstate = defstate
-
- if(!noIcon && !(curstate in icon_states(curicon)))
- if("" in icon_states(curicon))
- curstate = ""
- else
- noIcon = TRUE // Do not render this object.
+ if(!((noIcon = (!curicon))))
+ var/curstates = icon_states(curicon)
+ if(!(curstate in curstates))
+ if("" in curstates)
+ curstate = ""
+ else
+ noIcon = TRUE // Do not render this object.
var/curdir
- if(A.dir != 2)
- curdir = A.dir
- else
+ var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have
+
+ //These should use the parent's direction (most likely)
+ if(!A.dir || A.dir == SOUTH)
curdir = defdir
-
- var/curblend
- if(A.blend_mode == BLEND_DEFAULT)
- curblend = defblend
else
- curblend = A.blend_mode
+ curdir = A.dir
- // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed
- var/list/layers = list()
- var/image/copy
- // Add the atom's icon itself, without pixel_x/y offsets.
- if(!noIcon)
- copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=curdir)
- copy.color = A.color
- copy.alpha = A.alpha
- copy.blend_mode = curblend
- layers[copy] = A.layer
-
- // Loop through the underlays, then overlays, sorting them into the layers list
- var/list/process = A.underlays // Current list being processed
- var/pSet=0 // Which list is being processed: 0 = underlays, 1 = overlays
- var/curIndex=1 // index of 'current' in list being processed
- var/current // Current overlay being sorted
- var/currentLayer // Calculated layer that overlay appears on (special case for FLOAT_LAYER)
- var/compare // The overlay 'add' is being compared against
- var/cmpIndex // The index in the layers list of 'compare'
- while(TRUE)
- if(curIndex<=process.len)
- current = process[curIndex]
- if(!current)
- curIndex++ //Skip this bad layer item
- continue
- currentLayer = current:layer
- if(currentLayer<0) // Special case for FLY_LAYER
- if(currentLayer <= -1000) return flat
- if(pSet == 0) // Underlay
- currentLayer = A.layer+currentLayer/1000
- else // Overlay
- currentLayer = A.layer+(1000+currentLayer)/1000
-
- // Sort add into layers list
- for(cmpIndex=1,cmpIndex<=layers.len,cmpIndex++)
- compare = layers[cmpIndex]
- if(currentLayer < layers[compare]) // Associated value is the calculated layer
- layers.Insert(cmpIndex,current)
- layers[current] = currentLayer
- break
- if(cmpIndex>layers.len) // Reached end of list without inserting
- layers[current]=currentLayer // Place at end
-
- curIndex++
-
- if(curIndex>process.len)
- if(pSet == 0) // Switch to overlays
- curIndex = 1
- pSet = 1
- process = A.overlays
- else // All done
+ //Try to remove/optimize this section ASAP, CPU hog.
+ //Determines if there's directionals.
+ if(!noIcon && curdir != SOUTH)
+ var/exist = FALSE
+ var/static/list/checkdirs = list(NORTH, EAST, WEST)
+ for(var/i in checkdirs) //Not using GLOB for a reason.
+ if(length(icon_states(icon(curicon, curstate, i))))
+ exist = TRUE
break
+ if(!exist)
+ base_icon_dir = SOUTH
+ //
- var/icon/add // Icon of overlay being added
+ if(!base_icon_dir)
+ base_icon_dir = curdir
- // Current dimensions of flattened icon
- var/flatX1 = 1
- var/flatX2 = flat.Width()
- var/flatY1 = 1
- var/flatY2 = flat.Height()
- // Dimensions of overlay being added
- var/addX1
- var/addX2
- var/addY1
- var/addY2
+ ASSERT(!BLEND_DEFAULT) //I might just be stupid but lets make sure this define is 0.
- for(var/I in layers)
+ var/curblend = A.blend_mode || defblend
- if(I:alpha == 0)
- continue
+ if(A.overlays.len || A.underlays.len)
+ var/icon/flat = BLANK
+ // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed
+ var/list/layers = list()
+ var/image/copy
+ // Add the atom's icon itself, without pixel_x/y offsets.
+ if(!noIcon)
+ copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=base_icon_dir)
+ copy.color = A.color
+ copy.alpha = A.alpha
+ copy.blend_mode = curblend
+ layers[copy] = A.layer
- if(I == copy) // 'I' is an /image based on the object being flattened.
- curblend = BLEND_OVERLAY
- add = icon(I:icon, I:icon_state, I:dir)
- // This checks for a silent failure mode of the icon routine. If the requested dir
- // doesn't exist in this icon state it returns a 32x32 icon with 0 alpha.
- if(I:dir != SOUTH && add.Width() == 32 && add.Height() == 32)
- // Check every pixel for blank (computationally expensive, but the process is limited
- // by the amount of film on the station, only happens when we hit something that's
- // turned, and bails at the very first pixel it sees.
- var/blankpixel;
- for(var/y;y<=32;y++)
- for(var/x;x<32;x++)
- blankpixel = isnull(add.GetPixel(x,y))
- if(!blankpixel)
- break
- if(!blankpixel)
+ // Loop through the underlays, then overlays, sorting them into the layers list
+ for(var/process_set in 0 to 1)
+ var/list/process = process_set? A.overlays : A.underlays
+ for(var/i in 1 to process.len)
+ var/image/current = process[i]
+ if(!current)
+ continue
+ if(current.plane != FLOAT_PLANE && current.plane != A.plane)
+ continue
+ var/current_layer = current.layer
+ if(current_layer < 0)
+ if(current_layer <= -1000)
+ return flat
+ current_layer = process_set + A.layer + current_layer / 1000
+
+ for(var/p in 1 to layers.len)
+ var/image/cmp = layers[p]
+ if(current_layer < layers[cmp])
+ layers.Insert(p, current)
break
- // If we ALWAYS returned a null (which happens when GetPixel encounters something with alpha 0)
- if(blankpixel)
- // Pull the default direction.
- add = icon(I:icon, I:icon_state)
- else // 'I' is an appearance object.
- add = getFlatIcon(new/image(I), curdir, curicon, curstate, curblend)
+ layers[current] = current_layer
- // Find the new dimensions of the flat icon to fit the added overlay
- addX1 = min(flatX1, I:pixel_x+1)
- addX2 = max(flatX2, I:pixel_x+add.Width())
- addY1 = min(flatY1, I:pixel_y+1)
- addY2 = max(flatY2, I:pixel_y+add.Height())
+ //sortTim(layers, /proc/cmp_image_layer_asc)
- if(addX1!=flatX1 || addX2!=flatX2 || addY1!=flatY1 || addY2!=flatY2)
- // Resize the flattened icon so the new icon fits
- flat.Crop(addX1-flatX1+1, addY1-flatY1+1, addX2-flatX1+1, addY2-flatY1+1)
- flatX1=addX1;flatX2=addX2
- flatY1=addY1;flatY2=addY2
+ var/icon/add // Icon of overlay being added
- // Blend the overlay into the flattened icon
- flat.Blend(add, blendMode2iconMode(curblend), I:pixel_x + 2 - flatX1, I:pixel_y + 2 - flatY1)
+ // Current dimensions of flattened icon
+ var/list/flat_size = list(1, flat.Width(), 1, flat.Height())
+ // Dimensions of overlay being added
+ var/list/add_size[4]
- if(A.color)
- flat.Blend(A.color, ICON_MULTIPLY)
- if(A.alpha < 255)
- flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY)
+ for(var/V in layers)
+ var/image/I = V
+ if(I.alpha == 0)
+ continue
- return icon(flat, "", SOUTH)
+ if(I == copy) // 'I' is an /image based on the object being flattened.
+ curblend = BLEND_OVERLAY
+ add = icon(I.icon, I.icon_state, base_icon_dir)
+ else // 'I' is an appearance object.
+ add = getFlatIcon(image(I), curdir, curicon, curstate, curblend, FALSE, no_anim)
+ if(!add)
+ continue
+ // Find the new dimensions of the flat icon to fit the added overlay
+ add_size = list(
+ min(flatX1, I.pixel_x+1),
+ max(flatX2, I.pixel_x+add.Width()),
+ min(flatY1, I.pixel_y+1),
+ max(flatY2, I.pixel_y+add.Height())
+ )
+
+ if(flat_size ~! add_size)
+ // Resize the flattened icon so the new icon fits
+ flat.Crop(
+ addX1 - flatX1 + 1,
+ addY1 - flatY1 + 1,
+ addX2 - flatX1 + 1,
+ addY2 - flatY1 + 1
+ )
+ flat_size = add_size.Copy()
+
+ // Blend the overlay into the flattened icon
+ flat.Blend(add, blendMode2iconMode(curblend), I.pixel_x + 2 - flatX1, I.pixel_y + 2 - flatY1)
+
+ if(A.color)
+ if(islist(A.color))
+ flat.MapColors(arglist(A.color))
+ else
+ flat.Blend(A.color, ICON_MULTIPLY)
+
+ if(A.alpha < 255)
+ flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY)
+
+ if(no_anim)
+ //Clean up repeated frames
+ var/icon/cleaned = new /icon()
+ cleaned.Insert(flat, "", SOUTH, 1, 0)
+ . = cleaned
+ else
+ . = icon(flat, "", SOUTH)
+ else //There's no overlays.
+ if(!noIcon)
+ SET_SELF(.)
+
+ //Clear defines
+ #undef flatX1
+ #undef flatX2
+ #undef flatY1
+ #undef flatY2
+ #undef addX1
+ #undef addX2
+ #undef addY1
+ #undef addY2
+
+ #undef INDEX_X_LOW
+ #undef INDEX_X_HIGH
+ #undef INDEX_Y_LOW
+ #undef INDEX_Y_HIGH
+
+ #undef BLANK
+ #undef SET_SELF
/proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N
var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A.
- for(var/I in A.overlays)//For every image in overlays. var/image/I will not work, don't try it.
- if(I:layer>A.layer) continue//If layer is greater than what we need, skip it.
- var/icon/image_overlay = new(I:icon,I:icon_state)//Blend only works with icon objects.
+ for(var/V in A.overlays)//For every image in overlays. var/image/I will not work, don't try it.
+ var/image/I = V
+ if(I.layer>A.layer)
+ continue//If layer is greater than what we need, skip it.
+ var/icon/image_overlay = new(I.icon,I.icon_state)//Blend only works with icon objects.
//Also, icons cannot directly set icon_state. Slower than changing variables but whatever.
alpha_mask.Blend(image_overlay,ICON_OR)//OR so they are lumped together in a nice overlay.
return alpha_mask//And now return the mask.
diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm
index f1e6f38a2d4..6b5807deaef 100644
--- a/code/__HELPERS/lists.dm
+++ b/code/__HELPERS/lists.dm
@@ -124,9 +124,13 @@
. += A
//Like typesof() or subtypesof(), but returns a typecache instead of a list
-/proc/typecacheof(path, ignore_root_path)
+/proc/typecacheof(path, ignore_root_path, only_root_path = FALSE)
if(ispath(path))
- var/list/types = ignore_root_path ? subtypesof(path) : typesof(path)
+ var/list/types = list()
+ if(only_root_path)
+ types = list(path)
+ else
+ types = ignore_root_path ? subtypesof(path) : typesof(path)
var/list/L = list()
for(var/T in types)
L[T] = TRUE
@@ -140,8 +144,11 @@
L[T] = TRUE
else
for(var/P in pathlist)
- for(var/T in typesof(P))
- L[T] = TRUE
+ if(only_root_path)
+ L[P] = TRUE
+ else
+ for(var/T in typesof(P))
+ L[T] = TRUE
return L
//Removes any null entries from the list
diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm
index 5b90cda376e..246377eba32 100644
--- a/code/__HELPERS/names.dm
+++ b/code/__HELPERS/names.dm
@@ -112,8 +112,8 @@ var/syndicate_name = null
//Traitors and traitor silicons will get these. Revs will not.
-var/syndicate_code_phrase//Code phrase for traitors.
-var/syndicate_code_response//Code response for traitors.
+GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors.
+GLOBAL_VAR(syndicate_code_response) //Code response for traitors.
/*
Should be expanded.
diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm
index 54fd47a220d..d13bf08c58b 100644
--- a/code/__HELPERS/time.dm
+++ b/code/__HELPERS/time.dm
@@ -35,7 +35,7 @@
* If you want to display the canonical station "time" (aka the in-character time of the station) use station_time_timestamp
*/
/proc/classic_worldtime2text(time = world.time)
- time = (round_start_time ? (time - round_start_time) : (time - world.time))
+ time = (SSticker.round_start_time ? (time - SSticker.round_start_time) : (time - world.time))
return "[round(time / 36000)+12]:[(time / 600 % 60) < 10 ? add_zero(time / 600 % 60, 1) : time / 600 % 60]"
//Returns the world time in english
@@ -59,7 +59,7 @@
- You can use this, for example, to do "This will expire at [station_time_at(world.time + 500)]" to display a "station time" expiration date
which is much more useful for a player)*/
/proc/station_time(time=world.time, display_only=FALSE)
- return ((((time - round_start_time)) + GLOB.gametime_offset) % 864000) - (display_only ? GLOB.timezoneOffset : 0)
+ return ((((time - SSticker.round_start_time)) + GLOB.gametime_offset) % 864000) - (display_only ? GLOB.timezoneOffset : 0)
/proc/station_time_timestamp(format = "hh:mm:ss", time=world.time)
return time2text(station_time(time, TRUE), format)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 619d09713d6..00724c94a03 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -2029,3 +2029,17 @@ var/mob/dview/dview_mob = new
/proc/pass()
return
+
+/proc/params2turf(scr_loc, turf/origin, client/C)
+ if(!scr_loc)
+ return null
+ var/tX = splittext(scr_loc, ",")
+ var/tY = splittext(tX[2], ":")
+ var/tZ = origin.z
+ tY = tY[1]
+ tX = splittext(tX[1], ":")
+ tX = tX[1]
+ var/list/actual_view = getviewsize(C ? C.view : world.view)
+ tX = Clamp(origin.x + text2num(tX) - round(actual_view[1] / 2) - 1, 1, world.maxx)
+ tY = Clamp(origin.y + text2num(tY) - round(actual_view[2] / 2) - 1, 1, world.maxy)
+ return locate(tX, tY, tZ)
\ No newline at end of file
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 551b729028e..b6fcae25061 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -22,8 +22,7 @@ GLOBAL_LIST_INIT(living_mob_list, list()) //List of all alive mobs, including
GLOBAL_LIST_INIT(dead_mob_list, list()) //List of all dead mobs, including clientless. Excludes /mob/new_player
GLOBAL_LIST_INIT(respawnable_list, list()) //List of all mobs, dead or in mindless creatures that still be respawned.
GLOBAL_LIST_INIT(non_respawnable_keys, list()) //List of ckeys that are excluded from respawning for remainder of round.
-GLOBAL_LIST_INIT(simple_animal_list, list()) //List of all simple animals, including clientless
-GLOBAL_LIST_INIT(snpc_list, list()) //List of all snpc's, including clientless
+GLOBAL_LIST_INIT(simple_animals, list(list(), list(), list(), list())) //One for each AI_* status define, List of all simple animals, including clientless
GLOBAL_LIST_INIT(bots_list, list()) //List of all bots(beepsky, medibots,etc)
GLOBAL_LIST_INIT(med_hud_users, list())
diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm
index 77443fb4ab2..e5674a9b47b 100644
--- a/code/_globalvars/misc.dm
+++ b/code/_globalvars/misc.dm
@@ -83,4 +83,7 @@ GLOBAL_VAR_INIT(gametime_offset, 432000) // 12:00 in seconds
//printers shutdown if too much shit printed
var/copier_items_printed = 0
var/copier_max_items = 300
-var/copier_items_printed_logged = FALSE
\ No newline at end of file
+var/copier_items_printed_logged = FALSE
+
+
+GLOBAL_VAR(map_name) // Self explanatory
\ No newline at end of file
diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm
index e997a672e1f..ba8b70991c2 100644
--- a/code/_globalvars/station.dm
+++ b/code/_globalvars/station.dm
@@ -1,3 +1,2 @@
-var/global/datum/datacore/data_core = null
-
-var/map_name = "Unknown" //The name of the map that is loaded. Assigned in world/New()
\ No newline at end of file
+// TODO: Move this to be not in its own fucking file all alone on its own
+var/global/datum/datacore/data_core = null
\ No newline at end of file
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 286f8ce7095..b823efe2563 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -403,7 +403,25 @@
icon_state = "passage0"
plane = CLICKCATCHER_PLANE
mouse_opacity = MOUSE_OPACITY_OPAQUE
- screen_loc = "CENTER-7,CENTER-7"
+ screen_loc = "CENTER"
+
+#define MAX_SAFE_BYOND_ICON_SCALE_TILES (MAX_SAFE_BYOND_ICON_SCALE_PX / world.icon_size)
+#define MAX_SAFE_BYOND_ICON_SCALE_PX (33 * 32) //Not using world.icon_size on purpose.
+
+/obj/screen/click_catcher/proc/UpdateGreed(view_size_x = 15, view_size_y = 15)
+ var/icon/newicon = icon('icons/mob/screen_gen.dmi', "catcher")
+ var/ox = min(MAX_SAFE_BYOND_ICON_SCALE_TILES, view_size_x)
+ var/oy = min(MAX_SAFE_BYOND_ICON_SCALE_TILES, view_size_y)
+ var/px = view_size_x * world.icon_size
+ var/py = view_size_y * world.icon_size
+ var/sx = min(MAX_SAFE_BYOND_ICON_SCALE_PX, px)
+ var/sy = min(MAX_SAFE_BYOND_ICON_SCALE_PX, py)
+ newicon.Scale(sx, sy)
+ icon = newicon
+ screen_loc = "CENTER-[(ox-1)*0.5],CENTER-[(oy-1)*0.5]"
+ var/matrix/M = new
+ M.Scale(px/sx, py/sy)
+ transform = M
/obj/screen/click_catcher/Click(location, control, params)
var/list/modifiers = params2list(params)
@@ -411,6 +429,6 @@
var/mob/living/carbon/C = usr
C.swap_hand()
else
- var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr))
+ var/turf/T = params2turf(modifiers["screen-loc"], get_turf(usr))
T.Click(location, control, params)
return 1
diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm
index feb57d83c05..6fe3a781642 100644
--- a/code/_onclick/hud/blob_overmind.dm
+++ b/code/_onclick/hud/blob_overmind.dm
@@ -141,6 +141,9 @@
blobpwrdisplay.name = "blob power"
blobpwrdisplay.icon_state = "block"
blobpwrdisplay.screen_loc = ui_health
+ blobpwrdisplay.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ blobpwrdisplay.layer = ABOVE_HUD_LAYER
+ blobpwrdisplay.plane = ABOVE_HUD_PLANE
static_inventory += blobpwrdisplay
blobhealthdisplay = new /obj/screen()
diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm
index 2a7dab21a03..1e17cae1708 100644
--- a/code/_onclick/hud/devil.dm
+++ b/code/_onclick/hud/devil.dm
@@ -40,7 +40,6 @@
using.icon = ui_style
using.icon_state = "swap_1"
using.screen_loc = ui_swaphand1
- using.layer = 19
static_inventory += using
using = new /obj/screen/swap_hand()
@@ -48,7 +47,6 @@
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand2
- using.layer = 19
static_inventory += using
mymob.zone_sel = new /obj/screen/zone_sel()
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index 673a49ffd22..9d00f216eac 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -2,23 +2,21 @@
var/list/screens = list()
/mob/proc/overlay_fullscreen(category, type, severity)
- var/obj/screen/fullscreen/screen
- if(screens[category])
- screen = screens[category]
- if(screen.type != type)
- clear_fullscreen(category, FALSE)
- return .()
- else if(!severity || severity == screen.severity)
- return null
- else
- screen = new type
+ var/obj/screen/fullscreen/screen = screens[category]
+ if (!screen || screen.type != type)
+ // needs to be recreated
+ clear_fullscreen(category, FALSE)
+ screens[category] = screen = new type()
+ else if ((!severity || severity == screen.severity) && (!client || screen.screen_loc != "CENTER-7,CENTER-7" || screen.view == client.view))
+ // doesn't need to be updated
+ return screen
screen.icon_state = "[initial(screen.icon_state)][severity]"
screen.severity = severity
-
- screens[category] = screen
- if(client)
+ if (client && screen.should_show_to(src))
+ screen.update_for_view(client.view)
client.screen += screen
+
return screen
/mob/proc/clear_fullscreen(category, animated = 10)
@@ -45,17 +43,38 @@
clear_fullscreen(category)
/datum/hud/proc/reload_fullscreen()
- var/list/screens = mymob.screens
- for(var/category in screens)
- mymob.client.screen |= screens[category]
+ if(mymob.client)
+ var/obj/screen/fullscreen/screen
+ var/list/screens = mymob.screens
+ for(var/category in screens)
+ screen = screens[category]
+ if(screen.should_show_to(mymob))
+ screen.update_for_view(mymob.client.view)
+ mymob.client.screen |= screen
+ else
+ mymob.client.screen -= screen
/obj/screen/fullscreen
icon = 'icons/mob/screen_full.dmi'
icon_state = "default"
screen_loc = "CENTER-7,CENTER-7"
layer = FULLSCREEN_LAYER
+ plane = FULLSCREEN_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ var/view = 7
var/severity = 0
+ var/show_when_dead = FALSE
+
+/obj/screen/fullscreen/proc/update_for_view(client_view)
+ if (screen_loc == "CENTER-7,CENTER-7" && view != client_view)
+ var/list/actualview = getviewsize(client_view)
+ view = client_view
+ transform = matrix(actualview[1]/FULLSCREEN_OVERLAY_RESOLUTION_X, 0, 0, 0, actualview[2]/FULLSCREEN_OVERLAY_RESOLUTION_Y, 0)
+
+/obj/screen/fullscreen/proc/should_show_to(mob/mymob)
+ if(!show_when_dead && mymob.stat == DEAD)
+ return FALSE
+ return TRUE
/obj/screen/fullscreen/Destroy()
severity = 0
@@ -100,6 +119,33 @@
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "druggy"
+/obj/screen/fullscreen/lighting_backdrop
+ icon = 'icons/mob/screen_gen.dmi'
+ icon_state = "flash"
+ transform = matrix(200, 0, 0, 0, 200, 0)
+ plane = LIGHTING_PLANE
+ blend_mode = BLEND_OVERLAY
+ show_when_dead = TRUE
+
+//Provides darkness to the back of the lighting plane
+/obj/screen/fullscreen/lighting_backdrop/lit
+ invisibility = INVISIBILITY_LIGHTING
+ layer = BACKGROUND_LAYER+21
+ color = "#000"
+ show_when_dead = TRUE
+
+//Provides whiteness in case you don't see lights so everything is still visible
+/obj/screen/fullscreen/lighting_backdrop/unlit
+ layer = BACKGROUND_LAYER+20
+ show_when_dead = TRUE
+
+/obj/screen/fullscreen/see_through_darkness
+ icon_state = "nightvision"
+ plane = LIGHTING_PLANE
+ layer = LIGHTING_LAYER
+ blend_mode = BLEND_ADD
+ show_when_dead = TRUE
+
#undef FULLSCREEN_LAYER
#undef BLIND_LAYER
#undef CRIT_LAYER
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index 410d49f973e..0063feae9cf 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -38,15 +38,23 @@
var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle
var/action_buttons_hidden = 0
+ var/list/obj/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object
+
/mob/proc/create_mob_hud()
if(client && !hud_used)
hud_used = new /datum/hud(src)
+ update_sight()
/datum/hud/New(mob/owner)
mymob = owner
hide_actions_toggle = new
hide_actions_toggle.InitialiseIcon(mymob)
+ for(var/mytype in subtypesof(/obj/screen/plane_master))
+ var/obj/screen/plane_master/instance = new mytype()
+ plane_masters["[instance.plane]"] = instance
+ instance.backdrop(mymob)
+
/datum/hud/Destroy()
if(mymob.hud_used == src)
mymob.hud_used = null
@@ -83,14 +91,16 @@
nightvisionicon = null
devilsouldisplay = null
+ QDEL_LIST_ASSOC_VAL(plane_masters)
+
mymob = null
return ..()
/datum/hud/proc/show_hud(version = 0)
if(!ismob(mymob))
- return 0
+ return FALSE
if(!mymob.client)
- return 0
+ return FALSE
mymob.client.screen = list()
@@ -162,13 +172,25 @@
mymob.update_action_buttons(1)
reorganize_alerts()
reload_fullscreen()
+ plane_masters_update()
+
+/datum/hud/proc/plane_masters_update()
+ // Plane masters are always shown to OUR mob, never to observers
+ for(var/thing in plane_masters)
+ var/obj/screen/plane_master/PM = plane_masters[thing]
+ PM.backdrop(mymob)
+ mymob.client.screen += PM
/datum/hud/human/show_hud(version = 0)
- ..()
+ . = ..()
+ if(!.)
+ return
hidden_inventory_update()
/datum/hud/robot/show_hud(version = 0)
- ..()
+ . = ..()
+ if(!.)
+ return
update_robot_modules_display()
/datum/hud/proc/hidden_inventory_update()
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 6f5c8ee0548..811a7e89cdb 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -83,6 +83,7 @@
/datum/hud/human/New(mob/living/carbon/human/owner, var/ui_style = 'icons/mob/screen_white.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255)
..()
+ owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness)
var/obj/screen/using
var/obj/screen/inventory/inv_box
diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm
index bbac6e36df3..e011aea037c 100644
--- a/code/_onclick/hud/picture_in_picture.dm
+++ b/code/_onclick/hud/picture_in_picture.dm
@@ -1,7 +1,7 @@
/obj/screen/movable/pic_in_pic
name = "Picture-in-picture"
screen_loc = "CENTER"
- plane = GAME_PLANE
+ plane = FLOOR_PLANE
var/atom/center
var/width = 0
var/height = 0
diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm
new file mode 100644
index 00000000000..b43715ee598
--- /dev/null
+++ b/code/_onclick/hud/plane_master.dm
@@ -0,0 +1,53 @@
+/obj/screen/plane_master
+ screen_loc = "CENTER"
+ icon_state = "blank"
+ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
+ blend_mode = BLEND_OVERLAY
+ var/show_alpha = 255
+ var/hide_alpha = 0
+
+/obj/screen/plane_master/proc/Show(override)
+ alpha = override || show_alpha
+
+/obj/screen/plane_master/proc/Hide(override)
+ alpha = override || hide_alpha
+
+/obj/screen/plane_master/proc/outline(_size, _color)
+ filters += filter(type = "outline", size = _size, color = _color)
+
+/obj/screen/plane_master/proc/shadow(_size, _border, _offset = 0, _x = 0, _y = 0, _color = "#04080FAA")
+ filters += filter(type = "drop_shadow", x = _x, y = _y, color = _color, size = _size, offset = _offset, border = _border)
+
+/obj/screen/plane_master/proc/clear_filters()
+ filters = list()
+
+//Why do plane masters need a backdrop sometimes? Read http://www.byond.com/forum/?post=2141928
+//Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong.
+/obj/screen/plane_master/proc/backdrop(mob/mymob)
+
+/obj/screen/plane_master/floor
+ name = "floor plane master"
+ plane = FLOOR_PLANE
+ appearance_flags = PLANE_MASTER
+ blend_mode = BLEND_OVERLAY
+
+/obj/screen/plane_master/game_world
+ name = "game world plane master"
+ plane = GAME_PLANE
+ appearance_flags = PLANE_MASTER //should use client color
+ blend_mode = BLEND_OVERLAY
+
+/obj/screen/plane_master/game_world/backdrop(mob/mymob)
+ clear_filters()
+ if(istype(mymob) && mymob.client && mymob.client.prefs && (mymob.client.prefs.toggles & AMBIENT_OCCLUSION))
+ filters += FILTER_AMBIENT_OCCLUSION
+
+/obj/screen/plane_master/lighting
+ name = "lighting plane master"
+ plane = LIGHTING_PLANE
+ blend_mode = BLEND_MULTIPLY
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+
+/obj/screen/plane_master/lighting/backdrop(mob/mymob)
+ mymob.overlay_fullscreen("lighting_backdrop_lit", /obj/screen/fullscreen/lighting_backdrop/lit)
+ mymob.overlay_fullscreen("lighting_backdrop_unlit", /obj/screen/fullscreen/lighting_backdrop/unlit)
\ No newline at end of file
diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm
index a542c0345fd..ea23a56d8e4 100644
--- a/code/_onclick/hud/robot.dm
+++ b/code/_onclick/hud/robot.dm
@@ -226,8 +226,8 @@
A.screen_loc = "CENTER[x]:16,SOUTH+[y]:7"
else
A.screen_loc = "CENTER+[x]:16,SOUTH+[y]:7"
- A.layer = 20
- A.plane = HUD_PLANE
+ A.layer = ABOVE_HUD_LAYER
+ A.plane = ABOVE_HUD_PLANE
x++
if(x == 4)
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index d9f6653b0ff..c583617ac23 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -9,9 +9,10 @@
/obj/screen
name = ""
icon = 'icons/mob/screen_gen.dmi'
- layer = HUD_LAYER_SCREEN
+ layer = HUD_LAYER
plane = HUD_PLANE
- unacidable = 1
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF
+ unacidable = TRUE
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
var/datum/hud/hud = null
appearance_flags = NO_CLIENT_COLOR
@@ -36,6 +37,8 @@
/obj/screen/close
name = "close"
+ layer = ABOVE_HUD_LAYER
+ plane = ABOVE_HUD_PLANE
/obj/screen/close/Click()
if(master)
@@ -47,7 +50,6 @@
/obj/screen/drop
name = "drop"
icon_state = "act_drop"
- layer = 19
/obj/screen/drop/Click()
usr.drop_item_v()
@@ -143,7 +145,6 @@
name = "resist"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_resist"
- layer = 19
/obj/screen/resist/Click()
if(isliving(usr))
@@ -327,7 +328,6 @@
/obj/screen/inventory
var/slot_id //The indentifier for the slot. It has nothing to do with ID cards.
var/list/object_overlays = list()
- layer = 19
/obj/screen/inventory/MouseEntered()
..()
@@ -417,7 +417,6 @@
return 1
/obj/screen/swap_hand
- layer = 19
name = "swap hand"
/obj/screen/swap_hand/Click()
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index 238ce2d5a94..6ef7a797136 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -65,8 +65,8 @@ var/const/tk_maxrange = 15
flags = NOBLUDGEON | ABSTRACT | DROPDEL
//item_state = null
w_class = WEIGHT_CLASS_GIGANTIC
- layer = 20
- plane = HUD_PLANE
+ layer = ABOVE_HUD_LAYER
+ plane = ABOVE_HUD_PLANE
var/last_throw = 0
var/atom/movable/focus = null
diff --git a/code/controllers/Processes/lighting.dm b/code/controllers/Processes/lighting.dm
deleted file mode 100644
index d46cab1d19f..00000000000
--- a/code/controllers/Processes/lighting.dm
+++ /dev/null
@@ -1,98 +0,0 @@
-/var/lighting_overlays_initialised = FALSE
-
-/var/list/lighting_update_lights = list() // List of lighting sources queued for update.
-/var/list/lighting_update_corners = list() // List of lighting corners queued for update.
-/var/list/lighting_update_overlays = list() // List of lighting overlays queued for update.
-
-/var/list/lighting_update_lights_old = list() // List of lighting sources currently being updated.
-/var/list/lighting_update_corners_old = list() // List of lighting corners currently being updated.
-/var/list/lighting_update_overlays_old = list() // List of lighting overlays currently being updated.
-
-
-/datum/controller/process/lighting
- // Queues of update counts, waiting to be rolled into stats lists
- var/list/stats_queues = list(
- "Source" = list(), "Corner" = list(), "Overlay" = list())
- // Stats lists
- var/list/stats_lists = list(
- "Source" = list(), "Corner" = list(), "Overlay" = list())
- var/update_stats_every = (1 SECONDS)
- var/next_stats_update = 0
- var/stat_updates_to_keep = 5
-
-/datum/controller/process/lighting/setup()
- name = "lighting"
-
- schedule_interval = 0 // run as fast as you possibly can
- sleep_interval = 10 // Yield every 10% of a tick
- defer_usage = 80 // Defer at 80% of a tick
- create_all_lighting_overlays()
- lighting_overlays_initialised = TRUE
-
- // Pre-process lighting once before the round starts. Wait 30 seconds so the away mission has time to load.
- spawn(300)
- doWork(1)
-
-/datum/controller/process/lighting/doWork(roundstart)
-
- lighting_update_lights_old = lighting_update_lights //We use a different list so any additions to the update lists during a delay from scheck() don't cause things to be cut from the list without being updated.
- lighting_update_lights = list()
- for(var/datum/light_source/L in lighting_update_lights_old)
-
- if(L.check() || L.destroyed || L.force_update)
- L.remove_lum()
- if(!L.destroyed)
- L.apply_lum()
-
- else if(L.vis_update) //We smartly update only tiles that became (in) visible to use.
- L.smart_vis_update()
-
- L.vis_update = FALSE
- L.force_update = FALSE
- L.needs_update = FALSE
-
- SCHECK
-
- lighting_update_corners_old = lighting_update_corners //Same as above.
- lighting_update_corners = list()
- for(var/A in lighting_update_corners_old)
- var/datum/lighting_corner/C = A
-
- C.update_overlays()
-
- C.needs_update = FALSE
-
- SCHECK
-
- lighting_update_overlays_old = lighting_update_overlays //Same as above.
- lighting_update_overlays = list()
-
- for(var/A in lighting_update_overlays_old)
- var/atom/movable/lighting_overlay/O = A
- O.update_overlay()
- O.needs_update = 0
- SCHECK
-
- stats_queues["Source"] += lighting_update_lights_old.len
- stats_queues["Corner"] += lighting_update_corners_old.len
- stats_queues["Overlay"] += lighting_update_overlays_old.len
-
- if(next_stats_update <= world.time)
- next_stats_update = world.time + update_stats_every
- for(var/stat_name in stats_queues)
- var/stat_sum = 0
- var/list/stats_queue = stats_queues[stat_name]
- for(var/count in stats_queue)
- stat_sum += count
- stats_queue.Cut()
-
- var/list/stats_list = stats_lists[stat_name]
- stats_list.Insert(1, stat_sum)
- if(stats_list.len > stat_updates_to_keep)
- stats_list.Cut(stats_list.len)
-
-/datum/controller/process/lighting/statProcess()
- ..()
- stat(null, "[total_lighting_sources] sources, [total_lighting_corners] corners, [total_lighting_overlays] overlays")
- for(var/stat_type in stats_lists)
- stat(null, "[stat_type] updates: [jointext(stats_lists[stat_type], " | ")]")
diff --git a/code/controllers/Processes/npcai.dm b/code/controllers/Processes/npcai.dm
deleted file mode 100644
index 127429efd34..00000000000
--- a/code/controllers/Processes/npcai.dm
+++ /dev/null
@@ -1,41 +0,0 @@
-var/global/datum/controller/process/npcai/npcai_master
-
-/datum/controller/process/npcai
- var/current_cycle
-
-/datum/controller/process/npcai/setup()
- name = "npc ai"
- schedule_interval = 20 // every 2 seconds
- start_delay = 16
- log_startup_progress("NPC ticker starting up.")
-
-/datum/controller/process/npcai/started()
- ..()
- if(!GLOB.simple_animal_list)
- GLOB.simple_animal_list = list()
- if(!GLOB.snpc_list)
- GLOB.snpc_list = list()
-
-/datum/controller/process/npcai/statProcess()
- ..()
- stat(null, "[GLOB.simple_animal_list.len] simple animals")
- stat(null, "[GLOB.snpc_list.len] SNPC's")
-
-/datum/controller/process/npcai/doWork()
- for(last_object in GLOB.simple_animal_list)
- var/mob/living/simple_animal/M = last_object
- if(istype(M) && !QDELETED(M))
- if(!M.client && M.stat == CONSCIOUS)
- try
- M.process_ai()
- catch(var/exception/e)
- catchException(e, M)
- SCHECK
- else
- catchBadType(M)
- GLOB.simple_animal_list -= M
-
- current_cycle++
-
-
-DECLARE_GLOBAL_CONTROLLER(npcai, npcai_master)
diff --git a/code/controllers/Processes/ticker.dm b/code/controllers/Processes/ticker.dm
deleted file mode 100644
index 578c2725710..00000000000
--- a/code/controllers/Processes/ticker.dm
+++ /dev/null
@@ -1,36 +0,0 @@
-var/global/datum/controller/process/ticker/tickerProcess
-
-/datum/controller/process/ticker
- var/lastTickerTimeDuration
- var/lastTickerTime
-
-/datum/controller/process/ticker/setup()
- name = "ticker"
- schedule_interval = 20 // every 2 seconds
-
- lastTickerTime = world.timeofday
- log_startup_progress("Time ticker starting up.")
-
- if(!ticker)
- ticker = new
-
- spawn(0)
- if(ticker)
- ticker.pregame()
-
-DECLARE_GLOBAL_CONTROLLER(ticker, tickerProcess)
-
-/datum/controller/process/ticker/doWork()
- var/currentTime = world.timeofday
-
- if(currentTime < lastTickerTime) // check for midnight rollover
- lastTickerTimeDuration = (currentTime - (lastTickerTime - TICKS_IN_DAY)) / TICKS_IN_SECOND
- else
- lastTickerTimeDuration = (currentTime - lastTickerTime) / TICKS_IN_SECOND
-
- lastTickerTime = currentTime
-
- ticker.process_decrepit()
-
-/datum/controller/process/ticker/proc/getLastTickerTimeDuration()
- return lastTickerTimeDuration
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 12b5b0fd1a5..b452e10adbd 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -605,8 +605,7 @@
config.event_delay_upper[EVENT_LEVEL_MAJOR] = MinutesToTicks(values[3])
if("starlight")
- var/vvalue = text2num(value)
- config.starlight = vvalue >= 0 ? vvalue : 0
+ config.starlight = 1
if("player_reroute_cap")
var/vvalue = text2num(value)
@@ -787,7 +786,7 @@
config.sql_enabled = 0
log_config("WARNING: DB_CONFIG DEFINITION MISMATCH!")
spawn(60)
- if(ticker.current_state == GAME_STATE_PREGAME)
+ if(SSticker.current_state == GAME_STATE_PREGAME)
going = 0
spawn(600)
to_chat(world, "DB_CONFIG MISMATCH, ROUND START DELAYED.
Please check database version for recent upstream changes!")
diff --git a/code/controllers/hooks-defs.dm b/code/controllers/hooks-defs.dm
index 49919279242..59510162e1c 100644
--- a/code/controllers/hooks-defs.dm
+++ b/code/controllers/hooks-defs.dm
@@ -9,114 +9,3 @@
* Called in gameticker.dm when a round starts.
*/
/hook/roundstart
-
-/**
- * Roundend hook.
- * Called in gameticker.dm when a round ends.
- */
-/hook/roundend
-
-/**
- * LateSpawn hook.
- * Called in newplayer.dm when a humanoid character joins the round after it started.
- * Parameters: var/mob/living/carbon/human
- */
-/hook/latespawn
-
-/**
- * Death hook.
- * Called in death.dm when someone dies.
- * Parameters: var/mob/living/carbon/human, var/gibbed
- */
-/hook/death
-
-/**
- * Cloning hook.
- * Called in cloning.dm when someone is brought back by the wonders of modern science.
- * Parameters: var/mob/living/carbon/human
- */
-/hook/clone
-
-/**
- * Debrained hook.
- * Called in brain_item.dm when someone gets debrained.
- * Parameters: var/obj/item/brain
- */
-/hook/debrain
-
-/**
- * Borged hook.
- * Called in robot_parts.dm when someone gets turned into a cyborg.
- * Parameters: var/mob/living/silicon/robot
- */
-/hook/borgify
-
-/**
- * Podman hook.
- * Called in podmen.dm when someone is brought back as a Diona.
- * Parameters: var/mob/living/carbon/primitive/diona
- */
-/hook/harvest_podman
-
-/**
- * Payroll revoked hook.
- * Called in Accounts_DB.dm when someone's payroll is stolen at the Accounts terminal.
- * Parameters: var/datum/money_account
- */
-/hook/revoke_payroll
-
-/**
- * Account suspension hook.
- * Called in Accounts_DB.dm when someone's account is suspended or unsuspended at the Accounts terminal.
- * Parameters: var/datum/money_account
- */
-/hook/change_account_status
-
-/**
- * Employee reassignment hook.
- * Called in card.dm when someone's card is reassigned at the HoP's desk.
- * Parameters: var/obj/item/card/id
- */
-/hook/reassign_employee
-
-/**
- * Employee terminated hook.
- * Called in card.dm when someone's card is terminated at the HoP's desk.
- * Parameters: var/obj/item/card/id
- */
-/hook/terminate_employee
-
-/**
- * Crate sold hook.
- * Called in supplyshuttle.dm when a crate is sold on the shuttle.
- * Parameters: var/obj/structure/closet/crate/sold, var/area/shuttle
- */
-/hook/sell_crate
-
-/**
- * Captain spawned hook.
- * Called in supervisor.dm when a captain spawns
- * Parameters: var/mob/living/carbon/human/captain
- */
-/hook/captain_spawned
-
-/**
- * Mob login hook.
- * Called in login.dm when a player logs in to a mob.
- * Parameters: var/client/client, var/mob/mob
- */
-/hook/mob_login
-
- /**
- * Mob logout hook.
- * Called in logout.dm when a player logs out of a mob.
- * Parameters: var/client/client, var/mob/mob
- */
-/hook/mob_logout
-
-/**
- * Mob area change hook.
- * Called in area.dm when a mob moves from one area to another.
- * Parameters: var/mob/mob, var/area/newarea, var/area/oldarea
- */
-/hook/mob_area_change
diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index a9c7e0dbb7b..fa2465854f3 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -194,8 +194,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, "[msg]")
log_world(msg)
- if(config.developer_express_start & ticker.current_state == GAME_STATE_PREGAME)
- ticker.current_state = GAME_STATE_SETTING_UP
+ if(config.developer_express_start & SSticker.current_state == GAME_STATE_PREGAME)
+ SSticker.current_state = GAME_STATE_SETTING_UP
if(!current_runlevel)
SetRunLevel(1)
diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm
new file mode 100644
index 00000000000..2dad0abca0f
--- /dev/null
+++ b/code/controllers/subsystem/idlenpcpool.dm
@@ -0,0 +1,41 @@
+SUBSYSTEM_DEF(idlenpcpool)
+ name = "Idling NPC Pool"
+ flags = SS_POST_FIRE_TIMING|SS_BACKGROUND
+ priority = FIRE_PRIORITY_IDLE_NPC
+ wait = 60
+ runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
+
+ var/list/currentrun = list()
+ var/static/list/idle_mobs_by_zlevel[][]
+
+/datum/controller/subsystem/idlenpcpool/stat_entry()
+ var/list/idlelist = GLOB.simple_animals[AI_IDLE]
+ var/list/zlist = GLOB.simple_animals[AI_Z_OFF]
+ ..("IdleNPCS:[idlelist.len]|Z:[zlist.len]")
+
+/datum/controller/subsystem/idlenpcpool/Initialize(start_timeofday)
+ idle_mobs_by_zlevel = new /list(world.maxz,0)
+ return ..()
+
+/datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE)
+ if(!resumed)
+ var/list/idlelist = GLOB.simple_animals[AI_IDLE]
+ src.currentrun = idlelist.Copy()
+
+ //cache for sanic speed (lists are references anyways)
+ var/list/currentrun = src.currentrun
+
+ while(currentrun.len)
+ var/mob/living/simple_animal/SA = currentrun[currentrun.len]
+ --currentrun.len
+ if(!SA)
+ GLOB.simple_animals[AI_IDLE] -= SA
+ continue
+
+ if(!SA.ckey)
+ if(SA.stat != DEAD)
+ SA.handle_automated_movement()
+ if(SA.stat != DEAD)
+ SA.consider_wakeup()
+ if(MC_TICK_CHECK)
+ return
\ No newline at end of file
diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm
index 02f2681b22d..6a603bd7235 100644
--- a/code/controllers/subsystem/jobs.dm
+++ b/code/controllers/subsystem/jobs.dm
@@ -1,7 +1,8 @@
SUBSYSTEM_DEF(jobs)
name = "Jobs"
init_order = INIT_ORDER_JOBS // 12
- flags = SS_NO_FIRE
+ wait = 3000 // 5 minutes (Deciseconds)
+ runlevels = RUNLEVEL_GAME
//List of all jobs
var/list/occupations = list()
@@ -21,6 +22,12 @@ SUBSYSTEM_DEF(jobs)
LoadJobs("config/jobs.txt")
return ..()
+// Only fires every 5 minutes
+/datum/controller/subsystem/jobs/fire()
+ if(!config.sql_enabled || !config.use_exp_tracking)
+ return
+ update_exp(5,0)
+
/datum/controller/subsystem/jobs/proc/SetupOccupations(var/list/faction = list("Station"))
occupations = list()
var/list/all_jobs = subtypesof(/datum/job)
@@ -270,9 +277,9 @@ SUBSYSTEM_DEF(jobs)
SetupOccupations()
//Holder for Triumvirate is stored in the ticker, this just processes it
- if(ticker)
+ if(SSticker)
for(var/datum/job/ai/A in occupations)
- if(ticker.triai)
+ if(SSticker.triai)
A.spawn_positions = 3
//Get the players who are ready
@@ -473,10 +480,10 @@ SUBSYSTEM_DEF(jobs)
T = S.loc
if(T)
- H.loc = T
+ H.forceMove(T)
// Moving wheelchair if they have one
if(H.buckled && istype(H.buckled, /obj/structure/chair/wheelchair))
- H.buckled.loc = H.loc
+ H.buckled.forceMove(H.loc)
H.buckled.dir = H.dir
if(job)
diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm
new file mode 100644
index 00000000000..82bbd52471a
--- /dev/null
+++ b/code/controllers/subsystem/lighting.dm
@@ -0,0 +1,87 @@
+GLOBAL_LIST_EMPTY(lighting_update_lights) // List of lighting sources queued for update.
+GLOBAL_LIST_EMPTY(lighting_update_corners) // List of lighting corners queued for update.
+GLOBAL_LIST_EMPTY(lighting_update_objects) // List of lighting objects queued for update.
+
+SUBSYSTEM_DEF(lighting)
+ name = "Lighting"
+ wait = 2
+ init_order = INIT_ORDER_LIGHTING
+ flags = SS_TICKER
+
+/datum/controller/subsystem/lighting/stat_entry()
+ ..("L:[GLOB.lighting_update_lights.len]|C:[GLOB.lighting_update_corners.len]|O:[GLOB.lighting_update_objects.len]")
+
+/datum/controller/subsystem/lighting/Initialize(timeofday)
+ if(!initialized)
+ if(config.starlight)
+ for(var/I in GLOB.all_areas)
+ var/area/A = I
+ if(A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT)
+ A.luminosity = 0
+
+ create_all_lighting_objects()
+ initialized = TRUE
+
+ fire(FALSE, TRUE)
+
+ return ..()
+
+/datum/controller/subsystem/lighting/fire(resumed, init_tick_checks)
+ MC_SPLIT_TICK_INIT(3)
+ if(!init_tick_checks)
+ MC_SPLIT_TICK
+ var/i = 0
+ for(i in 1 to GLOB.lighting_update_lights.len)
+ var/datum/light_source/L = GLOB.lighting_update_lights[i]
+
+ L.update_corners()
+
+ L.needs_update = LIGHTING_NO_UPDATE
+
+ if(init_tick_checks)
+ CHECK_TICK
+ else if(MC_TICK_CHECK)
+ break
+ if(i)
+ GLOB.lighting_update_lights.Cut(1, i+1)
+ i = 0
+
+ if(!init_tick_checks)
+ MC_SPLIT_TICK
+
+ for (i in 1 to GLOB.lighting_update_corners.len)
+ var/datum/lighting_corner/C = GLOB.lighting_update_corners[i]
+
+ C.update_objects()
+ C.needs_update = FALSE
+ if(init_tick_checks)
+ CHECK_TICK
+ else if(MC_TICK_CHECK)
+ break
+ if(i)
+ GLOB.lighting_update_corners.Cut(1, i+1)
+ i = 0
+
+
+ if(!init_tick_checks)
+ MC_SPLIT_TICK
+
+ for (i in 1 to GLOB.lighting_update_objects.len)
+ var/atom/movable/lighting_object/O = GLOB.lighting_update_objects[i]
+
+ if(QDELETED(O))
+ continue
+
+ O.update()
+ O.needs_update = FALSE
+ if(init_tick_checks)
+ CHECK_TICK
+ else if(MC_TICK_CHECK)
+ break
+ if(i)
+ GLOB.lighting_update_objects.Cut(1, i+1)
+
+
+/datum/controller/subsystem/lighting/Recover()
+ initialized = SSlighting.initialized
+ ..()
\ No newline at end of file
diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm
index d19396af767..20061d7489b 100644
--- a/code/controllers/subsystem/mobs.dm
+++ b/code/controllers/subsystem/mobs.dm
@@ -1,14 +1,19 @@
SUBSYSTEM_DEF(mobs)
name = "Mobs"
priority = FIRE_PRIORITY_MOBS
- flags = SS_KEEP_TIMING | SS_NO_INIT
+ flags = SS_KEEP_TIMING
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/currentrun = list()
+ var/static/list/clients_by_zlevel[][]
/datum/controller/subsystem/mobs/stat_entry()
..("P:[GLOB.mob_list.len]")
+/datum/controller/subsystem/mobs/Initialize(start_timeofday)
+ clients_by_zlevel = new /list(world.maxz,0)
+ return ..()
+
/datum/controller/subsystem/mobs/fire(resumed = 0)
var/seconds = wait * 0.1
if(!resumed)
diff --git a/code/controllers/subsystem/nightshift.dm b/code/controllers/subsystem/nightshift.dm
index 358076c5652..4ebe1dceb0e 100644
--- a/code/controllers/subsystem/nightshift.dm
+++ b/code/controllers/subsystem/nightshift.dm
@@ -20,7 +20,7 @@ SUBSYSTEM_DEF(nightshift)
return ..()
/datum/controller/subsystem/nightshift/fire(resumed = FALSE)
- if(world.time - round_start_time < nightshift_first_check)
+ if(world.time - SSticker.round_start_time < nightshift_first_check)
return
check_nightshift()
diff --git a/code/controllers/subsystem/npcai.dm b/code/controllers/subsystem/npcai.dm
deleted file mode 100644
index f8fa3a5aa0f..00000000000
--- a/code/controllers/subsystem/npcai.dm
+++ /dev/null
@@ -1,24 +0,0 @@
-SUBSYSTEM_DEF(npcai)
- name = "NPC AI" // Simple AI controller, isolated from the SNPC one (NPCPool).
- flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND
- priority = FIRE_PRIORITY_NPC
- runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
- var/list/simple_animal_list = list()
-
-/datum/controller/subsystem/npcai/stat_entry()
- ..("SimAnimals:[simple_animal_list.len]")
-
-/datum/controller/subsystem/npcai/fire(resumed = FALSE)
- if(!resumed)
- src.simple_animal_list = simple_animal_list.Copy()
- for(var/mob/living/simple_animal/M in simple_animal_list)
- if(istype(M) && !QDELETED(M))
- if(!M.client && M.stat == CONSCIOUS)
- M.process_ai()
- if(MC_TICK_CHECK)
- return
- else
- simple_animal_list -= M
-
-/datum/controller/subsystem/npcai/Recover()
- simple_animal_list = SSnpcai.simple_animal_list
\ No newline at end of file
diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm
index b06d33f6f32..0de306b12eb 100644
--- a/code/controllers/subsystem/npcpool.dm
+++ b/code/controllers/subsystem/npcpool.dm
@@ -1,127 +1,33 @@
-#define PROCESSING_NPCS 0
-#define PROCESSING_DELEGATES 1
-#define PROCESSING_ASSISTANTS 2
-
SUBSYSTEM_DEF(npcpool)
- name = "NPC Pool"
- flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND
- priority = FIRE_PRIORITY_NPC
- runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
+ name = "NPC Pool"
+ flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND
+ priority = FIRE_PRIORITY_NPC
+ runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
- var/list/canBeUsed = list()
- var/list/needsDelegate = list()
- var/list/needsAssistant = list()
-
- var/list/processing = list()
- var/list/currentrun = list()
- var/stage
+ var/list/currentrun = list()
/datum/controller/subsystem/npcpool/stat_entry()
- ..("NPCS:[processing.len]|D:[needsDelegate.len]|A:[needsAssistant.len]|U:[canBeUsed.len]")
-
-/datum/controller/subsystem/npcpool/proc/stop_processing(mob/living/carbon/human/interactive/I)
- processing -= I
- currentrun -= I
- needsDelegate -= I
- canBeUsed -= I
- needsAssistant -= I
+ var/list/activelist = GLOB.simple_animals[AI_ON]
+ ..("SimpleAnimals:[activelist.len]")
/datum/controller/subsystem/npcpool/fire(resumed = FALSE)
- //bot delegation and coordination systems
- //General checklist/Tasks for delegating a task or coordinating it (for SNPCs)
- // 1. Bot proximity to task target: if too far, delegate, if close, coordinate
- // 2. Bot Health/status: check health with bots in local area, if their health is higher, delegate task to them, else coordinate
- // 3. Process delegation: if a bot (or bots) has been delegated, assign them to the task.
- // 4. Process coordination: if a bot(or bots) has been asked to coordinate, assign them to help.
- // 5. Do all assignments: goes through the delegated/coordianted bots and assigns the right variables/tasks to them.
- if (!resumed)
- currentrun = processing.Copy()
- stage = PROCESSING_NPCS
- //cache for sanic speed (lists are references anyways)
- var/list/cachecurrentrun = currentrun
- var/list/cachecanBeUsed = canBeUsed
+ if(!resumed)
+ var/list/activelist = GLOB.simple_animals[AI_ON]
+ src.currentrun = activelist.Copy()
- if(stage == PROCESSING_NPCS)
- while(cachecurrentrun.len)
- var/mob/living/carbon/human/interactive/thing = cachecurrentrun[cachecurrentrun.len]
- --cachecurrentrun.len
+ var/list/currentrun = src.currentrun
- thing.InteractiveProcess()
+ while(currentrun.len)
+ var/mob/living/simple_animal/SA = currentrun[currentrun.len]
+ --currentrun.len
- var/checkInRange = view(SNPC_MAX_RANGE_FIND,thing)
- if(thing.IsDeadOrIncap(FALSE) || !(locate(thing.TARGET) in checkInRange))
- needsDelegate += thing
- else if(thing.doing & SNPC_FIGHTING)
- needsAssistant += thing
- else
- cachecanBeUsed += thing
-
- if (MC_TICK_CHECK)
- return
- stage = PROCESSING_DELEGATES
- cachecurrentrun = needsDelegate //localcache
- currentrun = cachecurrentrun
-
- if(stage == PROCESSING_DELEGATES)
- while(cachecurrentrun.len && cachecanBeUsed.len)
- var/mob/living/carbon/human/interactive/check = cachecurrentrun[cachecurrentrun.len]
- var/mob/living/carbon/human/interactive/candidate = cachecanBeUsed[cachecanBeUsed.len]
- --cachecurrentrun.len
-
- var/helpProb = 0
- var/list/chfac = check.faction
- var/list/canfac = candidate.faction
- var/facCount = LAZYLEN(chfac) * LAZYLEN(canfac)
-
- for(var/C in chfac)
- if(C in canfac)
- helpProb = min(100,helpProb + 25)
- if(helpProb >= 100)
- break
-
- if(facCount == 1 && helpProb)
- helpProb = 100
-
- if(prob(helpProb) && candidate.takeDelegate(check))
- --cachecanBeUsed.len
- candidate.change_eye_color(255, 0, 0)
- candidate.update_icons()
-
- if(MC_TICK_CHECK)
- return
- stage = PROCESSING_ASSISTANTS
- cachecurrentrun = needsAssistant //localcache
- currentrun = cachecurrentrun
-
- //no need for the stage check
-
- while(cachecurrentrun.len && cachecanBeUsed.len)
- var/mob/living/carbon/human/interactive/check = cachecurrentrun[cachecurrentrun.len]
- var/mob/living/carbon/human/interactive/candidate = cachecanBeUsed[cachecanBeUsed.len]
- --cachecurrentrun.len
-
- var/helpProb = 0
- var/list/chfac = check.faction
- var/list/canfac = candidate.faction
- var/facCount = LAZYLEN(chfac) * LAZYLEN(canfac)
-
- for(var/C in chfac)
- if(C in canfac)
- helpProb = min(100,helpProb + 25)
- if(helpProb >= 100)
- break
-
- if(facCount == 1 && helpProb)
- helpProb = 100
-
- if(prob(helpProb) && candidate.takeDelegate(check,FALSE))
- --cachecanBeUsed.len
- candidate.change_eye_color(255, 255, 0)
- candidate.update_icons()
-
- if(!cachecurrentrun.len || MC_TICK_CHECK) //don't change SS state if it isn't necessary
- return
-
-/datum/controller/subsystem/npcpool/Recover()
- processing = SSnpcpool.processing
\ No newline at end of file
+ if(!SA.ckey && !SA.notransform)
+ if(SA.stat != DEAD)
+ SA.handle_automated_movement()
+ if(SA.stat != DEAD)
+ SA.handle_automated_action()
+ if(SA.stat != DEAD)
+ SA.handle_automated_speech()
+ if(MC_TICK_CHECK)
+ return
\ No newline at end of file
diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm
index 30021df4fb1..a1ca9b5fdad 100644
--- a/code/controllers/subsystem/shuttles.dm
+++ b/code/controllers/subsystem/shuttles.dm
@@ -106,8 +106,8 @@ SUBSYSTEM_DEF(shuttle)
return
emergency = backup_shuttle
- if(world.time - round_start_time < config.shuttle_refuel_delay)
- to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.")
+ if(world.time - SSticker.round_start_time < config.shuttle_refuel_delay)
+ to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - SSticker.round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.")
return
switch(emergency.mode)
@@ -169,7 +169,7 @@ SUBSYSTEM_DEF(shuttle)
return
if(!emergency.canRecall)
return
- if(ticker.mode.name == "meteor")
+ if(SSticker.mode.name == "meteor")
return
if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED)
if(emergency.timeLeft(1) < emergencyCallTime * 0.25)
diff --git a/code/game/gamemodes/gameticker.dm b/code/controllers/subsystem/ticker.dm
similarity index 79%
rename from code/game/gamemodes/gameticker.dm
rename to code/controllers/subsystem/ticker.dm
index 972075ceece..668dfe5a3d6 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -1,73 +1,118 @@
-var/global/datum/controller/gameticker/ticker
-var/round_start_time = 0
+SUBSYSTEM_DEF(ticker)
+ name = "Ticker"
+ init_order = INIT_ORDER_TICKER
-/datum/controller/gameticker
+ priority = FIRE_PRIORITY_TICKER
+ flags = SS_KEEP_TIMING
+ runlevels = RUNLEVEL_LOBBY | RUNLEVEL_SETUP | RUNLEVEL_GAME
+
+ var/round_start_time = 0
var/const/restart_timeout = 600
- var/current_state = GAME_STATE_PREGAME
+ var/current_state = GAME_STATE_STARTUP
+ var/force_start = 0 // Do we want to force-start as soon as we can
var/force_ending = 0
-
var/hide_mode = 0 // leave here at 0 ! setup() will take care of it when needed for Secret mode -walter0o
var/datum/game_mode/mode = null
var/event_time = null
var/event = 0
-
var/login_music // music played in pregame lobby
-
var/list/datum/mind/minds = list()//The people in the game. Used for objective tracking.
-
var/Bible_icon_state // icon_state the chaplain has chosen for his bible
var/Bible_item_state // item_state the chaplain has chosen for his bible
var/Bible_name // name of the bible
var/Bible_deity_name
-
var/datum/cult_info/cultdat = null //here instead of cult for adminbus purposes
-
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
-
var/list/syndicate_coalition = list() // list of traitor-compatible factions
var/list/factions = list() // list of all factions
var/list/availablefactions = list() // list of factions with openings
-
var/tipped = FALSE //Did we broadcast the tip of the day yet?
var/selected_tip // What will be the tip of the day?
-
- var/pregame_timeleft = 0
+ var/pregame_timeleft // This is used for calculations
var/delay_end = 0 //if set to nonzero, the round will not restart on it's own
-
var/triai = 0//Global holder for Triumvirate
var/initialtpass = 0 //holder for inital autotransfer vote timer
-
var/obj/screen/cinematic = null //used for station explosion cinematic
-
var/round_end_announced = 0 // Spam Prevention. Announce round end only once.\
-
-/datum/controller/gameticker/proc/pregame()
+/datum/controller/subsystem/ticker/Initialize()
login_music = pick(\
'sound/music/thunderdome.ogg',\
'sound/music/space.ogg',\
'sound/music/title1.ogg',\
'sound/music/title2.ogg',\
'sound/music/title3.ogg',)
- do
- pregame_timeleft = config.pregame_timestart
- to_chat(world, "Welcome to the pre-game lobby!")
- to_chat(world, "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds")
- while(current_state == GAME_STATE_PREGAME)
- sleep(10)
- if(going)
- pregame_timeleft--
+ // Setup codephrase
+ if(!GLOB.syndicate_code_phrase)
+ GLOB.syndicate_code_phrase = generate_code_phrase()
+ if(!GLOB.syndicate_code_response)
+ GLOB.syndicate_code_response = generate_code_phrase()
- if(pregame_timeleft <= 60 && !tipped)
+ // Map name
+ if(using_map && using_map.name)
+ GLOB.map_name = "[using_map.name]"
+ else
+ GLOB.map_name = "Unknown"
+
+ // World name
+ if(config && config.server_name)
+ world.name = "[config.server_name]: [station_name()]"
+ else
+ world.name = station_name()
+
+ return ..()
+
+
+/datum/controller/subsystem/ticker/fire()
+ switch(current_state)
+ if(GAME_STATE_STARTUP)
+ // This is ran as soon as the MC starts firing, and should only run ONCE, unless startup fails
+ round_start_time = world.time + (config.pregame_timestart * 10)
+ to_chat(world, "Welcome to the pre-game lobby!")
+ to_chat(world, "Please, setup your character and select ready. Game will start in [config.pregame_timestart] seconds")
+ current_state = GAME_STATE_PREGAME
+ fire() // TG says this is a good idea
+ if(GAME_STATE_PREGAME)
+ // This is so we dont have sleeps in controllers, because that is a bad, bad thing
+ pregame_timeleft = max(0,round_start_time - world.time)
+
+ if(pregame_timeleft <= 600 && !tipped) // 60 seconds
send_tip_of_the_round()
tipped = TRUE
-
- if(pregame_timeleft <= 0)
+
+ if(pregame_timeleft <= 0 || force_start)
current_state = GAME_STATE_SETTING_UP
Master.SetRunLevel(RUNLEVEL_SETUP)
- while(!setup())
+ if(GAME_STATE_SETTING_UP)
+ if(!setup()) // Setup failed
+ current_state = GAME_STATE_STARTUP
+ Master.SetRunLevel(RUNLEVEL_LOBBY)
+ if(GAME_STATE_PLAYING)
+ mode.process()
+ mode.process_job_tasks()
+ var/game_finished = SSshuttle.emergency.mode >= SHUTTLE_ENDGAME || mode.station_was_nuked
+ if(config.continuous_rounds)
+ mode.check_finished() // some modes contain var-changing code in here, so call even if we don't uses result
+ else
+ game_finished |= mode.check_finished()
+ if(game_finished)
+ current_state = GAME_STATE_FINISHED
+ if(GAME_STATE_FINISHED)
+ current_state = GAME_STATE_FINISHED
+ Master.SetRunLevel(RUNLEVEL_POSTGAME) // This shouldnt process more than once, but you never know
+ auto_toggle_ooc(1) // Turn it on
-/datum/controller/gameticker/proc/votetimer()
+ spawn(0)
+ declare_completion()
+
+ spawn(50)
+ if(mode.station_was_nuked)
+ world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
+ else
+ world.Reboot("Round ended.", "end_proper", "proper completion")
+
+
+/datum/controller/subsystem/ticker/proc/votetimer()
var/timerbuffer = 0
if(initialtpass == 0)
timerbuffer = config.vote_autotransfer_initial
@@ -78,7 +123,8 @@ var/round_start_time = 0
initialtpass = 1
votetimer()
-/datum/controller/gameticker/proc/setup()
+
+/datum/controller/subsystem/ticker/proc/setup()
cultdat = setupcult()
//Create and announce mode
if(master_mode=="secret")
@@ -252,9 +298,7 @@ var/round_start_time = 0
return 1
- //Plus it provides an easy way to make cinematics for other events. Just use this as a template :)
-//Plus it provides an easy way to make cinematics for other events. Just use this as a template
-/datum/controller/gameticker/proc/station_explosion_cinematic(station_missed = 0, override = null)
+/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed = 0, override = null)
if(cinematic)
return //already a cinematic in progress!
@@ -350,7 +394,7 @@ var/round_start_time = 0
-/datum/controller/gameticker/proc/create_characters()
+/datum/controller/subsystem/ticker/proc/create_characters()
for(var/mob/new_player/player in GLOB.player_list)
if(player.ready && player.mind)
if(player.mind.assigned_role == "AI")
@@ -364,13 +408,13 @@ var/round_start_time = 0
qdel(player)
-/datum/controller/gameticker/proc/collect_minds()
+/datum/controller/subsystem/ticker/proc/collect_minds()
for(var/mob/living/player in GLOB.player_list)
if(player.mind)
- ticker.minds += player.mind
+ SSticker.minds += player.mind
-/datum/controller/gameticker/proc/equip_characters()
+/datum/controller/subsystem/ticker/proc/equip_characters()
var/captainless=1
for(var/mob/living/carbon/human/player in GLOB.player_list)
if(player && player.mind && player.mind.assigned_role)
@@ -385,7 +429,7 @@ var/round_start_time = 0
if(!istype(M,/mob/new_player))
to_chat(M, "Captainship not forced on anyone.")
-/datum/controller/gameticker/proc/send_tip_of_the_round()
+/datum/controller/subsystem/ticker/proc/send_tip_of_the_round()
var/m
if(selected_tip)
m = selected_tip
@@ -400,45 +444,13 @@ var/round_start_time = 0
if(m)
to_chat(world, "Tip of the round: [html_encode(m)]")
-/datum/controller/gameticker/proc/process_decrepit()
- if(current_state != GAME_STATE_PLAYING)
- return 0
-
- mode.process()
- mode.process_job_tasks()
-
- //emergency_shuttle.process() DONE THROUGH PROCESS SCHEDULER
-
- var/game_finished = SSshuttle.emergency.mode >= SHUTTLE_ENDGAME || mode.station_was_nuked
- if(config.continuous_rounds)
- mode.check_finished() // some modes contain var-changing code in here, so call even if we don't uses result
- else
- game_finished |= mode.check_finished()
-
- if((!mode.explosion_in_progress && game_finished) || force_ending)
- current_state = GAME_STATE_FINISHED
- Master.SetRunLevel(RUNLEVEL_POSTGAME)
- auto_toggle_ooc(1) // Turn it on
- spawn
- declare_completion()
-
- spawn(50)
- callHook("roundend")
-
- if(mode.station_was_nuked)
- world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
- else
- world.Reboot("Round ended.", "end_proper", "proper completion")
-
- return 1
-
-/datum/controller/gameticker/proc/getfactionbyname(var/name)
+/datum/controller/subsystem/ticker/proc/getfactionbyname(var/name)
for(var/datum/faction/F in factions)
if(F.name == name)
return F
-/datum/controller/gameticker/proc/declare_completion()
+/datum/controller/subsystem/ticker/proc/declare_completion()
nologevent = 1 //end of round murder and shenanigans are legal; there's no need to jam up attack logs past this point.
//Round statistics report
var/datum/station_state/end_state = new /datum/station_state()
@@ -483,9 +495,9 @@ var/round_start_time = 0
if(dronecount)
to_chat(world, "There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round.")
- if(ticker.mode.eventmiscs.len)
+ if(mode.eventmiscs.len)
var/emobtext = ""
- for(var/datum/mind/eventmind in ticker.mode.eventmiscs)
+ for(var/datum/mind/eventmind in mode.eventmiscs)
emobtext += printeventplayer(eventmind)
emobtext += "
"
emobtext += printobjectives(eventmind)
@@ -516,5 +528,6 @@ var/round_start_time = 0
return 1
-/datum/controller/gameticker/proc/HasRoundStarted()
+/datum/controller/subsystem/ticker/proc/HasRoundStarted()
return current_state >= GAME_STATE_PLAYING
+
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index 4b267fe757f..27d499254a1 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -19,7 +19,7 @@ SUBSYSTEM_DEF(vote)
/datum/controller/subsystem/vote/fire()
if(mode)
// No more change mode votes after the game has started.
- if(mode == "gamemode" && ticker.current_state >= GAME_STATE_SETTING_UP)
+ if(mode == "gamemode" && SSticker.current_state >= GAME_STATE_SETTING_UP)
to_chat(world, "Voting aborted due to game start.")
reset()
return
@@ -125,7 +125,7 @@ SUBSYSTEM_DEF(vote)
var/text
if(winners.len > 0)
if(winners.len > 1)
- if(mode != "gamemode" || ticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes
+ if(mode != "gamemode" || SSticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes
text = "Vote Tied Between:\n"
for(var/option in winners)
text += "\t[option]\n"
@@ -134,7 +134,7 @@ SUBSYSTEM_DEF(vote)
for(var/key in current_votes)
if(choices[current_votes[key]] == .)
round_voters += key // Keep track of who voted for the winning round.
- if(mode == "gamemode" && (. == "extended" || ticker.hide_mode == 0)) // Announce Extended gamemode, but not other gamemodes
+ if(mode == "gamemode" && (. == "extended" || SSticker.hide_mode == 0)) // Announce Extended gamemode, but not other gamemodes
text += "Vote Result: [.] ([choices[.]] vote\s)"
else
if(mode == "custom")
@@ -166,7 +166,7 @@ SUBSYSTEM_DEF(vote)
if("gamemode")
if(master_mode != .)
world.save_mode(.)
- if(ticker && ticker.mode)
+ if(SSticker && SSticker.mode)
restart = 1
else
master_mode = .
@@ -208,17 +208,17 @@ SUBSYSTEM_DEF(vote)
if("restart")
choices.Add("Restart Round","Continue Playing")
if("gamemode")
- if(ticker.current_state >= 2)
+ if(SSticker.current_state >= 2)
return 0
choices.Add(config.votable_modes)
if("crew_transfer")
if(check_rights(R_ADMIN|R_MOD))
- if(ticker.current_state <= 2)
+ if(SSticker.current_state <= 2)
return 0
question = "End the shift?"
choices.Add("Initiate Crew Transfer", "Continue The Round")
else
- if(ticker.current_state <= 2)
+ if(SSticker.current_state <= 2)
return 0
question = "End the shift?"
choices.Add("Initiate Crew Transfer", "Continue The Round")
diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm
index eeef65bd2e2..55d68d9ea1a 100644
--- a/code/controllers/verbs.dm
+++ b/code/controllers/verbs.dm
@@ -36,7 +36,7 @@
debug_variables(Master)
feedback_add_details("admin_verb","Dsmc")
if("Ticker")
- debug_variables(ticker)
+ debug_variables(SSticker)
feedback_add_details("admin_verb","DTicker")
if("Air")
debug_variables(SSair)
@@ -80,9 +80,9 @@
if("Mob")
debug_variables(SSmobs)
feedback_add_details("admin_verb","DMob")
- if("NPC AI")
- debug_variables(SSnpcai)
- feedback_add_details("admin_verb","DNPCAI")
+ if("NPC Pool")
+ debug_variables(SSnpcpool)
+ feedback_add_details("admin_verb","DNPCPool")
if("Shuttle")
debug_variables(SSshuttle)
feedback_add_details("admin_verb","DShuttle")
diff --git a/code/datums/action.dm b/code/datums/action.dm
index d316bd29b41..3b98a0fef1a 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -107,6 +107,7 @@
/datum/action/item_action
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING|AB_CHECK_CONSCIOUS
var/use_itemicon = TRUE
+
/datum/action/item_action/New(Target, custom_icon, custom_icon_state)
..()
var/obj/item/I = target
@@ -136,9 +137,10 @@
var/obj/item/I = target
var/old_layer = I.layer
var/old_plane = I.plane
- I.layer = HUD_LAYER_SCREEN + 1
- I.plane = HUD_PLANE
- current_button.overlays += I
+ I.layer = FLOAT_LAYER //AAAH
+ I.plane = FLOAT_PLANE //^ what that guy said
+ current_button.cut_overlays()
+ current_button.add_overlay(I)
I.layer = old_layer
I.plane = old_plane
else
@@ -406,6 +408,19 @@
name = "Use [target.name]"
button.name = name
+/datum/action/item_action/voice_changer/toggle
+ name = "Toggle Voice Changer"
+
+/datum/action/item_action/voice_changer/voice
+ name = "Set Voice"
+
+/datum/action/item_action/voice_changer/voice/Trigger()
+ if(!IsAvailable())
+ return FALSE
+
+ var/obj/item/voice_changer/V = target
+ V.set_voice(usr)
+
// for clothing accessories like holsters
/datum/action/item_action/accessory
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING|AB_CHECK_CONSCIOUS
diff --git a/code/datums/cache/air_alarm.dm b/code/datums/cache/air_alarm.dm
index a4b3ee21c56..a4d012df464 100644
--- a/code/datums/cache/air_alarm.dm
+++ b/code/datums/cache/air_alarm.dm
@@ -11,7 +11,7 @@ var/global/datum/repository/air_alarm/air_alarm_repository = new()
if(!refresh)
return cache_entry.data
- if(ticker && ticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time
+ if(SSticker && SSticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time
alarms = cache_entry.data // Don't deleate the list
if(is_station_contact(passed_alarm.z)) // Still need sanity checks
alarms[++alarms.len] = passed_alarm.get_nano_data_console()
diff --git a/code/datums/cache/cache.dm b/code/datums/cache/cache.dm
index 2502bb871b2..f401e54517a 100644
--- a/code/datums/cache/cache.dm
+++ b/code/datums/cache/cache.dm
@@ -1,6 +1,6 @@
/datum/cache_entry
var/timestamp
- var/data
-
+ var/list/data = list()
+
/datum/repository
var/cache_data
\ No newline at end of file
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 3fe88f7d0e9..e5b948f4f26 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -1,5 +1,3 @@
-// Squeak component ported over from tg
-
/datum/component/squeak
var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1)
var/list/override_squeak_sounds
@@ -49,21 +47,12 @@
else
playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1)
-/datum/component/squeak/proc/step_squeak(datum/source, mob/living/carbon/human/H)
- if(H.m_intent == MOVE_INTENT_RUN)
- if(steps > step_delay)
- play_squeak()
- steps = 0
- else
- steps++
- else
+/datum/component/squeak/proc/step_squeak()
+ if(steps > step_delay)
play_squeak()
-
-/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
- RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
-
-/datum/component/squeak/proc/on_drop(datum/source, mob/user)
- UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
+ steps = 0
+ else
+ steps++
/datum/component/squeak/proc/play_squeak_crossed(atom/movable/AM)
if(isitem(AM))
@@ -83,6 +72,13 @@
last_use = world.time
play_squeak()
+/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
+ RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
+
+/datum/component/squeak/proc/on_drop(datum/source, mob/user)
+ UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
+
+// Disposal pipes related shit
/datum/component/squeak/proc/disposing_react(datum/source, obj/structure/disposalholder/holder, obj/machinery/disposal/source)
//We don't need to worry about unregistering this signal as it will happen for us automaticaly when the holder is qdeleted
RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, .proc/holder_dir_change)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 6fdb8a359c2..13c3fb64f33 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -1242,13 +1242,28 @@
return
switch(Text)
- if("brute") L.adjustBruteLoss(amount, robotic=1)
- if("fire") L.adjustFireLoss(amount, robotic=1)
- if("toxin") L.adjustToxLoss(amount)
- if("oxygen")L.adjustOxyLoss(amount)
- if("brain") L.adjustBrainLoss(amount)
- if("clone") L.adjustCloneLoss(amount)
- if("stamina") L.adjustStaminaLoss(amount)
+ if("brute")
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ H.adjustBruteLoss(amount, robotic = TRUE)
+ else
+ L.adjustBruteLoss(amount)
+ if("fire")
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ H.adjustFireLoss(amount, robotic = TRUE)
+ else
+ L.adjustFireLoss(amount)
+ if("toxin")
+ L.adjustToxLoss(amount)
+ if("oxygen")
+ L.adjustOxyLoss(amount)
+ if("brain")
+ L.adjustBrainLoss(amount)
+ if("clone")
+ L.adjustCloneLoss(amount)
+ if("stamina")
+ L.adjustStaminaLoss(amount)
else
to_chat(usr, "You caused an error. DEBUG: Text:[Text] Mob:[L]")
return
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index 2dd2d72a816..e5948a47e30 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -93,8 +93,8 @@ var/datum/atom_hud/huds = list( \
// gang_huds += G.ganghud
var/serv_huds = list()//mindslaves and/or vampire thralls
- if(ticker.mode)
- for(var/datum/mindslaves/serv in (ticker.mode.vampires | ticker.mode.traitors))
+ if(SSticker.mode)
+ for(var/datum/mindslaves/serv in (SSticker.mode.vampires | SSticker.mode.traitors))
serv_huds += serv.thrallhud
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 65b3940cde2..c20ded784a1 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -84,7 +84,7 @@
soulOwner = src
/datum/mind/Destroy()
- ticker.minds -= src
+ SSticker.minds -= src
if(islist(antag_datums))
for(var/i in antag_datums)
var/datum/antagonist/antag_datum = i
@@ -163,7 +163,7 @@
/datum/mind/proc/_memory_edit_header(gamemode, list/alt)
. = gamemode
- if(ticker.mode.config_tag == gamemode || (LAZYLEN(alt) && (ticker.mode.config_tag in alt)))
+ if(SSticker.mode.config_tag == gamemode || (LAZYLEN(alt) && (SSticker.mode.config_tag in alt)))
. = uppertext(.)
. = "[.]: "
@@ -183,7 +183,7 @@
. = _memory_edit_header("revolution")
if(ismindshielded(H))
. += "NO|headrev|rev"
- else if(src in ticker.mode.head_revolutionaries)
+ else if(src in SSticker.mode.head_revolutionaries)
. += "no|HEADREV|rev"
. += "
Flash: give"
@@ -200,7 +200,7 @@
. += " Reequip (gives traitor uplink)."
if(objectives.len==0)
. += "
Objectives are empty! Set to kill all heads."
- else if(src in ticker.mode.revolutionaries)
+ else if(src in SSticker.mode.revolutionaries)
. += "no|headrev|REV"
else
. += "NO|headrev|rev"
@@ -211,7 +211,7 @@
. = _memory_edit_header("cult")
if(ismindshielded(H))
. += "NO|cultist"
- else if(src in ticker.mode.cult)
+ else if(src in SSticker.mode.cult)
. += "no|CULTIST"
. += "
Give tome|equip."
else
@@ -221,7 +221,7 @@
/datum/mind/proc/memory_edit_wizard(mob/living/carbon/human/H)
. = _memory_edit_header("wizard")
- if(src in ticker.mode.wizards)
+ if(src in SSticker.mode.wizards)
. += "WIZARD|no"
. += "
To lair, undress, dress up, let choose name."
if(objectives.len==0)
@@ -233,7 +233,7 @@
/datum/mind/proc/memory_edit_changeling(mob/living/carbon/human/H)
. = _memory_edit_header("changeling", list("traitorchan"))
- if(src in ticker.mode.changelings)
+ if(src in SSticker.mode.changelings)
. += "CHANGELING|no"
if(objectives.len==0)
. += "
Objectives are empty! Randomize!"
@@ -246,7 +246,7 @@
/datum/mind/proc/memory_edit_vampire(mob/living/carbon/human/H)
. = _memory_edit_header("vampire", list("traitorvamp"))
- if(src in ticker.mode.vampires)
+ if(src in SSticker.mode.vampires)
. += "VAMPIRE|no"
if(objectives.len==0)
. += "
Objectives are empty! Randomize!"
@@ -256,14 +256,14 @@
. += _memory_edit_role_enabled(ROLE_VAMPIRE)
/** Enthralled ***/
. += "
enthralled: "
- if(src in ticker.mode.vampire_enthralled)
+ if(src in SSticker.mode.vampire_enthralled)
. += "THRALL|no"
else
. += "thrall|NO"
/datum/mind/proc/memory_edit_nuclear(mob/living/carbon/human/H)
. = _memory_edit_header("nuclear")
- if(src in ticker.mode.syndicates)
+ if(src in SSticker.mode.syndicates)
. += "OPERATIVE|no"
. += "
To shuttle, undress, dress up."
var/code
@@ -280,9 +280,9 @@
/datum/mind/proc/memory_edit_shadowling(mob/living/carbon/human/H)
. = _memory_edit_header("shadowling")
- if(src in ticker.mode.shadows)
+ if(src in SSticker.mode.shadows)
. += "SHADOWLING|thrall|no"
- else if(src in ticker.mode.shadowling_thralls)
+ else if(src in SSticker.mode.shadowling_thralls)
. += "Shadowling|THRALL|no"
else
. += "shadowling|thrall|NO"
@@ -291,7 +291,7 @@
/datum/mind/proc/memory_edit_abductor(mob/living/carbon/human/H)
. = _memory_edit_header("abductor")
- if(src in ticker.mode.abductors)
+ if(src in SSticker.mode.abductors)
. += "ABDUCTOR|no"
. += "|undress|equip"
else
@@ -301,14 +301,14 @@
/datum/mind/proc/memory_edit_devil(mob/living/H)
. = _memory_edit_header("devil", list("devilagents"))
- if(src in ticker.mode.devils)
+ if(src in SSticker.mode.devils)
if(!devilinfo)
. += "No devilinfo found! Yell at a coder!"
else if(!devilinfo.ascendable)
. += "DEVIL|Ascendable Devil|sintouched|no"
else
. += "DEVIL|ASCENDABLE DEVIL|sintouched|no"
- else if(src in ticker.mode.sintouched)
+ else if(src in SSticker.mode.sintouched)
. += "devil|Ascendable Devil|SINTOUCHED|no"
else
. += "devil|Ascendable Devil|sintouched|NO"
@@ -317,14 +317,14 @@
/datum/mind/proc/memory_edit_eventmisc(mob/living/H)
. = _memory_edit_header("event", list())
- if(src in ticker.mode.eventmiscs)
+ if(src in SSticker.mode.eventmiscs)
. += "YES|no"
else
. += "Event Role|NO"
/datum/mind/proc/memory_edit_traitor()
. = _memory_edit_header("traitor", list("traitorchan", "traitorvamp"))
- if(src in ticker.mode.traitors)
+ if(src in SSticker.mode.traitors)
. += "TRAITOR|no"
if(objectives.len==0)
. += "
Objectives are empty! Randomize!"
@@ -348,9 +348,9 @@
/datum/mind/proc/memory_edit_uplink()
. = ""
- if(ishuman(current) && ((src in ticker.mode.head_revolutionaries) || \
- (src in ticker.mode.traitors) || \
- (src in ticker.mode.syndicates)))
+ if(ishuman(current) && ((src in SSticker.mode.head_revolutionaries) || \
+ (src in SSticker.mode.traitors) || \
+ (src in SSticker.mode.syndicates)))
. = "Uplink: give"
var/obj/item/uplink/hidden/suplink = find_syndicate_uplink()
var/crystals
@@ -366,7 +366,7 @@
// ^ whoever left this comment is literally a grammar nazi. stalin better. in russia grammar correct you.
/datum/mind/proc/edit_memory()
- if(!ticker || !ticker.mode)
+ if(!SSticker || !SSticker.mode)
alert("Not before round-start!", "Alert")
return
@@ -419,7 +419,7 @@
This prioritizes antags relevant to the current round to make them appear at the top of the panel.
Traitorchan and traitorvamp are snowflaked in because they have multiple sections.
*/
- if(ticker.mode.config_tag == "traitorchan")
+ if(SSticker.mode.config_tag == "traitorchan")
if(sections["traitor"])
out += sections["traitor"] + "
"
if(sections["changeling"])
@@ -427,7 +427,7 @@
sections -= "traitor"
sections -= "changeling"
// Elif technically unnecessary but it makes the following else look better
- else if(ticker.mode.config_tag == "traitorvamp")
+ else if(SSticker.mode.config_tag == "traitorvamp")
if(sections["traitor"])
out += sections["traitor"] + "
"
if(sections["vampire"])
@@ -435,9 +435,9 @@
sections -= "traitor"
sections -= "vampire"
else
- if(sections[ticker.mode.config_tag])
- out += sections[ticker.mode.config_tag] + "
"
- sections -= ticker.mode.config_tag
+ if(sections[SSticker.mode.config_tag])
+ out += sections[SSticker.mode.config_tag] + "
"
+ sections -= SSticker.mode.config_tag
for(var/i in sections)
if(sections[i])
@@ -512,7 +512,7 @@
var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string.
var/list/possible_targets = list()
- for(var/datum/mind/possible_target in ticker.minds)
+ for(var/datum/mind/possible_target in SSticker.minds)
if((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human))
possible_targets += possible_target.current
@@ -612,7 +612,7 @@
if("identity theft")
var/list/possible_targets = list()
- for(var/datum/mind/possible_target in ticker.minds)
+ for(var/datum/mind/possible_target in SSticker.minds)
if((possible_target != src) && ishuman(possible_target.current))
possible_targets += possible_target
possible_targets = sortAtom(possible_targets)
@@ -687,19 +687,19 @@
message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] a mindshield implant")
to_chat(H, "You somehow have become the recepient of a mindshield transplant, and it just activated!")
- if(src in ticker.mode.revolutionaries)
+ if(src in SSticker.mode.revolutionaries)
special_role = null
- ticker.mode.revolutionaries -= src
+ SSticker.mode.revolutionaries -= src
to_chat(src, "The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!")
- if(src in ticker.mode.head_revolutionaries)
+ if(src in SSticker.mode.head_revolutionaries)
special_role = null
- ticker.mode.head_revolutionaries -=src
+ SSticker.mode.head_revolutionaries -=src
to_chat(src, "The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!")
- if(src in ticker.mode.cult)
- ticker.mode.cult -= src
- ticker.mode.update_cult_icons_removed(src)
+ if(src in SSticker.mode.cult)
+ SSticker.mode.cult -= src
+ SSticker.mode.update_cult_icons_removed(src)
special_role = null
- var/datum/game_mode/cult/cult = ticker.mode
+ var/datum/game_mode/cult/cult = SSticker.mode
if(istype(cult))
cult.memorize_cult_objectives(src)
to_chat(current, "The nanobots in the mindshield implant remove all thoughts about being in a cult. Have a productive day!")
@@ -709,46 +709,46 @@
switch(href_list["revolution"])
if("clear")
- if(src in ticker.mode.revolutionaries)
- ticker.mode.revolutionaries -= src
+ if(src in SSticker.mode.revolutionaries)
+ SSticker.mode.revolutionaries -= src
to_chat(current, "You have been brainwashed! You are no longer a revolutionary!")
- ticker.mode.update_rev_icons_removed(src)
+ SSticker.mode.update_rev_icons_removed(src)
special_role = null
- if(src in ticker.mode.head_revolutionaries)
- ticker.mode.head_revolutionaries -= src
+ if(src in SSticker.mode.head_revolutionaries)
+ SSticker.mode.head_revolutionaries -= src
to_chat(current, "You have been brainwashed! You are no longer a head revolutionary!")
- ticker.mode.update_rev_icons_removed(src)
+ SSticker.mode.update_rev_icons_removed(src)
special_role = null
log_admin("[key_name(usr)] has de-rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-rev'd [key_name_admin(current)]")
if("rev")
- if(src in ticker.mode.head_revolutionaries)
- ticker.mode.head_revolutionaries -= src
- ticker.mode.update_rev_icons_removed(src)
+ if(src in SSticker.mode.head_revolutionaries)
+ SSticker.mode.head_revolutionaries -= src
+ SSticker.mode.update_rev_icons_removed(src)
to_chat(current, "Revolution has been disappointed of your leadership traits! You are a regular revolutionary now!")
- else if(!(src in ticker.mode.revolutionaries))
+ else if(!(src in SSticker.mode.revolutionaries))
to_chat(current, " You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!")
else
return
- ticker.mode.revolutionaries += src
- ticker.mode.update_rev_icons_added(src)
+ SSticker.mode.revolutionaries += src
+ SSticker.mode.update_rev_icons_added(src)
special_role = SPECIAL_ROLE_REV
log_admin("[key_name(usr)] has rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has rev'd [key_name_admin(current)]")
if("headrev")
- if(src in ticker.mode.revolutionaries)
- ticker.mode.revolutionaries -= src
- ticker.mode.update_rev_icons_removed(src)
+ if(src in SSticker.mode.revolutionaries)
+ SSticker.mode.revolutionaries -= src
+ SSticker.mode.update_rev_icons_removed(src)
to_chat(current, "You have proven your devotion to revolution! You are a head revolutionary now!")
- else if(!(src in ticker.mode.head_revolutionaries))
+ else if(!(src in SSticker.mode.head_revolutionaries))
to_chat(current, "You are a member of the revolutionaries' leadership now!")
else
return
- if(ticker.mode.head_revolutionaries.len>0)
+ if(SSticker.mode.head_revolutionaries.len>0)
// copy targets
- var/datum/mind/valid_head = locate() in ticker.mode.head_revolutionaries
+ var/datum/mind/valid_head = locate() in SSticker.mode.head_revolutionaries
if(valid_head)
for(var/datum/objective/mutiny/O in valid_head.objectives)
var/datum/objective/mutiny/rev_obj = new
@@ -756,21 +756,21 @@
rev_obj.target = O.target
rev_obj.explanation_text = "Assassinate [O.target.name], the [O.target.assigned_role]."
objectives += rev_obj
- ticker.mode.greet_revolutionary(src,0)
- ticker.mode.head_revolutionaries += src
- ticker.mode.update_rev_icons_added(src)
+ SSticker.mode.greet_revolutionary(src,0)
+ SSticker.mode.head_revolutionaries += src
+ SSticker.mode.update_rev_icons_added(src)
special_role = SPECIAL_ROLE_HEAD_REV
log_admin("[key_name(usr)] has head-rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has head-rev'd [key_name_admin(current)]")
if("autoobjectives")
- ticker.mode.forge_revolutionary_objectives(src)
- ticker.mode.greet_revolutionary(src,0)
+ SSticker.mode.forge_revolutionary_objectives(src)
+ SSticker.mode.greet_revolutionary(src,0)
log_admin("[key_name(usr)] has automatically forged revolutionary objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged revolutionary objectives for [key_name_admin(current)]")
if("flash")
- if(!ticker.mode.equip_revolutionary(current))
+ if(!SSticker.mode.equip_revolutionary(current))
to_chat(usr, "Spawning flash failed!")
log_admin("[key_name(usr)] has given [key_name(current)] a flash")
message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] a flash")
@@ -800,8 +800,8 @@
qdel(flash)
take_uplink()
var/fail = 0
- fail |= !ticker.mode.equip_traitor(current, 1)
- fail |= !ticker.mode.equip_revolutionary(current)
+ fail |= !SSticker.mode.equip_traitor(current, 1)
+ fail |= !SSticker.mode.equip_revolutionary(current)
if(fail)
to_chat(usr, "Reequipping revolutionary goes wrong!")
return
@@ -811,17 +811,17 @@
else if(href_list["cult"])
switch(href_list["cult"])
if("clear")
- if(src in ticker.mode.cult)
- ticker.mode.remove_cultist(src)
+ if(src in SSticker.mode.cult)
+ SSticker.mode.remove_cultist(src)
special_role = null
log_admin("[key_name(usr)] has de-culted [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-culted [key_name_admin(current)]")
if("cultist")
- if(!(src in ticker.mode.cult))
- ticker.mode.add_cultist(src)
+ if(!(src in SSticker.mode.cult))
+ SSticker.mode.add_cultist(src)
special_role = SPECIAL_ROLE_CULTIST
- to_chat(current, "You catch a glimpse of the Realm of [ticker.cultdat.entity_name], [ticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [ticker.cultdat.entity_name].")
- to_chat(current, "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve [ticker.cultdat.entity_title2] above all else. Bring It back.")
+ to_chat(current, "You catch a glimpse of the Realm of [SSticker.cultdat.entity_name], [SSticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [SSticker.cultdat.entity_name].")
+ to_chat(current, "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve [SSticker.cultdat.entity_title2] above all else. Bring It back.")
log_admin("[key_name(usr)] has culted [key_name(current)]")
message_admins("[key_name_admin(usr)] has culted [key_name_admin(current)]")
if("tome")
@@ -846,7 +846,7 @@
message_admins("[key_name_admin(usr)] has spawned a tome for [key_name_admin(current)]")
if("equip")
- if(!ticker.mode.equip_cultist(current))
+ if(!SSticker.mode.equip_cultist(current))
to_chat(usr, "Spawning equipment failed!")
log_admin("[key_name(usr)] has equipped [key_name(current)] as a cultist")
message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a cultist")
@@ -855,21 +855,21 @@
switch(href_list["wizard"])
if("clear")
- if(src in ticker.mode.wizards)
- ticker.mode.wizards -= src
+ if(src in SSticker.mode.wizards)
+ SSticker.mode.wizards -= src
special_role = null
current.spellremove(current)
current.faction = list("Station")
- ticker.mode.update_wiz_icons_removed(src)
+ SSticker.mode.update_wiz_icons_removed(src)
to_chat(current, "You have been brainwashed! You are no longer a wizard!")
log_admin("[key_name(usr)] has de-wizarded [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-wizarded [key_name_admin(current)]")
if("wizard")
- if(!(src in ticker.mode.wizards))
- ticker.mode.wizards += src
+ if(!(src in SSticker.mode.wizards))
+ SSticker.mode.wizards += src
special_role = SPECIAL_ROLE_WIZARD
//ticker.mode.learn_basic_spells(current)
- ticker.mode.update_wiz_icons_added(src)
+ SSticker.mode.update_wiz_icons_added(src)
SEND_SOUND(current, 'sound/ambience/antag/ragesmages.ogg')
to_chat(current, "You are a Space Wizard!")
current.faction = list("wizard")
@@ -880,15 +880,15 @@
log_admin("[key_name(usr)] has moved [key_name(current)] to the wizard's lair")
message_admins("[key_name_admin(usr)] has moved [key_name_admin(current)] to the wizard's lair")
if("dressup")
- ticker.mode.equip_wizard(current)
+ SSticker.mode.equip_wizard(current)
log_admin("[key_name(usr)] has equipped [key_name(current)] as a wizard")
message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a wizard")
if("name")
- ticker.mode.name_wizard(current)
+ SSticker.mode.name_wizard(current)
log_admin("[key_name(usr)] has allowed wizard [key_name(current)] to name themselves")
message_admins("[key_name_admin(usr)] has allowed wizard [key_name_admin(current)] to name themselves")
if("autoobjectives")
- ticker.mode.forge_wizard_objectives(src)
+ SSticker.mode.forge_wizard_objectives(src)
to_chat(usr, "The objectives for wizard [key] have been generated. You can edit them and announce manually.")
log_admin("[key_name(usr)] has automatically forged wizard objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged wizard objectives for [key_name_admin(current)]")
@@ -897,20 +897,20 @@
else if(href_list["changeling"])
switch(href_list["changeling"])
if("clear")
- if(src in ticker.mode.changelings)
- ticker.mode.changelings -= src
+ if(src in SSticker.mode.changelings)
+ SSticker.mode.changelings -= src
special_role = null
current.remove_changeling_powers()
- ticker.mode.update_change_icons_removed(src)
+ SSticker.mode.update_change_icons_removed(src)
if(changeling) qdel(changeling)
to_chat(current, "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!")
log_admin("[key_name(usr)] has de-changelinged [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-changelinged [key_name_admin(current)]")
if("changeling")
- if(!(src in ticker.mode.changelings))
- ticker.mode.changelings += src
- ticker.mode.grant_changeling_powers(current)
- ticker.mode.update_change_icons_added(src)
+ if(!(src in SSticker.mode.changelings))
+ SSticker.mode.changelings += src
+ SSticker.mode.grant_changeling_powers(current)
+ SSticker.mode.update_change_icons_added(src)
special_role = SPECIAL_ROLE_CHANGELING
SEND_SOUND(current, 'sound/ambience/antag/ling_aler.ogg')
to_chat(current, "Your powers have awoken. A flash of memory returns to us... we are a changeling!")
@@ -918,7 +918,7 @@
message_admins("[key_name_admin(usr)] has changelinged [key_name_admin(current)]")
if("autoobjectives")
- ticker.mode.forge_changeling_objectives(src)
+ SSticker.mode.forge_changeling_objectives(src)
to_chat(usr, "The objectives for changeling [key] have been generated. You can edit them and announce manually.")
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
@@ -937,22 +937,22 @@
else if(href_list["vampire"])
switch(href_list["vampire"])
if("clear")
- if(src in ticker.mode.vampires)
- ticker.mode.vampires -= src
+ if(src in SSticker.mode.vampires)
+ SSticker.mode.vampires -= src
special_role = null
if(vampire)
vampire.remove_vampire_powers()
qdel(vampire)
vampire = null
- ticker.mode.update_vampire_icons_removed(src)
+ SSticker.mode.update_vampire_icons_removed(src)
to_chat(current, "You grow weak and lose your powers! You are no longer a vampire and are stuck in your current form!")
log_admin("[key_name(usr)] has de-vampired [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-vampired [key_name_admin(current)]")
if("vampire")
- if(!(src in ticker.mode.vampires))
- ticker.mode.vampires += src
- ticker.mode.grant_vampire_powers(current)
- ticker.mode.update_vampire_icons_added(src)
+ if(!(src in SSticker.mode.vampires))
+ SSticker.mode.vampires += src
+ SSticker.mode.grant_vampire_powers(current)
+ SSticker.mode.update_vampire_icons_added(src)
var/datum/mindslaves/slaved = new()
slaved.masters += src
som = slaved //we MIGT want to mindslave someone
@@ -963,7 +963,7 @@
message_admins("[key_name_admin(usr)] has vampired [key_name_admin(current)]")
if("autoobjectives")
- ticker.mode.forge_vampire_objectives(src)
+ SSticker.mode.forge_vampire_objectives(src)
to_chat(usr, "The objectives for vampire [key] have been generated. You can edit them and announce manually.")
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
@@ -971,8 +971,8 @@
else if(href_list["vampthrall"])
switch(href_list["vampthrall"])
if("clear")
- if(src in ticker.mode.vampire_enthralled)
- ticker.mode.remove_vampire_mind(src)
+ if(src in SSticker.mode.vampire_enthralled)
+ SSticker.mode.remove_vampire_mind(src)
log_admin("[key_name(usr)] has de-vampthralled [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-vampthralled [key_name_admin(current)]")
@@ -981,9 +981,9 @@
switch(href_list["nuclear"])
if("clear")
- if(src in ticker.mode.syndicates)
- ticker.mode.syndicates -= src
- ticker.mode.update_synd_icons_removed(src)
+ if(src in SSticker.mode.syndicates)
+ SSticker.mode.syndicates -= src
+ SSticker.mode.update_synd_icons_removed(src)
special_role = null
for(var/datum/objective/nuclear/O in objectives)
objectives-=O
@@ -992,17 +992,17 @@
log_admin("[key_name(usr)] has de-nuke op'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-nuke op'd [key_name_admin(current)]")
if("nuclear")
- if(!(src in ticker.mode.syndicates))
- ticker.mode.syndicates += src
- ticker.mode.update_synd_icons_added(src)
- if(ticker.mode.syndicates.len==1)
- ticker.mode.prepare_syndicate_leader(src)
+ if(!(src in SSticker.mode.syndicates))
+ SSticker.mode.syndicates += src
+ SSticker.mode.update_synd_icons_added(src)
+ if(SSticker.mode.syndicates.len==1)
+ SSticker.mode.prepare_syndicate_leader(src)
else
- current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
+ current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]"
special_role = SPECIAL_ROLE_NUKEOPS
to_chat(current, "You are a [syndicate_name()] agent!")
- ticker.mode.forge_syndicate_objectives(src)
- ticker.mode.greet_syndicate(src)
+ SSticker.mode.forge_syndicate_objectives(src)
+ SSticker.mode.greet_syndicate(src)
log_admin("[key_name(usr)] has nuke op'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has nuke op'd [key_name_admin(current)]")
if("lair")
@@ -1022,10 +1022,10 @@
qdel(H.wear_suit)
qdel(H.w_uniform)
- if(!ticker.mode.equip_syndicate(current))
+ if(!SSticker.mode.equip_syndicate(current))
to_chat(usr, "Equipping a syndicate failed!")
return
- ticker.mode.update_syndicate_id(current.mind, ticker.mode.syndicates.len == 1)
+ SSticker.mode.update_syndicate_id(current.mind, SSticker.mode.syndicates.len == 1)
log_admin("[key_name(usr)] has equipped [key_name(current)] as a nuclear operative")
message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a nuclear operative")
@@ -1046,27 +1046,27 @@
else if(href_list["eventmisc"])
switch(href_list["eventmisc"])
if("clear")
- if(src in ticker.mode.eventmiscs)
- ticker.mode.eventmiscs -= src
- ticker.mode.update_eventmisc_icons_removed(src)
+ if(src in SSticker.mode.eventmiscs)
+ SSticker.mode.eventmiscs -= src
+ SSticker.mode.update_eventmisc_icons_removed(src)
special_role = null
message_admins("[key_name_admin(usr)] has de-eventantag'ed [current].")
log_admin("[key_name(usr)] has de-eventantag'ed [current].")
if("eventmisc")
- ticker.mode.eventmiscs += src
+ SSticker.mode.eventmiscs += src
special_role = SPECIAL_ROLE_EVENTMISC
- ticker.mode.update_eventmisc_icons_added(src)
+ SSticker.mode.update_eventmisc_icons_added(src)
message_admins("[key_name_admin(usr)] has eventantag'ed [current].")
log_admin("[key_name(usr)] has eventantag'ed [current].")
else if(href_list["devil"])
switch(href_list["devil"])
if("clear")
- if(src in ticker.mode.devils)
+ if(src in SSticker.mode.devils)
if(istype(current,/mob/living/carbon/true_devil/))
to_chat(usr,"This cannot be used on true or arch-devils.")
else
- ticker.mode.devils -= src
- ticker.mode.update_devil_icons_removed(src)
+ SSticker.mode.devils -= src
+ SSticker.mode.update_devil_icons_removed(src)
special_role = null
to_chat(current,"Your infernal link has been severed! You are no longer a devil!")
RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt)
@@ -1085,8 +1085,8 @@
S.laws.clear_sixsixsix_laws()
devilinfo = null
log_admin("[key_name(usr)] has de-devil'ed [current].")
- else if(src in ticker.mode.sintouched)
- ticker.mode.sintouched -= src
+ else if(src in SSticker.mode.sintouched)
+ SSticker.mode.sintouched -= src
message_admins("[key_name_admin(usr)] has de-sintouch'ed [current].")
log_admin("[key_name(usr)] has de-sintouch'ed [current].")
if("devil")
@@ -1098,12 +1098,12 @@
if(!ishuman(current) && !isrobot(current))
to_chat(usr, "This only works on humans and cyborgs!")
return
- ticker.mode.devils += src
+ SSticker.mode.devils += src
special_role = "devil"
- ticker.mode.update_devil_icons_added(src)
- ticker.mode.finalize_devil(src, FALSE)
- ticker.mode.forge_devil_objectives(src, 2)
- ticker.mode.greet_devil(src)
+ SSticker.mode.update_devil_icons_added(src)
+ SSticker.mode.finalize_devil(src, FALSE)
+ SSticker.mode.forge_devil_objectives(src, 2)
+ SSticker.mode.greet_devil(src)
message_admins("[key_name_admin(usr)] has devil'ed [current].")
log_admin("[key_name(usr)] has devil'ed [current].")
if("ascendable_devil")
@@ -1115,12 +1115,12 @@
if(!ishuman(current) && !isrobot(current))
to_chat(usr, "This only works on humans and cyborgs!")
return
- ticker.mode.devils += src
+ SSticker.mode.devils += src
special_role = "devil"
- ticker.mode.update_devil_icons_added(src)
- ticker.mode.finalize_devil(src, TRUE)
- ticker.mode.forge_devil_objectives(src, 2)
- ticker.mode.greet_devil(src)
+ SSticker.mode.update_devil_icons_added(src)
+ SSticker.mode.finalize_devil(src, TRUE)
+ SSticker.mode.forge_devil_objectives(src, 2)
+ SSticker.mode.greet_devil(src)
message_admins("[key_name_admin(usr)] has devil'ed [current]. The devil has been marked as ascendable.")
log_admin("[key_name(usr)] has devil'ed [current]. The devil has been marked as ascendable.")
if("sintouched")
@@ -1132,8 +1132,8 @@
else if(href_list["traitor"])
switch(href_list["traitor"])
if("clear")
- if(src in ticker.mode.traitors)
- ticker.mode.traitors -= src
+ if(src in SSticker.mode.traitors)
+ SSticker.mode.traitors -= src
special_role = null
to_chat(current, "You have been brainwashed! You are no longer a traitor!")
log_admin("[key_name(usr)] has de-traitored [key_name(current)]")
@@ -1145,12 +1145,12 @@
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
A.malf_picker.remove_verbs(A)
qdel(A.malf_picker)
- ticker.mode.update_traitor_icons_removed(src)
+ SSticker.mode.update_traitor_icons_removed(src)
if("traitor")
- if(!(src in ticker.mode.traitors))
- ticker.mode.traitors += src
+ if(!(src in SSticker.mode.traitors))
+ SSticker.mode.traitors += src
var/datum/mindslaves/slaved = new()
slaved.masters += src
som = slaved //we MIGT want to mindslave someone
@@ -1160,14 +1160,14 @@
message_admins("[key_name_admin(usr)] has traitored [key_name_admin(current)]")
if(isAI(current))
var/mob/living/silicon/ai/A = current
- ticker.mode.add_law_zero(A)
+ SSticker.mode.add_law_zero(A)
SEND_SOUND(current, 'sound/ambience/antag/malf.ogg')
else
SEND_SOUND(current, 'sound/ambience/antag/tatoralert.ogg')
- ticker.mode.update_traitor_icons_added(src)
+ SSticker.mode.update_traitor_icons_added(src)
if("autoobjectives")
- ticker.mode.forge_traitor_objectives(src)
+ SSticker.mode.forge_traitor_objectives(src)
to_chat(usr, "The objectives for traitor [key] have been generated. You can edit them and announce manually.")
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
@@ -1175,17 +1175,17 @@
else if(href_list["shadowling"])
switch(href_list["shadowling"])
if("clear")
- ticker.mode.update_shadow_icons_removed(src)
- if(src in ticker.mode.shadows)
- ticker.mode.shadows -= src
+ SSticker.mode.update_shadow_icons_removed(src)
+ if(src in SSticker.mode.shadows)
+ SSticker.mode.shadows -= src
special_role = null
to_chat(current, "Your powers have been quenched! You are no longer a shadowling!")
message_admins("[key_name_admin(usr)] has de-shadowlinged [current].")
log_admin("[key_name(usr)] has de-shadowlinged [current].")
current.spellremove(current)
current.remove_language("Shadowling Hivemind")
- else if(src in ticker.mode.shadowling_thralls)
- ticker.mode.remove_thrall(src,0)
+ else if(src in SSticker.mode.shadowling_thralls)
+ SSticker.mode.remove_thrall(src,0)
message_admins("[key_name_admin(usr)] has de-thrall'ed [current].")
log_admin("[key_name(usr)] has de-thralled [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-thralled [key_name_admin(current)]")
@@ -1193,20 +1193,20 @@
if(!ishuman(current))
to_chat(usr, "This only works on humans!")
return
- ticker.mode.shadows += src
+ SSticker.mode.shadows += src
special_role = SPECIAL_ROLE_SHADOWLING
to_chat(current, "Something stirs deep in your mind. A red light floods your vision, and slowly you remember. Though your human disguise has served you well, the \
time is nigh to cast it off and enter your true form. You have disguised yourself amongst the humans, but you are not one of them. You are a shadowling, and you are to ascend at all costs.\
")
- ticker.mode.finalize_shadowling(src)
- ticker.mode.update_shadow_icons_added(src)
+ SSticker.mode.finalize_shadowling(src)
+ SSticker.mode.update_shadow_icons_added(src)
log_admin("[key_name(usr)] has shadowlinged [key_name(current)]")
message_admins("[key_name_admin(usr)] has shadowlinged [key_name_admin(current)]")
if("thrall")
if(!ishuman(current))
to_chat(usr, "This only works on humans!")
return
- ticker.mode.add_thrall(src)
+ SSticker.mode.add_thrall(src)
message_admins("[key_name_admin(usr)] has thralled [current].")
log_admin("[key_name(usr)] has thralled [current].")
@@ -1221,7 +1221,7 @@
return
make_Abductor()
log_admin("[key_name(usr)] turned [current] into abductor.")
- ticker.mode.update_abductor_icons_added(src)
+ SSticker.mode.update_abductor_icons_added(src)
if("equip")
if(!ishuman(current))
to_chat(usr, "This only works on humans!")
@@ -1306,7 +1306,7 @@
log_admin("[key_name(usr)] has set [key_name(current)]'s telecrystals to [crystals]")
message_admins("[key_name_admin(usr)] has set [key_name_admin(current)]'s telecrystals to [crystals]")
if("uplink")
- if(!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors)))
+ if(!SSticker.mode.equip_traitor(current, !(src in SSticker.mode.traitors)))
to_chat(usr, "Equipping a syndicate failed!")
return
log_admin("[key_name(usr)] has given [key_name(current)] an uplink")
@@ -1392,27 +1392,27 @@
qdel(H)
/datum/mind/proc/make_Traitor()
- if(!(src in ticker.mode.traitors))
- ticker.mode.traitors += src
+ if(!(src in SSticker.mode.traitors))
+ SSticker.mode.traitors += src
special_role = SPECIAL_ROLE_TRAITOR
- ticker.mode.forge_traitor_objectives(src)
- ticker.mode.finalize_traitor(src)
- ticker.mode.greet_traitor(src)
- ticker.mode.update_traitor_icons_added(src)
+ SSticker.mode.forge_traitor_objectives(src)
+ SSticker.mode.finalize_traitor(src)
+ SSticker.mode.greet_traitor(src)
+ SSticker.mode.update_traitor_icons_added(src)
/datum/mind/proc/make_Nuke()
- if(!(src in ticker.mode.syndicates))
- ticker.mode.syndicates += src
- ticker.mode.update_synd_icons_added(src)
- if(ticker.mode.syndicates.len==1)
- ticker.mode.prepare_syndicate_leader(src)
+ if(!(src in SSticker.mode.syndicates))
+ SSticker.mode.syndicates += src
+ SSticker.mode.update_synd_icons_added(src)
+ if(SSticker.mode.syndicates.len==1)
+ SSticker.mode.prepare_syndicate_leader(src)
else
- current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
+ current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]"
special_role = SPECIAL_ROLE_NUKEOPS
assigned_role = SPECIAL_ROLE_NUKEOPS
to_chat(current, "You are a [syndicate_name()] agent!")
- ticker.mode.forge_syndicate_objectives(src)
- ticker.mode.greet_syndicate(src)
+ SSticker.mode.forge_syndicate_objectives(src)
+ SSticker.mode.greet_syndicate(src)
current.loc = get_turf(locate("landmark*Syndicate-Spawn"))
@@ -1429,34 +1429,34 @@
qdel(H.wear_suit)
qdel(H.w_uniform)
- ticker.mode.equip_syndicate(current)
+ SSticker.mode.equip_syndicate(current)
/datum/mind/proc/make_Vampire()
- if(!(src in ticker.mode.vampires))
- ticker.mode.vampires += src
- ticker.mode.grant_vampire_powers(current)
+ if(!(src in SSticker.mode.vampires))
+ SSticker.mode.vampires += src
+ SSticker.mode.grant_vampire_powers(current)
special_role = SPECIAL_ROLE_VAMPIRE
- ticker.mode.forge_vampire_objectives(src)
- ticker.mode.greet_vampire(src)
- ticker.mode.update_vampire_icons_added(src)
+ SSticker.mode.forge_vampire_objectives(src)
+ SSticker.mode.greet_vampire(src)
+ SSticker.mode.update_vampire_icons_added(src)
/datum/mind/proc/make_Changeling()
- if(!(src in ticker.mode.changelings))
- ticker.mode.changelings += src
- ticker.mode.grant_changeling_powers(current)
+ if(!(src in SSticker.mode.changelings))
+ SSticker.mode.changelings += src
+ SSticker.mode.grant_changeling_powers(current)
special_role = SPECIAL_ROLE_CHANGELING
- ticker.mode.forge_changeling_objectives(src)
- ticker.mode.greet_changeling(src)
- ticker.mode.update_change_icons_added(src)
+ SSticker.mode.forge_changeling_objectives(src)
+ SSticker.mode.greet_changeling(src)
+ SSticker.mode.update_change_icons_added(src)
/datum/mind/proc/make_Overmind()
- if(!(src in ticker.mode.blob_overminds))
- ticker.mode.blob_overminds += src
+ if(!(src in SSticker.mode.blob_overminds))
+ SSticker.mode.blob_overminds += src
special_role = SPECIAL_ROLE_BLOB_OVERMIND
/datum/mind/proc/make_Wizard()
- if(!(src in ticker.mode.wizards))
- ticker.mode.wizards += src
+ if(!(src in SSticker.mode.wizards))
+ SSticker.mode.wizards += src
special_role = SPECIAL_ROLE_WIZARD
assigned_role = SPECIAL_ROLE_WIZARD
//ticker.mode.learn_basic_spells(current)
@@ -1466,18 +1466,18 @@
else
current.loc = pick(wizardstart)
- ticker.mode.equip_wizard(current)
+ SSticker.mode.equip_wizard(current)
for(var/obj/item/spellbook/S in current.contents)
S.op = 0
- ticker.mode.name_wizard(current)
- ticker.mode.forge_wizard_objectives(src)
- ticker.mode.greet_wizard(src)
- ticker.mode.update_wiz_icons_added(src)
+ SSticker.mode.name_wizard(current)
+ SSticker.mode.forge_wizard_objectives(src)
+ SSticker.mode.greet_wizard(src)
+ SSticker.mode.update_wiz_icons_added(src)
/datum/mind/proc/make_Rev()
- if(ticker.mode.head_revolutionaries.len>0)
+ if(SSticker.mode.head_revolutionaries.len>0)
// copy targets
- var/datum/mind/valid_head = locate() in ticker.mode.head_revolutionaries
+ var/datum/mind/valid_head = locate() in SSticker.mode.head_revolutionaries
if(valid_head)
for(var/datum/objective/mutiny/O in valid_head.objectives)
var/datum/objective/mutiny/rev_obj = new
@@ -1485,13 +1485,13 @@
rev_obj.target = O.target
rev_obj.explanation_text = "Assassinate [O.target.current.real_name], the [O.target.assigned_role]."
objectives += rev_obj
- ticker.mode.greet_revolutionary(src,0)
- ticker.mode.head_revolutionaries += src
- ticker.mode.update_rev_icons_added(src)
+ SSticker.mode.greet_revolutionary(src,0)
+ SSticker.mode.head_revolutionaries += src
+ SSticker.mode.update_rev_icons_added(src)
special_role = SPECIAL_ROLE_HEAD_REV
- ticker.mode.forge_revolutionary_objectives(src)
- ticker.mode.greet_revolutionary(src,0)
+ SSticker.mode.forge_revolutionary_objectives(src)
+ SSticker.mode.greet_revolutionary(src,0)
var/list/L = current.get_contents()
var/obj/item/flash/flash = locate() in L
@@ -1499,7 +1499,7 @@
take_uplink()
var/fail = 0
// fail |= !ticker.mode.equip_traitor(current, 1)
- fail |= !ticker.mode.equip_revolutionary(current)
+ fail |= !SSticker.mode.equip_revolutionary(current)
/datum/mind/proc/make_Abductor()
var/role = alert("Abductor Role ?","Role","Agent","Scientist")
@@ -1512,7 +1512,7 @@
if(!ishuman(current))
return
- ticker.mode.abductors |= src
+ SSticker.mode.abductors |= src
var/datum/objective/experiment/O = new
O.owner = src
@@ -1621,15 +1621,15 @@
var/list/implanters
var/ref = "\ref[missionary.mind]"
- if(!(missionary.mind in ticker.mode.implanter))
- ticker.mode.implanter[ref] = list()
- implanters = ticker.mode.implanter[ref]
+ if(!(missionary.mind in SSticker.mode.implanter))
+ SSticker.mode.implanter[ref] = list()
+ implanters = SSticker.mode.implanter[ref]
implanters.Add(src)
- ticker.mode.implanted.Add(src)
- ticker.mode.implanted[src] = missionary.mind
+ SSticker.mode.implanted.Add(src)
+ SSticker.mode.implanted[src] = missionary.mind
//ticker.mode.implanter[missionary.mind] += src
- ticker.mode.implanter[ref] = implanters
- ticker.mode.traitors += src
+ SSticker.mode.implanter[ref] = implanters
+ SSticker.mode.traitors += src
special_role = "traitor"
to_chat(current, "You're now a loyal zealot of [missionary.name]! You now must lay down your life to protect [missionary.p_them()] and assist in [missionary.p_their()] goals at any cost.")
var/datum/objective/protect/mindslave/MS = new
@@ -1640,8 +1640,8 @@
for(var/datum/objective/objective in objectives)
to_chat(current, "Objective #1: [objective.explanation_text]")
- ticker.mode.update_traitor_icons_added(missionary.mind)
- ticker.mode.update_traitor_icons_added(src)//handles datahuds/observerhuds
+ SSticker.mode.update_traitor_icons_added(missionary.mind)
+ SSticker.mode.update_traitor_icons_added(src)//handles datahuds/observerhuds
if(missionary.mind.som)//do not add if not a traitor..and you just picked up a robe and staff in the hall...
var/datum/mindslaves/slaved = missionary.mind.som
@@ -1665,7 +1665,7 @@
/datum/mind/proc/remove_zealot(obj/item/clothing/under/jumpsuit = null)
if(!zealot_master) //if they aren't a zealot, we can't remove their zealot status, obviously. don't bother with the rest so we don't confuse them with the messages
return
- ticker.mode.remove_traitor_mind(src)
+ SSticker.mode.remove_traitor_mind(src)
add_attack_logs(zealot_master, current, "Lost control of zealot")
zealot_master = null
@@ -1696,8 +1696,8 @@
mind.key = key
else
mind = new /datum/mind(key)
- if(ticker)
- ticker.minds += mind
+ if(SSticker)
+ SSticker.minds += mind
else
error("mind_initialize(): No ticker ready yet! Please inform Carn")
if(!mind.name)
diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm
index d8b893caaf9..31c20315508 100644
--- a/code/datums/mutable_appearance.dm
+++ b/code/datums/mutable_appearance.dm
@@ -4,15 +4,21 @@
// Mutable appearances are children of images, just so you know.
+/mutable_appearance/New()
+ ..()
+ plane = FLOAT_PLANE // No clue why this is 0 by default yet images are on FLOAT_PLANE
+ // And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var
+
// Helper similar to image()
-/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER)
+/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE)
var/mutable_appearance/MA = new()
MA.icon = icon
MA.icon_state = icon_state
MA.layer = layer
+ MA.plane = plane
return MA
-/mutable_appearance/clean
+
/mutable_appearance/clean/New()
. = ..()
alpha = 255
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index 8c172f3592f..184f1155da2 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -25,6 +25,7 @@
var/list/implants = null
var/list/cybernetic_implants = null
+ var/list/chameleon_extras //extra types for chameleon outfit changes, mostly guns
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//to be overriden for customization depending on client prefs,species etc
@@ -151,4 +152,10 @@
H.r_store.add_fingerprint(H, 1)
if(H.wear_pda)
H.wear_pda.add_fingerprint(H, 1)
- return 1
\ No newline at end of file
+ return 1
+
+/datum/outfit/proc/get_chameleon_disguise_info()
+ var/list/types = list(uniform, suit, back, belt, gloves, shoes, head, mask, l_ear, r_ear, glasses, id, l_pocket, r_pocket, suit_store, r_hand, l_hand, pda)
+ types += chameleon_extras
+ listclearnulls(types)
+ return types
diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 3ac473edfeb..09282ec77b1 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -123,7 +123,7 @@
/datum/outfit/admin/syndicate/spy
name = "Syndicate Spy"
uniform = /obj/item/clothing/under/suit_jacket/really_black
- shoes = /obj/item/clothing/shoes/syndigaloshes/black
+ shoes = /obj/item/clothing/shoes/chameleon/noslip
uplink_uses = 40
id_access = "Syndicate Agent"
@@ -228,7 +228,7 @@
back = /obj/item/storage/backpack
belt = /obj/item/storage/belt/utility/full/multitool
gloves = /obj/item/clothing/gloves/combat
- shoes = /obj/item/clothing/shoes/syndigaloshes/black
+ shoes = /obj/item/clothing/shoes/chameleon/noslip
l_ear = /obj/item/radio/headset/centcom
id = /obj/item/card/id
pda = /obj/item/pda
@@ -990,7 +990,7 @@
suit = /obj/item/clothing/suit/hooded/chaplain_hoodie
back = /obj/item/storage/backpack
gloves = /obj/item/clothing/gloves/combat
- shoes = /obj/item/clothing/shoes/syndigaloshes/black
+ shoes = /obj/item/clothing/shoes/chameleon/noslip
l_ear = /obj/item/radio/headset/syndicate
id = /obj/item/card/id/syndicate
l_hand = /obj/item/twohanded/dualsaber/red
@@ -1021,7 +1021,7 @@
suit = /obj/item/clothing/suit/draculacoat
back = /obj/item/storage/backpack
gloves = /obj/item/clothing/gloves/combat
- shoes = /obj/item/clothing/shoes/syndigaloshes/black
+ shoes = /obj/item/clothing/shoes/chameleon/noslip
l_ear = /obj/item/radio/headset/syndicate
id = /obj/item/card/id
backpack_contents = list(
diff --git a/code/datums/periodic_news.dm b/code/datums/periodic_news.dm
index cdf2d5b9ad8..9a09ec4a7ec 100644
--- a/code/datums/periodic_news.dm
+++ b/code/datums/periodic_news.dm
@@ -118,7 +118,7 @@
var/global/list/newscaster_standard_feeds = list(/datum/news_announcement/bluespace_research, /datum/news_announcement/lotus_tree, /datum/news_announcement/random_junk, /datum/news_announcement/food_riots)
proc/process_newscaster()
- check_for_newscaster_updates(ticker.mode.newscaster_announcements)
+ check_for_newscaster_updates(SSticker.mode.newscaster_announcements)
var/global/tmp/announced_news_types = list()
proc/check_for_newscaster_updates(type)
diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm
index d20255bc57c..53517d5dbc9 100644
--- a/code/datums/shuttles.dm
+++ b/code/datums/shuttles.dm
@@ -25,6 +25,11 @@
port_id = "ferry"
name = "Base Shuttle Template (Ferry)"
+/datum/map_template/shuttle/admin
+ port_id = "admin"
+ name = "Base Shuttle Template (Admin)"
+
+
// Shuttles start here:
@@ -117,3 +122,13 @@
definitely no zombifyin' reagents!"
admin_notes = "Meat currently contains no zombifying reagents, people on \
meatspike must be spawned in."
+
+/datum/map_template/shuttle/admin/hospital
+ suffix = "hospital"
+ name = "NHV Asclepius"
+ description = "Nanostrasen Hospital ship, for medical assistance during disasters."
+
+/datum/map_template/shuttle/admin/admin
+ suffix = "admin"
+ name = "NTV Argos"
+ description = "Default Admin ship. An older ship used for special operations."
diff --git a/code/datums/spells/chaplain.dm b/code/datums/spells/chaplain.dm
index f9c2641c50e..bdb7bb3f551 100644
--- a/code/datums/spells/chaplain.dm
+++ b/code/datums/spells/chaplain.dm
@@ -64,9 +64,9 @@
spawn(0) // allows cast to complete even if recipient ignores the prompt
if(alert(target, "[user] wants to bless you, in the name of [user.p_their()] religion. Accept?", "Accept Blessing?", "Yes", "No") == "Yes") // prevents forced conversions
- user.visible_message("[user] starts blessing [target] in the name of [ticker.Bible_deity_name].", "You start blessing [target] in the name of [ticker.Bible_deity_name].")
+ user.visible_message("[user] starts blessing [target] in the name of [SSticker.Bible_deity_name].", "You start blessing [target] in the name of [SSticker.Bible_deity_name].")
if(do_after(user, 150, target = target))
- user.visible_message("[user] has blessed [target] in the name of [ticker.Bible_deity_name].", "You have blessed [target] in the name of [ticker.Bible_deity_name].")
+ user.visible_message("[user] has blessed [target] in the name of [SSticker.Bible_deity_name].", "You have blessed [target] in the name of [SSticker.Bible_deity_name].")
if(!target.mind.isblessed)
target.mind.isblessed = TRUE
user.mind.num_blessed++
diff --git a/code/datums/spells/lichdom.dm b/code/datums/spells/lichdom.dm
index f1744e22550..f37d48c0a10 100644
--- a/code/datums/spells/lichdom.dm
+++ b/code/datums/spells/lichdom.dm
@@ -20,7 +20,7 @@
action_icon_state = "skeleton"
/obj/effect/proc_holder/spell/targeted/lichdom/Destroy()
- for(var/datum/mind/M in ticker.mode.wizards) //Make sure no other bones are about
+ for(var/datum/mind/M in SSticker.mode.wizards) //Make sure no other bones are about
for(var/obj/effect/proc_holder/spell/S in M.spell_list)
if(istype(S,/obj/effect/proc_holder/spell/targeted/lichdom) && S != src)
return ..()
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index ec43330a8eb..8fdaf8c25df 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -1073,6 +1073,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
containertype = /obj/structure/closet/critter/cow
containername = "cow crate"
+/datum/supply_packs/organic/pig
+ name = "Pig Crate"
+ cost = 25
+ containertype = /obj/structure/closet/critter/pig
+ containername = "pig crate"
+
/datum/supply_packs/organic/goat
name = "Goat Crate"
cost = 25
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index a714e17d236..b6167338ad3 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -12,9 +12,9 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
var/datum/uplink_item/I = new path
if(!I.item)
continue
- if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes))
+ if(I.gamemodes.len && SSticker && !(SSticker.mode.type in I.gamemodes))
continue
- if(I.excludefrom.len && ticker && (ticker.mode.type in I.excludefrom))
+ if(I.excludefrom.len && SSticker && (SSticker.mode.type in I.excludefrom))
continue
if(I.last)
last += I
@@ -1067,13 +1067,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/stealthy_tools
category = "Stealth and Camouflage Items"
-/datum/uplink_item/stealthy_tools/chameleon_jumpsuit
- name = "Chameleon Jumpsuit"
- desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers."
- reference = "CJ"
- item = /obj/item/clothing/under/chameleon
- cost = 2
-
/datum/uplink_item/stealthy_tools/chameleon_stamp
name = "Chameleon Stamp"
desc = "A stamp that can be activated to imitate an official Nanotrasen Stamp. The disguised stamp will work exactly like the real stamp and will allow you to forge false documents to gain access or equipment; \
@@ -1092,20 +1085,19 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 35
/datum/uplink_item/stealthy_tools/syndigaloshes
- name = "No-Slip Syndicate Shoes"
- desc = "These allow you to run on wet floors. They do not work on lubricated surfaces."
+ name = "No-Slip Chameleon Shoes"
+ desc = "These shoes will allow the wearer to run on wet floors and slippery objects without falling down. \
+ They do not work on heavily lubricated surfaces."
reference = "NSSS"
- item = /obj/item/clothing/shoes/syndigaloshes
+ item = /obj/item/clothing/shoes/chameleon/noslip
cost = 2
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/stealthy_tools/syndigaloshes/nuke
- name = "Tactical No-Slip Brown Shoes"
- desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, and the maker swears they're better than normal ones, somehow."
- reference = "NNSSS"
+ reference = "TNSSS"
cost = 4 //but they aren't
- gamemodes = list(/datum/game_mode/nuclear)
excludefrom = list()
+ gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/stealthy_tools/chamsechud
name = "Chameleon Security HUD"
@@ -1146,12 +1138,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/card/id/syndicate
cost = 2
-/datum/uplink_item/stealthy_tools/voice_changer
- name = "Voice Changer"
- desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognisable."
- reference = "VC"
- item = /obj/item/clothing/mask/gas/voice
- cost = 3
+/datum/uplink_item/stealthy_tools/chameleon
+ name = "Chameleon Kit"
+ desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \
+ Due to budget cuts, the shoes don't provide protection against slipping. The set comes with a complementary chameleon stamp."
+ reference = "CHAM"
+ item = /obj/item/storage/box/syndie_kit/chameleon
+ cost = 2
/datum/uplink_item/stealthy_tools/chameleon_proj
name = "Chameleon-Projector"
@@ -1210,7 +1203,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/stealthy_tools/clownkit
name = "Honk Brand Infiltration Kit"
- desc = "All the tools you need to play the best prank Nanotrasen has ever seen. Includes a voice changer clown mask, magnetic clown shoes, and standard clown outfit, tools, and backpack."
+ desc = "All the tools you need to play the best prank Nanotrasen has ever seen. Includes a voice changer mask, magnetic clown shoes, and standard clown outfit, tools, and backpack."
reference = "HBIK"
item = /obj/item/storage/backpack/clown/syndie
cost = 6
@@ -1544,10 +1537,10 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 12
/datum/uplink_item/cyber_implants/reviver
- name = "Reviver Implant"
- desc = "This implant will attempt to revive you if you lose consciousness. Comes with an automated implanting tool."
+ name = "Hardened Reviver Implant"
+ desc = "This implant will attempt to revive you if you lose consciousness. It is invulnerable to EMPs. Comes with an automated implanting tool."
reference = "CIR"
- item = /obj/item/organ/internal/cyberimp/chest/reviver
+ item = /obj/item/organ/internal/cyberimp/chest/reviver/hardened
cost = 8
// POINTLESS BADASSERY
diff --git a/code/datums/vision_override.dm b/code/datums/vision_override.dm
index 140ceb8d5fa..86aab6d65ec 100644
--- a/code/datums/vision_override.dm
+++ b/code/datums/vision_override.dm
@@ -1,13 +1,15 @@
/datum/vision_override
var/name = "vision override"
- var/see_in_dark = 0
- var/see_invisible = 0
- var/light_sensitive = 0
+
var/sight_flags = 0
+ var/see_in_dark = 0
+ var/lighting_alpha
+
+ var/light_sensitive = 0
/datum/vision_override/nightvision
see_in_dark = 8
- see_invisible = SEE_INVISIBLE_MINIMUM
+ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
/datum/vision_override/nightvision/thermals
sight_flags = SEE_MOBS
diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm
index 2f3a4c4bcba..42700f2725f 100644
--- a/code/datums/weather/weather.dm
+++ b/code/datums/weather/weather.dm
@@ -28,6 +28,7 @@
var/impacted_z_levels // The list of z-levels that this weather is actively affecting
var/overlay_layer = AREA_LAYER //Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that.
+ var/overlay_plane = BLACKNESS_PLANE
var/aesthetic = FALSE //If the weather has no purpose other than looks
var/immunity_type = "storm" //Used by mobs to prevent them from being affected by the weather
@@ -121,6 +122,7 @@
for(var/V in impacted_areas)
var/area/N = V
N.layer = overlay_layer
+ N.plane = overlay_plane
N.icon = 'icons/effects/weather_effects.dmi'
N.invisibility = 0
N.color = weather_color
@@ -135,6 +137,6 @@
N.color = null
N.icon_state = ""
N.icon = 'icons/turf/areas.dmi'
- N.layer = AREA_LAYER //Just default back to normal area stuff since I assume setting a var is faster than initial
- N.invisibility = INVISIBILITY_MAXIMUM
+ N.layer = initial(N.layer)
+ N.plane = initial(N.plane)
N.set_opacity(FALSE)
diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm
index 6d06e3ca1ef..72f49ad5057 100644
--- a/code/datums/weather/weather_types/floor_is_lava.dm
+++ b/code/datums/weather/weather_types/floor_is_lava.dm
@@ -19,6 +19,7 @@
target_trait = STATION_LEVEL
overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only
+ overlay_plane = FLOOR_PLANE
immunity_type = "lava"
diff --git a/code/game/area/Dynamic areas.dm b/code/game/area/Dynamic areas.dm
index 1cb24e23512..c6d1154847b 100644
--- a/code/game/area/Dynamic areas.dm
+++ b/code/game/area/Dynamic areas.dm
@@ -24,18 +24,21 @@
match_tag = "arrivals"
match_width = 5
match_height = 4
- requires_power = 0
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
/area/dynamic/source/lobby_russian
name = "\improper Russian Lounge"
match_tag = "arrivals"
match_width = 5
match_height = 4
- requires_power = 0
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
/area/dynamic/source/lobby_disco
name = "\improper Disco Lounge"
match_tag = "arrivals"
match_width = 5
match_height = 4
- requires_power = 0
\ No newline at end of file
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
\ No newline at end of file
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index dcf5223e29c..82fe75b3cf7 100644
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -1,2735 +1,2339 @@
-/*
-
-### This file contains a list of all the areas in your station. Format is as follows:
-
-/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want)
- name = "NICE NAME" (not required but makes things really nice)
- icon = "ICON FILENAME" (defaults to areas.dmi)
- icon_state = "NAME OF ICON" (defaults to "unknown" (blank))
- requires_power = 0 (defaults to 1)
- music = "music/music.ogg" (defaults to "music/music.ogg")
-
-NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0
-
-*/
-
-
-
-/area
- var/fire = null
- var/atmosalm = ATMOS_ALARM_NONE
- var/poweralm = 1
- var/party = null
- var/report_alerts = 1 // Should atmos alerts notify the AI/computers
- level = null
- name = "Space"
- icon = 'icons/turf/areas.dmi'
- icon_state = "unknown"
- layer = AREA_LAYER
- luminosity = 0
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- invisibility = INVISIBILITY_LIGHTING
- var/valid_territory = TRUE //used for cult summoning areas on station zlevel
- var/map_name // Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
- var/lightswitch = 1
-
- var/eject = null
-
- var/debug = 0
- var/requires_power = 1
- var/always_unpowered = 0 //this gets overriden to 1 for space in area/New()
-
- var/power_equip = 1
- var/power_light = 1
- var/power_environ = 1
- var/music = null
- var/used_equip = 0
- var/used_light = 0
- var/used_environ = 0
- var/static_equip
- var/static_light = 0
- var/static_environ
-
- var/has_gravity = 1
- var/list/apc = list()
- var/no_air = null
-// var/list/lights // list of all lights on this area
- var/air_doors_activated = 0
-
- var/tele_proof = 0
- var/no_teleportlocs = 0
-
- var/outdoors = 0 //For space, the asteroid, lavaland, etc. Used with blueprints to determine if we are adding a new area (vs editing a station room)
- var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default?
- var/nad_allowed = FALSE //is the station NAD allowed on this area?
-
- var/fast_despawn = FALSE
-
-/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
-/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
-var/list/teleportlocs = list()
-/hook/startup/proc/process_teleport_locs()
- for(var/area/AR in world)
- if(AR.no_teleportlocs) continue
- if(teleportlocs.Find(AR.name)) continue
- var/turf/picked = safepick(get_area_turfs(AR.type))
- if(picked && is_station_level(picked.z))
- teleportlocs += AR.name
- teleportlocs[AR.name] = AR
-
- teleportlocs = sortAssoc(teleportlocs)
-
- return 1
-
-var/list/ghostteleportlocs = list()
-/hook/startup/proc/process_ghost_teleport_locs()
- for(var/area/AR in world)
- if(ghostteleportlocs.Find(AR.name)) continue
- var/list/turfs = get_area_turfs(AR.type)
- if(turfs.len)
- ghostteleportlocs += AR.name
- ghostteleportlocs[AR.name] = AR
-
- ghostteleportlocs = sortAssoc(ghostteleportlocs)
-
- return 1
-
-/*-----------------------------------------------------------------------------*/
-
-/area/engine/
-
-/area/turret_protected/
-
-/area/arrival
- requires_power = 0
-
-/area/arrival/start
- name = "\improper Arrival Area"
- icon_state = "start"
-
-/area/admin/
- name = "\improper Admin Room"
- icon_state = "start"
- requires_power = 0
- dynamic_lighting = 0
-
-
-/area/adminconstruction
- name = "\improper Admin Testing Area"
- icon_state = "start"
- requires_power = 0
- dynamic_lighting = 0
-
-/area/space
- icon_state = "space"
- requires_power = 1
- always_unpowered = 1
- power_light = 0
- power_equip = 0
- power_environ = 0
- valid_territory = FALSE
- outdoors = 1
- ambientsounds = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/traitor.ogg')
-
-/area/space/atmosalert()
- return
-
-/area/space/fire_alert()
- return
-
-/area/space/fire_reset()
- return
-
-/area/space/readyalert()
- return
-
-/area/space/partyalert()
- return
-
-//These are shuttle areas, they must contain two areas in a subgroup if you want to move a shuttle from one
-//place to another. Look at escape shuttle for example.
-//All shuttles show now be under shuttle since we have smooth-wall code.
-
-/area/shuttle
- no_teleportlocs = 1
- requires_power = 0
- valid_territory = FALSE
-
-/area/shuttle/arrival
- name = "\improper Arrival Shuttle"
-
-/area/shuttle/arrival/pre_game
- icon_state = "shuttle2"
-
-/area/shuttle/arrival/station
- icon_state = "shuttle"
-
-/area/shuttle/auxillary_base
- icon_state = "shuttle"
-
-/area/shuttle/escape
- name = "\improper Emergency Shuttle"
- music = "music/escape.ogg"
- icon_state = "shuttle2"
- nad_allowed = TRUE
-
-/area/shuttle/pod_1
- name = "\improper Escape Pod One"
- music = "music/escape.ogg"
- icon_state = "shuttle"
- nad_allowed = TRUE
-
-/area/shuttle/pod_2
- name = "\improper Escape Pod Two"
- music = "music/escape.ogg"
- icon_state = "shuttle"
- nad_allowed = TRUE
-
-/area/shuttle/pod_3
- name = "\improper Escape Pod Three"
- music = "music/escape.ogg"
- icon_state = "shuttle"
- nad_allowed = TRUE
-
-/area/shuttle/pod_4
- name = "\improper Escape Pod Four"
- music = "music/escape.ogg"
- icon_state = "shuttle"
- nad_allowed = TRUE
-
-/area/shuttle/escape_pod1
- name = "\improper Escape Pod One"
- music = "music/escape.ogg"
- nad_allowed = TRUE
-
-/area/shuttle/escape_pod1/station
- icon_state = "shuttle2"
-
-/area/shuttle/escape_pod1/centcom
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod1/transit
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod2
- name = "\improper Escape Pod Two"
- music = "music/escape.ogg"
- nad_allowed = TRUE
-
-/area/shuttle/escape_pod2/station
- icon_state = "shuttle2"
-
-/area/shuttle/escape_pod2/centcom
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod2/transit
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod3
- name = "\improper Escape Pod Three"
- music = "music/escape.ogg"
- nad_allowed = TRUE
-
-/area/shuttle/escape_pod3/station
- icon_state = "shuttle2"
-
-/area/shuttle/escape_pod3/centcom
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod3/transit
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod5 //Pod 4 was lost to meteors
- name = "\improper Escape Pod Five"
- music = "music/escape.ogg"
- nad_allowed = TRUE
-
-/area/shuttle/escape_pod5/station
- icon_state = "shuttle2"
-
-/area/shuttle/escape_pod5/centcom
- icon_state = "shuttle"
-
-/area/shuttle/escape_pod5/transit
- icon_state = "shuttle"
-
-/area/shuttle/mining
- name = "\improper Mining Shuttle"
- music = "music/escape.ogg"
- icon_state = "shuttle"
-
-/area/shuttle/transport
- icon_state = "shuttle"
- name = "\improper Transport Shuttle"
-
-/area/shuttle/transport1
- icon_state = "shuttle"
- name = "\improper Transport Shuttle"
-
-/area/shuttle/alien/base
- icon_state = "shuttle"
- name = "\improper Alien Shuttle Base"
- requires_power = 1
-
-/area/shuttle/alien/mine
- icon_state = "shuttle"
- name = "\improper Alien Shuttle Mine"
- requires_power = 1
-
-/area/shuttle/gamma/space
- icon_state = "shuttle"
- name = "\improper Gamma Armory"
- requires_power = 0
-
-/area/shuttle/gamma/station
- icon_state = "shuttle"
- name = "\improper Gamma Armory Station"
- requires_power = 0
-
-/area/shuttle/prison/
- name = "\improper Prison Shuttle"
-
-/area/shuttle/prison/station
- icon_state = "shuttle"
-
-/area/shuttle/prison/prison
- icon_state = "shuttle2"
-
-/area/shuttle/siberia
- name = "\improper Labor Camp Shuttle"
- music = "music/escape.ogg"
- icon_state = "shuttle"
-
-/area/shuttle/specops
- name = "\improper Special Ops Shuttle"
- icon_state = "shuttlered"
-
-/area/shuttle/specops/centcom
- name = "\improper Special Ops Shuttle"
- icon_state = "shuttlered"
-
-/area/shuttle/specops/station
- name = "\improper Special Ops Shuttle"
- icon_state = "shuttlered2"
-
-/area/shuttle/syndicate_elite
- name = "\improper Syndicate Elite Shuttle"
- icon_state = "shuttlered"
- nad_allowed = TRUE
-
-/area/shuttle/syndicate_elite/mothership
- name = "\improper Syndicate Elite Shuttle"
- icon_state = "shuttlered"
-
-/area/shuttle/syndicate_elite/station
- name = "\improper Syndicate Elite Shuttle"
- icon_state = "shuttlered2"
-
-/area/shuttle/syndicate_sit
- name = "\improper Syndicate SIT Shuttle"
- icon_state = "shuttlered"
- nad_allowed = TRUE
-
-/area/shuttle/assault_pod
- name = "Steel Rain"
- icon_state = "shuttle"
-
-/area/shuttle/administration
- name = "\improper Administration Shuttle"
- icon_state = "shuttlered"
-
-/area/shuttle/administration/centcom
- name = "\improper Administration Shuttle Centcom"
- icon_state = "shuttlered"
-
-/area/shuttle/administration/station
- name = "\improper Administration Shuttle"
- icon_state = "shuttlered2"
-
-/area/shuttle/thunderdome
- name = "honk"
-
-/area/shuttle/thunderdome/grnshuttle
- name = "\improper Thunderdome GRN Shuttle"
- icon_state = "green"
-
-/area/shuttle/thunderdome/grnshuttle/dome
- name = "\improper GRN Shuttle"
- icon_state = "shuttlegrn"
-
-/area/shuttle/thunderdome/grnshuttle/station
- name = "\improper GRN Station"
- icon_state = "shuttlegrn2"
-
-/area/shuttle/thunderdome/redshuttle
- name = "\improper Thunderdome RED Shuttle"
- icon_state = "red"
-
-/area/shuttle/thunderdome/redshuttle/dome
- name = "\improper RED Shuttle"
- icon_state = "shuttlered"
-
-/area/shuttle/thunderdome/redshuttle/station
- name = "\improper RED Station"
- icon_state = "shuttlered2"
-// === Trying to remove these areas:
-
-/area/shuttle/research
- name = "\improper Research Shuttle"
- music = "music/escape.ogg"
- icon_state = "shuttle"
-
-/area/shuttle/research/station
- icon_state = "shuttle2"
-
-/area/shuttle/research/outpost
- icon_state = "shuttle"
-
-/area/shuttle/vox
- name = "\improper Vox Skipjack"
- icon_state = "shuttle"
- requires_power = 0
-
-/area/shuttle/vox/station
- name = "\improper Vox Skipjack"
- icon_state = "yellow"
- requires_power = 0
-
-/area/shuttle/salvage
- name = "\improper Salvage Ship"
- icon_state = "yellow"
- requires_power = 0
-
-/area/shuttle/salvage/start
- name = "\improper Middle of Nowhere"
- icon_state = "yellow"
-
-/area/shuttle/salvage/arrivals
- name = "\improper Space Station Auxiliary Docking"
- icon_state = "yellow"
-
-/area/shuttle/salvage/derelict
- name = "\improper Derelict Station"
- icon_state = "yellow"
-
-/area/shuttle/salvage/djstation
- name = "\improper Ruskie DJ Station"
- icon_state = "yellow"
-
-/area/shuttle/salvage/north
- name = "\improper North of the Station"
- icon_state = "yellow"
-
-/area/shuttle/salvage/east
- name = "\improper East of the Station"
- icon_state = "yellow"
-
-/area/shuttle/salvage/south
- name = "\improper South of the Station"
- icon_state = "yellow"
-
-/area/shuttle/salvage/commssat
- name = "\improper The Communications Satellite"
- icon_state = "yellow"
-
-/area/shuttle/salvage/mining
- name = "\improper South-West of the Mining Asteroid"
- icon_state = "yellow"
-
-/area/shuttle/salvage/abandoned_ship
- name = "\improper Abandoned Ship"
- icon_state = "yellow"
-
-/area/shuttle/salvage/clown_asteroid
- name = "\improper Clown Asteroid"
- icon_state = "yellow"
-
-/area/shuttle/salvage/trading_post
- name = "\improper Trading Post"
- icon_state = "yellow"
-
-/area/shuttle/salvage/transit
- name = "\improper hyperspace"
- icon_state = "shuttle"
-
-/area/shuttle/supply
- name = "Supply Shuttle"
- icon_state = "shuttle3"
- requires_power = 0
-
-/area/shuttle/abandoned
- name = "Abandoned Ship"
- icon_state = "shuttle"
-
-/area/shuttle/syndicate
- name = "Syndicate Nuclear Team Shuttle"
- icon_state = "shuttle"
- nad_allowed = TRUE
-
-/area/shuttle/trade
- name = "Trade Shuttle"
- icon_state = "shuttle"
- requires_power = 0
-
-/area/shuttle/trade/sol
- name = "Sol Freighter"
-
-/area/shuttle/freegolem
- name = "Free Golem Ship"
- icon_state = "purple"
- xenobiology_compatible = TRUE
-
-/area/airtunnel1/ // referenced in airtunnel.dm:759
-
-/area/dummy/ // Referenced in engine.dm:261
-
-/area/start // will be unused once kurper gets his login interface patch done
- name = "start area"
- icon_state = "start"
- requires_power = 0
- luminosity = 1
- dynamic_lighting = 0
- has_gravity = 1
-
-// === end remove
-
-/area/alien
- name = "\improper Alien base"
- icon_state = "yellow"
- requires_power = 0
-
-// CENTCOM
-
-/area/centcom
- name = "\improper Centcom"
- icon_state = "centcom"
- requires_power = 0
- dynamic_lighting = 0
- nad_allowed = TRUE
-
-/area/centcom/control
- name = "\improper Centcom Control"
- icon_state = "centcom_ctrl"
-
-/area/centcom/evac
- name = "\improper Centcom Emergency Shuttle"
- icon_state = "centcom_evac"
-
-/area/centcom/suppy
- name = "\improper Centcom Supply Shuttle"
- icon_state = "centcom_supply"
-
-/area/centcom/ferry
- name = "\improper Centcom Transport Shuttle"
- icon_state = "centcom_ferry"
-
-/area/centcom/shuttle
- name = "\improper Centcom Administration Shuttle"
-
-/area/centcom/test
- name = "\improper Centcom Testing Facility"
-
-/area/centcom/living
- name = "\improper Centcom Living Quarters"
-
-/area/centcom/specops
- name = "\improper Centcom Special Ops"
- icon_state = "centcom_specops"
-
-/area/centcom/gamma
- name = "\improper Centcom Gamma Armory"
- icon_state = "centcom_gamma"
-
-/area/centcom/holding
- name = "\improper Holding Facility"
-
-/area/centcom/bathroom
- name = "\improper Centcom Emergency Shuttle Bathrooms"
-
-//SYNDICATES
-
-/area/syndicate_mothership
- name = "\improper Syndicate Forward Base"
- icon_state = "syndie-ship"
- requires_power = 0
- nad_allowed = TRUE
-
-/area/syndicate_mothership/control
- name = "\improper Syndicate Control Room"
- icon_state = "syndie-control"
-
-/area/syndicate_mothership/elite_squad
- name = "\improper Syndicate Elite Squad"
- icon_state = "syndie-elite"
-
-/area/syndicate_mothership/infteam
- name = "\improper Syndicate Infiltrators"
- icon_state = "syndie-elite"
-
-//EXTRA
-
-/area/asteroid // -- TLE
- name = "\improper Asteroid"
- icon_state = "asteroid"
- requires_power = 0
- valid_territory = FALSE
-
-/area/asteroid/cave // -- TLE
- name = "\improper Asteroid - Underground"
- icon_state = "cave"
- requires_power = 0
- outdoors = 1
-
-/area/asteroid/artifactroom
- name = "\improper Asteroid - Artifact"
- icon_state = "cave"
-
-/area/tdome
- name = "\improper Thunderdome"
- icon_state = "thunder"
- requires_power = 0
- dynamic_lighting = 0
-
-
-/area/tdome/arena_source
- name = "\improper Thunderdome Arena Template"
- icon_state = "thunder"
-
-/area/tdome/arena
- name = "\improper Thunderdome Arena"
- icon_state = "thunder"
-
-/area/tdome/tdome1
- name = "\improper Thunderdome (Team 1)"
- icon_state = "green"
-
-/area/tdome/tdome2
- name = "\improper Thunderdome (Team 2)"
- icon_state = "yellow"
-
-/area/tdome/tdomeadmin
- name = "\improper Thunderdome (Admin.)"
- icon_state = "purple"
-
-/area/tdome/tdomeobserve
- name = "\improper Thunderdome (Observer.)"
- icon_state = "purple"
-
-/area/exploration/methlab
- name = "\improper Abandoned Drug Lab"
- icon_state = "green"
-
-//ENEMY
-
-//names are used
-/area/syndicate_station
- name = "\improper Syndicate Station"
- icon_state = "yellow"
- requires_power = 0
-
-/area/syndicate_station/start
- name = "\improper Syndicate Forward Operating Base"
- icon_state = "yellow"
-
-/area/syndicate_station/southwest
- name = "\improper South-West of SS13"
- icon_state = "southwest"
-
-/area/syndicate_station/northwest
- name = "\improper North-West of SS13"
- icon_state = "northwest"
-
-/area/syndicate_station/northeast
- name = "\improper North-East of SS13"
- icon_state = "northeast"
-
-/area/syndicate_station/southeast
- name = "\improper South-East of SS13"
- icon_state = "southeast"
-
-/area/syndicate_station/north
- name = "\improper North of SS13"
- icon_state = "north"
-
-/area/syndicate_station/south
- name = "\improper South of SS13"
- icon_state = "south"
-
-/area/syndicate_station/commssat
- name = "\improper South of the Communication Satellite"
- icon_state = "south"
-
-/area/syndicate_station/mining
- name = "\improper North-East of the Mining Asteroid"
- icon_state = "north"
-
-/area/syndicate_station/transit
- name = "\improper Hyperspace"
- icon_state = "shuttle"
-
-//Abductors
-/area/abductor_ship
- name = "\improper Abductor Ship"
- icon_state = "yellow"
- requires_power = 0
- has_gravity = 1
- dynamic_lighting = 0
-
-/area/wizard_station
- name = "\improper Wizard's Den"
- icon_state = "yellow"
- requires_power = 0
-
-/area/ninja
- name = "\improper Ninja Area Parent"
- icon_state = "ninjabase"
- requires_power = 0
- no_teleportlocs = 1
-
-/area/ninja/outpost
- name = "\improper SpiderClan Outpost"
-
-/area/ninja/holding
- name = "\improper SpiderClan Holding Facility"
-
-/area/vox_station
- name = "\improper Vox Base"
- icon_state = "yellow"
- requires_power = 0
- dynamic_lighting = 0
- no_teleportlocs = 1
-
-/area/vox_station/transit
- name = "\improper Hyperspace"
- icon_state = "shuttle"
- requires_power = 0
-
-/area/vox_station/southwest_solars
- name = "\improper Aft Port Solars"
- icon_state = "southwest"
- requires_power = 0
-
-/area/vox_station/northwest_solars
- name = "\improper Fore Port Solars"
- icon_state = "northwest"
- requires_power = 0
-
-/area/vox_station/northeast_solars
- name = "\improper Fore Starboard Solars"
- icon_state = "northeast"
- requires_power = 0
-
-/area/vox_station/southeast_solars
- name = "\improper Aft Starboard Solars"
- icon_state = "southeast"
- requires_power = 0
-
-/area/trader_station
- name = "Trade Base"
- icon_state = "yellow"
- requires_power = 0
-
-/area/trader_station/sol
- name = "Jupiter Station 6"
-
-/area/vox_station/mining
- name = "\improper Nearby Mining Asteroid"
- icon_state = "north"
- requires_power = 0
-
-/area/xenos_station/start
- name = "\improper Alien Shuttle"
- icon_state = "north"
- requires_power = 0
-
-/area/xenos_station/transit
- name = "\improper Hyperspace"
- icon_state = "shuttle"
- requires_power = 0
-
-/area/xenos_station/southwest
- name = "\improper Aft Port Solars Landing Area"
- icon_state = "southwest"
- requires_power = 0
-
-/area/xenos_station/northwest
- name = "\improper Fore Port Solars Landing Area"
- icon_state = "northwest"
- requires_power = 0
-
-/area/xenos_station/northeast
- name = "\improper Fore Starboard Solars Landing Area"
- icon_state = "northeast"
- requires_power = 0
-
-/area/xenos_station/southeast
- name = "\improper Aft Starboard Solars Landing Area"
- icon_state = "southeast"
- requires_power = 0
-
-/area/xenos_station/east
- name = "\improper East Landing Area"
- icon_state = "east"
- requires_power = 0
-
-/area/xenos_station/west
- name = "\improper West Landing Area"
- icon_state = "west"
- requires_power = 0
-
-/area/xenos_station/researchoutpost
- name = "\improper Research Outpost Landing Area"
- icon_state = "north"
- requires_power = 0
-
-/area/xenos_station/miningoutpost
- name = "\improper Mining Outpost Landing Area"
- icon_state = "south"
- requires_power = 0
-
-//PRISON
-/area/prison
- name = "\improper Prison Station"
- icon_state = "brig"
-
-/area/prison/arrival_airlock
- name = "\improper Prison Station Airlock"
- icon_state = "green"
- requires_power = 0
-
-/area/prison/control
- name = "\improper Prison Security Checkpoint"
- icon_state = "security"
-
-/area/prison/crew_quarters
- name = "\improper Prison Security Quarters"
- icon_state = "security"
-
-/area/prison/rec_room
- name = "\improper Prison Rec Room"
- icon_state = "green"
-
-/area/prison/closet
- name = "\improper Prison Supply Closet"
- icon_state = "dk_yellow"
-
-/area/prison/hallway/fore
- name = "\improper Prison Fore Hallway"
- icon_state = "yellow"
-
-/area/prison/hallway/aft
- name = "\improper Prison Aft Hallway"
- icon_state = "yellow"
-
-/area/prison/hallway/port
- name = "\improper Prison Port Hallway"
- icon_state = "yellow"
-
-/area/prison/hallway/starboard
- name = "\improper Prison Starboard Hallway"
- icon_state = "yellow"
-
-/area/prison/morgue
- name = "\improper Prison Morgue"
- icon_state = "morgue"
-
-/area/prison/medical_research
- name = "\improper Prison Genetic Research"
- icon_state = "medresearch"
-
-/area/prison/medical
- name = "\improper Prison Medbay"
- icon_state = "medbay"
-
-/area/prison/solar
- name = "\improper Prison Solar Array"
- icon_state = "storage"
- requires_power = 0
-
-/area/prison/podbay
- name = "\improper Prison Podbay"
- icon_state = "dk_yellow"
-
-/area/prison/solar_control
- name = "\improper Prison Solar Array Control"
- icon_state = "dk_yellow"
-
-/area/prison/solitary
- name = "\improper Solitary Confinement"
- icon_state = "brig"
- fast_despawn = TRUE
-
-/area/prison/cell_block
- name = "\improper Prison Cell Block"
- icon_state = "brig"
- fast_despawn = TRUE
-
-/area/prison/cell_block/A
- name = "\improper Prison Cell Block A"
- icon_state = "brig"
-
-/area/prison/cell_block/B
- name = "\improper Prison Cell Block B"
- icon_state = "brig"
-
-/area/prison/cell_block/C
- name = "\improper Prison Cell Block C"
- icon_state = "brig"
-
-//Labor camp
-/area/mine/laborcamp
- name = "Labor Camp"
- icon_state = "brig"
-
-/area/mine/laborcamp/security
- name = "Labor Camp Security"
- icon_state = "security"
-
-//STATION13
-
-/area/atmos
- name = "Atmospherics"
- icon_state = "atmos"
-
-/area/atmos/control
- name = "Atmospherics Control Room"
- icon_state = "atmos"
-
-/area/atmos/distribution
- name = "Atmospherics Distribution Loop"
- icon_state = "atmos"
-
-//Maintenance
-/area/maintenance
- ambientsounds = list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg', 'sound/ambience/ambimaint5.ogg')
- valid_territory = FALSE
-
-/area/maintenance/atmos_control
- name = "Atmospherics Maintenance"
- icon_state = "fpmaint"
-
-/area/maintenance/fpmaint
- name = "EVA Maintenance"
- icon_state = "fpmaint"
-
-/area/maintenance/fpmaint2
- name = "Arrivals North Maintenance"
- icon_state = "fpmaint"
-
-/area/maintenance/fsmaint
- name = "Dormitory Maintenance"
- icon_state = "fsmaint"
-
-/area/maintenance/fsmaint2
- name = "Bar Maintenance"
- icon_state = "fsmaint"
-
-/area/maintenance/asmaint
- name = "Medbay Maintenance"
- icon_state = "asmaint"
-
-/area/maintenance/asmaint2
- name = "Science Maintenance"
- icon_state = "asmaint"
-
-/area/maintenance/apmaint
- name = "Cargo Maintenance"
- icon_state = "apmaint"
-
-/area/maintenance/maintcentral
- name = "Bridge Maintenance"
- icon_state = "maintcentral"
-
-/area/maintenance/fore
- name = "Fore Maintenance"
- icon_state = "fmaint"
-
-/area/maintenance/starboard
- name = "Starboard Maintenance"
- icon_state = "smaint"
-
-/area/maintenance/port
- name = "Locker Room Maintenance"
- icon_state = "pmaint"
-
-/area/maintenance/aft
- name = "Engineering Maintenance"
- icon_state = "amaint"
-
-/area/maintenance/engi_shuttle
- name = "Engineering Shuttle Access"
- icon_state = "maint_e_shuttle"
-
-/area/maintenance/storage
- name = "Atmospherics Maintenance"
- icon_state = "green"
-
-/area/maintenance/incinerator
- name = "\improper Incinerator"
- icon_state = "disposal"
-
-/area/maintenance/turbine
- name = "\improper Turbine"
- icon_state = "disposal"
-
-/area/maintenance/disposal
- name = "Waste Disposal"
- icon_state = "disposal"
-
-/area/maintenance/genetics
- name = "Genetics Maintenance"
- icon_state = "asmaint"
-
-
-/area/maintenance/electrical
- name = "Electrical Maintenance"
- icon_state = "yellow"
-
-/area/maintenance/abandonedbar
- name = "Maintenance Bar"
- icon_state = "yellow"
- power_equip = 0
- power_light = 0
- power_environ = 0
-
-/area/maintenance/electrical_shop
- name ="Electronics Den"
- icon_state = "yellow"
-
-/area/maintenance/gambling_den
- name = "Gambling Den"
- icon_state = "yellow"
-
-/area/maintenance/consarea
- name = "Alternate Construction Area"
- icon_state = "yellow"
-
-
-//Hallway
-
-/area/hallway/primary/fore
- name = "\improper Fore Primary Hallway"
- icon_state = "hallF"
-
-/area/hallway/primary/starboard
- name = "\improper Starboard Primary Hallway"
- icon_state = "hallS"
-
-/area/hallway/primary/starboard/west
-/area/hallway/primary/starboard/east
-
-/area/hallway/primary/aft
- name = "\improper Aft Primary Hallway"
- icon_state = "hallA"
-
-
-/area/hallway/primary/port
- name = "\improper Port Primary Hallway"
- icon_state = "hallP"
-
-/area/hallway/primary/port/west
- name = "\improper Port West Hallway"
-
-/area/hallway/primary/port/east
- name = "\improper Port East Hallway"
-
-/area/hallway/primary/central
- name = "\improper Central Primary Hallway"
- icon_state = "hallC"
-
-/area/hallway/primary/central/north
-/area/hallway/primary/central/south
-/area/hallway/primary/central/west
-/area/hallway/primary/central/east
-/area/hallway/primary/central/nw
-/area/hallway/primary/central/ne
-/area/hallway/primary/central/sw
-/area/hallway/primary/central/se
-
-/area/hallway/secondary/exit
- name = "\improper Escape Shuttle Hallway"
- icon_state = "escape"
-
-/area/hallway/secondary/construction
- name = "\improper Construction Area"
- icon_state = "construction"
-
-/area/hallway/secondary/entry
- name = "\improper Arrival Shuttle Hallway"
- icon_state = "entry"
-
-/area/hallway/secondary/entry/north
-
-/area/hallway/secondary/entry/south
-
-/area/hallway/secondary/entry/louge
- name = "\improper Arrivals Lounge"
-
-
-//Command
-
-/area/bridge
- name = "\improper Bridge"
- icon_state = "bridge"
- music = "signal"
-
-/area/bridge/meeting_room
- name = "\improper Heads of Staff Meeting Room"
- icon_state = "meeting"
- music = null
-
-/area/crew_quarters/captain
- name = "\improper Captain's Office"
- icon_state = "captain"
-
-/area/crew_quarters/captain/bedroom
- name = "\improper Captain's Bedroom"
- icon_state = "captain"
-
-/area/crew_quarters/recruit
- name = "\improper Recruitment Office"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/hop
- name = "\improper Head of Personnel's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/hor
- name = "\improper Research Director's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/chief
- name = "\improper Chief Engineer's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/hos
- name = "\improper Head of Security's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/cmo
- name = "\improper Chief Medical Officer's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/courtroom
- name = "\improper Courtroom"
- icon_state = "courtroom"
-
-/area/crew_quarters/heads
- name = "\improper Head of Personnel's Office"
- icon_state = "head_quarters"
-
-/area/crew_quarters/hor
- name = "\improper Research Director's Office"
- icon_state = "head_quarters"
-
-/area/crew_quarters/hos
- name = "\improper Head of Security's Office"
- icon_state = "head_quarters"
-
-/area/crew_quarters/chief
- name = "\improper Chief Engineer's Office"
- icon_state = "head_quarters"
-
-/area/mint
- name = "\improper Mint"
- icon_state = "green"
-
-/area/comms
- name = "\improper Communications Relay"
- icon_state = "tcomsatcham"
-
-/area/server
- name = "\improper Messaging Server Room"
- icon_state = "server"
-
-/area/ntrep
- name = "\improper Nanotrasen Representative's Office"
- icon_state = "bluenew"
-
-/area/blueshield
- name = "\improper Blueshield's Office"
- icon_state = "blueold"
-
-/area/centcomdocks
- name = "\improper Central Command Docks"
- icon_state = "centcom"
-
-//Crew
-
-/area/crew_quarters
- name = "\improper Dormitories"
- icon_state = "Sleep"
-
-/area/crew_quarters/toilet
- name = "\improper Dormitory Toilets"
- icon_state = "toilet"
-
-/area/crew_quarters/sleep
- name = "\improper Dormitories"
- icon_state = "Sleep"
- valid_territory = FALSE
-
-/area/crew_quarters/sleep_male
- name = "\improper Male Dorm"
- icon_state = "Sleep"
-
-/area/crew_quarters/sleep_male/toilet_male
- name = "\improper Male Toilets"
- icon_state = "toilet"
-
-/area/crew_quarters/sleep_female
- name = "\improper Female Dorm"
- icon_state = "Sleep"
-
-/area/crew_quarters/sleep_female/toilet_female
- name = "\improper Female Toilets"
- icon_state = "toilet"
-
-/area/crew_quarters/locker
- name = "\improper Locker Room"
- icon_state = "locker"
-
-/area/crew_quarters/locker/locker_toilet
- name = "\improper Locker Toilets"
- icon_state = "toilet"
-
-/area/crew_quarters/fitness
- name = "\improper Fitness Room"
- icon_state = "fitness"
-
-/area/crew_quarters/dorms
- name = "\improper Dorms"
- icon_state = "dorms"
-
-/area/crew_quarters/arcade
- name = "\improper Arcade"
- icon_state = "arcade"
-
-/area/crew_quarters/cafeteria
- name = "\improper Cafeteria"
- icon_state = "cafeteria"
-
-/area/crew_quarters/kitchen
- name = "\improper Kitchen"
- icon_state = "kitchen"
-
-/area/crew_quarters/bar
- name = "\improper Bar"
- icon_state = "bar"
-
-/area/crew_quarters/bar/atrium
- name = "Atrium"
- icon_state = "bar"
-
-/area/crew_quarters/theatre
- name = "\improper Theatre"
- icon_state = "Theatre"
-
-/area/crew_quarters/mrchangs
- name = "\improper Mr Chang's"
- icon_state = "Theatre"
-
-/area/library
- name = "\improper Library"
- icon_state = "library"
-
-/area/library/abandoned
- name = "\improper Abandoned Library"
- icon_state = "library"
-
-/area/chapel/main
- name = "\improper Chapel"
- icon_state = "chapel"
- ambientsounds = list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg','sound/music/traitor.ogg')
-
-/area/chapel/office
- name = "\improper Chapel Office"
- icon_state = "chapeloffice"
-
-/area/escapepodbay
- name = "\improper Escape Shuttle Hallway Podbay"
- icon_state = "escape"
-
-/area/lawoffice
- name = "\improper Law Office"
- icon_state = "law"
-
-/area/magistrateoffice
- name = "\improper Magistrate's Office"
- icon_state = "magistrate"
-
-/area/clownoffice
- name = "\improper Clown's Office"
- icon_state = "clown_office"
-
-/area/mimeoffice
- name = "\improper Mime's Office"
- icon_state = "mime_office"
-
-/area/civilian/barber
- name = "\improper Barber Shop"
- icon_state = "barber"
-
-/area/civilian/clothing
- name = "\improper Clothing Shop"
- icon_state = "Theatre"
-
-/area/civilian/pet_store
- name = "\improper Pet Store"
- icon_state = "pet_store"
-
-/area/holodeck
- name = "\improper Holodeck"
- icon_state = "Holodeck"
- dynamic_lighting = 0
-
-/area/holodeck/alphadeck
- name = "\improper Holodeck Alpha"
-
-
-/area/holodeck/source_plating
- name = "\improper Holodeck - Off"
- icon_state = "Holodeck"
-
-/area/holodeck/source_emptycourt
- name = "\improper Holodeck - Empty Court"
-
-/area/holodeck/source_boxingcourt
- name = "\improper Holodeck - Boxing Court"
-
-/area/holodeck/source_basketball
- name = "\improper Holodeck - Basketball Court"
-
-/area/holodeck/source_thunderdomecourt
- name = "\improper Holodeck - Thunderdome Court"
-
-/area/holodeck/source_beach
- name = "\improper Holodeck - Beach"
- icon_state = "Holodeck" // Lazy.
-
-/area/holodeck/source_burntest
- name = "\improper Holodeck - Atmospheric Burn Test"
-
-/area/holodeck/source_wildlife
- name = "\improper Holodeck - Wildlife Simulation"
-
-/area/holodeck/source_meetinghall
- name = "\improper Holodeck - Meeting Hall"
-
-/area/holodeck/source_theatre
- name = "\improper Holodeck - Theatre"
-
-/area/holodeck/source_picnicarea
- name = "\improper Holodeck - Picnic Area"
-
-/area/holodeck/source_snowfield
- name = "\improper Holodeck - Snow Field"
-
-/area/holodeck/source_desert
- name = "\improper Holodeck - Desert"
-
-/area/holodeck/source_space
- name = "\improper Holodeck - Space"
-
-/area/holodeck/source_knightarena
- name = "\improper Holodeck - Knight Arena"
-
-
-//Embassies
-/area/embassy/
- name = "\improper Embassy Hallway"
-
-/area/embassy/tajaran
- name = "\improper Tajaran Embassy"
- icon_state = "tajaran"
-
-/area/embassy/skrell
- name = "\improper Skrell Embassy"
- icon_state = "skrell"
-
-/area/embassy/unathi
- name = "\improper Unathi Embassy"
- icon_state = "unathi"
-
-/area/embassy/kidan
- name = "\improper Kidan Embassy"
- icon_state = "kidan"
-
-/area/embassy/diona
- name = "\improper Diona Embassy"
- icon_state = "diona"
-
-/area/embassy/slime
- name = "\improper Slime Person Embassy"
- icon_state = "slime"
-
-/area/embassy/grey
- name = "\improper Grey Embassy"
- icon_state = "grey"
-
-/area/embassy/vox
- name = "\improper Vox Embassy"
- icon_state = "vox"
-
-
-
-//Engineering
-/area/engine
- ambientsounds = list('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg')
-
-/area/engine/engine_smes
- name = "\improper Engineering SMES"
- icon_state = "engine_smes"
- requires_power = 0//This area only covers the batteries and they deal with their own power
-
-/area/engine/engineering
- name = "Engineering"
- icon_state = "engine_smes"
-
-/area/engine/break_room
- name = "\improper Engineering Foyer"
- icon_state = "engine"
-
-/area/engine/equipmentstorage
- name = "\improper Engineering Equipment Storage"
- icon_state = "storage"
-
-/area/engine/hardsuitstorage
- name = "\improper Engineering Hardsuit Storage"
- icon_state = "storage"
-
-/area/engine/controlroom
- name = "\improper Engineering Control Room"
- icon_state = "engine_control"
-
-/area/engine/gravitygenerator
- name = "\improper Gravity Generator"
- icon_state = "engine"
-
-/area/engine/chiefs_office
- name = "\improper Chief Engineer's office"
- icon_state = "engine_control"
-
-/area/engine/mechanic_workshop
- name = "\improper Mechanic Workshop"
- icon_state = "engine"
-
-/area/engine/mechanic_workshop/hanger
- name = "\improper Hanger Bay"
- icon_state = "engine"
-
-/area/engine/supermatter
- name = "\improper Supermatter Engine"
- icon_state = "engine"
-
-//Solars
-
-/area/solar
- requires_power = 0
- dynamic_lighting = 0
- valid_territory = FALSE
-
-/area/solar/auxport
- name = "\improper Fore Port Solar Array"
- icon_state = "panelsA"
-
-/area/solar/auxstarboard
- name = "\improper Fore Starboard Solar Array"
- icon_state = "panelsA"
-
-/area/solar/fore
- name = "\improper Fore Solar Array"
- icon_state = "yellow"
-
-/area/solar/aft
- name = "\improper Aft Solar Array"
- icon_state = "aft"
-
-/area/solar/starboard
- name = "\improper Aft Starboard Solar Array"
- icon_state = "panelsS"
-
-/area/solar/port
- name = "\improper Aft Port Solar Array"
- icon_state = "panelsP"
-
-/area/maintenance/auxsolarport
- name = "\improper Fore Port Solar Maintenance"
- icon_state = "SolarcontrolA"
-
-/area/maintenance/starboardsolar
- name = "\improper Aft Starboard Solar Maintenance"
- icon_state = "SolarcontrolS"
-
-/area/maintenance/portsolar
- name = "\improper Aft Port Solar Maintenance"
- icon_state = "SolarcontrolP"
-
-/area/maintenance/auxsolarstarboard
- name = "\improper Fore Starboard Solar Maintenance"
- icon_state = "SolarcontrolA"
-
-
-/area/assembly/chargebay
- name = "\improper Mech Bay"
- icon_state = "mechbay"
-
-/area/assembly/showroom
- name = "\improper Robotics Showroom"
- icon_state = "showroom"
-
-/area/assembly/robotics
- name = "\improper Robotics Lab"
- icon_state = "ass_line"
-
-/area/assembly/assembly_line //Derelict Assembly Line
- name = "\improper Assembly Line"
- icon_state = "ass_line"
- power_equip = 0
- power_light = 0
- power_environ = 0
-
-//Teleporter
-
-/area/teleporter
- name = "\improper Teleporter"
- icon_state = "teleporter"
- music = "signal"
-
-/area/gateway
- name = "\improper Gateway"
- icon_state = "teleporter"
- music = "signal"
-
-/area/AIsattele
- name = "\improper Abandoned Teleporter"
- icon_state = "teleporter"
- music = "signal"
- ambientsounds = list('sound/ambience/ambimalf.ogg')
-
-/area/toxins/explab
- name = "\improper E.X.P.E.R.I-MENTOR Lab"
- icon_state = "toxmisc"
-
-/area/toxins/explab_chamber
- name = "\improper E.X.P.E.R.I-MENTOR Chamber"
- icon_state = "toxmisc"
-
-//MedBay
-
-/area/medical/medbay
- name = "\improper Medbay"
- icon_state = "medbay"
- music = 'sound/ambience/signal.ogg'
-
-//Medbay is a large area, these additional areas help level out APC load.
-/area/medical/medbay2
- name = "\improper Medbay"
- icon_state = "medbay2"
- music = 'sound/ambience/signal.ogg'
-
-/area/medical/medbay3
- name = "\improper Medbay"
- icon_state = "medbay3"
- music = 'sound/ambience/signal.ogg'
-
-
-/area/medical/biostorage
- name = "\improper Medical Storage"
- icon_state = "medbaysecstorage"
- music = 'sound/ambience/signal.ogg'
-
-/area/medical/reception
- name = "\improper Medbay Reception"
- icon_state = "medbay"
- music = 'sound/ambience/signal.ogg'
-
-/area/medical/psych
- name = "\improper Psych Room"
- icon_state = "medbaypsych"
- music = 'sound/ambience/signal.ogg'
-
-/area/medical/medbreak
- name = "\improper Break Room"
- icon_state = "medbaybreak"
- music = 'sound/ambience/signal.ogg'
-
-/area/medical/patients_rooms
- name = "\improper Patient's Rooms"
- icon_state = "patients"
-
-/area/medical/ward
- name = "\improper Medbay Patient Ward"
- icon_state = "patientsward"
-
-/area/medical/patient_a
- name = "\improper Isolation A"
- icon_state = "medbayisoa"
-
-/area/medical/patient_b
- name = "\improper Isolation B"
- icon_state = "medbayisob"
-
-/area/medical/patient_c
- name = "\improper Isolation C"
- icon_state = "medbayisoc"
-
-/area/medical/iso_access
- name = "\improper Isolation Access"
- icon_state = "medbayisoaccess"
-
-/area/medical/cmo
- name = "\improper Chief Medical Officer's office"
- icon_state = "CMO"
-
-/area/medical/cmostore
- name = "\improper Medical Secondary Storage"
- icon_state = "medbaysecstorage"
-
-/area/medical/robotics
- name = "\improper Robotics"
- icon_state = "medresearch"
-
-/area/medical/research
- name = "\improper Medical Research"
- icon_state = "medresearch"
-
-/area/medical/research_shuttle_dock
- name = "\improper Research Shuttle Dock"
- icon_state = "medresearch"
-
-/area/medical/virology
- name = "\improper Virology"
- icon_state = "virology"
-
-/area/medical/virology/lab
- name = "\improper Virology Laboratory"
- icon_state = "virology"
-
-/area/medical/morgue
- name = "\improper Morgue"
- icon_state = "morgue"
- ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg')
-
-/area/medical/chemistry
- name = "\improper Chemistry"
- icon_state = "chem"
-
-/area/medical/surgery
- name = "\improper Surgery"
- icon_state = "surgery"
-
-/area/medical/surgery1
- name = "\improper Surgery 1"
- icon_state = "surgery1"
-
-/area/medical/surgery2
- name = "\improper Surgery 2"
- icon_state = "surgery2"
-
-/area/medical/surgeryobs
- name = "\improper Surgery Observation"
- icon_state = "surgery"
-
-/area/medical/cryo
- name = "\improper Cryogenics"
- icon_state = "cryo"
-
-/area/medical/exam_room
- name = "\improper Exam Room"
- icon_state = "exam_room"
-
-/area/medical/genetics
- name = "\improper Genetics Lab"
- icon_state = "genetics"
-
-/area/medical/genetics_cloning
- name = "\improper Cloning Lab"
- icon_state = "cloning"
-
-/area/medical/sleeper
- name = "\improper Medical Treatment Center"
- icon_state = "exam_room"
-
-/area/medical/paramedic
- name = "\improper Paramedic"
- icon_state = "medbay"
-
-//Security
-
-/area/security/main
- name = "\improper Security Office"
- icon_state = "securityoffice"
-
-/area/security/lobby
- name = "\improper Security Lobby"
- icon_state = "securitylobby"
-
-/area/security/brig
- name = "\improper Brig"
- icon_state = "brig"
-
-/area/security/brig/prison_break()
- for(var/obj/structure/closet/secure_closet/brig/temp_closet in src)
- temp_closet.locked = 0
- temp_closet.icon_state = temp_closet.icon_closed
- for(var/obj/machinery/door_timer/temp_timer in src)
- temp_timer.releasetime = 1
- ..()
-
-/area/security/permabrig
- name = "\improper Prison Wing"
- icon_state = "sec_prison_perma"
- fast_despawn = TRUE
-
-/area/security/prison
- name = "\improper Prison Wing"
- icon_state = "sec_prison"
-
-/area/security/prison/prison_break()
- for(var/obj/structure/closet/secure_closet/brig/temp_closet in src)
- temp_closet.locked = 0
- temp_closet.icon_state = temp_closet.icon_closed
- for(var/obj/machinery/door_timer/temp_timer in src)
- temp_timer.releasetime = 1
- ..()
-
-/area/security/prison/cell_block
- name = "\improper Prison Cell Block"
- icon_state = "brig"
-
-/area/security/prison/cell_block/A
- name = "\improper Prison Cell Block A"
- icon_state = "brigcella"
-
-/area/security/prison/cell_block/B
- name = "\improper Prison Cell Block B"
- icon_state = "brigcellb"
-
-/area/security/prison/cell_block/C
- name = "\improper Prison Cell Block C"
- icon_state = "brig"
-
-/area/security/execution
- name = "\improper Execution"
- icon_state = "execution"
-
-/area/security/processing
- name = "\improper Prisoner Processing"
- icon_state = "prisonerprocessing"
-
-/area/security/interrogation
- name = "\improper Interrogation"
- icon_state = "interrogation"
-
-/area/security/seceqstorage
- name = "\improper Security Equipment Storage"
- icon_state = "securityequipmentstorage"
-
-/area/security/interrogationhallway
- name = "\improper Interrogation Hallway"
- icon_state = "interrogationhall"
-
-/area/security/courtroomdandp
- name = "\improper Courtroom Defense and Prosecution"
- icon_state = "seccourt"
-
-/area/security/interrogationobs
- name = "\improper Interrogation Observation"
- icon_state = "security"
-
-/area/security/evidence
- name = "\improper Evidence Room"
- icon_state = "evidence"
-
-/area/security/prisonlockers
- name = "\improper Prisoner Lockers"
- icon_state = "sec_prison_lockers"
-
-/area/security/medbay
- name = "\improper Security Medbay"
- icon_state = "security_medbay"
-
-/area/security/prisonershuttle
- name = "\improper Security Prisoner Shuttle"
- icon_state = "security"
-
-/area/security/warden
- name = "\improper Warden's Office"
- icon_state = "Warden"
-
-/area/security/armoury
- name = "\improper Armory"
- icon_state = "armory"
-
-/area/security/securearmoury
- name = "\improper Secure Armory"
- icon_state = "secarmory"
-
-/area/security/armoury/gamma
- name = "\improper Gamma Armory"
- icon_state = "Warden"
- requires_power = 0
-
-/area/security/securehallway
- name = "\improper Security Secure Hallway"
- icon_state = "securehall"
-
-/area/security/hos
- name = "\improper Head of Security's Office"
- icon_state = "sec_hos"
-
-/area/security/podbay
- name = "\improper Security Podbay"
- icon_state = "securitypodbay"
-
-/area/security/detectives_office
- name = "\improper Detective's Office"
- icon_state = "detective"
-
-/area/security/range
- name = "\improper Firing Range"
- icon_state = "firingrange"
-
-/area/security/nuke_storage
- name = "\improper Vault"
- icon_state = "nuke_storage"
-
-/area/security/customs
- name = "\improper Customs"
- icon_state = "checkpoint1"
-
-/area/security/customs2
- name = "\improper Customs"
- icon_state = "security"
-
-/area/security/checkpoint
- name = "\improper Security Checkpoint"
- icon_state = "checkpoint1"
-
-/area/security/checkpoint2
- name = "\improper Security Checkpoint"
- icon_state = "security"
-
-/area/security/checkpoint/supply
- name = "Security Post - Cargo Bay"
- icon_state = "checkpoint1"
-
-/area/security/checkpoint/engineering
- name = "Security Post - Engineering"
- icon_state = "checkpoint1"
-
-/area/security/checkpoint/medical
- name = "Security Post - Medbay"
- icon_state = "checkpoint1"
-
-/area/security/checkpoint/science
- name = "Security Post - Science"
- icon_state = "checkpoint1"
-
-/area/security/vacantoffice
- name = "\improper Vacant Office"
- icon_state = "security"
-
-/area/security/vacantoffice2
- name = "\improper Vacant Office"
- icon_state = "security"
-
-/area/quartermaster
- name = "\improper Quartermasters"
- icon_state = "quart"
-
-///////////WORK IN PROGRESS//////////
-
-/area/quartermaster/sorting
- name = "\improper Delivery Office"
- icon_state = "quartstorage"
-
-////////////WORK IN PROGRESS//////////
-
-/area/quartermaster/office
- name = "\improper Cargo Office"
- icon_state = "quartoffice"
-
-/area/quartermaster/storage
- name = "\improper Cargo Bay"
- icon_state = "quartstorage"
-
-/area/quartermaster/qm
- name = "\improper Quartermaster's Office"
- icon_state = "quart"
-
-/area/quartermaster/miningdock
- name = "\improper Mining Dock"
- icon_state = "mining"
-
-/area/quartermaster/miningstorage
- name = "\improper Mining Storage"
- icon_state = "green"
-
-/area/quartermaster/mechbay
- name = "\improper Mech Bay"
- icon_state = "yellow"
-
-/area/janitor
- name = "\improper Custodial Closet"
- icon_state = "janitor"
-
-/area/hydroponics
- name = "\improper Hydroponics"
- icon_state = "hydro"
-
-/area/hydroponics/abandoned_garden
- name = "\improper Abandoned Garden"
- icon_state = "hydro"
-
-//Toxins
-
-/area/toxins/lab
- name = "\improper Research and Development"
- icon_state = "toxlab"
-
-/area/toxins/hallway
- name = "\improper Research Lab"
- icon_state = "toxlab"
-
-/area/toxins/rdoffice
- name = "\improper Research Director's Office"
- icon_state = "head_quarters"
-
-/area/toxins/supermatter
- name = "\improper Supermatter Lab"
- icon_state = "toxlab"
-
-/area/toxins/xenobiology
- name = "\improper Xenobiology Lab"
- icon_state = "toxmix"
- xenobiology_compatible = TRUE
-
-/area/toxins/xenobiology/xenoflora_storage
- name = "\improper Xenoflora Storage"
- icon_state = "toxlab"
-
-/area/toxins/xenobiology/xenoflora
- name = "\improper Xenoflora Lab"
- icon_state = "toxlab"
-
-/area/toxins/storage
- name = "\improper Toxins Storage"
- icon_state = "toxstorage"
-
-/area/toxins/test_area
- name = "\improper Toxins Test Area"
- icon_state = "toxtest"
- valid_territory = FALSE
-
-/area/toxins/mixing
- name = "\improper Toxins Mixing Room"
- icon_state = "toxmix"
-
-/area/toxins/launch
- name = "Toxins Launch Room"
- icon_state = "toxlaunch"
-
-/area/toxins/misc_lab
- name = "\improper Research Testing Lab"
- icon_state = "toxmisc"
-
-/area/toxins/test_chamber
- name = "\improper Research Testing Chamber"
- icon_state = "toxtest"
-
-/area/toxins/server
- name = "\improper Server Room"
- icon_state = "server"
-
-/area/toxins/server_coldroom
- name = "\improper Server Coldroom"
- icon_state = "servercold"
-
-/area/toxins/explab
- name = "\improper Experimentation Lab"
- icon_state = "toxmisc"
-
-//Storage
-
-/area/storage/tools
- name = "Auxiliary Tool Storage"
- icon_state = "storage"
-
-/area/storage/primary
- name = "Primary Tool Storage"
- icon_state = "primarystorage"
-
-/area/storage/autolathe
- name = "Autolathe Storage"
- icon_state = "storage"
-
-/area/storage/art
- name = "Art Supply Storage"
- icon_state = "storage"
-
-/area/storage/auxillary
- name = "Auxillary Storage"
- icon_state = "auxstorage"
-
-/area/storage/eva
- name = "EVA Storage"
- icon_state = "eva"
-
-/area/storage/secure
- name = "Secure Storage"
- icon_state = "storage"
-
-/area/storage/emergency
- name = "Starboard Emergency Storage"
- icon_state = "emergencystorage"
-
-/area/storage/emergency2
- name = "Port Emergency Storage"
- icon_state = "emergencystorage"
-
-/area/storage/tech
- name = "Technical Storage"
- icon_state = "auxstorage"
-
-/area/storage/testroom
- requires_power = 0
- name = "\improper Test Room"
- icon_state = "storage"
-
-/area/storage/office
- name = "\improper Office Supplies"
- icon_state = "office_supplies"
-
-// ENGIE OUTPOST
-
-/area/engiestation
- name = "\improper Engineering Outpost"
- icon_state = "construction"
-
-/area/engiestation/solars
- name = "\improper Engineering Outpost Solars"
- icon_state = "panelsP"
-
-//DJSTATION
-
-/area/djstation
- name = "\improper Ruskie DJ Station"
- icon_state = "DJ"
-
-/area/djstation/solars
- name = "\improper Ruskie DJ Station Solars"
- icon_state = "DJ"
-
-//DERELICT
-
-/area/derelict
- name = "\improper Derelict Station"
- icon_state = "storage"
-
-/area/derelict/hallway/primary
- name = "\improper Derelict Primary Hallway"
- icon_state = "hallP"
-
-/area/derelict/hallway/secondary
- name = "\improper Derelict Secondary Hallway"
- icon_state = "hallS"
-
-/area/derelict/arrival
- name = "\improper Derelict Arrival Centre"
- icon_state = "yellow"
-
-/area/derelict/storage/equipment
- name = "Derelict Equipment Storage"
-
-/area/derelict/storage/storage_access
- name = "Derelict Storage Access"
-
-/area/derelict/storage/engine_storage
- name = "Derelict Engine Storage"
- icon_state = "green"
-
-/area/derelict/bridge
- name = "\improper Derelict Control Room"
- icon_state = "bridge"
-
-/area/derelict/secret
- name = "\improper Derelict Secret Room"
- icon_state = "library"
-
-/area/derelict/bridge/access
- name = "Derelict Control Room Access"
- icon_state = "auxstorage"
-
-/area/derelict/bridge/ai_upload
- name = "\improper Derelict Computer Core"
- icon_state = "ai"
-
-/area/derelict/solar_control
- name = "\improper Derelict Solar Control"
- icon_state = "engine"
-
-/area/derelict/se_solar
- name = "South East Solars"
- icon_state = "engine"
-
-/area/derelict/crew_quarters
- name = "\improper Derelict Crew Quarters"
- icon_state = "fitness"
-
-/area/derelict/medical
- name = "Derelict Medbay"
- icon_state = "medbay"
-
-/area/derelict/medical/morgue
- name = "\improper Derelict Morgue"
- icon_state = "morgue"
-
-/area/derelict/medical/chapel
- name = "\improper Derelict Chapel"
- icon_state = "chapel"
-
-/area/derelict/teleporter
- name = "\improper Derelict Teleporter"
- icon_state = "teleporter"
-
-/area/derelict/eva
- name = "Derelict EVA Storage"
- icon_state = "eva"
-
-/area/shuttle/derelict/ship/start
- name = "\improper Abandoned Ship"
- icon_state = "yellow"
-
-/area/shuttle/derelict/ship/transit
- name = "\improper Abandoned Ship"
- icon_state = "yellow"
-
-/area/shuttle/derelict/ship/engipost
- name = "\improper Engineering Outpost"
- icon_state = "yellow"
-
-/area/shuttle/derelict/ship/station
- name = "\improper North of SS13"
- icon_state = "yellow"
-
-/area/solar/derelict_starboard
- name = "\improper Derelict Starboard Solar Array"
- icon_state = "panelsS"
-
-/area/solar/derelict_aft
- name = "\improper Derelict Aft Solar Array"
- icon_state = "aft"
-
-/area/derelict/singularity_engine
- name = "\improper Derelict Singularity Engine"
- icon_state = "engine"
-
-/area/derelict/gravity_generator
- name = "\improper Derelict Gravity Generator Room"
- icon_state = "red"
-
-/area/derelict/atmospherics
- name = "Derelict Atmospherics"
- icon_state = "red"
-
-//HALF-BUILT STATION (REPLACES DERELICT IN BAYCODE, ABOVE IS LEFT FOR DOWNSTREAM)
-
-/area/shuttle/constructionsite
- name = "\improper Construction Site Shuttle"
- icon_state = "yellow"
-
-/area/shuttle/constructionsite/station
- name = "\improper Construction Site Shuttle"
-
-/area/shuttle/constructionsite/site
- name = "\improper Construction Site Shuttle"
-
-/area/constructionsite
- name = "\improper Construction Site"
- icon_state = "storage"
-
-/area/constructionsite/storage
- name = "\improper Construction Site Storage Area"
-
-/area/constructionsite/science
- name = "\improper Construction Site Research"
- icon_state = "medresearch"
-
-/area/constructionsite/bridge
- name = "\improper Construction Site Bridge"
- icon_state = "bridge"
-
-/area/constructionsite/hallway/center
- name = "\improper Construction Site Central Hallway"
- icon_state = "hallC"
-
-/area/constructionsite/hallway/engcore
- name = "\improper Construction Site Eng Core"
- icon_state = "green"
-
-/area/constructionsite/hallway/fore
- name = "\improper Construction Site Fore"
- icon_state = "green"
-
-/area/constructionsite/hallway/port
- name = "\improper Construction Site Port"
- icon_state = "hallP"
-
-/area/constructionsite/hallway/aft
- name = "\improper Construction Site Aft"
- icon_state = "hallA"
-
-/area/constructionsite/hallway/starboard
- name = "\improper Construction Site Starboard"
- icon_state = "hallS"
-
-/area/constructionsite/atmospherics
- name = "\improper Construction Site Atmospherics"
- icon_state = "atmos"
-
-/area/constructionsite/medical
- name = "\improper Construction Site Medbay"
- icon_state = "medbay"
-
-/area/constructionsite/ai
- name = "\improper Construction Computer Core"
- icon_state = "ai"
-
-/area/constructionsite/engineering
- name = "\improper Construction Site Engine Bay"
- icon_state = "engine"
-
-/area/solar/constructionsite
- name = "\improper Construction Site Solars"
- icon_state = "panelsA"
-
-
-//Construction
-
-/area/construction
- name = "\improper Construction Area"
- icon_state = "yellow"
-
-/area/mining_construction
- name = "Auxillary Base Construction"
- icon_state = "yellow"
-
-/area/construction/supplyshuttle
- name = "\improper Supply Shuttle"
- icon_state = "yellow"
-
-/area/construction/quarters
- name = "\improper Engineer's Quarters"
- icon_state = "yellow"
-
-/area/construction/qmaint
- name = "Maintenance"
- icon_state = "yellow"
-
-/area/construction/hallway
- name = "\improper Hallway"
- icon_state = "yellow"
-
-/area/construction/solars
- name = "\improper Solar Panels"
- icon_state = "yellow"
-
-/area/construction/solarscontrol
- name = "\improper Solar Panel Control"
- icon_state = "yellow"
-
-/area/construction/Storage
- name = "Construction Site Storage"
- icon_state = "yellow"
-
-
-//GAYBAR
-/area/secret/gaybar
- name = "\improper Dance Bar"
- icon_state = "dancebar"
-
-
-//Traitor Station
-/area/traitor
- name = "\improper Syndicate Base"
- icon_state = "syndie_hall"
- report_alerts = 0
-
-/area/traitor/rnd
- name = "\improper Syndicate Research and Development"
- icon_state = "syndie_rnd"
-
-/area/traitor/chem
- name = "\improper Syndicate Chemistry"
- icon_state = "syndie_chem"
-
-/area/traitor/tox
- name = "\improper Syndicate Toxins"
- icon_state = "syndie_tox"
-
-/area/traitor/atmos
- name = "\improper Syndicate Atmos"
- icon_state = "syndie_atmo"
-
-/area/traitor/inter
- name = "\improper Syndicate Interrogation"
- icon_state = "syndie_inter"
-
-/area/traitor/radio
- name = "\improper Syndicate Eavesdropping Booth"
- icon_state = "syndie_radio"
-
-/area/traitor/surgery
- name = "\improper Syndicate Surgery Theatre"
- icon_state = "syndie_surgery"
-
-/area/traitor/hall
- name = "\improper Syndicate Station"
- icon_state = "syndie_hall"
-
-/area/traitor/kitchen
- name = "\improper Syndicate Kitchen"
- icon_state = "syndie_kitchen"
-
-/area/traitor/empty
- name = "\improper Syndicate Project Room"
- icon_state = "syndie_empty"
-
-
-//AI
-
-/area/ai_monitored/storage/eva
- name = "EVA Storage"
- icon_state = "eva"
-
-/area/ai_monitored/storage/secure
- name = "Secure Storage"
- icon_state = "storage"
-
-/area/ai_monitored/storage/emergency
- name = "Emergency Storage"
- icon_state = "storage"
-
-/area/turret_protected/
- ambientsounds = list('sound/ambience/ambimalf.ogg')
-
-/area/turret_protected/ai_upload
- name = "\improper AI Upload Chamber"
- icon_state = "ai_upload"
-
-/area/turret_protected/ai_upload_foyer
- name = "AI Upload Access"
- icon_state = "ai_foyer"
-
-/area/turret_protected/ai
- name = "\improper AI Chamber"
- icon_state = "ai_chamber"
-
-/area/turret_protected/aisat
- name = "\improper AI Satellite"
- icon_state = "ai"
-
-/area/aisat
- name = "\improper AI Satellite Exterior"
- icon_state = "yellow"
-
-/area/aisat/entrance
- name = "\improper AI Satellite Entrance"
- icon_state = "ai_foyer"
-
-/area/aisat/maintenance
- name = "\improper AI Satellite Maintenance"
- icon_state = "storage"
-
-/area/turret_protected/aisat_interior
- name = "\improper AI Satellite Antechamber"
- icon_state = "ai"
-
-/area/turret_protected/AIsatextFP
- name = "\improper AI Sat Ext"
- icon_state = "storage"
- luminosity = 1
- dynamic_lighting = 0
-
-/area/turret_protected/AIsatextFS
- name = "\improper AI Sat Ext"
- icon_state = "storage"
- luminosity = 1
- dynamic_lighting = 0
-
-/area/turret_protected/AIsatextAS
- name = "\improper AI Sat Ext"
- icon_state = "storage"
- luminosity = 1
- dynamic_lighting = 0
-
-/area/turret_protected/AIsatextAP
- name = "\improper AI Sat Ext"
- icon_state = "storage"
- luminosity = 1
- dynamic_lighting = 0
-
-/area/turret_protected/NewAIMain
- name = "\improper AI Main New"
- icon_state = "storage"
-
-
-
-//Misc
-
-/area/wreck/ai
- name = "\improper AI Chamber"
- icon_state = "ai"
-
-/area/wreck/main
- name = "\improper Wreck"
- icon_state = "storage"
-
-/area/wreck/engineering
- name = "\improper Power Room"
- icon_state = "engine"
-
-/area/wreck/bridge
- name = "\improper Bridge"
- icon_state = "bridge"
-
-/area/generic
- name = "Unknown"
- icon_state = "storage"
-
-
-
-// Telecommunications Satellite
-
-/area/tcommsat
- ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
-
-/area/tcommsat/entrance
- name = "\improper Telecoms Teleporter"
- icon_state = "tcomsatentrance"
-
-/area/tcommsat/chamber
- name = "\improper Telecoms Central Compartment"
- icon_state = "tcomsatcham"
-
-/area/turret_protected/tcomsat
- name = "\improper Telecoms Satellite"
- icon_state = "tcomsatlob"
- ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
-
-/area/turret_protected/tcomfoyer
- name = "\improper Telecoms Foyer"
- icon_state = "tcomsatentrance"
- ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
-
-/area/turret_protected/tcomwest
- name = "\improper Telecoms West Wing"
- icon_state = "tcomsatwest"
- ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
-
-/area/turret_protected/tcomeast
- name = "\improper Telecoms East Wing"
- icon_state = "tcomsateast"
- ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
-
-/area/tcommsat/computer
- name = "\improper Telecoms Control Room"
- icon_state = "tcomsatcomp"
-
-/area/tcommsat/server
- name = "\improper Telecoms Server Room"
- icon_state = "tcomsatcham"
-
-/area/tcommsat/lounge
- name = "\improper Telecoms Lounge"
- icon_state = "tcomsatlounge"
-
-/area/tcommsat/powercontrol
- name = "\improper Telecoms Power Control"
- icon_state = "tcomsatwest"
-
-// Away Missions
-/area/awaymission
- name = "\improper Strange Location"
- icon_state = "away"
- report_alerts = 0
-
-/area/awaymission/example
- name = "\improper Strange Station"
- icon_state = "away"
-
-/area/awaymission/wwmines
- name = "\improper Wild West Mines"
- icon_state = "away1"
- luminosity = 1
- requires_power = 0
-
-/area/awaymission/wwgov
- name = "\improper Wild West Mansion"
- icon_state = "away2"
- luminosity = 1
- requires_power = 0
-
-/area/awaymission/wwrefine
- name = "\improper Wild West Refinery"
- icon_state = "away3"
- luminosity = 1
- requires_power = 0
-
-/area/awaymission/wwvault
- name = "\improper Wild West Vault"
- icon_state = "away3"
- luminosity = 0
-
-/area/awaymission/wwvaultdoors
- name = "\improper Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power
- icon_state = "away2"
- requires_power = 0
- luminosity = 0
-
-/area/awaymission/desert
- name = "Mars"
- icon_state = "away"
-
-/area/awaymission/BMPship1
- name = "\improper Aft Block"
- icon_state = "away1"
-
-/area/awaymission/BMPship2
- name = "\improper Midship Block"
- icon_state = "away2"
-
-/area/awaymission/BMPship3
- name = "\improper Fore Block"
- icon_state = "away3"
-
-/area/awaymission/spacebattle
- name = "\improper Space Battle"
- icon_state = "away"
- requires_power = 0
-
-/area/awaymission/spacebattle/cruiser
- name = "\improper Nanotrasen Cruiser"
-
-/area/awaymission/spacebattle/syndicate1
- name = "\improper Syndicate Assault Ship 1"
-
-/area/awaymission/spacebattle/syndicate2
- name = "\improper Syndicate Assault Ship 2"
-
-/area/awaymission/spacebattle/syndicate3
- name = "\improper Syndicate Assault Ship 3"
-
-/area/awaymission/spacebattle/syndicate4
- name = "\improper Syndicate War Sphere 1"
-
-/area/awaymission/spacebattle/syndicate5
- name = "\improper Syndicate War Sphere 2"
-
-/area/awaymission/spacebattle/syndicate6
- name = "\improper Syndicate War Sphere 3"
-
-/area/awaymission/spacebattle/syndicate7
- name = "\improper Syndicate Fighter"
-
-/area/awaymission/spacebattle/secret
- name = "\improper Hidden Chamber"
-
-/area/awaymission/beach
- name = "Beach"
- icon_state = "beach"
- luminosity = 1
- dynamic_lighting = 0
- requires_power = 0
- ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg')
-
-/area/awaymission/undersea
- name = "Undersea"
- icon_state = "undersea"
-
-
-////////////////////////AWAY AREAS///////////////////////////////////
-
-/area/awaycontent
- name = "space"
- report_alerts = 0
-
-/area/awaycontent/a1
- icon_state = "awaycontent1"
-
-/area/awaycontent/a2
- icon_state = "awaycontent2"
-
-/area/awaycontent/a3
- icon_state = "awaycontent3"
-
-/area/awaycontent/a4
- icon_state = "awaycontent4"
-
-/area/awaycontent/a5
- icon_state = "awaycontent5"
-
-/area/awaycontent/a6
- icon_state = "awaycontent6"
-
-/area/awaycontent/a7
- icon_state = "awaycontent7"
-
-/area/awaycontent/a8
- icon_state = "awaycontent8"
-
-/area/awaycontent/a9
- icon_state = "awaycontent9"
-
-/area/awaycontent/a10
- icon_state = "awaycontent10"
-
-/area/awaycontent/a11
- icon_state = "awaycontent11"
-
-/area/awaycontent/a11
- icon_state = "awaycontent12"
-
-/area/awaycontent/a12
- icon_state = "awaycontent13"
-
-/area/awaycontent/a13
- icon_state = "awaycontent14"
-
-/area/awaycontent/a14
- icon_state = "awaycontent14"
-
-/area/awaycontent/a15
- icon_state = "awaycontent15"
-
-/area/awaycontent/a16
- icon_state = "awaycontent16"
-
-/area/awaycontent/a17
- icon_state = "awaycontent17"
-
-/area/awaycontent/a18
- icon_state = "awaycontent18"
-
-/area/awaycontent/a19
- icon_state = "awaycontent19"
-
-/area/awaycontent/a20
- icon_state = "awaycontent20"
-
-/area/awaycontent/a21
- icon_state = "awaycontent21"
-
-/area/awaycontent/a22
- icon_state = "awaycontent22"
-
-/area/awaycontent/a23
- icon_state = "awaycontent23"
-
-/area/awaycontent/a24
- icon_state = "awaycontent24"
-
-/area/awaycontent/a25
- icon_state = "awaycontent25"
-
-/area/awaycontent/a26
- icon_state = "awaycontent26"
-
-/area/awaycontent/a27
- icon_state = "awaycontent27"
-
-/area/awaycontent/a28
- icon_state = "awaycontent28"
-
-/area/awaycontent/a29
- icon_state = "awaycontent29"
-
-/area/awaycontent/a30
- icon_state = "awaycontent30"
-
-////////////////////////VR AREAS///////////////////////////////////
-
-/area/vr
- name = "VR"
- requires_power = 0
- dynamic_lighting = 0
- no_teleportlocs = 1
-
-
-/area/vr/lobby
- name = "VR Lobby"
-
-/area/vr/roman
- name = "Roman Arena"
-
-
-/////////////////////////////////////////////////////////////////////
-/*
- Lists of areas to be used with is_type_in_list.
- Used in gamemodes code at the moment. --rastaf0
-*/
-
-// CENTCOM
-var/list/centcom_areas = list (
- /area/centcom,
- /area/shuttle/escape_pod1/centcom,
- /area/shuttle/escape_pod2/centcom,
- /area/shuttle/escape_pod3/centcom,
- /area/shuttle/escape_pod5/centcom,
- /area/shuttle/transport1,
- /area/shuttle/administration/centcom,
- /area/shuttle/specops/centcom,
-)
-
-//SPACE STATION 13
-var/list/the_station_areas = list (
- /area/shuttle/arrival,
- /area/shuttle/escape,
- /area/shuttle/escape_pod1/station,
- /area/shuttle/escape_pod2/station,
- /area/shuttle/escape_pod3/station,
- /area/shuttle/escape_pod5/station,
- /area/shuttle/prison/station,
- /area/shuttle/administration/station,
- /area/shuttle/specops/station,
- /area/atmos,
- /area/maintenance,
- /area/hallway,
- /area/hallway/primary/fore,
- /area/hallway/primary/starboard,
- /area/hallway/primary/aft,
- /area/hallway/primary/port,
- /area/hallway/primary/central,
- /area/bridge,
- /area/crew_quarters,
- /area/civilian,
- /area/holodeck,
- /area/library,
- /area/chapel,
- /area/escapepodbay,
- /area/lawoffice,
- /area/magistrateoffice,
- /area/clownoffice,
- /area/mimeoffice,
- /area/engine,
- /area/solar,
- /area/assembly,
- /area/teleporter,
- /area/medical,
- /area/security,
- /area/prison,
- /area/quartermaster,
- /area/janitor,
- /area/hydroponics,
- /area/toxins,
- /area/storage,
- /area/construction,
- /area/ai_monitored/storage/eva, //do not try to simplify to "/area/ai_monitored" --rastaf0
- /area/ai_monitored/storage/secure,
- /area/ai_monitored/storage/emergency,
- /area/turret_protected/ai_upload, //do not try to simplify to "/area/turret_protected" --rastaf0
- /area/turret_protected/ai_upload_foyer,
- /area/turret_protected/ai,
-)
+/*
+
+### This file contains a list of all the areas in your station. Format is as follows:
+
+/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want)
+ name = "NICE NAME" (not required but makes things really nice)
+ icon = "ICON FILENAME" (defaults to areas.dmi)
+ icon_state = "NAME OF ICON" (defaults to "unknown" (blank))
+ requires_power = FALSE (defaults to TRUE)
+ music = "music/music.ogg" (defaults to "music/music.ogg")
+
+NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0
+
+*/
+
+/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
+/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
+var/list/teleportlocs = list()
+/hook/startup/proc/process_teleport_locs()
+ for(var/area/AR in world)
+ if(AR.no_teleportlocs) continue
+ if(teleportlocs.Find(AR.name)) continue
+ var/turf/picked = safepick(get_area_turfs(AR.type))
+ if(picked && is_station_level(picked.z))
+ teleportlocs += AR.name
+ teleportlocs[AR.name] = AR
+
+ teleportlocs = sortAssoc(teleportlocs)
+
+ return 1
+
+var/list/ghostteleportlocs = list()
+/hook/startup/proc/process_ghost_teleport_locs()
+ for(var/area/AR in world)
+ if(ghostteleportlocs.Find(AR.name)) continue
+ var/list/turfs = get_area_turfs(AR.type)
+ if(turfs.len)
+ ghostteleportlocs += AR.name
+ ghostteleportlocs[AR.name] = AR
+
+ ghostteleportlocs = sortAssoc(ghostteleportlocs)
+
+ return 1
+
+/*-----------------------------------------------------------------------------*/
+
+
+/area/admin
+ name = "\improper Admin Room"
+ icon_state = "start"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+
+
+/area/adminconstruction
+ name = "\improper Admin Testing Area"
+ icon_state = "start"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+
+/area/space
+ icon_state = "space"
+ requires_power = TRUE
+ always_unpowered = TRUE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ power_light = FALSE
+ power_equip = FALSE
+ power_environ = FALSE
+ valid_territory = FALSE
+ outdoors = TRUE
+ ambientsounds = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/traitor.ogg')
+
+/area/space/nearstation
+ icon_state = "space_near"
+ dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
+
+/area/space/atmosalert()
+ return
+
+/area/space/fire_alert()
+ return
+
+/area/space/fire_reset()
+ return
+
+/area/space/readyalert()
+ return
+
+/area/space/partyalert()
+ return
+
+//These are shuttle areas, they must contain two areas in a subgroup if you want to move a shuttle from one
+//place to another. Look at escape shuttle for example.
+//All shuttles show now be under shuttle since we have smooth-wall code.
+
+/area/shuttle
+ no_teleportlocs = TRUE
+ requires_power = FALSE
+ valid_territory = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+
+/area/shuttle/arrival
+ name = "\improper Arrival Shuttle"
+
+/area/shuttle/arrival/pre_game
+ icon_state = "shuttle2"
+
+/area/shuttle/arrival/station
+ icon_state = "shuttle"
+
+/area/shuttle/auxillary_base
+ icon_state = "shuttle"
+
+/area/shuttle/escape
+ name = "\improper Emergency Shuttle"
+ music = "music/escape.ogg"
+ icon_state = "shuttle2"
+ nad_allowed = TRUE
+
+/area/shuttle/pod_1
+ name = "\improper Escape Pod One"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+ nad_allowed = TRUE
+
+/area/shuttle/pod_2
+ name = "\improper Escape Pod Two"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+ nad_allowed = TRUE
+
+/area/shuttle/pod_3
+ name = "\improper Escape Pod Three"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+ nad_allowed = TRUE
+
+/area/shuttle/pod_4
+ name = "\improper Escape Pod Four"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+ nad_allowed = TRUE
+
+/area/shuttle/escape_pod1
+ name = "\improper Escape Pod One"
+ music = "music/escape.ogg"
+ nad_allowed = TRUE
+
+/area/shuttle/escape_pod1/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod1/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod1/transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod2
+ name = "\improper Escape Pod Two"
+ music = "music/escape.ogg"
+ nad_allowed = TRUE
+
+/area/shuttle/escape_pod2/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod2/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod2/transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod3
+ name = "\improper Escape Pod Three"
+ music = "music/escape.ogg"
+ nad_allowed = TRUE
+
+/area/shuttle/escape_pod3/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod3/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod3/transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod5 //Pod 4 was lost to meteors
+ name = "\improper Escape Pod Five"
+ music = "music/escape.ogg"
+ nad_allowed = TRUE
+
+/area/shuttle/escape_pod5/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod5/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod5/transit
+ icon_state = "shuttle"
+
+/area/shuttle/mining
+ name = "\improper Mining Shuttle"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+
+/area/shuttle/transport
+ icon_state = "shuttle"
+ name = "\improper Transport Shuttle"
+
+/area/shuttle/transport1
+ icon_state = "shuttle"
+ name = "\improper Transport Shuttle"
+
+/area/shuttle/alien/base
+ icon_state = "shuttle"
+ name = "\improper Alien Shuttle Base"
+ requires_power = 1
+
+/area/shuttle/alien/mine
+ icon_state = "shuttle"
+ name = "\improper Alien Shuttle Mine"
+ requires_power = 1
+
+/area/shuttle/gamma/space
+ icon_state = "shuttle"
+ name = "\improper Gamma Armory"
+
+/area/shuttle/gamma/station
+ icon_state = "shuttle"
+ name = "\improper Gamma Armory Station"
+
+/area/shuttle/prison/
+ name = "\improper Prison Shuttle"
+
+/area/shuttle/prison/station
+ icon_state = "shuttle"
+
+/area/shuttle/prison/prison
+ icon_state = "shuttle2"
+
+/area/shuttle/siberia
+ name = "\improper Labor Camp Shuttle"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+
+/area/shuttle/specops
+ name = "\improper Special Ops Shuttle"
+ icon_state = "shuttlered"
+
+/area/shuttle/specops/centcom
+ name = "\improper Special Ops Shuttle"
+ icon_state = "shuttlered"
+
+/area/shuttle/specops/station
+ name = "\improper Special Ops Shuttle"
+ icon_state = "shuttlered2"
+
+/area/shuttle/syndicate_elite
+ name = "\improper Syndicate Elite Shuttle"
+ icon_state = "shuttlered"
+ nad_allowed = TRUE
+
+/area/shuttle/syndicate_elite/mothership
+ name = "\improper Syndicate Elite Shuttle"
+ icon_state = "shuttlered"
+
+/area/shuttle/syndicate_elite/station
+ name = "\improper Syndicate Elite Shuttle"
+ icon_state = "shuttlered2"
+
+/area/shuttle/syndicate_sit
+ name = "\improper Syndicate SIT Shuttle"
+ icon_state = "shuttlered"
+ nad_allowed = TRUE
+
+/area/shuttle/assault_pod
+ name = "Steel Rain"
+ icon_state = "shuttle"
+
+/area/shuttle/administration
+ name = "\improper Nanotrasen Vessel"
+ icon_state = "shuttlered"
+
+/area/shuttle/administration/centcom
+ name = "\improper Nanotrasen Vessel Centcom"
+ icon_state = "shuttlered"
+
+/area/shuttle/administration/station
+ name = "\improper Nanotrasen Vessel"
+ icon_state = "shuttlered2"
+
+/area/shuttle/thunderdome
+ name = "honk"
+
+/area/shuttle/thunderdome/grnshuttle
+ name = "\improper Thunderdome GRN Shuttle"
+ icon_state = "green"
+
+/area/shuttle/thunderdome/grnshuttle/dome
+ name = "\improper GRN Shuttle"
+ icon_state = "shuttlegrn"
+
+/area/shuttle/thunderdome/grnshuttle/station
+ name = "\improper GRN Station"
+ icon_state = "shuttlegrn2"
+
+/area/shuttle/thunderdome/redshuttle
+ name = "\improper Thunderdome RED Shuttle"
+ icon_state = "red"
+
+/area/shuttle/thunderdome/redshuttle/dome
+ name = "\improper RED Shuttle"
+ icon_state = "shuttlered"
+
+/area/shuttle/thunderdome/redshuttle/station
+ name = "\improper RED Station"
+ icon_state = "shuttlered2"
+// === Trying to remove these areas:
+
+/area/shuttle/research
+ name = "\improper Research Shuttle"
+ music = "music/escape.ogg"
+ icon_state = "shuttle"
+
+/area/shuttle/research/station
+ icon_state = "shuttle2"
+
+/area/shuttle/research/outpost
+ icon_state = "shuttle"
+
+/area/shuttle/vox
+ name = "\improper Vox Skipjack"
+ icon_state = "shuttle"
+
+/area/shuttle/vox/station
+ name = "\improper Vox Skipjack"
+ icon_state = "yellow"
+
+/area/shuttle/salvage
+ name = "\improper Salvage Ship"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/start
+ name = "\improper Middle of Nowhere"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/arrivals
+ name = "\improper Space Station Auxiliary Docking"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/derelict
+ name = "\improper Derelict Station"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/djstation
+ name = "\improper Ruskie DJ Station"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/north
+ name = "\improper North of the Station"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/east
+ name = "\improper East of the Station"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/south
+ name = "\improper South of the Station"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/commssat
+ name = "\improper The Communications Satellite"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/mining
+ name = "\improper South-West of the Mining Asteroid"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/abandoned_ship
+ name = "\improper Abandoned Ship"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/clown_asteroid
+ name = "\improper Clown Asteroid"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/trading_post
+ name = "\improper Trading Post"
+ icon_state = "yellow"
+
+/area/shuttle/salvage/transit
+ name = "\improper hyperspace"
+ icon_state = "shuttle"
+
+/area/shuttle/supply
+ name = "Supply Shuttle"
+ icon_state = "shuttle3"
+
+/area/shuttle/abandoned
+ name = "Abandoned Ship"
+ icon_state = "shuttle"
+
+/area/shuttle/syndicate
+ name = "Syndicate Nuclear Team Shuttle"
+ icon_state = "shuttle"
+ nad_allowed = TRUE
+
+/area/shuttle/trade
+ name = "Trade Shuttle"
+ icon_state = "shuttle"
+
+/area/shuttle/trade/sol
+ name = "Sol Freighter"
+
+/area/shuttle/freegolem
+ name = "Free Golem Ship"
+ icon_state = "purple"
+ xenobiology_compatible = TRUE
+
+/area/airtunnel1/ // referenced in airtunnel.dm:759
+
+/area/dummy/ // Referenced in engine.dm:261
+
+/area/start // will be unused once kurper gets his login interface patch done
+ name = "start area"
+ icon_state = "start"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ has_gravity = TRUE
+
+// === end remove
+
+// CENTCOM
+
+/area/centcom
+ name = "\improper Centcom"
+ icon_state = "centcom"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ nad_allowed = TRUE
+
+/area/centcom/control
+ name = "\improper Centcom Control"
+ icon_state = "centcom_ctrl"
+
+/area/centcom/evac
+ name = "\improper Centcom Emergency Shuttle"
+ icon_state = "centcom_evac"
+
+/area/centcom/suppy
+ name = "\improper Centcom Supply Shuttle"
+ icon_state = "centcom_supply"
+
+/area/centcom/ferry
+ name = "\improper Centcom Transport Shuttle"
+ icon_state = "centcom_ferry"
+
+/area/centcom/shuttle
+ name = "\improper Centcom Administration Shuttle"
+
+/area/centcom/test
+ name = "\improper Centcom Testing Facility"
+
+/area/centcom/living
+ name = "\improper Centcom Living Quarters"
+
+/area/centcom/specops
+ name = "\improper Centcom Special Ops"
+ icon_state = "centcom_specops"
+
+/area/centcom/gamma
+ name = "\improper Centcom Gamma Armory"
+ icon_state = "centcom_gamma"
+
+/area/centcom/holding
+ name = "\improper Holding Facility"
+
+/area/centcom/bathroom
+ name = "\improper Centcom Emergency Shuttle Bathrooms"
+
+//SYNDICATES
+
+/area/syndicate_mothership
+ name = "\improper Syndicate Forward Base"
+ icon_state = "syndie-ship"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+ nad_allowed = TRUE
+
+/area/syndicate_mothership/control
+ name = "\improper Syndicate Control Room"
+ icon_state = "syndie-control"
+
+/area/syndicate_mothership/elite_squad
+ name = "\improper Syndicate Elite Squad"
+ icon_state = "syndie-elite"
+
+/area/syndicate_mothership/infteam
+ name = "\improper Syndicate Infiltrators"
+ icon_state = "syndie-elite"
+
+//EXTRA
+
+/area/asteroid // -- TLE
+ name = "\improper Asteroid"
+ icon_state = "asteroid"
+ requires_power = FALSE
+ valid_territory = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+
+/area/asteroid/cave // -- TLE
+ name = "\improper Asteroid - Underground"
+ icon_state = "cave"
+ requires_power = FALSE
+ outdoors = TRUE
+
+/area/asteroid/artifactroom
+ name = "\improper Asteroid - Artifact"
+ icon_state = "cave"
+
+/area/tdome
+ name = "\improper Thunderdome"
+ icon_state = "thunder"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+
+
+/area/tdome/arena_source
+ name = "\improper Thunderdome Arena Template"
+ icon_state = "thunder"
+
+/area/tdome/arena
+ name = "\improper Thunderdome Arena"
+ icon_state = "thunder"
+
+/area/tdome/tdome1
+ name = "\improper Thunderdome (Team 1)"
+ icon_state = "green"
+
+/area/tdome/tdome2
+ name = "\improper Thunderdome (Team 2)"
+ icon_state = "yellow"
+
+/area/tdome/tdomeadmin
+ name = "\improper Thunderdome (Admin.)"
+ icon_state = "purple"
+
+/area/tdome/tdomeobserve
+ name = "\improper Thunderdome (Observer.)"
+ icon_state = "purple"
+
+/area/exploration/methlab
+ name = "\improper Abandoned Drug Lab"
+ icon_state = "green"
+
+//Abductors
+/area/abductor_ship
+ name = "\improper Abductor Ship"
+ icon_state = "yellow"
+ requires_power = FALSE
+ has_gravity = TRUE
+
+/area/wizard_station
+ name = "\improper Wizard's Den"
+ icon_state = "yellow"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+
+/area/ninja
+ name = "\improper Ninja Area Parent"
+ icon_state = "ninjabase"
+ requires_power = FALSE
+ no_teleportlocs = TRUE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+
+/area/ninja/outpost
+ name = "\improper SpiderClan Outpost"
+
+/area/ninja/holding
+ name = "\improper SpiderClan Holding Facility"
+
+/area/vox_station
+ name = "\improper Vox Base"
+ icon_state = "yellow"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ no_teleportlocs = TRUE
+
+/area/trader_station
+ name = "Trade Base"
+ icon_state = "yellow"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+
+/area/trader_station/sol
+ name = "Jupiter Station 6"
+
+//Labor camp
+/area/mine/laborcamp
+ name = "Labor Camp"
+ icon_state = "brig"
+
+/area/mine/laborcamp/security
+ name = "Labor Camp Security"
+ icon_state = "security"
+
+//STATION13
+
+/area/atmos
+ name = "Atmospherics"
+ icon_state = "atmos"
+
+/area/atmos/control
+ name = "Atmospherics Control Room"
+ icon_state = "atmos"
+
+/area/atmos/distribution
+ name = "Atmospherics Distribution Loop"
+ icon_state = "atmos"
+
+//Maintenance
+/area/maintenance
+ ambientsounds = list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg', 'sound/ambience/ambimaint5.ogg')
+ valid_territory = FALSE
+
+/area/maintenance/atmos_control
+ name = "Atmospherics Maintenance"
+ icon_state = "fpmaint"
+
+/area/maintenance/fpmaint
+ name = "EVA Maintenance"
+ icon_state = "fpmaint"
+
+/area/maintenance/fpmaint2
+ name = "Arrivals North Maintenance"
+ icon_state = "fpmaint"
+
+/area/maintenance/fsmaint
+ name = "Dormitory Maintenance"
+ icon_state = "fsmaint"
+
+/area/maintenance/fsmaint2
+ name = "Bar Maintenance"
+ icon_state = "fsmaint"
+
+/area/maintenance/asmaint
+ name = "Medbay Maintenance"
+ icon_state = "asmaint"
+
+/area/maintenance/asmaint2
+ name = "Science Maintenance"
+ icon_state = "asmaint"
+
+/area/maintenance/apmaint
+ name = "Cargo Maintenance"
+ icon_state = "apmaint"
+
+/area/maintenance/maintcentral
+ name = "Bridge Maintenance"
+ icon_state = "maintcentral"
+
+/area/maintenance/fore
+ name = "Fore Maintenance"
+ icon_state = "fmaint"
+
+/area/maintenance/starboard
+ name = "Starboard Maintenance"
+ icon_state = "smaint"
+
+/area/maintenance/port
+ name = "Locker Room Maintenance"
+ icon_state = "pmaint"
+
+/area/maintenance/aft
+ name = "Engineering Maintenance"
+ icon_state = "amaint"
+
+/area/maintenance/engi_shuttle
+ name = "Engineering Shuttle Access"
+ icon_state = "maint_e_shuttle"
+
+/area/maintenance/storage
+ name = "Atmospherics Maintenance"
+ icon_state = "green"
+
+/area/maintenance/incinerator
+ name = "\improper Incinerator"
+ icon_state = "disposal"
+
+/area/maintenance/turbine
+ name = "\improper Turbine"
+ icon_state = "disposal"
+
+/area/maintenance/disposal
+ name = "Waste Disposal"
+ icon_state = "disposal"
+
+/area/maintenance/genetics
+ name = "Genetics Maintenance"
+ icon_state = "asmaint"
+
+
+/area/maintenance/electrical
+ name = "Electrical Maintenance"
+ icon_state = "yellow"
+
+/area/maintenance/abandonedbar
+ name = "Maintenance Bar"
+ icon_state = "yellow"
+ power_equip = 0
+ power_light = 0
+ power_environ = 0
+
+/area/maintenance/electrical_shop
+ name ="Electronics Den"
+ icon_state = "yellow"
+
+/area/maintenance/gambling_den
+ name = "Gambling Den"
+ icon_state = "yellow"
+
+/area/maintenance/consarea
+ name = "Alternate Construction Area"
+ icon_state = "yellow"
+
+
+//Hallway
+
+/area/hallway/primary/fore
+ name = "\improper Fore Primary Hallway"
+ icon_state = "hallF"
+
+/area/hallway/primary/starboard
+ name = "\improper Starboard Primary Hallway"
+ icon_state = "hallS"
+
+/area/hallway/primary/starboard/west
+/area/hallway/primary/starboard/east
+
+/area/hallway/primary/aft
+ name = "\improper Aft Primary Hallway"
+ icon_state = "hallA"
+
+
+/area/hallway/primary/port
+ name = "\improper Port Primary Hallway"
+ icon_state = "hallP"
+
+/area/hallway/primary/port/west
+ name = "\improper Port West Hallway"
+
+/area/hallway/primary/port/east
+ name = "\improper Port East Hallway"
+
+/area/hallway/primary/central
+ name = "\improper Central Primary Hallway"
+ icon_state = "hallC"
+
+/area/hallway/primary/central/north
+/area/hallway/primary/central/south
+/area/hallway/primary/central/west
+/area/hallway/primary/central/east
+/area/hallway/primary/central/nw
+/area/hallway/primary/central/ne
+/area/hallway/primary/central/sw
+/area/hallway/primary/central/se
+
+/area/hallway/secondary/exit
+ name = "\improper Escape Shuttle Hallway"
+ icon_state = "escape"
+
+/area/hallway/secondary/construction
+ name = "\improper Construction Area"
+ icon_state = "construction"
+
+/area/hallway/secondary/entry
+ name = "\improper Arrival Shuttle Hallway"
+ icon_state = "entry"
+
+/area/hallway/secondary/entry/north
+
+/area/hallway/secondary/entry/south
+
+/area/hallway/secondary/entry/louge
+ name = "\improper Arrivals Lounge"
+
+
+//Command
+
+/area/bridge
+ name = "\improper Bridge"
+ icon_state = "bridge"
+ music = "signal"
+
+/area/bridge/meeting_room
+ name = "\improper Heads of Staff Meeting Room"
+ icon_state = "meeting"
+ music = null
+
+/area/crew_quarters/captain
+ name = "\improper Captain's Office"
+ icon_state = "captain"
+
+/area/crew_quarters/captain/bedroom
+ name = "\improper Captain's Bedroom"
+ icon_state = "captain"
+
+/area/crew_quarters/recruit
+ name = "\improper Recruitment Office"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/heads/hop
+ name = "\improper Head of Personnel's Quarters"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/heads/hor
+ name = "\improper Research Director's Quarters"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/heads/chief
+ name = "\improper Chief Engineer's Quarters"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/heads/hos
+ name = "\improper Head of Security's Quarters"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/heads/cmo
+ name = "\improper Chief Medical Officer's Quarters"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/courtroom
+ name = "\improper Courtroom"
+ icon_state = "courtroom"
+
+/area/crew_quarters/heads
+ name = "\improper Head of Personnel's Office"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/hor
+ name = "\improper Research Director's Office"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/hos
+ name = "\improper Head of Security's Office"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/chief
+ name = "\improper Chief Engineer's Office"
+ icon_state = "head_quarters"
+
+/area/mint
+ name = "\improper Mint"
+ icon_state = "green"
+
+/area/comms
+ name = "\improper Communications Relay"
+ icon_state = "tcomsatcham"
+
+/area/server
+ name = "\improper Messaging Server Room"
+ icon_state = "server"
+
+/area/ntrep
+ name = "\improper Nanotrasen Representative's Office"
+ icon_state = "bluenew"
+
+/area/blueshield
+ name = "\improper Blueshield's Office"
+ icon_state = "blueold"
+
+/area/centcomdocks
+ name = "\improper Central Command Docks"
+ icon_state = "centcom"
+
+//Crew
+
+/area/crew_quarters
+ name = "\improper Dormitories"
+ icon_state = "Sleep"
+
+/area/crew_quarters/toilet
+ name = "\improper Dormitory Toilets"
+ icon_state = "toilet"
+
+/area/crew_quarters/sleep
+ name = "\improper Dormitories"
+ icon_state = "Sleep"
+ valid_territory = FALSE
+
+/area/crew_quarters/sleep_male
+ name = "\improper Male Dorm"
+ icon_state = "Sleep"
+
+/area/crew_quarters/sleep_male/toilet_male
+ name = "\improper Male Toilets"
+ icon_state = "toilet"
+
+/area/crew_quarters/sleep_female
+ name = "\improper Female Dorm"
+ icon_state = "Sleep"
+
+/area/crew_quarters/sleep_female/toilet_female
+ name = "\improper Female Toilets"
+ icon_state = "toilet"
+
+/area/crew_quarters/locker
+ name = "\improper Locker Room"
+ icon_state = "locker"
+
+/area/crew_quarters/locker/locker_toilet
+ name = "\improper Locker Toilets"
+ icon_state = "toilet"
+
+/area/crew_quarters/fitness
+ name = "\improper Fitness Room"
+ icon_state = "fitness"
+
+/area/crew_quarters/dorms
+ name = "\improper Dorms"
+ icon_state = "dorms"
+
+/area/crew_quarters/arcade
+ name = "\improper Arcade"
+ icon_state = "arcade"
+
+/area/crew_quarters/cafeteria
+ name = "\improper Cafeteria"
+ icon_state = "cafeteria"
+
+/area/crew_quarters/kitchen
+ name = "\improper Kitchen"
+ icon_state = "kitchen"
+
+/area/crew_quarters/bar
+ name = "\improper Bar"
+ icon_state = "bar"
+
+/area/crew_quarters/bar/atrium
+ name = "Atrium"
+ icon_state = "bar"
+
+/area/crew_quarters/theatre
+ name = "\improper Theatre"
+ icon_state = "Theatre"
+
+/area/crew_quarters/mrchangs
+ name = "\improper Mr Chang's"
+ icon_state = "Theatre"
+
+/area/library
+ name = "\improper Library"
+ icon_state = "library"
+
+/area/library/abandoned
+ name = "\improper Abandoned Library"
+ icon_state = "library"
+
+/area/chapel/main
+ name = "\improper Chapel"
+ icon_state = "chapel"
+ ambientsounds = list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg','sound/music/traitor.ogg')
+
+/area/chapel/office
+ name = "\improper Chapel Office"
+ icon_state = "chapeloffice"
+
+/area/escapepodbay
+ name = "\improper Escape Shuttle Hallway Podbay"
+ icon_state = "escape"
+
+/area/lawoffice
+ name = "\improper Law Office"
+ icon_state = "law"
+
+/area/magistrateoffice
+ name = "\improper Magistrate's Office"
+ icon_state = "magistrate"
+
+/area/clownoffice
+ name = "\improper Clown's Office"
+ icon_state = "clown_office"
+
+/area/mimeoffice
+ name = "\improper Mime's Office"
+ icon_state = "mime_office"
+
+/area/civilian/barber
+ name = "\improper Barber Shop"
+ icon_state = "barber"
+
+/area/civilian/clothing
+ name = "\improper Clothing Shop"
+ icon_state = "Theatre"
+
+/area/civilian/pet_store
+ name = "\improper Pet Store"
+ icon_state = "pet_store"
+
+/area/holodeck
+ name = "\improper Holodeck"
+ icon_state = "Holodeck"
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+
+/area/holodeck/alphadeck
+ name = "\improper Holodeck Alpha"
+
+
+/area/holodeck/source_plating
+ name = "\improper Holodeck - Off"
+ icon_state = "Holodeck"
+
+/area/holodeck/source_emptycourt
+ name = "\improper Holodeck - Empty Court"
+
+/area/holodeck/source_boxingcourt
+ name = "\improper Holodeck - Boxing Court"
+
+/area/holodeck/source_basketball
+ name = "\improper Holodeck - Basketball Court"
+
+/area/holodeck/source_thunderdomecourt
+ name = "\improper Holodeck - Thunderdome Court"
+
+/area/holodeck/source_beach
+ name = "\improper Holodeck - Beach"
+ icon_state = "Holodeck" // Lazy.
+
+/area/holodeck/source_burntest
+ name = "\improper Holodeck - Atmospheric Burn Test"
+
+/area/holodeck/source_wildlife
+ name = "\improper Holodeck - Wildlife Simulation"
+
+/area/holodeck/source_meetinghall
+ name = "\improper Holodeck - Meeting Hall"
+
+/area/holodeck/source_theatre
+ name = "\improper Holodeck - Theatre"
+
+/area/holodeck/source_picnicarea
+ name = "\improper Holodeck - Picnic Area"
+
+/area/holodeck/source_snowfield
+ name = "\improper Holodeck - Snow Field"
+
+/area/holodeck/source_desert
+ name = "\improper Holodeck - Desert"
+
+/area/holodeck/source_space
+ name = "\improper Holodeck - Space"
+
+/area/holodeck/source_knightarena
+ name = "\improper Holodeck - Knight Arena"
+
+
+//Embassies
+/area/embassy/
+ name = "\improper Embassy Hallway"
+
+/area/embassy/tajaran
+ name = "\improper Tajaran Embassy"
+ icon_state = "tajaran"
+
+/area/embassy/skrell
+ name = "\improper Skrell Embassy"
+ icon_state = "skrell"
+
+/area/embassy/unathi
+ name = "\improper Unathi Embassy"
+ icon_state = "unathi"
+
+/area/embassy/kidan
+ name = "\improper Kidan Embassy"
+ icon_state = "kidan"
+
+/area/embassy/diona
+ name = "\improper Diona Embassy"
+ icon_state = "diona"
+
+/area/embassy/slime
+ name = "\improper Slime Person Embassy"
+ icon_state = "slime"
+
+/area/embassy/grey
+ name = "\improper Grey Embassy"
+ icon_state = "grey"
+
+/area/embassy/vox
+ name = "\improper Vox Embassy"
+ icon_state = "vox"
+
+
+
+//Engineering
+/area/engine
+ ambientsounds = list('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg')
+
+/area/engine/engine_smes
+ name = "\improper Engineering SMES"
+ icon_state = "engine_smes"
+ requires_power = FALSE //This area only covers the batteries and they deal with their own power
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+
+/area/engine/engineering
+ name = "Engineering"
+ icon_state = "engine_smes"
+
+/area/engine/break_room
+ name = "\improper Engineering Foyer"
+ icon_state = "engine"
+
+/area/engine/equipmentstorage
+ name = "\improper Engineering Equipment Storage"
+ icon_state = "storage"
+
+/area/engine/hardsuitstorage
+ name = "\improper Engineering Hardsuit Storage"
+ icon_state = "storage"
+
+/area/engine/controlroom
+ name = "\improper Engineering Control Room"
+ icon_state = "engine_control"
+
+/area/engine/gravitygenerator
+ name = "\improper Gravity Generator"
+ icon_state = "engine"
+
+/area/engine/chiefs_office
+ name = "\improper Chief Engineer's office"
+ icon_state = "engine_control"
+
+/area/engine/mechanic_workshop
+ name = "\improper Mechanic Workshop"
+ icon_state = "engine"
+
+/area/engine/mechanic_workshop/hanger
+ name = "\improper Hanger Bay"
+ icon_state = "engine"
+
+/area/engine/supermatter
+ name = "\improper Supermatter Engine"
+ icon_state = "engine"
+
+//Solars
+
+/area/solar
+ requires_power = FALSE
+ valid_territory = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
+
+/area/solar/auxport
+ name = "\improper Fore Port Solar Array"
+ icon_state = "panelsA"
+
+/area/solar/auxstarboard
+ name = "\improper Fore Starboard Solar Array"
+ icon_state = "panelsA"
+
+/area/solar/fore
+ name = "\improper Fore Solar Array"
+ icon_state = "yellow"
+
+/area/solar/aft
+ name = "\improper Aft Solar Array"
+ icon_state = "aft"
+
+/area/solar/starboard
+ name = "\improper Aft Starboard Solar Array"
+ icon_state = "panelsS"
+
+/area/solar/port
+ name = "\improper Aft Port Solar Array"
+ icon_state = "panelsP"
+
+/area/maintenance/auxsolarport
+ name = "\improper Fore Port Solar Maintenance"
+ icon_state = "SolarcontrolA"
+
+/area/maintenance/starboardsolar
+ name = "\improper Aft Starboard Solar Maintenance"
+ icon_state = "SolarcontrolS"
+
+/area/maintenance/portsolar
+ name = "\improper Aft Port Solar Maintenance"
+ icon_state = "SolarcontrolP"
+
+/area/maintenance/auxsolarstarboard
+ name = "\improper Fore Starboard Solar Maintenance"
+ icon_state = "SolarcontrolA"
+
+
+/area/assembly/chargebay
+ name = "\improper Mech Bay"
+ icon_state = "mechbay"
+
+/area/assembly/showroom
+ name = "\improper Robotics Showroom"
+ icon_state = "showroom"
+
+/area/assembly/robotics
+ name = "\improper Robotics Lab"
+ icon_state = "ass_line"
+
+/area/assembly/assembly_line //Derelict Assembly Line
+ name = "\improper Assembly Line"
+ icon_state = "ass_line"
+ power_equip = 0
+ power_light = 0
+ power_environ = 0
+
+//Teleporter
+
+/area/teleporter
+ name = "\improper Teleporter"
+ icon_state = "teleporter"
+ music = "signal"
+
+/area/gateway
+ name = "\improper Gateway"
+ icon_state = "teleporter"
+ music = "signal"
+
+/area/AIsattele
+ name = "\improper Abandoned Teleporter"
+ icon_state = "teleporter"
+ music = "signal"
+ ambientsounds = list('sound/ambience/ambimalf.ogg')
+
+/area/toxins/explab
+ name = "\improper E.X.P.E.R.I-MENTOR Lab"
+ icon_state = "toxmisc"
+
+/area/toxins/explab_chamber
+ name = "\improper E.X.P.E.R.I-MENTOR Chamber"
+ icon_state = "toxmisc"
+
+//MedBay
+
+/area/medical/medbay
+ name = "\improper Medbay"
+ icon_state = "medbay"
+ music = 'sound/ambience/signal.ogg'
+
+//Medbay is a large area, these additional areas help level out APC load.
+/area/medical/medbay2
+ name = "\improper Medbay"
+ icon_state = "medbay2"
+ music = 'sound/ambience/signal.ogg'
+
+/area/medical/medbay3
+ name = "\improper Medbay"
+ icon_state = "medbay3"
+ music = 'sound/ambience/signal.ogg'
+
+
+/area/medical/biostorage
+ name = "\improper Medical Storage"
+ icon_state = "medbaysecstorage"
+ music = 'sound/ambience/signal.ogg'
+
+/area/medical/reception
+ name = "\improper Medbay Reception"
+ icon_state = "medbay"
+ music = 'sound/ambience/signal.ogg'
+
+/area/medical/psych
+ name = "\improper Psych Room"
+ icon_state = "medbaypsych"
+ music = 'sound/ambience/signal.ogg'
+
+/area/medical/medbreak
+ name = "\improper Break Room"
+ icon_state = "medbaybreak"
+ music = 'sound/ambience/signal.ogg'
+
+/area/medical/patients_rooms
+ name = "\improper Patient's Rooms"
+ icon_state = "patients"
+
+/area/medical/ward
+ name = "\improper Medbay Patient Ward"
+ icon_state = "patientsward"
+
+/area/medical/patient_a
+ name = "\improper Isolation A"
+ icon_state = "medbayisoa"
+
+/area/medical/patient_b
+ name = "\improper Isolation B"
+ icon_state = "medbayisob"
+
+/area/medical/patient_c
+ name = "\improper Isolation C"
+ icon_state = "medbayisoc"
+
+/area/medical/iso_access
+ name = "\improper Isolation Access"
+ icon_state = "medbayisoaccess"
+
+/area/medical/cmo
+ name = "\improper Chief Medical Officer's office"
+ icon_state = "CMO"
+
+/area/medical/cmostore
+ name = "\improper Medical Secondary Storage"
+ icon_state = "medbaysecstorage"
+
+/area/medical/robotics
+ name = "\improper Robotics"
+ icon_state = "medresearch"
+
+/area/medical/research
+ name = "\improper Medical Research"
+ icon_state = "medresearch"
+
+/area/medical/research_shuttle_dock
+ name = "\improper Research Shuttle Dock"
+ icon_state = "medresearch"
+
+/area/medical/virology
+ name = "\improper Virology"
+ icon_state = "virology"
+
+/area/medical/virology/lab
+ name = "\improper Virology Laboratory"
+ icon_state = "virology"
+
+/area/medical/morgue
+ name = "\improper Morgue"
+ icon_state = "morgue"
+ ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg')
+
+/area/medical/chemistry
+ name = "\improper Chemistry"
+ icon_state = "chem"
+
+/area/medical/surgery
+ name = "\improper Surgery"
+ icon_state = "surgery"
+
+/area/medical/surgery1
+ name = "\improper Surgery 1"
+ icon_state = "surgery1"
+
+/area/medical/surgery2
+ name = "\improper Surgery 2"
+ icon_state = "surgery2"
+
+/area/medical/surgeryobs
+ name = "\improper Surgery Observation"
+ icon_state = "surgery"
+
+/area/medical/cryo
+ name = "\improper Cryogenics"
+ icon_state = "cryo"
+
+/area/medical/exam_room
+ name = "\improper Exam Room"
+ icon_state = "exam_room"
+
+/area/medical/genetics
+ name = "\improper Genetics Lab"
+ icon_state = "genetics"
+
+/area/medical/genetics_cloning
+ name = "\improper Cloning Lab"
+ icon_state = "cloning"
+
+/area/medical/sleeper
+ name = "\improper Medical Treatment Center"
+ icon_state = "exam_room"
+
+/area/medical/paramedic
+ name = "\improper Paramedic"
+ icon_state = "medbay"
+
+//Security
+
+/area/security/main
+ name = "\improper Security Office"
+ icon_state = "securityoffice"
+
+/area/security/lobby
+ name = "\improper Security Lobby"
+ icon_state = "securitylobby"
+
+/area/security/brig
+ name = "\improper Brig"
+ icon_state = "brig"
+
+/area/security/brig/prison_break()
+ for(var/obj/structure/closet/secure_closet/brig/temp_closet in src)
+ temp_closet.locked = 0
+ temp_closet.icon_state = temp_closet.icon_closed
+ for(var/obj/machinery/door_timer/temp_timer in src)
+ temp_timer.releasetime = 1
+ ..()
+
+/area/security/permabrig
+ name = "\improper Prison Wing"
+ icon_state = "sec_prison_perma"
+ fast_despawn = TRUE
+
+/area/security/prison
+ name = "\improper Prison Wing"
+ icon_state = "sec_prison"
+
+/area/security/prison/prison_break()
+ for(var/obj/structure/closet/secure_closet/brig/temp_closet in src)
+ temp_closet.locked = 0
+ temp_closet.icon_state = temp_closet.icon_closed
+ for(var/obj/machinery/door_timer/temp_timer in src)
+ temp_timer.releasetime = 1
+ ..()
+
+/area/security/prison/cell_block
+ name = "\improper Prison Cell Block"
+ icon_state = "brig"
+
+/area/security/prison/cell_block/A
+ name = "\improper Prison Cell Block A"
+ icon_state = "brigcella"
+
+/area/security/prison/cell_block/B
+ name = "\improper Prison Cell Block B"
+ icon_state = "brigcellb"
+
+/area/security/prison/cell_block/C
+ name = "\improper Prison Cell Block C"
+ icon_state = "brig"
+
+/area/security/execution
+ name = "\improper Execution"
+ icon_state = "execution"
+
+/area/security/processing
+ name = "\improper Prisoner Processing"
+ icon_state = "prisonerprocessing"
+
+/area/security/interrogation
+ name = "\improper Interrogation"
+ icon_state = "interrogation"
+
+/area/security/seceqstorage
+ name = "\improper Security Equipment Storage"
+ icon_state = "securityequipmentstorage"
+
+/area/security/interrogationhallway
+ name = "\improper Interrogation Hallway"
+ icon_state = "interrogationhall"
+
+/area/security/courtroomdandp
+ name = "\improper Courtroom Defense and Prosecution"
+ icon_state = "seccourt"
+
+/area/security/interrogationobs
+ name = "\improper Interrogation Observation"
+ icon_state = "security"
+
+/area/security/evidence
+ name = "\improper Evidence Room"
+ icon_state = "evidence"
+
+/area/security/prisonlockers
+ name = "\improper Prisoner Lockers"
+ icon_state = "sec_prison_lockers"
+
+/area/security/medbay
+ name = "\improper Security Medbay"
+ icon_state = "security_medbay"
+
+/area/security/prisonershuttle
+ name = "\improper Security Prisoner Shuttle"
+ icon_state = "security"
+
+/area/security/warden
+ name = "\improper Warden's Office"
+ icon_state = "Warden"
+
+/area/security/armoury
+ name = "\improper Armory"
+ icon_state = "armory"
+
+/area/security/securearmoury
+ name = "\improper Secure Armory"
+ icon_state = "secarmory"
+
+/area/security/securehallway
+ name = "\improper Security Secure Hallway"
+ icon_state = "securehall"
+
+/area/security/hos
+ name = "\improper Head of Security's Office"
+ icon_state = "sec_hos"
+
+/area/security/podbay
+ name = "\improper Security Podbay"
+ icon_state = "securitypodbay"
+
+/area/security/detectives_office
+ name = "\improper Detective's Office"
+ icon_state = "detective"
+
+/area/security/range
+ name = "\improper Firing Range"
+ icon_state = "firingrange"
+
+/area/security/nuke_storage
+ name = "\improper Vault"
+ icon_state = "nuke_storage"
+
+/area/security/customs
+ name = "\improper Customs"
+ icon_state = "checkpoint1"
+
+/area/security/customs2
+ name = "\improper Customs"
+ icon_state = "security"
+
+/area/security/checkpoint
+ name = "\improper Security Checkpoint"
+ icon_state = "checkpoint1"
+
+/area/security/checkpoint2
+ name = "\improper Security Checkpoint"
+ icon_state = "security"
+
+/area/security/checkpoint/supply
+ name = "Security Post - Cargo Bay"
+ icon_state = "checkpoint1"
+
+/area/security/checkpoint/engineering
+ name = "Security Post - Engineering"
+ icon_state = "checkpoint1"
+
+/area/security/checkpoint/medical
+ name = "Security Post - Medbay"
+ icon_state = "checkpoint1"
+
+/area/security/checkpoint/science
+ name = "Security Post - Science"
+ icon_state = "checkpoint1"
+
+/area/security/vacantoffice
+ name = "\improper Vacant Office"
+ icon_state = "security"
+
+/area/security/vacantoffice2
+ name = "\improper Vacant Office"
+ icon_state = "security"
+
+/area/quartermaster
+ name = "\improper Quartermasters"
+ icon_state = "quart"
+
+///////////WORK IN PROGRESS//////////
+
+/area/quartermaster/sorting
+ name = "\improper Delivery Office"
+ icon_state = "quartstorage"
+
+////////////WORK IN PROGRESS//////////
+
+/area/quartermaster/office
+ name = "\improper Cargo Office"
+ icon_state = "quartoffice"
+
+/area/quartermaster/storage
+ name = "\improper Cargo Bay"
+ icon_state = "quartstorage"
+
+/area/quartermaster/qm
+ name = "\improper Quartermaster's Office"
+ icon_state = "quart"
+
+/area/quartermaster/miningdock
+ name = "\improper Mining Dock"
+ icon_state = "mining"
+
+/area/quartermaster/miningstorage
+ name = "\improper Mining Storage"
+ icon_state = "green"
+
+/area/quartermaster/mechbay
+ name = "\improper Mech Bay"
+ icon_state = "yellow"
+
+/area/janitor
+ name = "\improper Custodial Closet"
+ icon_state = "janitor"
+
+/area/hydroponics
+ name = "\improper Hydroponics"
+ icon_state = "hydro"
+
+/area/hydroponics/abandoned_garden
+ name = "\improper Abandoned Garden"
+ icon_state = "hydro"
+
+//Toxins
+
+/area/toxins/lab
+ name = "\improper Research and Development"
+ icon_state = "toxlab"
+
+/area/toxins/hallway
+ name = "\improper Research Lab"
+ icon_state = "toxlab"
+
+/area/toxins/rdoffice
+ name = "\improper Research Director's Office"
+ icon_state = "head_quarters"
+
+/area/toxins/supermatter
+ name = "\improper Supermatter Lab"
+ icon_state = "toxlab"
+
+/area/toxins/xenobiology
+ name = "\improper Xenobiology Lab"
+ icon_state = "toxmix"
+ xenobiology_compatible = TRUE
+
+/area/toxins/xenobiology/xenoflora_storage
+ name = "\improper Xenoflora Storage"
+ icon_state = "toxlab"
+
+/area/toxins/xenobiology/xenoflora
+ name = "\improper Xenoflora Lab"
+ icon_state = "toxlab"
+
+/area/toxins/storage
+ name = "\improper Toxins Storage"
+ icon_state = "toxstorage"
+
+/area/toxins/test_area
+ name = "\improper Toxins Test Area"
+ icon_state = "toxtest"
+ valid_territory = FALSE
+
+/area/toxins/mixing
+ name = "\improper Toxins Mixing Room"
+ icon_state = "toxmix"
+
+/area/toxins/launch
+ name = "Toxins Launch Room"
+ icon_state = "toxlaunch"
+
+/area/toxins/misc_lab
+ name = "\improper Research Testing Lab"
+ icon_state = "toxmisc"
+
+/area/toxins/test_chamber
+ name = "\improper Research Testing Chamber"
+ icon_state = "toxtest"
+
+/area/toxins/server
+ name = "\improper Server Room"
+ icon_state = "server"
+
+/area/toxins/server_coldroom
+ name = "\improper Server Coldroom"
+ icon_state = "servercold"
+
+/area/toxins/explab
+ name = "\improper Experimentation Lab"
+ icon_state = "toxmisc"
+
+//Storage
+
+/area/storage/tools
+ name = "Auxiliary Tool Storage"
+ icon_state = "storage"
+
+/area/storage/primary
+ name = "Primary Tool Storage"
+ icon_state = "primarystorage"
+
+/area/storage/autolathe
+ name = "Autolathe Storage"
+ icon_state = "storage"
+
+/area/storage/art
+ name = "Art Supply Storage"
+ icon_state = "storage"
+
+/area/storage/auxillary
+ name = "Auxillary Storage"
+ icon_state = "auxstorage"
+
+/area/storage/eva
+ name = "EVA Storage"
+ icon_state = "eva"
+
+/area/storage/secure
+ name = "Secure Storage"
+ icon_state = "storage"
+
+/area/storage/emergency
+ name = "Starboard Emergency Storage"
+ icon_state = "emergencystorage"
+
+/area/storage/emergency2
+ name = "Port Emergency Storage"
+ icon_state = "emergencystorage"
+
+/area/storage/tech
+ name = "Technical Storage"
+ icon_state = "auxstorage"
+
+/area/storage/office
+ name = "\improper Office Supplies"
+ icon_state = "office_supplies"
+
+// ENGIE OUTPOST
+
+/area/engiestation
+ name = "\improper Engineering Outpost"
+ icon_state = "construction"
+
+/area/engiestation/solars
+ name = "\improper Engineering Outpost Solars"
+ icon_state = "panelsP"
+
+//DJSTATION
+
+/area/djstation
+ name = "\improper Ruskie DJ Station"
+ icon_state = "DJ"
+
+/area/djstation/solars
+ name = "\improper Ruskie DJ Station Solars"
+ icon_state = "DJ"
+
+//DERELICT
+
+/area/derelict
+ name = "\improper Derelict Station"
+ icon_state = "storage"
+
+/area/derelict/hallway/primary
+ name = "\improper Derelict Primary Hallway"
+ icon_state = "hallP"
+
+/area/derelict/hallway/secondary
+ name = "\improper Derelict Secondary Hallway"
+ icon_state = "hallS"
+
+/area/derelict/arrival
+ name = "\improper Derelict Arrival Centre"
+ icon_state = "yellow"
+
+/area/derelict/storage/equipment
+ name = "Derelict Equipment Storage"
+
+/area/derelict/storage/storage_access
+ name = "Derelict Storage Access"
+
+/area/derelict/storage/engine_storage
+ name = "Derelict Engine Storage"
+ icon_state = "green"
+
+/area/derelict/bridge
+ name = "\improper Derelict Control Room"
+ icon_state = "bridge"
+
+/area/derelict/secret
+ name = "\improper Derelict Secret Room"
+ icon_state = "library"
+
+/area/derelict/bridge/access
+ name = "Derelict Control Room Access"
+ icon_state = "auxstorage"
+
+/area/derelict/bridge/ai_upload
+ name = "\improper Derelict Computer Core"
+ icon_state = "ai"
+
+/area/derelict/solar_control
+ name = "\improper Derelict Solar Control"
+ icon_state = "engine"
+
+/area/derelict/se_solar
+ name = "South East Solars"
+ icon_state = "engine"
+
+/area/derelict/crew_quarters
+ name = "\improper Derelict Crew Quarters"
+ icon_state = "fitness"
+
+/area/derelict/medical
+ name = "Derelict Medbay"
+ icon_state = "medbay"
+
+/area/derelict/medical/morgue
+ name = "\improper Derelict Morgue"
+ icon_state = "morgue"
+
+/area/derelict/medical/chapel
+ name = "\improper Derelict Chapel"
+ icon_state = "chapel"
+
+/area/derelict/teleporter
+ name = "\improper Derelict Teleporter"
+ icon_state = "teleporter"
+
+/area/derelict/eva
+ name = "Derelict EVA Storage"
+ icon_state = "eva"
+
+/area/shuttle/derelict/ship/start
+ name = "\improper Abandoned Ship"
+ icon_state = "yellow"
+
+/area/shuttle/derelict/ship/transit
+ name = "\improper Abandoned Ship"
+ icon_state = "yellow"
+
+/area/shuttle/derelict/ship/engipost
+ name = "\improper Engineering Outpost"
+ icon_state = "yellow"
+
+/area/shuttle/derelict/ship/station
+ name = "\improper North of SS13"
+ icon_state = "yellow"
+
+/area/solar/derelict_starboard
+ name = "\improper Derelict Starboard Solar Array"
+ icon_state = "panelsS"
+
+/area/solar/derelict_aft
+ name = "\improper Derelict Aft Solar Array"
+ icon_state = "aft"
+
+/area/derelict/singularity_engine
+ name = "\improper Derelict Singularity Engine"
+ icon_state = "engine"
+
+/area/derelict/gravity_generator
+ name = "\improper Derelict Gravity Generator Room"
+ icon_state = "red"
+
+/area/derelict/atmospherics
+ name = "Derelict Atmospherics"
+ icon_state = "red"
+
+//HALF-BUILT STATION (REPLACES DERELICT IN BAYCODE, ABOVE IS LEFT FOR DOWNSTREAM)
+
+/area/shuttle/constructionsite
+ name = "\improper Construction Site Shuttle"
+ icon_state = "yellow"
+
+/area/shuttle/constructionsite/station
+ name = "\improper Construction Site Shuttle"
+
+/area/shuttle/constructionsite/site
+ name = "\improper Construction Site Shuttle"
+
+/area/constructionsite
+ name = "\improper Construction Site"
+ icon_state = "storage"
+
+/area/constructionsite/storage
+ name = "\improper Construction Site Storage Area"
+
+/area/constructionsite/science
+ name = "\improper Construction Site Research"
+ icon_state = "medresearch"
+
+/area/constructionsite/bridge
+ name = "\improper Construction Site Bridge"
+ icon_state = "bridge"
+
+/area/constructionsite/hallway/center
+ name = "\improper Construction Site Central Hallway"
+ icon_state = "hallC"
+
+/area/constructionsite/hallway/engcore
+ name = "\improper Construction Site Eng Core"
+ icon_state = "green"
+
+/area/constructionsite/hallway/fore
+ name = "\improper Construction Site Fore"
+ icon_state = "green"
+
+/area/constructionsite/hallway/port
+ name = "\improper Construction Site Port"
+ icon_state = "hallP"
+
+/area/constructionsite/hallway/aft
+ name = "\improper Construction Site Aft"
+ icon_state = "hallA"
+
+/area/constructionsite/hallway/starboard
+ name = "\improper Construction Site Starboard"
+ icon_state = "hallS"
+
+/area/constructionsite/atmospherics
+ name = "\improper Construction Site Atmospherics"
+ icon_state = "atmos"
+
+/area/constructionsite/medical
+ name = "\improper Construction Site Medbay"
+ icon_state = "medbay"
+
+/area/constructionsite/ai
+ name = "\improper Construction Computer Core"
+ icon_state = "ai"
+
+/area/constructionsite/engineering
+ name = "\improper Construction Site Engine Bay"
+ icon_state = "engine"
+
+/area/solar/constructionsite
+ name = "\improper Construction Site Solars"
+ icon_state = "panelsA"
+
+
+//Construction
+
+/area/construction
+ name = "\improper Construction Area"
+ icon_state = "yellow"
+
+/area/mining_construction
+ name = "Auxillary Base Construction"
+ icon_state = "yellow"
+
+/area/construction/supplyshuttle
+ name = "\improper Supply Shuttle"
+ icon_state = "yellow"
+
+/area/construction/quarters
+ name = "\improper Engineer's Quarters"
+ icon_state = "yellow"
+
+/area/construction/qmaint
+ name = "Maintenance"
+ icon_state = "yellow"
+
+/area/construction/hallway
+ name = "\improper Hallway"
+ icon_state = "yellow"
+
+/area/construction/solars
+ name = "\improper Solar Panels"
+ icon_state = "yellow"
+
+/area/construction/solarscontrol
+ name = "\improper Solar Panel Control"
+ icon_state = "yellow"
+
+/area/construction/Storage
+ name = "Construction Site Storage"
+ icon_state = "yellow"
+
+
+//GAYBAR
+/area/secret/gaybar
+ name = "\improper Dance Bar"
+ icon_state = "dancebar"
+
+
+//Traitor Station
+/area/traitor
+ name = "\improper Syndicate Base"
+ icon_state = "syndie_hall"
+ report_alerts = 0
+
+/area/traitor/rnd
+ name = "\improper Syndicate Research and Development"
+ icon_state = "syndie_rnd"
+
+/area/traitor/chem
+ name = "\improper Syndicate Chemistry"
+ icon_state = "syndie_chem"
+
+/area/traitor/tox
+ name = "\improper Syndicate Toxins"
+ icon_state = "syndie_tox"
+
+/area/traitor/atmos
+ name = "\improper Syndicate Atmos"
+ icon_state = "syndie_atmo"
+
+/area/traitor/inter
+ name = "\improper Syndicate Interrogation"
+ icon_state = "syndie_inter"
+
+/area/traitor/radio
+ name = "\improper Syndicate Eavesdropping Booth"
+ icon_state = "syndie_radio"
+
+/area/traitor/surgery
+ name = "\improper Syndicate Surgery Theatre"
+ icon_state = "syndie_surgery"
+
+/area/traitor/hall
+ name = "\improper Syndicate Station"
+ icon_state = "syndie_hall"
+
+/area/traitor/kitchen
+ name = "\improper Syndicate Kitchen"
+ icon_state = "syndie_kitchen"
+
+/area/traitor/empty
+ name = "\improper Syndicate Project Room"
+ icon_state = "syndie_empty"
+
+
+//AI
+
+/area/ai_monitored/storage/eva
+ name = "EVA Storage"
+ icon_state = "eva"
+
+/area/ai_monitored/storage/secure
+ name = "Secure Storage"
+ icon_state = "storage"
+
+/area/ai_monitored/storage/emergency
+ name = "Emergency Storage"
+ icon_state = "storage"
+
+/area/turret_protected/
+ ambientsounds = list('sound/ambience/ambimalf.ogg')
+
+/area/turret_protected/ai_upload
+ name = "\improper AI Upload Chamber"
+ icon_state = "ai_upload"
+
+/area/turret_protected/ai_upload_foyer
+ name = "AI Upload Access"
+ icon_state = "ai_foyer"
+
+/area/turret_protected/ai
+ name = "\improper AI Chamber"
+ icon_state = "ai_chamber"
+
+/area/turret_protected/aisat
+ name = "\improper AI Satellite"
+ icon_state = "ai"
+
+/area/aisat
+ name = "\improper AI Satellite Exterior"
+ icon_state = "yellow"
+
+/area/aisat/entrance
+ name = "\improper AI Satellite Entrance"
+ icon_state = "ai_foyer"
+
+/area/aisat/maintenance
+ name = "\improper AI Satellite Maintenance"
+ icon_state = "storage"
+
+/area/turret_protected/aisat_interior
+ name = "\improper AI Satellite Antechamber"
+ icon_state = "ai"
+
+
+//Misc
+
+/area/wreck/ai
+ name = "\improper AI Chamber"
+ icon_state = "ai"
+
+/area/wreck/main
+ name = "\improper Wreck"
+ icon_state = "storage"
+
+/area/wreck/engineering
+ name = "\improper Power Room"
+ icon_state = "engine"
+
+/area/wreck/bridge
+ name = "\improper Bridge"
+ icon_state = "bridge"
+
+/area/generic
+ name = "Unknown"
+ icon_state = "storage"
+
+
+
+// Telecommunications Satellite
+
+/area/tcommsat
+ ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
+
+/area/tcommsat/entrance
+ name = "\improper Telecoms Teleporter"
+ icon_state = "tcomsatentrance"
+
+/area/tcommsat/chamber
+ name = "\improper Telecoms Central Compartment"
+ icon_state = "tcomsatcham"
+
+/area/turret_protected/tcomsat
+ name = "\improper Telecoms Satellite"
+ icon_state = "tcomsatlob"
+ ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
+
+/area/turret_protected/tcomfoyer
+ name = "\improper Telecoms Foyer"
+ icon_state = "tcomsatentrance"
+ ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
+
+/area/turret_protected/tcomwest
+ name = "\improper Telecoms West Wing"
+ icon_state = "tcomsatwest"
+ ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
+
+/area/turret_protected/tcomeast
+ name = "\improper Telecoms East Wing"
+ icon_state = "tcomsateast"
+ ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
+
+/area/tcommsat/computer
+ name = "\improper Telecoms Control Room"
+ icon_state = "tcomsatcomp"
+
+/area/tcommsat/server
+ name = "\improper Telecoms Server Room"
+ icon_state = "tcomsatcham"
+
+/area/tcommsat/lounge
+ name = "\improper Telecoms Lounge"
+ icon_state = "tcomsatlounge"
+
+/area/tcommsat/powercontrol
+ name = "\improper Telecoms Power Control"
+ icon_state = "tcomsatwest"
+
+// Away Missions
+/area/awaymission
+ name = "\improper Strange Location"
+ icon_state = "away"
+ report_alerts = 0
+
+/area/awaymission/example
+ name = "\improper Strange Station"
+ icon_state = "away"
+
+/area/awaymission/desert
+ name = "Mars"
+ icon_state = "away"
+
+/area/awaymission/beach
+ name = "Beach"
+ icon_state = "beach"
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ requires_power = FALSE
+ ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg')
+
+/area/awaymission/undersea
+ name = "Undersea"
+ icon_state = "undersea"
+
+
+////////////////////////AWAY AREAS///////////////////////////////////
+
+/area/awaycontent
+ name = "space"
+ report_alerts = 0
+
+/area/awaycontent/a1
+ icon_state = "awaycontent1"
+
+/area/awaycontent/a2
+ icon_state = "awaycontent2"
+
+/area/awaycontent/a3
+ icon_state = "awaycontent3"
+
+/area/awaycontent/a4
+ icon_state = "awaycontent4"
+
+/area/awaycontent/a5
+ icon_state = "awaycontent5"
+
+/area/awaycontent/a6
+ icon_state = "awaycontent6"
+
+/area/awaycontent/a7
+ icon_state = "awaycontent7"
+
+/area/awaycontent/a8
+ icon_state = "awaycontent8"
+
+/area/awaycontent/a9
+ icon_state = "awaycontent9"
+
+/area/awaycontent/a10
+ icon_state = "awaycontent10"
+
+/area/awaycontent/a11
+ icon_state = "awaycontent11"
+
+/area/awaycontent/a11
+ icon_state = "awaycontent12"
+
+/area/awaycontent/a12
+ icon_state = "awaycontent13"
+
+/area/awaycontent/a13
+ icon_state = "awaycontent14"
+
+/area/awaycontent/a14
+ icon_state = "awaycontent14"
+
+/area/awaycontent/a15
+ icon_state = "awaycontent15"
+
+/area/awaycontent/a16
+ icon_state = "awaycontent16"
+
+/area/awaycontent/a17
+ icon_state = "awaycontent17"
+
+/area/awaycontent/a18
+ icon_state = "awaycontent18"
+
+/area/awaycontent/a19
+ icon_state = "awaycontent19"
+
+/area/awaycontent/a20
+ icon_state = "awaycontent20"
+
+/area/awaycontent/a21
+ icon_state = "awaycontent21"
+
+/area/awaycontent/a22
+ icon_state = "awaycontent22"
+
+/area/awaycontent/a23
+ icon_state = "awaycontent23"
+
+/area/awaycontent/a24
+ icon_state = "awaycontent24"
+
+/area/awaycontent/a25
+ icon_state = "awaycontent25"
+
+/area/awaycontent/a26
+ icon_state = "awaycontent26"
+
+/area/awaycontent/a27
+ icon_state = "awaycontent27"
+
+/area/awaycontent/a28
+ icon_state = "awaycontent28"
+
+/area/awaycontent/a29
+ icon_state = "awaycontent29"
+
+/area/awaycontent/a30
+ icon_state = "awaycontent30"
+
+////////////////////////VR AREAS///////////////////////////////////
+
+/area/vr
+ name = "VR"
+ requires_power = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ no_teleportlocs = TRUE
+
+/area/vr/lobby
+ name = "VR Lobby"
+
+/area/vr/roman
+ name = "Roman Arena"
+
+
+/////////////////////////////////////////////////////////////////////
+/*
+ Lists of areas to be used with is_type_in_list.
+ Used in gamemodes code at the moment. --rastaf0
+*/
+
+// CENTCOM
+var/list/centcom_areas = list (
+ /area/centcom,
+ /area/shuttle/escape_pod1/centcom,
+ /area/shuttle/escape_pod2/centcom,
+ /area/shuttle/escape_pod3/centcom,
+ /area/shuttle/escape_pod5/centcom,
+ /area/shuttle/transport1,
+ /area/shuttle/administration/centcom,
+ /area/shuttle/specops/centcom,
+)
+
+//SPACE STATION 13
+var/list/the_station_areas = list (
+ /area/shuttle/arrival,
+ /area/shuttle/escape,
+ /area/shuttle/escape_pod1/station,
+ /area/shuttle/escape_pod2/station,
+ /area/shuttle/escape_pod3/station,
+ /area/shuttle/escape_pod5/station,
+ /area/shuttle/prison/station,
+ /area/shuttle/administration/station,
+ /area/shuttle/specops/station,
+ /area/atmos,
+ /area/maintenance,
+ /area/hallway,
+ /area/hallway/primary/fore,
+ /area/hallway/primary/starboard,
+ /area/hallway/primary/aft,
+ /area/hallway/primary/port,
+ /area/hallway/primary/central,
+ /area/bridge,
+ /area/crew_quarters,
+ /area/civilian,
+ /area/holodeck,
+ /area/library,
+ /area/chapel,
+ /area/escapepodbay,
+ /area/lawoffice,
+ /area/magistrateoffice,
+ /area/clownoffice,
+ /area/mimeoffice,
+ /area/engine,
+ /area/solar,
+ /area/assembly,
+ /area/teleporter,
+ /area/medical,
+ /area/security,
+ /area/quartermaster,
+ /area/janitor,
+ /area/hydroponics,
+ /area/toxins,
+ /area/storage,
+ /area/construction,
+ /area/ai_monitored/storage/eva, //do not try to simplify to "/area/ai_monitored" --rastaf0
+ /area/ai_monitored/storage/secure,
+ /area/ai_monitored/storage/emergency,
+ /area/turret_protected/ai_upload, //do not try to simplify to "/area/turret_protected" --rastaf0
+ /area/turret_protected/ai_upload_foyer,
+ /area/turret_protected/ai,
+)
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index fcd2e912c44..8e9505095f2 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -1,9 +1,61 @@
-// Areas.dm
-
-// ===
/area
+ var/fire = null
+ var/atmosalm = ATMOS_ALARM_NONE
+ var/poweralm = TRUE
+ var/party = null
+ var/report_alerts = TRUE // Should atmos alerts notify the AI/computers
+ level = null
+ name = "Space"
+ icon = 'icons/turf/areas.dmi'
+ icon_state = "unknown"
+ layer = AREA_LAYER
+ plane = BLACKNESS_PLANE //Keeping this on the default plane, GAME_PLANE, will make area overlays fail to render on FLOOR_PLANE.
+ luminosity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ invisibility = INVISIBILITY_LIGHTING
+ var/valid_territory = TRUE //used for cult summoning areas on station zlevel
+ var/map_name // Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
+ var/lightswitch = TRUE
+
+ var/eject = null
+
+ var/debug = 0
+ var/requires_power = TRUE
+ var/always_unpowered = 0 //this gets overriden to 1 for space in area/New()
+
+ var/power_equip = TRUE
+ var/power_light = TRUE
+ var/power_environ = TRUE
+ var/music = null
+ var/used_equip = FALSE
+ var/used_light = FALSE
+ var/used_environ = FALSE
+ var/static_equip
+ var/static_light = FALSE
+ var/static_environ
+
+ var/has_gravity = TRUE
+ var/list/apc = list()
+ var/no_air = null
+
+ var/air_doors_activated = FALSE
+
+ var/tele_proof = FALSE
+ var/no_teleportlocs = FALSE
+
+ var/outdoors = FALSE //For space, the asteroid, lavaland, etc. Used with blueprints to determine if we are adding a new area (vs editing a station room)
+ var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default?
+ var/nad_allowed = FALSE //is the station NAD allowed on this area?
+
+ // This var is used with the maploader (modules/awaymissions/maploader/reader.dm)
+ // if this is 1, when used in a map snippet, this will instantiate a unique
+ // area from any other instances already present (meaning you can have
+ // separate APCs, and so on)
+ var/there_can_be_many = FALSE
+
var/global/global_uid = 0
var/uid
+
var/list/ambientsounds = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg',\
'sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg',\
'sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg',\
@@ -11,42 +63,47 @@
'sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg',\
'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg')
- // This var is used with the maploader (modules/awaymissions/maploader/reader.dm)
- // if this is 1, when used in a map snippet, this will instantiate a unique
- // area from any other instances already present (meaning you can have
- // separate APCs, and so on)
- var/there_can_be_many = 0
+ var/fast_despawn = FALSE
-
-/area/New()
-
- ..()
+/area/Initialize(mapload)
+ GLOB.all_areas += src
icon_state = ""
layer = AREA_LAYER
uid = ++global_uid
- GLOB.all_areas += src
+
map_name = name // Save the initial (the name set in the map) name of the area.
- if(type == /area) // override defaults for space. TODO: make space areas of type /area/space rather than /area
- requires_power = 1
- always_unpowered = 1
- dynamic_lighting = 1
- power_light = 0
- power_equip = 0
- power_environ = 0
-// lighting_state = 4
- //has_gravity = 0 // Space has gravity. Because.. because.
+ if(requires_power)
+ luminosity = 0
+ else
+ power_light = TRUE
+ power_equip = TRUE
+ power_environ = TRUE
- if(requires_power != 0)
- power_light = 0 //rastaf0
- power_equip = 0 //rastaf0
- power_environ = 0 //rastaf0
+ if(dynamic_lighting == DYNAMIC_LIGHTING_FORCED)
+ dynamic_lighting = DYNAMIC_LIGHTING_ENABLED
+ luminosity = 0
+ else if(dynamic_lighting != DYNAMIC_LIGHTING_IFSTARLIGHT)
+ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ if(dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT)
+ dynamic_lighting = config.starlight ? DYNAMIC_LIGHTING_ENABLED : DYNAMIC_LIGHTING_DISABLED
+
+ . = ..()
blend_mode = BLEND_MULTIPLY // Putting this in the constructor so that it stops the icons being screwed up in the map editor.
-/area/Initialize()
- . = ..()
+ if(!IS_DYNAMIC_LIGHTING(src))
+ add_overlay(/obj/effect/fullbright)
+ reg_in_areas_in_z()
+
+ return INITIALIZE_HINT_LATELOAD
+
+/area/LateInitialize()
+ . = ..()
+ power_change() // all machines set to current power level, also updates lighting icon
+
+/area/proc/reg_in_areas_in_z()
if(contents.len)
var/list/areas_in_z = space_manager.areas_in_z
var/z
@@ -63,12 +120,6 @@
areas_in_z["[z]"] = list()
areas_in_z["[z]"] += src
- return INITIALIZE_HINT_LATELOAD
-
-/area/LateInitialize()
- . = ..()
- power_change() // all machines set to current power level, also updates lighting icon
-
/area/proc/get_cameras()
var/list/cameras = list()
for(var/obj/machinery/camera/C in src)
@@ -199,7 +250,6 @@
icon_state = "party"
else
icon_state = "blue-red"
- invisibility = INVISIBILITY_LIGHTING
else
var/weather_icon
for(var/V in SSweather.processing)
@@ -209,12 +259,9 @@
weather_icon = TRUE
if(!weather_icon)
icon_state = null
- invisibility = INVISIBILITY_MAXIMUM
/area/space/updateicon()
icon_state = null
- invisibility = INVISIBILITY_MAXIMUM
-
/*
#define EQUIP 1
@@ -317,9 +364,6 @@
M.lastarea = src
- // /vg/ - EVENTS!
- callHook("mob_area_change", list("mob" = M, "newarea" = newarea, "oldarea" = oldarea))
-
if(!istype(A,/mob/living)) return
var/mob/living/L = A
diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index 66124a9582e..83a4db07f8d 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -30,7 +30,9 @@ var/global/max_secret_rooms = 6
T.ChangeTurf(floor)
room_turfs["floors"] += T
+ var/old_area = T.loc
A.contents += T
+ T.change_area(old_area, A)
return room_turfs
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 0a1aa19bcf7..f49cf05197a 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -1,5 +1,6 @@
/atom
- layer = 2
+ layer = TURF_LAYER
+ plane = GAME_PLANE
var/level = 2
var/flags = NONE
var/flags_2 = NONE
@@ -144,9 +145,12 @@
alternate_appearances = null
QDEL_NULL(reagents)
- invisibility = 101
+ invisibility = INVISIBILITY_MAXIMUM
LAZYCLEARLIST(overlays)
LAZYCLEARLIST(priority_overlays)
+
+ QDEL_NULL(light)
+
return ..()
//Hook for running code when a dir change occurs
@@ -681,6 +685,7 @@ var/list/blood_splatter_icons = list()
//the sight changes to give to the mob whose perspective is set to that atom (e.g. A mob with nightvision loses its nightvision while looking through a normal camera)
/atom/proc/update_remote_sight(mob/living/user)
+ user.sync_lighting_plane_alpha()
return
/atom/proc/checkpass(passflag)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 2d3f01a139d..d1bee2bb62e 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -185,11 +185,12 @@
. = 0
// Called after a successful Move(). By this point, we've already moved
-/atom/movable/proc/Moved(atom/OldLoc, Dir)
- if(!inertia_moving)
+/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
+ SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced)
+ if (!inertia_moving)
inertia_next_move = world.time + inertia_move_delay
newtonian_move(Dir)
- return 1
+ return TRUE
// Previously known as HasEntered()
// This is automatically called when something enters your square
@@ -219,7 +220,12 @@
destination.Entered(src)
for(var/atom/movable/AM in destination)
AM.Crossed(src)
-
+ var/turf/oldturf = get_turf(old_loc)
+ var/turf/destturf = get_turf(destination)
+ var/old_z = (oldturf ? oldturf.z : null)
+ var/dest_z = (destturf ? destturf.z : null)
+ if(old_z != dest_z)
+ onTransitZ(old_z, dest_z)
if(isturf(destination) && opacity)
var/turf/new_loc = destination
new_loc.reconsider_lights()
@@ -232,6 +238,11 @@
return 1
+/atom/movable/proc/onTransitZ(old_z,new_z)
+ for(var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care.
+ var/atom/movable/AM = item
+ AM.onTransitZ(old_z,new_z)
+
/mob/living/forceMove(atom/destination)
if(buckled)
addtimer(CALLBACK(src, .proc/check_buckled), 1, TIMER_UNIQUE)
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 461de475b41..1370b64ecc7 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -218,7 +218,7 @@
/mob/living/carbon/human/proc/sec_hud_set_security_status()
var/image/holder = hud_list[WANTED_HUD]
var/perpname = get_visible_name(TRUE) //gets the name of the perp, works if they have an id or if their face is uncovered
- if(!ticker) return //wait till the game starts or the monkeys runtime....
+ if(!SSticker) return //wait till the game starts or the monkeys runtime....
if(perpname)
var/datum/data/record/R = find_record("name", perpname, data_core.security)
if(R)
diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index 9ab851e86bf..506ef5714f8 100644
--- a/code/game/dna/genes/vg_powers.dm
+++ b/code/game/dna/genes/vg_powers.dm
@@ -188,9 +188,19 @@
..()
block=REMOTETALKBLOCK
+/datum/dna/gene/basic/grant_spell/remotetalk/activate(mob/user)
+ ..()
+ user.AddSpell(new /obj/effect/proc_holder/spell/targeted/mindscan(null))
+
+/datum/dna/gene/basic/grant_spell/remotetalk/deactivate(mob/user)
+ ..()
+ for(var/obj/effect/proc_holder/spell/S in user.mob_spell_list)
+ if(istype(S, /obj/effect/proc_holder/spell/targeted/mindscan))
+ user.RemoveSpell(S)
+
/obj/effect/proc_holder/spell/targeted/remotetalk
name = "Project Mind"
- desc = "Make people understand your thoughts at any range!"
+ desc = "Make people understand your thoughts!"
charge_max = 0
clothes_req = 0
@@ -242,6 +252,89 @@
for(var/mob/dead/observer/G in GLOB.player_list)
G.show_message("Telepathic message from [user] ([ghost_follow_link(user, ghost=G)]) to [target] ([ghost_follow_link(target, ghost=G)]): [say]")
+/obj/effect/proc_holder/spell/targeted/mindscan
+ name = "Scan Mind"
+ desc = "Offer people a chance to share their thoughts!"
+ charge_max = 0
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = -2
+ selection_type = "range"
+ action_icon_state = "genetic_mindscan"
+ var/list/available_targets = list()
+
+/obj/effect/proc_holder/spell/targeted/mindscan/choose_targets(mob/user = usr)
+ var/list/targets = new /list()
+ var/list/validtargets = new /list()
+ var/turf/T = get_turf(user)
+ for(var/mob/living/M in range(14, T))
+ if(M && M.mind)
+ if(M == user)
+ continue
+ validtargets += M
+
+ if(!validtargets.len)
+ to_chat(user, "There are no valid targets!")
+ start_recharge()
+ return
+
+ targets += input("Choose the target to listen to.", "Targeting") as null|mob in validtargets
+
+ if(!targets.len || !targets[1]) //doesn't waste the spell
+ revert_cast(user)
+ return
+
+ perform(targets, user = user)
+
+/obj/effect/proc_holder/spell/targeted/mindscan/cast(list/targets, mob/user = usr)
+ if(!ishuman(user))
+ return
+ for(var/mob/living/target in targets)
+ var/message = "You feel your mind expand briefly... (Click to send a message.)"
+ if(REMOTE_TALK in target.mutations)
+ message = "You feel [user.real_name] request a response from you... (Click here to project mind.)"
+ user.show_message("You offer your mind to [target.name].")
+ target.show_message("[message]")
+ available_targets += target
+ addtimer(CALLBACK(src, .proc/removeAvailability, target), 100)
+
+/obj/effect/proc_holder/spell/targeted/mindscan/proc/removeAvailability(mob/living/target)
+ if(target in available_targets)
+ available_targets -= target
+ if(!(target in available_targets))
+ target.show_message("You feel the sensation fade...")
+
+/obj/effect/proc_holder/spell/targeted/mindscan/Topic(href, href_list)
+ var/mob/living/user
+ if(href_list["user"])
+ user = locateUID(href_list["user"])
+ if(href_list["target"])
+ if(!user)
+ return
+ var/mob/living/target = locateUID(href_list["target"])
+ if(!(target in available_targets))
+ return
+ available_targets -= target
+ var/say = input("What do you wish to say") as text|null
+ if(!say)
+ return
+ say = strip_html(say)
+ say = pencode_to_html(say, target, format = 0, fields = 0)
+
+ log_say("(TPATH to [key_name(target)]) [say]", user)
+ if(REMOTE_TALK in target.mutations)
+ target.show_message("You project your mind into [user.name]: [say]")
+ else
+ target.show_message("You fill the space in your thoughts: [say]")
+ user.show_message("You hear [target.name]'s voice: [say]")
+ for(var/mob/dead/observer/G in GLOB.player_list)
+ G.show_message("Telepathic response from [target] ([ghost_follow_link(target, ghost=G)]) to [user] ([ghost_follow_link(user, ghost=G)]): [say]")
+
+/obj/effect/proc_holder/spell/targeted/mindscan/Destroy()
+ available_targets.Cut()
+ return ..()
+
/datum/dna/gene/basic/grant_spell/remoteview
name="Remote Viewing"
activation_messages=list("Your mind can see things from afar.")
diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm
index 97371f6d35b..63f9d5fbaff 100644
--- a/code/game/gamemodes/autotraitor/autotraitor.dm
+++ b/code/game/gamemodes/autotraitor/autotraitor.dm
@@ -96,7 +96,8 @@
for(var/obj/item/implant/mindshield/I in H.contents)
if(I && I.implanted)
possible_traitors -= player
-
+ if(!H.job) //Golems, special events stuff, etc.
+ possible_traitors -= player
//message_admins("Live Players: [playercount]")
//message_admins("Live Traitors: [traitorcount]")
// message_admins("Potential Traitors:")
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index e6e9dfe4196..bf2143b9784 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -178,7 +178,8 @@
environment_smash = ENVIRONMENT_SMASH_RWALLS
pressure_resistance = 100 //100 kPa difference required to push
throw_pressure_limit = 120 //120 kPa difference required to throw
-
+ see_in_dark = 8
+ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
/mob/living/simple_animal/hostile/blob/blobbernaut/blob_act()
return
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index bd934eefb44..0482a8e19ae 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -135,4 +135,9 @@
else
log_debug("/obj/structure/blob/core/proc/lateblobcheck: Blob core lacks a overmind.mind.")
else
- log_debug("/obj/structure/blob/core/proc/lateblobcheck: Blob core lacks an overmind.")
\ No newline at end of file
+ log_debug("/obj/structure/blob/core/proc/lateblobcheck: Blob core lacks an overmind.")
+
+/obj/structure/blob/core/onTransitZ(old_z, new_z)
+ if(overmind && is_station_level(new_z))
+ overmind.forceMove(get_turf(src))
+ return ..()
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index 7ec1ec3b3f0..4489aaf707b 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -5,8 +5,8 @@
icon_state = "marker"
see_in_dark = 8
- see_invisible = SEE_INVISIBLE_MINIMUM
invisibility = INVISIBILITY_OBSERVER
+ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
pass_flags = PASSBLOB
faction = list("blob")
@@ -20,7 +20,6 @@
var/is_offspring = FALSE
var/datum/reagent/blob/blob_reagent_datum = new/datum/reagent/blob()
var/list/blob_mobs = list()
- var/ghostimage = null
/mob/camera/blob/New()
var/new_name = "[initial(name)] ([rand(1, 999)])"
@@ -35,9 +34,6 @@
blob_core.adjustcolors(blob_reagent_datum.color)
color = blob_reagent_datum.complementary_color
- ghostimage = image(src.icon,src,src.icon_state)
- ghost_darkness_images |= ghostimage //so ghosts can see the blob cursor when they disable darkness
- updateallghostimages()
..()
/mob/camera/blob/Life(seconds, times_fired)
@@ -45,13 +41,6 @@
qdel(src)
..()
-/mob/camera/blob/Destroy()
- if(ghostimage)
- ghost_darkness_images -= ghostimage
- QDEL_NULL(ghostimage)
- updateallghostimages()
- return ..()
-
/mob/camera/blob/Login()
..()
sync_mind()
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 61196c9862f..5eb15759d99 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -378,8 +378,8 @@
new /obj/structure/blob/core/ (get_turf(N), 200, null, blob_core.point_rate, "offspring")
qdel(N)
- if(ticker && ticker.mode.name == "blob")
- var/datum/game_mode/blob/BL = ticker.mode
+ if(SSticker && SSticker.mode.name == "blob")
+ var/datum/game_mode/blob/BL = SSticker.mode
BL.blobwincount += initial(BL.blobwincount)
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 4b5560fe333..bed4c95ef86 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -132,15 +132,6 @@
throw_range = 0
throw_speed = 0
-/obj/item/melee/arm_blade/New()
- ..()
- if(ismob(loc))
- loc.visible_message("A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!")
-
-/obj/item/melee/arm_blade/dropped(mob/user)
- user.visible_message("With a sickening crunch, [user] reforms [user.p_their()] blade into an arm!", "We assimilate the blade back into our body.", "You hear organic matter ripping and tearing!")
- . = ..()
-
/obj/item/melee/arm_blade/afterattack(atom/target, mob/user, proximity)
if(!proximity)
return
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 9e45cab4292..2b860756b45 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -5,7 +5,7 @@ var/global/list/all_cults = list()
var/list/datum/mind/cult = list()
/proc/iscultist(mob/living/M as mob)
- return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.cult)
+ return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.cult)
/proc/is_convertable_to_cult(datum/mind/mind)
@@ -30,8 +30,8 @@ var/global/list/all_cults = list()
return 1
/proc/is_sacrifice_target(datum/mind/mind)
- if(istype(ticker.mode.name, "cult"))
- var/datum/game_mode/cult/cult_mode = ticker.mode
+ if(istype(SSticker.mode.name, "cult"))
+ var/datum/game_mode/cult/cult_mode = SSticker.mode
if(mind == cult_mode.sacrifice_target)
return 1
return 0
@@ -121,7 +121,7 @@ var/global/list/all_cults = list()
var/datum/action/innate/cultcomm/C = new()
C.Grant(cult_mind.current)
update_cult_icons_added(cult_mind)
- to_chat(cult_mind.current, "You catch a glimpse of the Realm of [ticker.cultdat.entity_name], [ticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [ticker.cultdat.entity_name].")
+ to_chat(cult_mind.current, "You catch a glimpse of the Realm of [SSticker.cultdat.entity_name], [SSticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [SSticker.cultdat.entity_name].")
first_phase()
@@ -135,16 +135,16 @@ var/global/list/all_cults = list()
if("survive")
explanation = "Our knowledge must live on. Make sure at least [acolytes_needed] acolytes escape on the shuttle to spread their work on an another station."
if("convert")
- explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
+ explanation = "We must increase our influence before we can summon [SSticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
if("bloodspill")
- explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
+ explanation = "We must prepare this place for [SSticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
if("sacrifice")
if(sacrifice_target)
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune and three acolytes to do so."
else
explanation = "Free objective."
if("eldergod")
- explanation = "Summon [ticker.cultdat.entity_name] by invoking the 'Tear Reality' rune.The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin."
+ explanation = "Summon [SSticker.cultdat.entity_name] by invoking the 'Tear Reality' rune.The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin."
to_chat(cult_mind.current, "Objective #[obj_count]: [explanation]")
cult_mind.memory += "Objective #[obj_count]: [explanation]
"
@@ -179,7 +179,7 @@ var/global/list/all_cults = list()
/datum/game_mode/proc/add_cultist(datum/mind/cult_mind) //BASE
if(!istype(cult_mind))
return 0
- var/datum/game_mode/cult/cult_mode = ticker.mode
+ var/datum/game_mode/cult/cult_mode = SSticker.mode
if(!(cult_mind in cult) && is_convertable_to_cult(cult_mind))
cult += cult_mind
cult_mind.current.faction |= "cult"
@@ -314,10 +314,10 @@ var/global/list/all_cults = list()
feedback_add_details("cult_objective","cult_sacrifice|FAIL|GIBBED")
if("eldergod")
if(!eldergod)
- explanation = "Summon [ticker.cultdat.entity_name]. Success!"
+ explanation = "Summon [SSticker.cultdat.entity_name]. Success!"
feedback_add_details("cult_objective","cult_narsie|SUCCESS")
else
- explanation = "Summon [ticker.cultdat.entity_name]. Fail."
+ explanation = "Summon [SSticker.cultdat.entity_name]. Fail."
feedback_add_details("cult_objective","cult_narsie|FAIL")
if("slaughter")
if(demons_summoned)
@@ -345,10 +345,10 @@ var/global/list/all_cults = list()
if("harvest")
if(harvested > harvest_target)
- explanation = "Offer [harvest_target] humans for [ticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) Success!"
+ explanation = "Offer [harvest_target] humans for [SSticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) Success!"
feedback_add_details("cult_objective","cult_harvest|SUCCESS")
else
- explanation = "Offer [harvest_target] humans for [ticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) Fail!"
+ explanation = "Offer [harvest_target] humans for [SSticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) Fail!"
feedback_add_details("cult_objective","cult_harvest|FAIL")
if("hijack")
@@ -375,7 +375,7 @@ var/global/list/all_cults = list()
/datum/game_mode/proc/auto_declare_completion_cult()
- if(cult.len || (ticker && GAMEMODE_IS_CULT))
+ if(cult.len || (SSticker && GAMEMODE_IS_CULT))
var/text = "The cultists were:"
for(var/datum/mind/cultist in cult)
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index f38958e0c2b..e4274d18d49 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -218,7 +218,7 @@
name = "zealot's blindfold"
icon_state = "blindfold"
item_state = "blindfold"
- darkness_view = 8
+ see_in_dark = 8
flash_protect = 1
/obj/item/clothing/glasses/night/cultblind/equipped(mob/user, slot)
diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm
index beef75e103b..da4e190cb7f 100644
--- a/code/game/gamemodes/cult/cult_objectives.dm
+++ b/code/game/gamemodes/cult/cult_objectives.dm
@@ -19,10 +19,10 @@
switch(new_objective)
if("convert")
- explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
+ explanation = "We must increase our influence before we can summon [SSticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
if("bloodspill")
spilltarget = 100 + rand(0,GLOB.player_list.len * 3)
- explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
+ explanation = "We must prepare this place for [SSticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
if("sacrifice")
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual."
@@ -59,8 +59,8 @@
message_admins("The Cult has already completed [prenarsie_objectives] objectives! Nar-Sie objective unlocked.")
log_admin("The Cult has already completed [prenarsie_objectives] objectives! Nar-Sie objective unlocked.")
else
- message_admins("There are less than 4 cultists! [ticker.cultdat.entity_name] objective unlocked.")
- log_admin("There are less than 4 cultists! [ticker.cultdat.entity_name] objective unlocked.")
+ message_admins("There are less than 4 cultists! [SSticker.cultdat.entity_name] objective unlocked.")
+ log_admin("There are less than 4 cultists! [SSticker.cultdat.entity_name] objective unlocked.")
gtfo_phase()
if(!sacrificed.len && (new_objective != "sacrifice"))
@@ -76,10 +76,10 @@
switch(new_objective)
if("convert")
- explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name]. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
+ explanation = "We must increase our influence before we can summon [SSticker.cultdat.entity_name]. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
if("bloodspill")
spilltarget = 100 + rand(0,GLOB.player_list.len * 3)
- explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles."
+ explanation = "We must prepare this place for [SSticker.cultdat.entity_title1]'s coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles."
if("sacrifice")
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual."
@@ -111,7 +111,7 @@
if(prob(40))//split the chance of this
objectives += "eldergod"
- explanation = "Summon [ticker.cultdat.entity_name] on the Station via the use of the Tear Reality rune. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
+ explanation = "Summon [SSticker.cultdat.entity_name] on the Station via the use of the Tear Reality rune. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
else
objectives += "slaughter"
explanation = "Bring the Slaughter via the rune 'Bring forth the slaughter'. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
@@ -135,11 +135,11 @@
switch(last_objective)
if("harvest")
- explanation = "[ticker.cultdat.entity_title1] hungers for their first meal of this never-ending day. Offer them [harvest_target] humans in sacrifice."
+ explanation = "[SSticker.cultdat.entity_title1] hungers for their first meal of this never-ending day. Offer them [harvest_target] humans in sacrifice."
if("hijack")
- explanation = "[ticker.cultdat.entity_name] wishes for their troops to start the assault on Centcom immediately. Hijack the escape shuttle and don't let a single non-cultist board it."
+ explanation = "[SSticker.cultdat.entity_name] wishes for their troops to start the assault on Centcom immediately. Hijack the escape shuttle and don't let a single non-cultist board it."
if("massacre")
- explanation = "[ticker.cultdat.entity_name] wants to watch you as you massacre the remaining humans on the station (until less than [massacre_target] humans are left alive)."
+ explanation = "[SSticker.cultdat.entity_name] wants to watch you as you massacre the remaining humans on the station (until less than [massacre_target] humans are left alive)."
for(var/datum/mind/cult_mind in cult)
if(cult_mind)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index d561291c19f..fb6bb95a4a8 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -11,7 +11,7 @@
return
/obj/effect/rune/proc/check_icon()
- if(!ticker.mode)//work around for maps with runes and cultdat is not loaded all the way
+ if(!SSticker.mode)//work around for maps with runes and cultdat is not loaded all the way
var/bits = make_bit_triplet()
icon = get_rune(bits)
else
@@ -39,16 +39,16 @@
canbypass = 1
/obj/item/tome/New()
- if(!ticker.mode)
+ if(!SSticker.mode)
icon_state = "tome"
else
- icon_state = ticker.cultdat.tome_icon
+ icon_state = SSticker.cultdat.tome_icon
..()
/obj/item/tome/examine(mob/user)
..()
if(iscultist(user) || user.stat == DEAD)
- to_chat(user, "The scriptures of [ticker.cultdat.entity_title3]. Allows the scribing of runes and access to the knowledge archives of the cult of [ticker.cultdat.entity_name].")
+ to_chat(user, "The scriptures of [SSticker.cultdat.entity_title3]. Allows the scribing of runes and access to the knowledge archives of the cult of [SSticker.cultdat.entity_name].")
to_chat(user, "Striking another cultist with it will purge holy water from them.")
to_chat(user, "Striking a noncultist, however, will sear their flesh.")
@@ -91,7 +91,7 @@
/obj/item/tome/proc/read_tome(mob/user)
var/text = list()
- text += "