diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 9e6a407176b..907e5991f6d 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -1110,7 +1110,7 @@
"avr" = (/obj/structure/table/wood,/obj/item/toy/figure/wizard,/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/maintenance/fsmaint)
"avs" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/disposal)
"avt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/disposal)
-"avu" = (/obj/machinery/conveyor{dir = 6; id = "garbage"},/obj/effect/decal/warning_stripes/west,/obj/effect/decal/warning_stripes/south,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"avu" = (/obj/effect/decal/warning_stripes/west,/obj/effect/decal/warning_stripes/south,/obj/effect/decal/warning_stripes/northeastcorner,/obj/machinery/conveyor{dir = 9; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"avv" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/mineral/stacking_unit_console{machinedir = 8; pixel_x = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/maintenance/disposal)
"avw" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/effect/decal/warning_stripes/north,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/disposal)
"avx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/table/reinforced,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/meson,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/controlroom)
@@ -1172,7 +1172,7 @@
"awB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/maintenance/disposal)
"awC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plating,/area/maintenance/disposal)
"awD" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/deliveryChute{dir = 4},/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/effect/decal/warning_stripes/southwest,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/disposal)
-"awE" = (/obj/machinery/conveyor{dir = 9; id = "garbage"; verted = -1},/obj/effect/decal/warning_stripes/northeast,/obj/effect/decal/warning_stripes/southwestcorner,/obj/machinery/door/window/eastright{base_state = "left"; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"awE" = (/obj/effect/decal/warning_stripes/northeast,/obj/effect/decal/warning_stripes/southwestcorner,/obj/machinery/door/window/eastright{base_state = "left"; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor/northwest/ccw{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"awF" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/disposal)
"awG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/reinforced,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/analyzer,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/controlroom)
"awH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/controlroom)
@@ -1342,7 +1342,7 @@
"azP" = (/obj/machinery/light{dir = 1; on = 1},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/storage)
"azQ" = (/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/quartermaster/storage)
"azR" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space)
-"azS" = (/obj/machinery/conveyor{dir = 10; id = "garbage"; verted = -1},/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwestcorner,/obj/machinery/door/window/eastright{name = "Danger: Conveyor Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"azS" = (/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwestcorner,/obj/machinery/door/window/eastright{name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor/northeast/ccw{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"azT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "engsm"; name = "Supermatter Blast Doors"; opacity = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/engine/supermatter)
"azU" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "yellowfull"},/area/engine/controlroom)
"azV" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/controlroom)
@@ -1402,7 +1402,7 @@
"aAX" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aAY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aAZ" = (/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
-"aBa" = (/obj/machinery/conveyor{dir = 1; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aBa" = (/obj/machinery/conveyor/north{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aBb" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aBc" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/supply)
"aBd" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/supply)
@@ -1556,7 +1556,7 @@
"aDV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aDW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 4},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aDX" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/quartermaster/storage)
-"aDY" = (/obj/machinery/conveyor{dir = 6; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aDY" = (/obj/machinery/conveyor/northwest{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aDZ" = (/turf/space,/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless/catwalk,/area/engine/controlroom)
"aEa" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 9},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"aEb" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarport)
@@ -1667,7 +1667,7 @@
"aGc" = (/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/controlroom)
"aGd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/structure/table/reinforced,/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/item/tank/plasma,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/controlroom)
"aGe" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/hydroponics/abandoned_garden)
-"aGf" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aGf" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/obj/machinery/conveyor/west{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aGg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{icon_state = "yellowfull"},/area/engine/controlroom)
"aGh" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/controlroom)
"aGi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/controlroom)
@@ -1703,7 +1703,7 @@
"aGM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"aGN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/quartermaster/office)
"aGO" = (/turf/simulated/wall,/area/security/checkpoint/supply)
-"aGP" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aGP" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/west{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aGQ" = (/obj/structure/window/reinforced,/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 4},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aGR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aGS" = (/obj/docking_port/mobile/supply,/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_home"; name = "supply bay"; width = 12},/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/supply)
@@ -1761,7 +1761,7 @@
"aHS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep)
"aHT" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/conveyor{dir = 4; id = "cargodelivery"},/turf/simulated/floor/plating,/area/quartermaster/office)
"aHU" = (/obj/machinery/conveyor{dir = 4; id = "cargodelivery"},/turf/simulated/floor/plating,/area/quartermaster/office)
-"aHV" = (/obj/machinery/conveyor{dir = 9; id = "cargodelivery"; verted = -1},/turf/simulated/floor/plating,/area/quartermaster/office)
+"aHV" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/west{id = "QMLoad2"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
"aHW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/maintenance/fsmaint)
"aHX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plasteel,/area/maintenance/fsmaint)
"aHY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Bar Office Maintenance"; req_access_txt = "25"},/turf/simulated/floor/plasteel,/area/crew_quarters/bar)
@@ -1772,11 +1772,11 @@
"aId" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light_switch{pixel_x = -22},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/quartermaster/storage)
"aIe" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aIf" = (/obj/machinery/door_control{id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = 24; pixel_y = 8; req_access_txt = "0"},/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = 24; pixel_y = -8; req_access_txt = "0"},/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
-"aIg" = (/obj/machinery/conveyor{dir = 5; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"aIh" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"aIi" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"aIj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"aIk" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"aIg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/west{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aIh" = (/obj/machinery/conveyor/southeast{id = "cargodelivery"},/turf/simulated/floor/plating,/area/quartermaster/office)
+"aIi" = (/obj/machinery/conveyor/northeast{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aIj" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor/east{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aIk" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/east{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aIl" = (/obj/structure/sign/electricshock{pixel_y = 32},/obj/machinery/hydroponics/constructable,/obj/machinery/light/small{dir = 8},/obj/item/seeds/carrot,/turf/simulated/floor/plasteel{dir = 1; icon_state = "redcorner"},/area/security/prison)
"aIm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/cultivator,/turf/simulated/floor/plasteel,/area/security/prison)
"aIn" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/camera{c_tag = "Perma-Brig Garden"; network = list("SS13","Security")},/turf/simulated/floor/plasteel,/area/security/prison)
@@ -1835,8 +1835,8 @@
"aJo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aJp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aJq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
-"aJr" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/quartermaster/storage)
-"aJs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/conveyor{dir = 8; id = "QMLoad2"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aJr" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/east{id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"aJs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/east{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aJt" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aJu" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aJv" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -1848,7 +1848,7 @@
"aJB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/biogenerator,/turf/simulated/floor/plasteel,/area/security/prison)
"aJC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/prison)
"aJD" = (/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/controlroom)
-"aJE" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 8; id = "QMLoad2"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"aJE" = (/obj/machinery/conveyor/north{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aJF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/item/twohanded/required/kirbyplants,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -25},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/controlroom)
"aJG" = (/obj/structure/table/reinforced,/obj/machinery/light/small,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/item/multitool,/obj/item/multitool{pixel_x = 4; pixel_y = -4},/turf/simulated/floor/plasteel,/area/engine/controlroom)
"aJH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/controlroom)
@@ -2036,7 +2036,7 @@
"aNh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium)
"aNi" = (/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium)
"aNj" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium)
-"aNk" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "cargodelivery"; name = "deliver conveyor"; pixel_x = -10},/obj/effect/decal/warning_stripes/arrow,/obj/effect/decal/warning_stripes/yellow/partial,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/office)
+"aNk" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/quartermaster/storage)
"aNl" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office)
"aNm" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/office)
"aNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/office)
@@ -2049,8 +2049,8 @@
"aNu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aNv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{id_tag = "Cargo Cell"; name = "Cargo Cell Door"; req_access_txt = "63"},/turf/simulated/floor/plasteel,/area/security/checkpoint/supply)
"aNw" = (/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
-"aNx" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"aNy" = (/obj/machinery/conveyor{dir = 10; id = "QMLoad"; verted = -1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aNx" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/conveyor_switch/oneway{id = "cargodelivery"; name = "deliver conveyor"; pixel_x = -10},/obj/effect/decal/warning_stripes/arrow,/obj/effect/decal/warning_stripes/yellow/partial,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/office)
+"aNy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/conveyor_switch/oneway{id = "cargodisposals"; name = "Trash Filter Switch"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/office)
"aNz" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l"; icon_state = "burst_l"},/turf/space,/area/shuttle/supply)
"aNA" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/supply)
"aNB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r"; icon_state = "burst_r"},/turf/space,/area/shuttle/supply)
@@ -2200,7 +2200,7 @@
"aQp" = (/obj/machinery/door/firedoor,/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{dir = 4; name = "Cargo Desk"; req_access_txt = "50"},/obj/item/folder/yellow,/obj/item/pen,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/quartermaster/office)
"aQq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
"aQr" = (/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage)
-"aQs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "cargodisposals"; name = "Trash Filter Switch"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/office)
+"aQs" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/conveyor/northeast/ccw{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aQt" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/obj/structure/chair/stool/bar,/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium)
"aQu" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aQv" = (/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 1},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
@@ -2308,7 +2308,7 @@
"aSt" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/execution)
"aSu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/window/brigdoor/northright{dir = 2; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/door/window/brigdoor/northright{name = "Justice Chamber"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution)
"aSv" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/execution)
-"aSw" = (/obj/machinery/conveyor{dir = 1; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aSw" = (/obj/machinery/conveyor/east{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aSx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/outlet_injector/on,/turf/simulated/floor/plating,/area/maintenance/incinerator)
"aSy" = (/obj/machinery/door/poddoor{id_tag = "auxincineratorvent"; name = "Incineration Chamber Vent"},/turf/simulated/floor/engine,/area/maintenance/incinerator)
"aSz" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator)
@@ -10835,15 +10835,15 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjashashashashashabjatZabjashashashashashabjabjabiaaaabjaAeazRaAiayGaEaauKayFayTazUayVazTazXazYazZaAaaAbaAcaAdaBfazVaAgazWaBWayUaDZamhalZayXalZaAjaAkalIaAlaAlaAmambaAnalIaAoaApaAqaygaArareambatyaxbaAsaAtaAuaAvaAwaAxaxbaAyaAzaBuaAAaABaABaACaADaAEaxeaAFaAGaAHaCvaAJayAaAKaALaAMaANaAOaAPaAQaARaASaATaAUaAVaAVaAWaFOaFOaFOaFOaFOaAXaBnaBaaBbabjaaaaBcaBdaBdaBdaBdaBdaBeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaasVataataataataatbatZatKatLatLatLatLatUaaaabiabiabjabjaBVayGaAiayGaDCauKaAfaCiayRaCSazTazXaBiazZaBXaAbaBkaAdaBfaAhaBmaCWaDAatdabjalIalZaqlaBoaBpasqareambaAlaBqaBraBsalIaBtalIalIalIalIaqlaqFatyaxbaBwaBvaBxaByaBzaBAaxbaxdaAzaCwaxeaCwaxeaCwaxeaEBaxeaBCaBDaBEayAaBFayAaBGaBHaBIaBJaBKaBLaBMaBNaBOaAYaBQaBRaBSaBTaBSaEYaIeaEQaBPaFaaBnaBaaBZabjaaaaCaaCbaCbaCcaCbaCbaCaacFaaaaaaabjabjabjacFacFacFacFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjatYatYatYatYatYabjaEbabjatYatYatYatYatYabjabjabjaaaabjaAeaAiaAiaAiaEaatdaBhaCiaAgaCSazTazXaCgazZaAaaAbaChaAdaBfaCUaAgaCWaBlaCkabjalIawZaClaClaClaClaClaClaClaClaClaCmaClaClalIaCnaCoambauRalZayiaxbaCpaCqaxbaCraCsaxbaxbaCtaxeaCuaxeaEOaxeaFQaAzaCxaxeaBCaCyaCzayAaCAayAaAKaCBaCCaCDaCEaCFaCGaCHayAaCJaCKaDiaCLaCMaCNaCNaBSaBSaBSaFaaCOaBaaCPaCQaCRaCaaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaabjaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaabjaaaaaaabjaEcabjaaaaaaabjaaaaaaaaaabiabjaaaaaaaBVayGaAiayGaDCauKaCdaDeaCVaDhayPayMaCXaCYaCZaDaaDbayMayLaEeaDdaElaCeaDgaFzamhalZaClaDkaDlaDmaDnaDoaDpaDqaDraEkaFmaClaDsaDtaDuaDvaDwaDuaDxaDyaDzaDDaDBaEwaECaDEaDFaDGaDHaDHaDHaDHaDHaDHaDIaDHaDHaDJaCyaCzayAaDKayAaAKaBYaBIaCfaDNaCIaDjaDQaDSaDTaDWaDUaCNaDVaBSaEQaEXaEYaEZaFaaDXaDYaGfaGPaJsaJEaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaabjaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaabjaaaaaaabjaEcabjaaaaaaabjaaaaaaaaaabiabjaaaaaaaBVayGaAiayGaDCauKaCdaDeaCVaDhayPayMaCXaCYaCZaDaaDbayMayLaEeaDdaElaCeaDgaFzamhalZaClaDkaDlaDmaDnaDoaDpaDqaDraEkaFmaClaDsaDtaDuaDvaDwaDuaDxaDyaDzaDDaDBaEwaECaDEaDFaDGaDHaDHaDHaDHaDHaDHaDIaDHaDHaDJaCyaCzayAaDKayAaAKaBYaBIaCfaDNaCIaDjaDQaDSaDTaDWaDUaCNaDVaBSaEQaEXaEYaEZaFaaDXaDYaGPaGfaIgaHVaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaabjaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabiabjabjabjaEcabjabjabiabiabiabjabiabiabjabiabjaAeazRaAiayGaEaauKaCdaFdaEdaFlaCjaCjaEgaEhaAaaEiaEgaCTaDcaFVaEmaGhaEoauKaEpamhambaClaEqaEraEqaEqaEraEraEqaEsaEtaEraClaEuawXalIalIalIalIalIalIaEvaEJaExauVauVaEyaEyaEzaEAatNatNaprapravUapraHWaHXaEDaEEaEFayAaEGaDLaEIaDMaEKaDOaDPaDRaEHaEPayAaFpaDWaERaESaETaESaESaEUaEUaEVaFaaEWaFMaFNaFOaFPaFbaCbaCbaCbaCbaCbaCaacFabjabjabjabjabjabjacFacFacFacFaaaaaaaaaabiabiabiaaaaaaaaaaaaaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEcabjaaaaaaabjaaaaaaabjabjabjaaaabjaJJaITaDCaITaDCauKaCdaFdaFcaHcaDfaEfaFgaFhaCZaFhayMaEjaEjaFVaFjaGhaFkauKaLQamhambaClaGeaEraEqaEqaEraFnaEraEqaFoaHbaClaFqaFraFsaFtaFuaFvaFwaFxaFyaGMaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFBaCyaFCayAaFDayAaFEaFFaFGaFHaFIaFJaFKaFLayAaLVaGQaGRaCNaDVaCNaHzaIeaEQaEZaFaaEWaIfaFRaFSaBZaCaaFTaCbaCbaCbaFUaCaacFaaaaaaabjaaaaaaabjaaaabjaaaabjaaaaaaaaaabiabjabjabjaaaaaaaaaabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatcabjabjabjabjabjabjabjabjabjacFabjaBVaEaaBVaEaaBVaxHaxGaHoaFWaEnaFeaFfaFeaFiaFXaFYaFZaGaaFiaGbaGgaHpaGcatdaEpalIaqFaClaEraEraGjaGkaGkaGlaGmaEraFoaGnaClaEuaFraGoaGpaGqaGraGraGsaGtaGuaFAaGvaGwaGxaGyaGzaFAaGAaGBaGCaGDaGEaGFaGGaFAaGHaGIaGJaGKaGKaGKaGLaELaGNaGLaGOaGOaGOaGOaGOaJmaKbaDiaBSaDVaCNaCNaCNaCNaBSaKIaDXaKJaFNaKKaFPaFbaCbaCbaCbaCbaCbaGSacFabjabjabjabjabjabjabjabjaaaabjaaaaaaaaaabjabjaGTaGUaGVaGTaGVaGTaGTabjaaaabiabiaaaaaaaaaaaaaaaaGWabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjabjabjaGXaGYaGYaGYaGYaGZaHaaGZaGZaGZaHaaHaaGZatdaGdaJFaJHaHeaHfaHgaHhaHiaGiaHkaHhaHlaHmaHnaMEaJDaJGatdaLQalIambaClaHdaHjaHqaHraHsaHtaHuaHvaHwaHdaClaEuaFraHAaHBaHCaHDaHEaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHNaHNaHNaHPaHNaHQaHRaFAaBCaCyaJcaHTaHUaHVaEMaJgaKvaHZaGOaIaaIbaIcaGOaIdaBSaDUaEQaKLaBSaEXaEQaMfaEZaKIaDXaIgaIhaIiaIjaIkaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabjabjabiabiabiabjabjabjaGTaIlaImaInaIoaIpaGTabjabjabjabjabjacFacFacFabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjaGXaGXaGXaIqaIraIsaGYaItaIuaIvaIwaIxaIyaIzaIAaGZaGZaGZaIBaICaIDaIEaIFaIGaIHaIIaIDaIJaIKaILaJDatdatdatdaEpalIalZaClaClaIMaClaClaClaHxaHyaClaIPaClaClaIQaFraFxaFxaFxaFxaFxaFxaIRaHSaHYaISaIVaIWaIXaIYaFAaIZaJaaIZaIZaJaaIZaJbaFAaBCaCyaKwaJdaJdaENaENaJfaKxaJhaJiaJjaJkaJlaMwaJnaJoaJpaJoaJqaBSaBSaBSaBSaBSaKIaJraSwaJtaJuaJvaCaaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabiaaaaaaabjaaaaaaaaaabjaJwaJxaJyaJzaJAaJBaJCaaaabjaaaabjaaaabjaaaabjaaaabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZaLTaJKaJLaKoaLlaJIaJMaLraMOaJNaJOaJOaJOaJPaJQaJRaJSaJUaGZaJTaJWaCkatdatdaJVaJZaJXatdatdaJYaKXauKatdabjaaaaLQalIaKaambauRauRalZalZauRaINaKcaKdaKeaKfaKfaKgaFraKhaKiaKjaKkaKlaFxaKmaIUaFAaKnaIXaIXaIXaKpaKqaKraKsaKsaKsaKsaKsaKsaFAaKtaKuaKwaJdaMaaNkaNpaKyaKxaKzaKAaKBaKCaKDaKEaKFaKGaKHaNwaOQaBSaOSaQnaEQaNwaKIaDXaSwaBZabjaaaaKMaKNaCbaKOaCbaKPaKQacFaaaaaaabjabjabjabjabjabiabjabjabjabjabjabjabjaGTaKRaKSaKTaKUaKVaGTabjabjabjabjaKWabjaaaabjaKWabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjaGXaGXaGXaKYaKZaLcaLaaLbaLkaLdaLeaLfaLgaLhaLiaLjaPsaLmaLnaLoaLqaLpaPEaLsaLtaLuaLqatdaLvaLwaMxatdabjabjaEpalIalJaLxasqaqlambaqlaLyaLzaLAalZaLBaLCalZaLDaFraLEaLFaLGaLHaLHaLIaLJaLKaFAaLLaLMaLNaLOaLPaFAaQtaTpaTpaTpaVQaTpaZZaLUaBCaCyaJcaQpaLWaLXaLYaLZaQsaJhaMbaMcaMdaMeaQoaMgaESaMhaBSaMiaMjaMkaMkaMjaMlaKIaDXaSwaBZabjaaaaMmaMnaMoaMoaMoaMnaMpaaaaaaaaaabjaaZaaaabjaaaabiaaaabjaGTaGTaGTaGTaGVaGTaMqaMraMsaMtaMqaGUaGTaMuaJCaGTaMvaIOaIOaIOaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFbaNacFacFaMyaMyaMyaMyaMzaMAaLkaMBaMCaMDaMIaMFaMGaMHaMKaMJaMLaMMaMNatdaRaaMPaMQaMRaNZatdaMSaMTaMUatdabjaaaaLQalIalIalIalIalIaqFaMVaMVaMWaMWaMWaMXaMYaMWaMZaFraNaaNbaNcaNdaNeaHFaNfaNgaFAaFAaFAaFAaFAaFAaFAaNhaNiaNiaNiaNiaNiaNjaLUaBCaCyaRHaJdaNlaNmaNnaNoaTiaJhaGOaNqaNraNsaGOaNtaCNaNuaEYaQqaBSaOSaQraEXaEZaKIaNxaNyaBZabjaaaaaaaNzaNAaNAaNAaNBaaaaaaaaaaaaabjaaaaaaabjaaaabjaaaabjaGUaNCaMqaNDaNEaNFaNGaNHaNIaNJaNKaNLaNMaNNaNOaNPaMvaNQaNRaNSaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjabjabjaGXaGYaGYaGYaGYaGZaHaaGZaGZaGZaHaaHaaGZatdaGdaJFaJHaHeaHfaHgaHhaHiaGiaHkaHhaHlaHmaHnaMEaJDaJGatdaLQalIambaClaHdaHjaHqaHraHsaHtaHuaHvaHwaHdaClaEuaFraHAaHBaHCaHDaHEaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHNaHNaHNaHPaHNaHQaHRaFAaBCaCyaJcaHTaHUaIhaEMaJgaKvaHZaGOaIaaIbaIcaGOaIdaBSaDUaEQaKLaBSaEXaEQaMfaEZaKIaDXaIiaIkaIjaJsaJraCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabjabjabiabiabiabjabjabjaGTaIlaImaInaIoaIpaGTabjabjabjabjabjacFacFacFabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjaGXaGXaGXaIqaIraIsaGYaItaIuaIvaIwaIxaIyaIzaIAaGZaGZaGZaIBaICaIDaIEaIFaIGaIHaIIaIDaIJaIKaILaJDatdatdatdaEpalIalZaClaClaIMaClaClaClaHxaHyaClaIPaClaClaIQaFraFxaFxaFxaFxaFxaFxaIRaHSaHYaISaIVaIWaIXaIYaFAaIZaJaaIZaIZaJaaIZaJbaFAaBCaCyaKwaJdaJdaENaENaJfaKxaJhaJiaJjaJkaJlaMwaJnaJoaJpaJoaJqaBSaBSaBSaBSaBSaKIaNkaJEaJtaJuaJvaCaaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabiaaaaaaabjaaaaaaaaaabjaJwaJxaJyaJzaJAaJBaJCaaaabjaaaabjaaaabjaaaabjaaaabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZaLTaJKaJLaKoaLlaJIaJMaLraMOaJNaJOaJOaJOaJPaJQaJRaJSaJUaGZaJTaJWaCkatdatdaJVaJZaJXatdatdaJYaKXauKatdabjaaaaLQalIaKaambauRauRalZalZauRaINaKcaKdaKeaKfaKfaKgaFraKhaKiaKjaKkaKlaFxaKmaIUaFAaKnaIXaIXaIXaKpaKqaKraKsaKsaKsaKsaKsaKsaFAaKtaKuaKwaJdaMaaNxaNpaKyaKxaKzaKAaKBaKCaKDaKEaKFaKGaKHaNwaOQaBSaOSaQnaEQaNwaKIaDXaJEaBZabjaaaaKMaKNaCbaKOaCbaKPaKQacFaaaaaaabjabjabjabjabjabiabjabjabjabjabjabjabjaGTaKRaKSaKTaKUaKVaGTabjabjabjabjaKWabjaaaabjaKWabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjaGXaGXaGXaKYaKZaLcaLaaLbaLkaLdaLeaLfaLgaLhaLiaLjaPsaLmaLnaLoaLqaLpaPEaLsaLtaLuaLqatdaLvaLwaMxatdabjabjaEpalIalJaLxasqaqlambaqlaLyaLzaLAalZaLBaLCalZaLDaFraLEaLFaLGaLHaLHaLIaLJaLKaFAaLLaLMaLNaLOaLPaFAaQtaTpaTpaTpaVQaTpaZZaLUaBCaCyaJcaQpaLWaLXaLYaLZaNyaJhaMbaMcaMdaMeaQoaMgaESaMhaBSaMiaMjaMkaMkaMjaMlaKIaDXaJEaBZabjaaaaMmaMnaMoaMoaMoaMnaMpaaaaaaaaaabjaaZaaaabjaaaabiaaaabjaGTaGTaGTaGTaGVaGTaMqaMraMsaMtaMqaGUaGTaMuaJCaGTaMvaIOaIOaIOaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFbaNacFacFaMyaMyaMyaMyaMzaMAaLkaMBaMCaMDaMIaMFaMGaMHaMKaMJaMLaMMaMNatdaRaaMPaMQaMRaNZatdaMSaMTaMUatdabjaaaaLQalIalIalIalIalIaqFaMVaMVaMWaMWaMWaMXaMYaMWaMZaFraNaaNbaNcaNdaNeaHFaNfaNgaFAaFAaFAaFAaFAaFAaFAaNhaNiaNiaNiaNiaNiaNjaLUaBCaCyaRHaJdaNlaNmaNnaNoaTiaJhaGOaNqaNraNsaGOaNtaCNaNuaEYaQqaBSaOSaQraEXaEZaKIaSwaQsaBZabjaaaaaaaNzaNAaNAaNAaNBaaaaaaaaaaaaabjaaaaaaabjaaaabjaaaabjaGUaNCaMqaNDaNEaNFaNGaNHaNIaNJaNKaNLaNMaNNaNOaNPaMvaNQaNRaNSaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjaNTaMyaMyaNUaNVaNWaNXaNYaOdaOaaObaOcaOhaObaObaOeaOfaOgaOgaOjaOgaOgaOgaOiaOmaOkaOgaOgaOgaOgaOgaOlabjabjbaPbaSaOobaSaFzalIambaMVaOpaOqaOraOsaOtaOuaMWaOvaOwaOxaOxaOxaOxaOxaOxaOyaOzaLUaOAaOBaOCaODaOEaOFaNiaOGaLRaLRaLRaNiaNiaOHaBCaCyaOIaGKaOJaOKaOLaNoaOMaONaGOaOOaOPaKEaGOaQuaBSaNuaCNaORaCNaCNaCNaBSaBSaKIaQvaQvaBZabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaabjaaaabjabjabjaGUaOTaOUaOVaOWaOXaOVaOYaOZaPaaOVaPbaPcaPdaPeaPfaMvaPgaPhaPiaPjabjabiaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFaaaaPkaPlaPmaPnaPoaPpaPqaPraPtaPBaPuaPvaPwaPwaPwaPxaPyaPzaPAaTraPAaPCaPAaPDaTTaPFaPGaPHaPHaPHaPIaOgabjaaaabjaaaabjaaaaLQalIambaMWaPJaPKaPLaPMaPNaPOaMVaOvaOwaPPaPQaPRaPSaPTaOxaOyaOzaLUaPUaPVaPWaPXaPYaPZaNiaQaaQbaQcaQdaLRaNiaOHaBCaCyaCzaGKaQeaQfaQgaQhaQiaJhaQjaQkaQlaQmaJiaSqaKKaTVaUjaUoaWuaWzaKKaWCaWGaXUaYtaYtaQwabjabjabjabjabjabjabjabjabjabjabiabiabiabiabiabiabjabjaGTaGTaGTaGTaGTaQxaQyaQzaQAaQBaQCaQDaQEaNOaQFaQGaQHaQIaMvaQJaQKaQLaMvabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjaNTaMyaMyaQMaQNaQOaQNaQPaQQaQRaObaQSaQTaQUaQVaQWaQXaQYaQZaUMaQZaRbaRcaRdaTTaReaRfaRgaRhaRiaPHaOgabjabjabjabjabjabjaEpalIawZaMYaRjaRkaRlaRmaRnaRoaMWaMZaOwaRpaRqaRraRqaOnaRsaRtaRvaLUaRwaRxaPWaRyaRzaRAaNiaRBaRCaRDaREaRFaRGaXRaRIaRJaRKaGKaRLaRMaRNaROaGKaRPaMbaRQaRRaRSaRTaRUaRVazLaRWaRXaRVazLazLaRYaRZaSaaSaaSaaSbaScaSdaSeaSbaSfaSgaSgaSgabjaaaabjaaaaaaaaaaaaaaaaaaabjaGTaShaSiaSjaGTaSkaSlaSmaSnaSoaSpaQEaTbaSraQFaSsaPjaMvaMvaStaSuaSvaMvaMvaMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11014,3 +11014,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 1afc112dbec..a7e94092d84 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -84,10 +84,10 @@
"abF" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abG" = (/obj/structure/table,/obj/item/radio/beacon/syndicate/bomb{pixel_y = 5},/obj/item/radio/beacon/syndicate/bomb,/turf/unsimulated/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abH" = (/obj/structure/table,/obj/item/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2; pixel_z = 0},/obj/item/grenade/syndieminibomb{pixel_x = -1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"abI" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
+"abI" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "foreport"; name = "Fore-Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxport)
"abJ" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abK" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"abL" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "foreport"; name = "Fore-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxport)
+"abL" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
"abM" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
"abN" = (/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 = "floor4"},/area/shuttle/syndicate)
"abO" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
@@ -106,7 +106,7 @@
"acb" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/shuttle/syndicate)
"acc" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/syndicate)
"acd" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r"; icon_state = "propulsion_r"},/turf/space,/area/shuttle/syndicate)
-"ace" = (/obj/structure/cable,/obj/machinery/power/solar{id = "foreport"; name = "Fore-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxport)
+"ace" = (/obj/structure/cable,/obj/machinery/power/solar{id = "foreport"; name = "Fore-Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxport)
"acf" = (/turf/space,/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
"acg" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/permabrig)
"ach" = (/obj/machinery/seed_extractor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig)
@@ -163,7 +163,7 @@
"adg" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2)
"adh" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/obj/docking_port/mobile/pod{id = "pod2"; name = "escape pod 2"},/turf/simulated/shuttle/floor,/area/shuttle/pod_2)
"adi" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
-"adj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
+"adj" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"adk" = (/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_y = 32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/security/permabrig)
"adl" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Unisex Showers"; req_access_txt = "0"},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig)
"adm" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig)
@@ -186,7 +186,7 @@
"adD" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 2; pixel_y = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23},/turf/simulated/floor/plating,/area/security/permabrig)
"adE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig)
"adF" = (/obj/structure/table,/obj/item/clothing/glasses/welding,/obj/item/storage/toolbox/mechanical,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
-"adG" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
+"adG" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
"adH" = (/obj/structure/rack,/obj/item/tank/jetpack/oxygen,/obj/item/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/shoes/magboots,/obj/machinery/camera{c_tag = "Engineering Secure Storage South"; dir = 4; network = list("SS13")},/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/head/helmet/space/hardsuit/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"adI" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker{pixel_x = 4; pixel_y = 4},/obj/item/reagent_containers/glass/beaker{pixel_x = -5; pixel_y = 6},/obj/item/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/permabrig)
"adJ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/vox)
@@ -212,7 +212,7 @@
"aed" = (/obj/machinery/light/small{dir = 4},/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig)
"aee" = (/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"aef" = (/turf/simulated/floor/plating/airless/catwalk,/turf/space,/area/space)
-"aeg" = (/obj/structure/cable,/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
+"aeg" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"aeh" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/vox)
"aei" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
"aej" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25; req_access_txt = "152"},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
@@ -232,7 +232,7 @@
"aex" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "executionfireblast"; name = "blast door"; opacity = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"; tag = "icon-whitehall (WEST)"},/area/security/permabrig)
"aey" = (/obj/machinery/door/window/brigdoor{dir = 2; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 1; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "executionfireblast"; name = "blast door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig)
"aez" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "executionfireblast"; name = "blast door"; opacity = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"; tag = "icon-whitehall (WEST)"},/area/security/permabrig)
-"aeA" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
+"aeA" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"aeB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/security/permabrig)
"aeC" = (/obj/structure/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig)
"aeD" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
@@ -272,9 +272,9 @@
"afl" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/vox)
"afm" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; req_one_access_txt = "152"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox)
"afn" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access_txt = "152"; req_one_access = null; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
-"afo" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
+"afo" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"afp" = (/obj/structure/chair/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig)
-"afq" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
+"afq" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"afr" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/podbay)
"afs" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/podbay)
"aft" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/security/permabrig)
@@ -290,7 +290,7 @@
"afD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig)
"afE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig)
"afF" = (/obj/structure/closet/emcloset,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
-"afG" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
+"afG" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"afH" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/pod_3)
"afI" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/pod_3)
"afJ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
@@ -314,7 +314,7 @@
"agb" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hosspace"; name = "privacy shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/hos)
"agc" = (/obj/machinery/camera{c_tag = "Atmospherics - Starboard Aft"; dir = 1; network = list("SS13")},/obj/structure/lattice,/turf/space,/area/security/armoury)
"agd" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/engine,/area/security/podbay)
-"age" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
+"age" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
"agf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig)
"agg" = (/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"agh" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/obj/docking_port/mobile/pod{dir = 4; id = "pod3"; name = "escape pod 3"},/turf/simulated/shuttle/floor,/area/shuttle/pod_3)
@@ -323,8 +323,8 @@
"agk" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/shuttle/plating,/area/shuttle/pod_3)
"agl" = (/obj/machinery/door/airlock/hatch{req_access_txt = "152"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
"agm" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig)
-"agn" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard)
-"ago" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
+"agn" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
+"ago" = (/obj/structure/cable,/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
"agp" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 3"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig)
"agq" = (/obj/structure/table,/obj/item/paper,/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig)
"agr" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hosspace"; name = "privacy shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/hos)
@@ -634,7 +634,7 @@
"amj" = (/obj/structure/chair{dir = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"amk" = (/turf/simulated/wall/r_wall,/area/engine/gravitygenerator)
"aml" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/spot,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"amm" = (/obj/machinery/conveyor{dir = 2; id = "garbage"; layer = 2.7},/obj/machinery/door/poddoor/preopen{id_tag = "Disposal Exit"; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"amm" = (/obj/machinery/conveyor_switch/oneway{id = "garbage"; name = "disposal coveyor"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/disposal)
"amn" = (/obj/machinery/door_control{id = "trash"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id_tag = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/chair/stool,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal)
"amo" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fore)
"amp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
@@ -695,7 +695,7 @@
"ans" = (/turf/simulated/wall,/area/maintenance/auxsolarstarboard)
"ant" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 2},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
"anu" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
-"anv" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"anv" = (/obj/machinery/door/poddoor/preopen{id_tag = "Disposal Exit"; name = "disposal exit vent"},/obj/machinery/conveyor/north{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"anw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal)
"anx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/disposal)
"any" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/disposal)
@@ -770,9 +770,9 @@
"aoP" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"aoQ" = (/obj/item/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"aoR" = (/obj/item/clothing/head/bearpelt,/obj/item/xenos_claw,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"aoS" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"aoS" = (/obj/machinery/conveyor/north{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"aoT" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; layer = 3},/obj/structure/disposalpipe/trunk{dir = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
-"aoU" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"aoU" = (/obj/structure/sign/vacuum{pixel_x = -32},/obj/machinery/conveyor/north{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"aoV" = (/obj/machinery/mineral/stacking_machine,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
"aoW" = (/obj/structure/table,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_y = 26},/obj/machinery/light/small{dir = 1},/obj/item/folder/red{pixel_x = 3},/obj/item/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/healthanalyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig)
"aoX" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -780,7 +780,7 @@
"aoZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"apa" = (/obj/machinery/door/airlock/maintenance{name = "Secure Storage Room"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"apb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
-"apc" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"apc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
"apd" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"ape" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/starboard)
"apf" = (/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -846,9 +846,9 @@
"aqn" = (/obj/item/clothing/head/collectable/xenom,/obj/item/clothing/head/chicken,/obj/item/aiModule/syndicate,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"aqo" = (/obj/item/stack/spacecash/c50,/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"aqp" = (/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c500,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"aqq" = (/obj/machinery/light/small{dir = 8},/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"aqr" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"aqs" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 9; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"aqq" = (/obj/machinery/conveyor/west{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"aqr" = (/obj/machinery/light/small{dir = 8},/obj/machinery/conveyor/northwest{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"aqs" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor/northwest/ccw{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"aqt" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard)
"aqu" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore)
"aqv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -900,7 +900,7 @@
"arp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arr" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/starboard)
-"ars" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposaloutlet{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"ars" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/conveyor/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
"art" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator)
"aru" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator)
"arv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator)
@@ -911,10 +911,10 @@
"arA" = (/turf/simulated/floor/plating/airless,/area/space)
"arB" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
"arC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
-"arD" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"arE" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"arF" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler,/turf/simulated/floor/plating,/area/maintenance/disposal)
-"arG" = (/obj/machinery/door/window/eastright{dir = 4; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"arD" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"arE" = (/obj/machinery/recycler,/obj/machinery/conveyor/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"arF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/conveyor/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"arG" = (/obj/machinery/door/window/eastright{dir = 4; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor/northeast/ccw{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"arH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fore)
"arI" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"arJ" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -1043,7 +1043,7 @@
"auc" = (/obj/structure/chair{dir = 8},/obj/machinery/flasher{id = "gulagshuttleflasher"; pixel_x = 25},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/siberia)
"aud" = (/obj/item/mmi{name = "man-machine interface"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard)
"aue" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator)
-"auf" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Disposals"},/obj/structure/plasticflaps{opacity = 0},/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/window/northright{dir = 2; name = "delivery door"; req_access_txt = "31"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"auf" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Disposals"},/obj/structure/plasticflaps{opacity = 0},/obj/machinery/door/window/northright{dir = 2; name = "delivery door"; req_access_txt = "31"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/disposal)
"aug" = (/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"},/turf/simulated/wall,/area/maintenance/disposal)
"auh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig)
"aui" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/engine,/area/security/podbay)
@@ -1126,7 +1126,7 @@
"avH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/terminal,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator)
"avI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator)
"avJ" = (/obj/machinery/vending/cigarette,/obj/structure/extinguisher_cabinet{pixel_x = 27},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
-"avK" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"; movedir = 8},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"avK" = (/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 23},/obj/machinery/status_display{density = 0; pixel_y = 32},/obj/machinery/conveyor/north{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"avL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"avM" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"avN" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/pod_4)
@@ -1143,7 +1143,7 @@
"avY" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"avZ" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/processing)
"awa" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep)
-"awb" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"; movedir = 8},/obj/structure/plasticflaps,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"awb" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/conveyor/north{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"awc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"awd" = (/turf/simulated/wall/r_wall,/area/security/processing)
"awe" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -1243,7 +1243,7 @@
"axU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/fore)
"axV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"axW" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/security/main)
-"axX" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"axX" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad2"; pixel_x = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"axY" = (/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep)
"axZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fore)
"aya" = (/obj/structure/chair/wood/normal,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
@@ -1255,7 +1255,7 @@
"ayg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/sleep)
"ayh" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/sleep)
"ayi" = (/turf/simulated/floor/carpet,/area/crew_quarters/sleep)
-"ayj" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"ayj" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
"ayk" = (/obj/structure/closet/crate/hydroponics,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard)
"ayl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard)
"aym" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -2093,7 +2093,7 @@
"aOm" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/space)
"aOn" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/supply)
"aOo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/crew_quarters/courtroom)
-"aOp" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/conveyor{dir = 2; id = "QMLoad2"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aOp" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aOq" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/space)
"aOr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aOs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
@@ -2135,7 +2135,7 @@
"aPc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig)
"aPd" = (/obj/machinery/the_singularitygen{anchored = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/space)
"aPe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
-"aPf" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad2"; pixel_x = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
+"aPf" = (/obj/structure/plasticflaps,/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aPg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/space)
"aPh" = (/obj/structure/table,/obj/item/hatchet,/obj/item/crowbar,/obj/machinery/light{dir = 1},/obj/item/plant_analyzer,/obj/item/reagent_containers/glass/bucket,/obj/item/cultivator,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"})
"aPi" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"})
@@ -2160,10 +2160,10 @@
"aPB" = (/obj/item/crowbar/red,/turf/simulated/floor/plating,/area/construction)
"aPC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hop"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"aPD" = (/obj/machinery/light_construct{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/construction)
-"aPE" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"aPE" = (/obj/machinery/conveyor/northeast/ccw{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aPF" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hop"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"aPG" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hop"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
-"aPH" = (/obj/machinery/conveyor{dir = 10; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aPH" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
"aPI" = (/obj/machinery/seed_extractor,/obj/machinery/alarm{pixel_y = 23},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"})
"aPJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aPK" = (/obj/structure/table,/obj/machinery/computer/guestpass,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering)
@@ -2259,7 +2259,7 @@
"aRw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/storage/primary)
"aRx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/storage/primary)
"aRy" = (/obj/structure/mirror{pixel_x = 28},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"})
-"aRz" = (/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 23},/obj/machinery/status_display{density = 0; pixel_y = 32},/obj/machinery/conveyor{dir = 2; id = "QMLoad2"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aRz" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aRA" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
"aRB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aRC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
@@ -2443,10 +2443,10 @@
"aUY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/construction)
"aUZ" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/flashlight,/turf/simulated/floor/plasteel,/area/construction)
"aVa" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
-"aVb" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"aVb" = (/obj/structure/plasticflaps,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aVc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"})
"aVd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
-"aVe" = (/obj/machinery/conveyor{dir = 9; id = "QMLoad"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aVe" = (/obj/machinery/conveyor/northwest/ccw{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aVf" = (/obj/machinery/vending/tool,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering)
"aVg" = (/obj/machinery/vending/engivend,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering)
"aVh" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering)
@@ -2531,7 +2531,7 @@
"aWI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/construction)
"aWJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/construction)
"aWK" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/storage/hazardvest,/turf/simulated/floor/plasteel,/area/construction)
-"aWL" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aWL" = (/obj/machinery/conveyor/north{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aWM" = (/obj/structure/disposalpipe/segment,/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aWN" = (/obj/machinery/computer/atmos_alert,/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)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/firealarm{dir = 8; pixel_x = -26},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering)
"aWO" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor/plasteel{dir = 10; icon_state = "brown"},/area/quartermaster/qm)
@@ -2612,7 +2612,7 @@
"aYl" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aYm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aYn" = (/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"})
-"aYo" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad"; pixel_x = 6},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
+"aYo" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad"; pixel_x = 6},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aYp" = (/obj/machinery/door/airlock/maintenance{name = "Tool Storage Maintenance"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aYq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/storage/primary)
"aYr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/storage/primary)
@@ -2670,7 +2670,7 @@
"aZr" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating,/area/shuttle/supply)
"aZs" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/supply)
"aZt" = (/turf/simulated/wall,/area/quartermaster/storage)
-"aZu" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay - Port"; dir = 4; network = list("SS13")},/obj/machinery/conveyor{dir = 2; id = "QMLoad"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"aZu" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay - Port"; dir = 4; network = list("SS13")},/obj/machinery/conveyor/north{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aZv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aZw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering)
"aZx" = (/obj/machinery/flasher{id = "AI"; pixel_y = -24},/obj/machinery/porta_turret{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload)
@@ -2967,7 +2967,7 @@
"bfc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/camera/motion{c_tag = "Mini Satellite Exterior North-West"; dir = 8; network = list("SS13","MiniSat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bfd" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer RC"; pixel_y = 32},/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office)
"bfe" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Engine Room"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engineering)
-"bff" = (/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
+"bff" = (/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow{dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bfg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bfh" = (/obj/machinery/light_switch{pixel_x = -38},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bfi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
@@ -3622,7 +3622,7 @@
"brH" = (/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; name = "Deliveries"; req_access_txt = "50"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"})
"brI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai)
"brJ" = (/obj/machinery/door/firedoor,/obj/machinery/mineral/ore_redemption,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/quartermaster/office{name = "\improper Cargo Office"})
-"brK" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "packageExternal"; pixel_y = 18},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"})
+"brK" = (/obj/machinery/conveyor_switch/oneway{id = "packageExternal"; pixel_y = 18},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"})
"brL" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/hallway/primary/port)
"brM" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/hallway/primary/port)
"brN" = (/obj/structure/sign/directions/engineering{dir = 4},/obj/structure/sign/directions/security{dir = 8; pixel_y = 8},/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
@@ -6539,8 +6539,8 @@
"cvM" = (/obj/structure/table,/obj/machinery/computer/crew,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception)
"cvN" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/reception)
"cvO" = (/obj/structure/table,/obj/item/radio/intercom/department/medbay{pixel_y = 4},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 4; pixel_y = -4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception)
-"cvP" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
-"cvQ" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cvP" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/port)
+"cvQ" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cvR" = (/obj/structure/chair/office/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception)
"cvS" = (/obj/machinery/door_control{id = "surgeryobs2"; name = "Privacy Shutters Control"; pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1)
"cvT" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception)
@@ -6763,7 +6763,7 @@
"cAc" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cAd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cAe" = (/obj/structure/closet,/obj/item/storage/toolbox/emergency,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cAf" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/port)
+"cAf" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cAg" = (/obj/structure/closet,/obj/item/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/flashlight,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cAh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3)
"cAi" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry)
@@ -6867,11 +6867,11 @@
"cCc" = (/obj/structure/table/glass,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_y = -32},/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"cCd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/chair,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs)
"cCe" = (/obj/structure/closet/crate,/obj/item/coin/silver,/obj/item/flashlight/seclite,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cCf" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/port)
+"cCf" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cCg" = (/obj/item/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/reagent_containers/glass/beaker/large,/obj/item/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/dropper,/obj/structure/table/glass,/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"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry)
"cCh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"cCi" = (/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics)
-"cCj" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cCj" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cCk" = (/obj/structure/table,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception)
"cCl" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception)
"cCm" = (/obj/structure/table,/obj/item/reagent_containers/spray/cleaner,/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception)
@@ -6881,7 +6881,7 @@
"cCq" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs)
"cCr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs)
"cCs" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs)
-"cCt" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cCt" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/port)
"cCu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs)
"cCv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/chair,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs)
"cCw" = (/turf/space,/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
@@ -8032,7 +8032,7 @@
"cYx" = (/obj/structure/chair{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYy" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cYz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.8-Dorms-Lockers"; location = "14.5-Recreation"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
-"cYA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard)
+"cYA" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cYB" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cYC" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "open"; id_tag = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/psych)
"cYD" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/escape)
@@ -8056,10 +8056,10 @@
"cYV" = (/obj/machinery/processor{desc = "A machine used to process slimes and retrieve their extract."; name = "Slime Processor"},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cYW" = (/obj/machinery/door/airlock/maintenance{name = "Morgue Maintenance"; req_access_txt = "6"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/medical/morgue)
"cYX" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cYY" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cYY" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cYZ" = (/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZa" = (/obj/machinery/light_switch{pixel_x = 28},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cZb" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cZb" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard)
"cZc" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZd" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZe" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape)
@@ -8084,7 +8084,7 @@
"cZx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
"cZy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3)
"cZz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Arcade"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
-"cZA" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard)
+"cZA" = (/turf/space,/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZB" = (/turf/simulated/shuttle/floor,/area/shuttle/escape)
"cZC" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
"cZD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -8106,7 +8106,7 @@
"cZT" = (/obj/structure/lattice,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cZU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cZV" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"; tag = "icon-propulsion_r (EAST)"},/turf/simulated/shuttle/plating,/area/shuttle/escape)
-"cZW" = (/turf/space,/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cZW" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
"cZY" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/berry,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cZZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -8235,7 +8235,7 @@
"dcs" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"dct" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"dcu" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'; overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
-"dcv" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcv" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcw" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"dcx" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"dcy" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -8253,7 +8253,7 @@
"dcK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 2},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/medical/cryo)
"dcL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"dcM" = (/obj/structure/table,/obj/machinery/recharger{active_power_usage = 0; idle_power_usage = 0; use_power = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape)
-"dcN" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcN" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcO" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_sw"; name = "southwest of station"; width = 18},/turf/space,/area/space)
"dcP" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"dcQ" = (/obj/structure/chair{dir = 1},/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
@@ -8276,7 +8276,7 @@
"ddh" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/obj/item/radio/electropack,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"ddi" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape)
"ddj" = (/obj/structure/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape)
-"ddk" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"ddk" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard)
"ddl" = (/obj/machinery/shower,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"ddm" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"ddn" = (/obj/structure/table,/obj/item/defibrillator,/turf/simulated/shuttle/floor,/area/shuttle/escape)
@@ -8553,41 +8553,41 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaaHaaiaaBaakaaCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabfabqabuabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaaIaaJaaiaaBaakaaCaaiaadaaKaaLaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabeabdabfabfaaaaaaaaaabAaaaaaaaaaabfabeabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaNaakaakaaOaaiaaPaakaaraaQaaRaaRaaRaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaabqabqaaaaaaaaaabAabqabqaaaabqabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaSaakaakaaTaaUaaVaaVaaWaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabIabqabLabLabLabLabLaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaSaakaakaaTaaUaaVaaVaaWaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabIabIabIabIabIabqabLabqabIabIabIabIabIaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaYaakaakaakaaZabaabaabbaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabMabUabUabUabUabVabWabXabYabYabYabYabZabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadabcaakaakaadaadaadaadaadaadaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabqaceaceaceaceaceabqabWabqaceaceaceaceaceabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabgabgabhabiabjaaiabkaakaakaaiablabmabnaboabpaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaabqabWaaaaaaabqaaaabqaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakaakaaIaakabraakaakaakabsaakaaIaakaaIabtaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqacfabqabLabLabLabLabLabqabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakaakaaIaakabraakaakaakabsaakaaIaakaaIabtaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabIabIabIabIabIabqacfabqabIabIabIabIabIabqabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabvaakaakaakaakabxaakaakaakabyaakaakaakaakabzaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabMabUabUabUabUabVabWabXabYabYabYabYabZaaaabfabqaaaabqabqabqabqaaaaaaabqaaaabBabBacgabBacgabBabBaaaabqabqaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabwaakaakabCabDaaiabEabFabEaaiabGabHaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaceaceaceaceaceabqabWabqaceaceaceaceaceabqabeaaaabqabqaaaaaaaaaaaaaaaabqabqabBachacjaciacaackabBabqabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakaclaaiaadaaiaakabJabKaaiaadaaiaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabdaaaaaaaaaabqaaaaaaaaaaczaaaaaaaaaabqaaaaaaabqabdaaaaaaabqaaaaaaaaaabqabqabqaaaacnacmacpacoacracqacsaaaaaaacuacvacwaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabNabOabPaaiaaaaaiabQabQabQaaiaaaaaiabRabSabTaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabWabqabLabLabLabLabLabqaaaaaaaaaabqabqaaaabqabqaaaabqaaaabBactacBacAacDacCabBaaaacGacHacIacHacJaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabNabOabPaaiaaaaaiabQabQabQaaiaaaaaiabRabSabTaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabIabIabIabIabIabqabWabqabIabIabIabIabIabqaaaaaaaaaabqabqaaaabqabqaaaabqaaaabBactacBacAacDacCabBaaaacGacHacIacHacJaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabQabQabQaaiaaaaawacbaccacdaayaaaaaiabQabQabQaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabMabUabUabUabUabVabWabXabYabYabYabYabZabqaaaabBabqabqacEabBacgabBabBacgabBabBabBacLacFacMabBabBacgabBacHacPacHacNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawacbaccacdaayaaaaaaaaaaaaaaaaaaaaaaawacbaccacdaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaceaceaceaceaceabqabWabqaceaceaceaceaceabqabqabBacOacOacOabBacQacSacRacUacTacWacVacXacoacZacKadbadaabBacYadhadgacNaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfaaaabqaaaabqabqaaaaaaadiaaaaaaaaaabqaaaaaaabqaaaabBadcadeaddabBadfadlacAadnadmadoadoadqadpadsadraduadtabBadvadwadvacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabfabfabfabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaaaaaaabqabqabqabAaaaaaaaaaabqabqabqabqaaaabBadxadzadyabBadAacNadBadnadoacAadmadRadQadSadnadUadTabBadVadXadWadZadkadZabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaabqaaaabAaaaaaaaaaabqaaaaaaabqabqabBaeaaecaebabBaedacNadDaepacoacoaeqaesaeraeuaetadoaevabBaewabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabqacxaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaaaaaaaaaaaaaaaaaaaaaaabBaexaezaeyabBabBabBadCadoaeBaeOadEaeQaePaeSaeRadoaeTacNadvacNaeUadIaeUabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaabqabqabqaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabfabfabfabfabfabfaaaadGaaaabdabfabfabfabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabIabqabqaaaaaaaaaaaaaaaaaaabBaeWadYaeXafaaeZafcacNafdacNaftacNafuacNacNacNafvacNacNafwacNaeCafzafyacsabqabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqaidaidaidaidaifaidaidaeVaeMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaaadGabqabqaaaabqabqaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabWaaaaaaaaaaaaaaaaaaaaaaaaabBaeYafDafCafOafEafQafPadoafpaftafSafUafxacNafVadoafAacNadvacNafBagaafZabBaaaabqabqabqabqagcabqabqabqaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaidadFaieaolapKafRaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqadPabqadjadjadjadjadjabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaabWabqabqabqaaaaaaaaaaaaaaaabBafTagmagfafXafWafQagpadoagqagtagsagvaguacNagwadoaguacNadVacNagxagzagyabBaaaabqabqagAagAagAagAagAabqabqaaaaaaaaaabqaaaagCagCagbafYagragCagCagDaaaaidadHauiasZasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaeAafoafoafoafoafqaeeafGageageageageagnaaaabfaaaaaaadJadKadLadMaaaaaaaaaadJaaaaaaaaaadMaaaaaaaaaadJadNadOadMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqagoabqaaaaaaaaaaaaaaaaaaaaaabBagNagPagOabBagQafQagRagSacNaftacNagTaftacNagRagUaftacNaewacNaftagVagRabBabqabqagAagAagYahfaheagAagAabqabqaaaaaaabqagCagCagWahaahbahcagZagCagCaaaaidagEauiavaasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqaeeabqaegaegaegaegaegabqabfaaaaaaaehaeiaejaehaaaaaaadJaehaekaelaemaehadMaaaaaaaehaenaeoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaaaaaaaaaaaaaaaaaaaaaaabBaexaezaeyabBabBabBadCadoaeBaeOadEaeQaePaeSaeRadoaeTacNadvacNaeUadIaeUabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaabqabqabqaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabfabfabfabfabfabfaaaadjaaaabdabfabfabfabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabLabqabqaaaaaaaaaaaaaaaaaaabBaeWadYaeXafaaeZafcacNafdacNaftacNafuacNacNacNafvacNacNafwacNaeCafzafyacsabqabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqaidaidaidaidaifaidaidaeVaeMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaaadjabqabqaaaabqabqaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabWaaaaaaaaaaaaaaaaaaaaaaaaabBaeYafDafCafOafEafQafPadoafpaftafSafUafxacNafVadoafAacNadvacNafBagaafZabBaaaabqabqabqabqagcabqabqabqaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaidadFaieaolapKafRaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadGadGadGadGadGabqadPabqadGadGadGadGadGabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaabWabqabqabqaaaaaaaaaaaaaaaabBafTagmagfafXafWafQagpadoagqagtagsagvaguacNagwadoaguacNadVacNagxagzagyabBaaaabqabqagAagAagAagAagAabqabqaaaaaaaaaabqaaaagCagCagbafYagragCagCagDaaaaidadHauiasZasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaeAaeAaeAaeAafoaeeafqafGafGafGafGageaaaabfaaaaaaadJadKadLadMaaaaaaaaaadJaaaaaaaaaadMaaaaaaaaaadJadNadOadMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqagnabqaaaaaaaaaaaaaaaaaaaaaabBagNagPagOabBagQafQagRagSacNaftacNagTaftacNagRagUaftacNaewacNaftagVagRabBabqabqagAagAagYahfaheagAagAabqabqaaaaaaabqagCagCagWahaahbahcagZagCagCaaaaidagEauiavaasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqagoagoagoagoagoabqaeeabqagoagoagoagoagoabqabfaaaaaaaehaeiaejaehaaaaaaadJaehaekaelaemaehadMaaaaaaaehaenaeoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaabqaaaaaaaaaaaaaaaaaaabBahiahAahzabBahBahDahCahFahEahdahGahJahIahxahKahNahMahOahGahQahPahSahRahTabqagAagAahVahUahUaiqaiwagAagAabqaaaaaaabqagCahWahXahYahZaiaaibahHagCaaaavOahlawxawwawwawwaomagdaaaaaaabqaaaaaaaaaaaaaikaijaijaijaikaikabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaaaaabqaaaaaaabqagHaaaaaaaaaabqaaaaaaaaaabeaaaaaaaehaeDaeEaehaaaadJaeFaeGaeHaeIaeJaeGaeFadMaaaaehaeKaeLaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabAaaaabqabqabqaaaaaaaaaaaaabBabBabBabBabBaixaiyaiyahLaiyaiBaiyaicaizaiDaiyaiGaiFaiyaiyaiyaiHaiJaiIaiKabqagAaipaiNaiMaiPaiOahUaiuagAabqaaaaaaabqagFaiVaiWaiXaiYaiZajaaiAagLaaaaidajsaztaztajvaiCaidaeVaeMaaaabqaikaijaijaijaikaiLajkajjajlaikaeNafbcKIacJabeabfabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadjadjadjadjadjabqaeeabqadjadjadjadjadjaaaabfaaaaaaaehafeaffafgaaaafhafiaeGaeGafjaeGaeGafiafkaaaaflafmafnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqagMaiQaiQaiQaiQaiQaiQaiRabqaaaabqaaaaaaabBabBabBabBabBaiEaiUaiTabBaiSajeajdacNacNacNacNajFajfajHajGajIabqagAajhaiNajKajMajLahUajoagAabqaaaaaaabqajcajXajYajOakaakbajYanJajcabqaidafragjagjafsaidaidaaaaaaaaaabqaikajmalbakkalZakkakkakkapMaikafFajrafHafHafIaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaeAafoafoafoafoafqaeeafGageageageageagnabqabfaaaaaaaeFafJaeFaaaaaaafKafiaeGafLafMaeGaeGafiafNaaaaaaaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaaaaabAaaaaaaabqaaaaaaaaaaaaaaaaaaabBabBaiKabBabBabBaiKabBabBajPajRajwacNajTakfajUajVagAagAajWakcajZakgakdakAakuagAabqabqabqabqagCajxakQakBakSalAakUajzagCabqaidakCazEazEaBKaysaidabqabqabqabqaijapRakkapVarnakkasEakkatSaikaggaghagiajDagkaaaabeabfabeabqabqaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqaeeabqaegaegaegaegaegabqabfaaaaaaaeFafJaeFaeFaeFaeFaeFaeFaeFaglaeFaeFaeFaeFaeFaeFaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabAaaaabqabqabqaaaaaaaaaaaaabBabBabBabBabBaixaiyaiyahLaiyaiBaiyaicaizaiDaiyaiGaiFaiyaiyaiyaiHaiJaiIaiKabqagAaipaiNaiMaiPaiOahUaiuagAabqaaaaaaabqagFaiVaiWaiXaiYaiZajaaiAagLaaaaidajsaztaztajvaiCaidaeVaeMaaaabqaikaijaijaijaikaiLajkajjajlaikaeNafbcKIacJabeabfabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadGadGadGadGadGabqaeeabqadGadGadGadGadGaaaabfaaaaaaaehafeaffafgaaaafhafiaeGaeGafjaeGaeGafiafkaaaaflafmafnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqagMaiQaiQaiQaiQaiQaiQaiRabqaaaabqaaaaaaabBabBabBabBabBaiEaiUaiTabBaiSajeajdacNacNacNacNajFajfajHajGajIabqagAajhaiNajKajMajLahUajoagAabqaaaaaaabqajcajXajYajOakaakbajYanJajcabqaidafragjagjafsaidaidaaaaaaaaaabqaikajmalbakkalZakkakkakkapMaikafFajrafHafHafIaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaegaeAaeAaeAaeAafoaeeafqafGafGafGafGageabqabfaaaaaaaeFafJaeFaaaaaaafKafiaeGafLafMaeGaeGafiafNaaaaaaaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaaaaabAaaaaaaabqaaaaaaaaaaaaaaaaaaabBabBaiKabBabBabBaiKabBabBajPajRajwacNajTakfajUajVagAagAajWakcajZakgakdakAakuagAabqabqabqabqagCajxakQakBakSalAakUajzagCabqaidakCazEazEaBKaysaidabqabqabqabqaijapRakkapVarnakkasEakkatSaikaggaghagiajDagkaaaabeabfabeabqabqaaaaaaaaaaaaaaaaaaaaaaaaabfabqagoagoagoagoagoabqaeeabqagoagoagoagoagoabqabfaaaaaaaeFafJaeFaeFaeFaeFaeFaeFaeFaglaeFaeFaeFaeFaeFaeFaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaabqaaaabqabqabAabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqabqabqacnakEakFakEakHakGakKajJagAagAagAakLakragAagAakNagAagAagAatKatKatKalPagCagCakzakYalRalualsagCagCalPaidakObPLbPLbTgbTfaidabqaaaaaaabqaikctwalbcyqczlcyFczzakkcKlaikagGajSafHafHagIaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaaeeaaaaaaaaaabqaaaaaaaaaabdaaaaaaafhafJagJagJagJagJagJagJaehagKaehagJagJagJagJagJagJafJafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagXajNagXabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaabBabBabBabBabBakRajHakTagAajQakWakMalaakLalCalBaksalDalGalCalHamOamMakJamOamPamQamRamSamTamOamUdeRalIalKalJazEdeGdeCaidabqabqafbaeNaikaijaijaijaikcKmcZncZiaikaikahgafbahhahjahjahkahjahjahyaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqakXabqadjadjadjadjadjabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagXakPagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqamxalNalFalOagAakVakWalmalaalUalXalValYalYalYalYalYamwamAamyakZaoeamCamBamFamDamHamGamJamIamLazEalEamVamXaidabqabqafbaigafbaihaiiailaikaijcZzaijaikainaioajbaivairairairairairaivabqabqabqabqabqaaaaaaaaaaaaaaaabfabqaeAafoafoafoafoafqaeeafGageageageageagnabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagXagXalQagXagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqamxamYaAsapnanaamZamZanbanLalnanNanManOalCamqalSanRamOanTapAapBapCapDapEanUapCanWanVaspaidaidaidaidaidaidaidaidabqafbamsajicRKcWScWScXocWSamNajnamWajpajpajpaivairairairairairaivaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqaeeabqaegaegaegaegaegabqabeabqaaaaehalTanpamlajtajuaehanraeGaeGaeGanFaehanXaeGanYajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagXajNagXabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaabBabBabBabBabBakRajHakTagAajQakWakMalaakLalCalBaksalDalGalCalHamOamMakJamOamPamQamRamSamTamOamUdeRalIalKalJazEdeGdeCaidabqabqafbaeNaikaijaijaijaikcKmcZncZiaikaikahgafbahhahjahjahkahjahjahyaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadGadGadGadGadGabqakXabqadGadGadGadGadGabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagXakPagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqamxalNalFalOagAakVakWalmalaalUalXalValYalYalYalYalYamwamAamyakZaoeamCamBamFamDamHamGamJamIamLazEalEamVamXaidabqabqafbaigafbaihaiiailaikaijcZzaijaikainaioajbaivairairairairairaivabqabqabqabqabqaaaaaaaaaaaaaaaabfabqaegaeAaeAaeAaeAafoaeeafqafGafGafGafGageabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagXagXalQagXagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqamxamYaAsapnanaamZamZanbanLalnanNanManOalCamqalSanRamOanTapAapBapCapDapEanUapCanWanVaspaidaidaidaidaidaidaidaidabqafbamsajicRKcWScWScXocWSamNajnamWajpajpajpaivairairairairairaivaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqagoagoagoagoagoabqaeeabqagoagoagoagoagoabqabeabqaaaaehalTanpamlajtajuaehanraeGaeGaeGanFaehanXaeGanYajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaabqajBajCanKanmajBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqamxamYaAsatragAanZaqGaobasaaoaaofaocaofatKatKatKatKamOaogdfnaqZapCaraarbarcapCaoiaohaspatKalqalqalqalqalqalqanQanQavvavvafbanPakhakiakiakjcXDaklakmakmaknakoaivairairairairairakpafbafbafbaaaabqaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaaeeaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaehakqakqaeFaeFaeFaehasbaeGaeGaeGasYaehaeFaeFaeFakqakqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakIakIakIakIakIajBakvakwakxajBabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqamxamxamxamxamxamYaAsatragAagAaonagAagAagAaopaooaosaoqaotaojaowamOaoxdfnasiapCapCaoHapCapCaoLaohaodatKalqalqalqalqalqalqanQaokaoEapkafbcXHakhakialcaldcXZaldaleakmalfalgalhairairairairairalialjalkaeNaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaaeeaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehaunaeGaeGaeGauoaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIapcaoYajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxaoMaoWanSaplamYapmatragBapoappapoagBapqapsaprapiaoqapvapuaovamOaptapwatCatDatEapCatGapyapzaohapGapFalqalqalqalqalqalqapIaokapNapLarfaqOakhamaambamccYbamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqaeeabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehauraeGaeGaeGauoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnalrampapxajBajBamrapHajBalxalzalyakyakyabqabqabqabqabqabqabqabqabqaaaamxapQaqaaqaaqlamYaAsatragBaqxaqKaqIagBaqLaqNaqMaqPargaqRaqQaqTamOaoxaqUaqVaqVaqVapCaqVaqVaqXaqWareardalqalqalqalqalqalqanQavqawaavvafbarhancandaneanfcYcangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlapJannankamkabqaaaanoauvanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanyanxanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsaqdagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmaqjasoassasraswastasxapFalqalqalqalqalqalqanQaokaxYavvcYdasyakhaszambaoycYbaozameaoAamgaoBaoCairairairairairaoDaqSaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgarCapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVarOaktaoXatoaoZapaauqauBapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasqaqHapjasRasMatsaxJagBattavbamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFanQaokazCavvaimasyakhajpapTapUcYeapWapXapYamgapZaqDairairairairairaqbafbaqcaoGapPaqeaefaefabqamkaqfaqgaqhaqiasKamkabqanoapgasLapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqkaktamuaxpapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsasVagBauOauSasWagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwatbawdawdawlalWamoawpawmavvavvavvavvafbawqarlajpajparmcYxaroarparparqapZaqDairairairairairaqbarraqtaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgarCapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarsarDarEarFarGatdaktapdaqvapdapfarIapdcgoapdarJaAAarKarUamzarNajganHaquarParHaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDatpawFatLakDawIakDawQaxjaxfavtaxHaxNavgawJarRazLazLaEgasAasuakhaxSasvasvaxVasBasCasCasDcYzasFasGasGasGasHaqDairairairairairaqbasIasJaoGaqtatUaouasJasNamkasjasgasQasOasPamkabqansasUatVatXaoGawMasJaWEavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIammaoYajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxaoMaoWanSaplamYapmatragBapoappapoagBapqapsaprapiaoqapvapuaovamOaptapwatCatDatEapCatGapyapzaohapGapFalqalqalqalqalqalqapIaokapNapLarfaqOakhamaambamccYbamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqaeeabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehauraeGaeGaeGauoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktanvaktamnalrampapxajBajBamrapHajBalxalzalyakyakyabqabqabqabqabqabqabqabqabqaaaamxapQaqaaqaaqlamYaAsatragBaqxaqKaqIagBaqLaqNaqMaqPargaqRaqQaqTamOaoxaqUaqVaqVaqVapCaqVaqVaqXaqWareardalqalqalqalqalqalqanQavqawaavvafbarhancandaneanfcYcangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlapJannankamkabqaaaanoauvanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIaoSanwanyanxanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsaqdagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmaqjasoassasraswastasxapFalqalqalqalqalqalqanQaokaxYavvcYdasyakhaszambaoycYbaozameaoAamgaoBaoCairairairairairaoDaqSaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgarCapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoUaktaoTapcaoVarOaktaoXatoaoZapaauqauBapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasqaqHapjasRasMatsaxJagBattavbamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFanQaokazCavvaimasyakhajpapTapUcYeapWapXapYamgapZaqDairairairairairaqbafbaqcaoGapPaqeaefaefabqamkaqfaqgaqhaqiasKamkabqanoapgasLapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqraqqaqqaqqaqsaqkaktamuaxpapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsasVagBauOauSasWagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwatbawdawdawlalWamoawpawmavvavvavvavvafbawqarlajpajparmcYxaroarparparqapZaqDairairairairairaqbarraqtaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgarCapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarDarsarFarEarGatdaktapdaqvapdapfarIapdcgoapdarJaAAarKarUamzarNajganHaquarParHaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDatpawFatLakDawIakDawQaxjaxfavtaxHaxNavgawJarRazLazLaEgasAasuakhaxSasvasvaxVasBasCasCasDcYzasFasGasGasGasHaqDairairairairairaqbasIasJaoGaqtatUaouasJasNamkasjasgasQasOasPamkabqansasUatVatXaoGawMasJaWEavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktaufatcaugaktaktaktaoXateaoZatfapbatgcgoapdatiapfaoXaElaEjajgajgatlarWdhIapOamxamxamxakDakDauhatqatrasSaytayVayTayXayWagBawzawBaosakDakDakDakDakDakDakDakDakDayYazaayZazdazbazxatKatKamOamOamOamOayGavvaBraBsaBrafbatNatOatPatQatRcYGatTauPauHatWavJatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueavRawkavVawnamkabqansaujaukaulaoGasJasJbnGblAawDblBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaupabqarAabqaupabqarAarAabqarAarAarAarAarAaaaaaaaaaapfawEauCapfautausausausausausauuapfaAZawEapfauwauxaoXauyauzapfaEUaGjauCapfaGlcgmauDauEarJapfauGaxaauIajgavoatmakeaIgaqwajgauLamxauMauNaqJatqapnauQawHauTauRaAjaAhauXaAkawBaosakDaAlaAnaFgamEaAoaAnaFgakDaApaAtaAqaAvaAuazxavkavlavlavmavnamOayGavvaKMaSHaOBavravravravravraByaCmaCeavvavvavvavvavvaDeaoGaxbavyavzaoGaoGasJaoGavAawvavCasJavDavEavGavFavIavHawUamkapeansarTavLavMaoGasJasJaWGavNavNbnHaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAabqarAabqarAarAarAataabqabqabqarAarAabqaaaabqabqalLavQavSawWavTapdapdapdapdapdaweaxeawfaoZavWawKatkapdavYavXapdaHvaHwajgajgajgajgajgajgajgajgajgajgawgajgawhajgaWvaWvajgajgajgamxawiawjaqJatqatrasSavdaDDaDgaEVaxiaqYaFzaFBaFAakDaFVaAnaFXamEaGraAnaGEakDaGFaGIaAqaHfaHfaHhatKawGaxAawGaxCamOayGaWxaKMbiOaOBavrawNawOawPawoawRawSawTavvaxPawVaypavvbuCaoGasJaubasJasIaoGayvaoGavzasJawLasJaoGawYaxcamkamkaxMayzamkarransansaxdayAaoGaoGbnIaxhaoGbplaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8603,13 +8603,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqaaaaHkaJKaHkabqabqabqabqabqapfauJcgocgoaHXaIJapfaaaaIKaARaILaARaIMabqabqabqayKaINaIOaIPaIQaMbaCsaJSaMqclWcliaMzaCuaCwajgaaaabqaaaaGaaIYaGuaaaabqaaaaHGaAfaAfaAfaHGaHGaJaaMGaJcaJdaJeaJfaJgaJhaJhaJiaJhaJjaJgaJkaJlaJmaJnaERaJpaJqaJramxazeaCSaCSaJsaMJaCSbNVaCSaCScmUaBIaBIaBIaJvaJwaMKaIeaJzaJAaJBaJCaJDaJEaJFaJFaJGaJHavvavvavvavvavvaubaGWaxhaJTaJLaJOaJMaJQaGvaKTaJPaLsaJUaJZaJVaMUaMQaLEaOaaDLaDLaLNarAaJWaaaaaaaaaaaaaJWaaaaaaaJWarAaLNaIfaKpaCgaNdabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaabqaaaaHkaHlaHkaHkaGwaGwaGwaHkaHkaHkaHkaHkapdatkapfaaaaaaaaaaaaaaaaaaaaaaaaabqayKaNgbOgaKdaKeaKfaCsaLoaKhaCuaCuaCuaCuaKiajgaKjaGyaHjaHbaKgaHRaIZaIXaKjaHGaNyaKsaKsaKtaKuaKvaKwaNDaKyaKzbPXaNJaTiaNLaKEaKCaKFaKGaKHaKIaKJaKKaJNaObaOiaOhamxazeaKPaCSaKQaKRaCSaLMaFTcajcmUaBIaOwaKXaKYaKZaBIaLaaLbaONaBIaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmavvasJaGWaxhaLqaLpaLuaLraLRaFRaOXaLtaLsaLUaCgaCgaPaaNdaCgaDLaDLaDLaLNarAaaaaaaaaaaaaaaaaLxaaaaaaaaaaTMaPgaIfaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaHkaLBaLzaLAaLBaLBaLBaLDaPraLFaLGaHkaHkaHvapfaaaaLHaLIaLIaLIaLIaLIaLJabqaCsaCsaCsauKazTaCsaCsaLPaPwaLSaLQaLTaNaaMHaMEaNEaLVaLWaLXaLYaLWaLZaMaaPxaHGcBaaMdaMeaMfaMfaKkaMfaMfaMfaMfaMfaMfaMfaMfaKkaMfaMhaMiaMjaMkaMkaMkaMlaMlaMlaMlaMlaMkaMmaMkaMnaMnaMnaMnaJuaMnayGaBIaBIaBIaMpaPSaBIaMraBIaMsaBIaMtaMuaMvazlaMwaMxaMyazlaQiaMAaMBavvaMCaGWaxhaCgaCgaCgaCgaCgaFRaMRaMFaLsaQRaCgaQZaRgaRaaRraRaaRsaDLaLNarAaaaaaaabqabqabqabqabqaaaaaaarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkaHvalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlaRzaMVaMSaMTaMYaNbaMWaMZaNYaNcaOxaOfaNXaNaaRBaNeaNfaRGaNhaNiaNjaNkaNlcDtaRNbTqaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaRSaNzaNAaNBaNCaMkaSDaRWaNFaNGaJXaMnaAVaBIaSJaNKaJwaPSaBIaTgaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQbuCaNRaxhaNSaNTaNUaNVaCgaPKaIAaMFaOvaOgaPLaTlaTJaOcaOdaOeaTKaDLaLNarAaJWabqabqaOmaPdaOqabqaOjaaaarAaLNaWAaTOaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaPeapfaaaaMNaOnaMOaMOaMOaMOaMNaTUaKlaKlaOpaPfaOraOraOsaOtaOuaOWaPMaPNapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaUaaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnbViaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIbVmbWpbVoaNQaUfaPqaPhaPIaPzaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdbXuaHaaPnaPoaPpaUhaCgaUFaPsaPtaPuaPvaRfaUKaUMarAaaaaaaabqaRhcspaSkabqaaaaaaaTMaPgaIfaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOaPEawbavKawbaPHaSmaPJaPQaPPaQFaQEaPOaQGaQHaPRbwqaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaUPaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnbXQaQzaQAaQBaQCaQDaRnaQIaVpaVmaVraQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdbXuaJLaQUaMFaSEaSnaPLbELaVsaRbaRcaRdaSoaDLaLNarAaaaaReabqaSpaTIaTGabqabqaJWarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkaHvalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlavKaMVaMSaMTaMYaNbaMWaMZaNYaNcaOxaOfaNXaNaaRBaNeaNfaRGaNhaNiaNjaNkaNlcDtaRNbTqaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaRSaNzaNAaNBaNCaMkaSDaRWaNFaNGaJXaMnaAVaBIaSJaNKaJwaPSaBIaTgaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQbuCaNRaxhaNSaNTaNUaNVaCgaPKaIAaMFaOvaOgaPLaTlaTJaOcaOdaOeaTKaDLaLNarAaJWabqabqaOmaPdaOqabqaOjaaaarAaLNaWAaTOaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaPeapfaaaaMNaOnaMOaMOaMOaMOaMNaTUaKlaKlawbaxXaOraOraOsaOtaOuaOWaPMaPNapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaUaaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnbViaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIbVmbWpbVoaNQaUfaPqaPhaPIaPzaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdbXuaHaaPnaPoaPpaUhaCgaUFaPsaPtaPuaPvaRfaUKaUMarAaaaaaaabqaRhcspaSkabqaaaaaaaTMaPgaIfaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOayjaPfaOpaPfaPEaSmaPJaPQaPPaQFaQEaPOaQGaQHaPRbwqaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaUPaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnbXQaQzaQAaQBaQCaQDaRnaQIaVpaVmaVraQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdbXuaJLaQUaMFaSEaSnaPLbELaVsaRbaRcaRdaSoaDLaLNarAaaaaReabqaSpaTIaTGabqabqaJWarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaRlaRmaRlaSbaSmaRoaRoaRpaRoaOuaRqaSjaSlapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaVwaRAaRAaRAaRAaRAaVAaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaSyaNAaRHaRIaNAaRJaRKaRLaRMaVBaROaMnbYFaQVaQVaQVaQVaQWaRTaRTaRUaRUaRVaVHaRXaRYaRZaSaaSBaSAaSBaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSCaIAaMFaLsaVNaCgaWbaWgaTRaTRaTRaTVaDLaLNarAaaaaaaabqabqabqabqabqaaaaaaarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaSraSsaaaaGwaLBaLBaLBaLBaLBaLBaStaSuaSuaSvaSwaHkaqBatkapfabqaMNaMOaMOaMOaMOaSxaMNaTUaKlaKlaSFaSmaSzaSNaSGaUcaTLaTEaUdaUtaLKaSIaWhaSKbZaapfaSMaOAaUwaRuaSOaSPaSQaSQaSRaSSaOFaaaaMgaSUaRAaSVaSWaSXaRAaSYaMgaaaaMfaMhaMiaMjaMkaSZaTaaTbaTcaTdaTcbjbaTfaWiaMkaWkaUOaTjaTkaWlaMnaTmaToaToaTpaTqaTraTsaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaQXaTFaUbaTHaNQasIaGWaxhaCgaCgaCgaCgaCgaFRaWnaQYaURaWpaCgaCgaPaaNdaCgaDLaDLaDLaLNarAaaaaaaaaaabqaaaaaaaaaaaaaaaaTMaPgaIfaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbdKbdNbdNbdNbdNbdNbdNbdObdNbdNbdNbdNbdNbdNbdPbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNaWraTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaWsapfaaaaMNaMOaMOaMOaMOaMOaTSaRlaTTaRlaSbaSmaRoaRoaRpaRoaOuaOWaVaaVdaTWaTXaTYaTZaWtapfaVkaUTaUQaRuaRuaUebmJaRuaUgaWuaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMncjdaUvconaMnaMnaWyaToaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSBaSAaSBaScaUGaUHaNQaUIaGWaxhaWNaULaWXaSTaVgaVfaIAaMFaLsaVhaJZaViaXsaXoaLEaOaaDLaDLaLNarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaLNaIfaKpaCgaNdabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkaHvapdapfaaaaMNaMOaMOaMOaMOaMOaVbayjaxXayjaVeaSmaRoaXwaWSaYiaYhaVjaOuaVvaVlaXtaVnaVoaXBapfaVqaOAaYjaRuaRubmKaVtaVuaUgaRRaOFaaaaOGaXEaVxaUkaVyaRAaVzaXGaOGaaaaMfaXRaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaXZaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaYEaYDaYGaUKaYQaYNaWmaYSaZcaYWaZeaZdaZhaZgaLEbMOaDLbeZaLNarAarAddZarAarAddZarAarAddZarAarAaLNaWAaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkaHvapdapfaaaaMNaMOaMOaMOaMOaMOaPHaVbaRzaVbaVeaSmaRoaXwaWSaYiaYhaVjaOuaVvaVlaXtaVnaVoaXBapfaVqaOAaYjaRuaRubmKaVtaVuaUgaRRaOFaaaaOGaXEaVxaUkaVyaRAaVzaXGaOGaaaaMfaXRaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaXZaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaYEaYDaYGaUKaYQaYNaWmaYSaZcaYWaZeaZdaZhaZgaLEbMOaDLbeZaLNarAarAddZarAarAddZarAarAddZarAarAaLNaWAaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaWDbkjaWFblyaWDaHkaLBaMLaWHaWIaWJaLBaLBaLBaLBaUYaWKaHkaHvapdalLaaaaMNaOnaMOaMOaMOaMOaMNaTUaKlaKlaWLaSmaRoaRoaRpaRoaOuaVjaWMaXnaVlaWOaWPaWQaWRapfazSaOAbanaWTaWTaWUaWVaRuaUgaWWaOFabqaOGaOGaOGaZxaWYaWZaOGaOGaOGabqaMfaOHaXaaMjaXbaXcaVEaVEaVEaXdaVEaVEaXeaNCaXbaQCaXfaXgaXhaToayuaToaTnaTpaToaXjaToaXkaTpaTqaToaTqaTpaXlaXmaNQaZAaXraXpaXvaXuaPiaQQaNQaZBaGWaxhaZIaXxaXFaZMaXQaXyaXzaXAcczccyccHccHbaoaZOaLEaOaaDLarAdeaaJtaJtbapaJtaJtbapaJtaJtbapaJtaJtdecaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabdaaabgMbdMbeWbeXbeXaXLaXLaXLaXLbfabpvaXLaXLaXLbeXbeXbeYbdMbMnaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDayCaYaaYgaXSaHkaXTaMLaXUaXVaXWaMLaMLaMLaXXaXYbavaHkaYmaYbapfabqaYcaYdaMOaMOaMOaYeaYfabqabqaKlaWLaYoaPJaPQbarbaTbasaYkaYlbaFaYnaYnaYnaYnaYnapfaYXaYpaYqaYraYraYsaYtaYuaYvaYwaUoaaaaaaaaaaOGaOGaYyaOGaOGaaaaaaaaaaKoaNraYzaMjaYAaYBaYCbaObaLaNCaNCaYFbaSaNCaYAaQCaYHaYIaYJaYKcdPaYKaYMbbebmLaYPaYKaYKaYKaYKaYKaYKbbuaYRbbvaNQaNQaNQaNQaVcaNQaNQaNQaNQaoGaGWaxhaYVaYUaYUaSTaYZaYYaZwaZfbawbbwbaAaQUbbCbaBaHiccuaCgaaaabqaaaabqaaaaaaaaaaaaabqaaaaaaabqabqaWAbbIaESaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbcbbfcbfbbgNaXLaXLbdIbdIbdIbgPbbJbdIbdIaXLaXLbgNbgQbgSbgRaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDaWDaZiaZjaWDaWDaWDaZkaWDaWDaZlaZmaWDaWDaWDaZnaWDaWDaWqapfapfabqaZpaZqaZraZraZraZqaZsabqabqaZtaZuaSmaRoaRoaRpaRoaOuaZvaOubaCaYnbbPaZyaZzbbTapfazSaOAbbVaZCaZDaZEaZFaZGaZHbcdaOFaZJaUraZJaZLbclaZNbcoaZLaZJaUraZJaMfaZPaZQaZRaZSaMkaMkaMkaMkaZTaZUaZVaNCaZWaMkaQCaZXaTraZYaZZaZZaZZaZZaoGaoGaoGbaababbacbadbaebafaZZbagbagaoGbahazyazybaDazyazyazybakazybalaxhbambambambambbMbaUbcrbbObctbcqbatbaEbcGbcCaCgaCgaCgabqabqaDibaGbaxaDiaDiaDiaDiaDiaDibaGaDibdpaESaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbgTbicbeXbeXaXLbdIbidbifbdubihbdwbiibidbdIaXLbeXbeXbijbgTaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8664,17 +8664,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaarBaaacjcaaaaaaabqcmicpycxlcpycyichycdLcyjcylcyZchyczpczrczqcztczsczsczuczpczvcxycysczbczwczgczyczBcysczEczDcAhczJcvUcAicAkcAjcAmcAlcAocAncApcApcApcApcAscArcApcAtcAvcxKczxcmocmocmocmocmocxDcykcmocmzcmzcxOcxPcxQbYXbYIbYYcxUcxUcxUcxUcxVcxWcxMcxVcmBcmBcmBcyPcyOcyScyRcmBcmCbZUcxfcyTbZUcydcyecyfcygcygcyhbZUabqabqabqabqabqabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaabFcaaaaaaabqaaaaaaabqaaaabqabqaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBabqabearBaaaabearBarBabqabqabqcjcabqabqabqcmicmicmibZUbZUcyUczdbZUbZUcAwczfcAxcziczhczocznczUcBlcBocBncBqcBpcBscBrcBucBtcMQcMPcNGcNFcxycCacvjczAcAFcCgcBdcAWcyGcCkcCmcClcClcnncCocCncnocoocCpcyLcyMcyNczVcyEczWcyQczZczYcAzcAycyVcyWcyXcyYcaYczacBfczccABczecBhcxVcBIcAHcAMcBLczjcmBcmBcmBcmBcmBcmBcmCbZUbZUcPTbZUbZUbZUbZUcmibZUbZUbZUaaaabqaaaaaaaaaabqabqabqabebFcbFcbFcabebFcbFcbFcabebFcbRmbFcbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczmaaaaaaaaaabqaaaaaaaaaabqaaaaaaabqaaackraaaaaaabqabqaaaaaabZUbZUbZUbZUbZUcAgcodchyczpcQzcCqcBMcCscATcCucCycCxcCEcyscCGcCFcCScCKcYacysczEcDecwqcDfcDfcDfcDfcDfcDfcDgcDgcDgcDgcDhczCczCczCczCczCcYFczFczGczHczIcMYczKczLbZUczMczMczNczMczMczOczPczQcaYczRczSczTcBbcAYcBccxVczkcBjcBmczXcAacrUcfYclPbZUcAccmYcAdbZUcAecfYbZUaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqabqabqcAfcAfcAfcmHcAfaaaarBabqabqabqbZUcFRcFScFRbZUcDkcDjcBXcAxcCrcCdcCLcCvcCMcAUcDwcDvcDxcsJcCbcDycCccDOcChcsJcDVcDecwqcDWcCYcCXcDmcDldblcBvcBwcBxcBycBvcAqcCicEecMscAuczCcnscgxcAAbZUcDocACcADcAEczMcDqcAGcDsczMcAIcAJcAKcbfcEfcANcAOcAPcAQcARcxVcAbcDNcDQcAScAVcrUcAXcDXcAZdhtckDcEacAZcEbcvWcmiabqabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqcvPcvQcvQcvQcvQcBecjccBgcCjcCjcCjcCjcCtabqabqaaaaaaabqbZUbZUbZUbZUbZUcuVcBkcFTdbuczrcEicztczsczscEjczpcxpcEkcsJcsJcsJcsJcsJcsJcsJcCHcElcEOcEncEtcEccETcEucEzcBvcCNcEVcEWcBvcBzcBAcBBcBCcBDczCcEXcgxcCQcBJcBKcBJcBJcBJczMcCRcBicAGcxScBOcBPcBQcBRcBScBTcBUcBUcBVcAQcxVcCTcDNcEAcBWcBYcrUdhwdhubZUcmCchycEBbZUchycCebZUaaaabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaDaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaacjcaaacCfcCfcCfcCfcCfaaaarBaaaabqabqaefbZUcCUbZUcctcuVcBkckDcEYcEYcEYcFacEZcEZcEZcEYcDccEkcFdcFfcDrcFhcFgcFicFdcFPcFjcFVcFUcEDdcKcFZcEEcEzcGacGccGbcGdcGacDAcCAcCBcCCcCDczCcGecgxcmmcBJcDHcCIcCJcFoczMcEFcAGcEGczMcDJcCOcCPcxUcDKcDLcPCcEdcDPcCVcxVcBZcEHcEJcCWcBWcrUbZUbZUbZUctmbZUcDabZUbZUbZUbZUabqabqaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacvPcvPcvPcvPcvPabqabqabqcvPcvPcvPcmHcvPaaaarBabqabqabqbZUcFRcFScFRbZUcDkcDjcBXcAxcCrcCdcCLcCvcCMcAUcDwcDvcDxcsJcCbcDycCccDOcChcsJcDVcDecwqcDWcCYcCXcDmcDldblcBvcBwcBxcBycBvcAqcCicEecMscAuczCcnscgxcAAbZUcDocACcADcAEczMcDqcAGcDsczMcAIcAJcAKcbfcEfcANcAOcAPcAQcARcxVcAbcDNcDQcAScAVcrUcAXcDXcAZdhtckDcEacAZcEbcvWcmiabqabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqcvQcAfcAfcAfcAfcBecjccBgcCfcCfcCfcCfcCjabqabqaaaaaaabqbZUbZUbZUbZUbZUcuVcBkcFTdbuczrcEicztczsczscEjczpcxpcEkcsJcsJcsJcsJcsJcsJcsJcCHcElcEOcEncEtcEccETcEucEzcBvcCNcEVcEWcBvcBzcBAcBBcBCcBDczCcEXcgxcCQcBJcBKcBJcBJcBJczMcCRcBicAGcxScBOcBPcBQcBRcBScBTcBUcBUcBVcAQcxVcCTcDNcEAcBWcBYcrUdhwdhubZUcmCchycEBbZUchycCebZUaaaabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaDaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCtcCtcCtcCtcCtaaacjcaaacCtcCtcCtcCtcCtaaaarBaaaabqabqaefbZUcCUbZUcctcuVcBkckDcEYcEYcEYcFacEZcEZcEZcEYcDccEkcFdcFfcDrcFhcFgcFicFdcFPcFjcFVcFUcEDdcKcFZcEEcEzcGacGccGbcGdcGacDAcCAcCBcCCcCDczCcGecgxcmmcBJcDHcCIcCJcFoczMcEFcAGcEGczMcDJcCOcCPcxUcDKcDLcPCcEdcDPcCVcxVcBZcEHcEJcCWcBWcrUbZUbZUbZUctmbZUcDabZUbZUbZUbZUabqabqaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaabqaaaabqabqabqaaacCwaaaabqaaaabqaaaabqaaaarBaaaabecCzcCZclJcELcDRcELbgZcGgcIbcEYcGncGicGpcGocGOcGEcEYcxpcHbcHacHdcHccHgcHecHicHhcHlcHkcHycHmcERcEPcIdcEScEUcDYcDZcIfcIhcIgdhydhxdhAdhzcDucIlcEmcDzcEvcDbcDCcDDcDDcDEczMcDFcDFcDGczMcgCcCOcFbcxUcxUcxUcxUcxUcxUcxUcxVcxVcxVcDIcxVcxVcrUcAccmYcmYcFcbZUchycFecDMcFpcDMaWwaWwaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcjcabqcAfcAfcAfcAfcAfabqarBabqarBabqabqbZUcDBbZUcdNchycJRcDTcEYcIrcIqcIvcGocGocFwcEYcIVcIWcFdcIYcIXcJacIZcGmcFdczEcDecwqcDWcFrcGwcFFcGYcFWcBvcJScJhcHscDgcHRdhBdhDdhBcEhcbYcJWcgxcEocEpcEqcErcErcEsczMcFXcFYcFYczMcHTcEwcExcEycGxcGzcGycGQcGFcGUcGScGWcGVcEIcIecEKcfZdhEcuVchybZUbZUcEMbZUbZUbZUbZUabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcvPcvQcvQcvQcvQcBecjccBgcCjcCjcCjcCjcCtabqaupaaaabqaaaaaabZUbZUbZUbZUbZUbZUcEQcEYcJYcJXcKacJZcKccKbcEYcKdcKfcKecIAcIpcKjcIBcKkcKeczEcDecwqcKZcKZcKZcLdcLdcLdcBvcGfcKncGhcDgcKocGjcGkcGlcICczCcKqcFkcFlcBJcFmcCIcFncWcczMcIDcFqcHtcxScFscFtcFucbZcHzcFxcFycFzcFAcFBcFCcFDcFBcFEcHBcEKbZUcFGbZUcFHcFHcFIcENcFKcFJcFMabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaackrabqcCfcCfcCfcCfcCfaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcIFcLacLdcIUcLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcJbczMcHCcHKcHDcGAcGBcGCcGDcFLcHLcGGcGHcGIcGIcGJcGKcGLcGMcGNcHNcGPcHPcGRcHQcGTcJocHScHScHScJvcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcHWcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacvPcvPcvPcvPcvPabqcjcabqcvPcvPcvPcvPcvPabqarBabqarBabqabqbZUcDBbZUcdNchycJRcDTcEYcIrcIqcIvcGocGocFwcEYcIVcIWcFdcIYcIXcJacIZcGmcFdczEcDecwqcDWcFrcGwcFFcGYcFWcBvcJScJhcHscDgcHRdhBdhDdhBcEhcbYcJWcgxcEocEpcEqcErcErcEsczMcFXcFYcFYczMcHTcEwcExcEycGxcGzcGycGQcGFcGUcGScGWcGVcEIcIecEKcfZdhEcuVchybZUbZUcEMbZUbZUbZUbZUabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcvQcAfcAfcAfcAfcBecjccBgcCfcCfcCfcCfcCjabqaupaaaabqaaaaaabZUbZUbZUbZUbZUbZUcEQcEYcJYcJXcKacJZcKccKbcEYcKdcKfcKecIAcIpcKjcIBcKkcKeczEcDecwqcKZcKZcKZcLdcLdcLdcBvcGfcKncGhcDgcKocGjcGkcGlcICczCcKqcFkcFlcBJcFmcCIcFncWcczMcIDcFqcHtcxScFscFtcFucbZcHzcFxcFycFzcFAcFBcFCcFDcFBcFEcHBcEKbZUcFGbZUcFHcFHcFIcENcFKcFJcFMabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCtcCtcCtcCtcCtaaackrabqcCtcCtcCtcCtcCtaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcIFcLacLdcIUcLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcJbczMcHCcHKcHDcGAcGBcGCcGDcFLcHLcGGcGHcGIcGIcGJcGKcGLcGMcGNcHNcGPcHPcGRcHQcGTcJocHScHScHScJvcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcHWcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmHaaaabqaaaabqabqabqabqaupaaaaaaaaaaaaabqbZUcNOcNPcJybZUcEQcEYcLhcGocLicGocGocLjcEYcxpcLvcLkcLKcLwcLWcLwcLwcLwcLYcLXcxycKZcJMcJBcLdcMbcJQcImcMecMdcKgcMfcIocMwcIncMLcImcMScMTczGczHcHncHocHocHqcHpczMcKhcKscKicDpcHvcHwcHxcdMcIEcHAcKvcIKcIJcHEcHFcHGcHHcHIcHJcHOcIMcHMcJdcHYcJecJucJfcJwcKwcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHXcIOcIccALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcINabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbcPTcMUcEYcMWcMVcNccKLcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcKQcOqcNUcwqcKZcLbcKUcLdcOLcLccImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycJzcJzcLncLQcLGcKrcJFcIGcIHcIIcLZcEKcKtcILcKucEycJicBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIQcIPcIPcIPcJCcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcvPcvQcvQcvQcvQcBecjccBgcCjcCjcCjcCjcCtabqarBaaaaaaaaaaaaaaabZUbZUcfccKCcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycMacPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImdcLcMddeecIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJjcJlcJkcJncJmcMncMccJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcKEcLlcKFcEKbZUcFGbZUcFHcJxcMrcLqcJAaRharAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcKJcJDcKJcIPcJEcIPcKKcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaackraaacCfcCfcCfcCfcCfaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcLzcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncMvcImcMScEXcgxcvmcKpcTwcLAcMmcMjcMjcMjcMtcMXcJpcgCcCOcMZdgScKxcfHcNdcgLdgTcYScKBcNqcMucMycEKcrUcKGceDcfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcLDcIPcIPcIPcLEcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacvPcvPcvPcvPcvPabqcINabqcvPcvPcvPcvPcvPabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbcPTcMUcEYcMWcMVcNccKLcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcKQcOqcNUcwqcKZcLbcKUcLdcOLcLccImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycJzcJzcLncLQcLGcKrcJFcIGcIHcIIcLZcEKcKtcILcKucEycJicBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIQcIPcIPcIPcJCcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcvQcAfcAfcAfcAfcBecjccBgcCfcCfcCfcCfcCjabqarBaaaaaaaaaaaaaaabZUbZUcfccKCcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycMacPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImdcLcMddeecIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJjcJlcJkcJncJmcMncMccJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcKEcLlcKFcEKbZUcFGbZUcFHcJxcMrcLqcJAaRharAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcKJcJDcKJcIPcJEcIPcKKcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCtcCtcCtcCtcCtaaackraaacCtcCtcCtcCtcCtaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcLzcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncMvcImcMScEXcgxcvmcKpcTwcLAcMmcMjcMjcMjcMtcMXcJpcgCcCOcMZdgScKxcfHcNdcgLdgTcYScKBcNqcMucMycEKcrUcKGceDcfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcLDcIPcIPcIPcLEcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacmHabqaaaaaaabqabqaaaaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUcoDcuVcTFchycoDcTZcjicUacUocUecUqcUpcUpcUrcUpcUFcUVcUUcVbcUWcVmcVlcVucVtcVEcVvcWkcVKcWGcWlcWHcIxcIxcNucLmcLpcLocLrcNgcMicJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycIEcKEcNycEKcdNcLBceNcuVcLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLFcRFcPncALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacmHaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycNZchydefcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYndfFcIncYIcYycYNcNEcImcMgcMhcgxcmmcIxcNQcOacMkcLocLocMlcObcNecJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcOrcOccPmcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcRGcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacmHaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLdfOcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNScgxcmmcIxcNfcOacLocLrcLocNhcPEcNYckzcNjcNkcNlcOkdgUdgUdgUdgUdgUcNocNncNpcQgcNrcEKchycuVchPchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8687,26 +8687,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcPpcPqcKMcPqcPrcPscKMcKMcPtcKMcKMcHZaaaaaaaaaaaaabqcRhcSacSbcRhcUmcSdcSecSfcSgcShcRhdemdelcUxcSRcSScSRcSTcSUcSOcWZcTOcRtcSkcRtcTWcUzcUvcRtcTbcTccUBdeocUOcUGcThcTibZUcTjbZUbZUbZUcTkcTlcTmbZUcmicmicmibZUcVecVjcVgcPTcVocVqcVpbZUcwFcQWcTucVrcUQcQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQmcQncKMcQocQpcPscWdcVOcQscWecQucHZaaaaaaaaaaaaaaacRhcSIcSJcRhcSKcSLdeIcWmcRhcRhcRhdeLcTGcTHcTIcTJcTKcTLcTLcTMcVscVDcTPcTQcRtcTWcTRcUvcRtcSocSpcTWcLScTTcRtcTUcWobZUcVYbZUabqaaacNzcTYcNzaaaaaaaaaaaabZUchycuVcuVcmycjidhGcjicUccWqcQWcOycWKcOycQWaaaabqaaaabqabqaaaaaaabqaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQZcRacKMcRacQZcRbcRccRdcRecRfcWLcFvaaaaaaabqaaaaaacRhcTycTzcRhcTAcTBcWRcTDcRhcTEdeMdeNdeNdeNdeOdePcUscTHcTHcUtcNHcWfcUwcUwcUycTWcXscUvcRtcSocUAcWBcUCcUDcUEdeQcXBbZUcTjbZUabqabqcNzcUHcNzabqaaaaaaaaabZUchycuVchycUJcUKchycULbZUcmicQWcOycWCcXCcXNcXNcXNcXNcXNcXNcXNcXNcYiarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZcHZcFvcHZcFvcHZdeucYLcRWcYMcRYcRZcHZaaaaaaabqaaaaaacRhcUgcUhcUicUjcUkcUlcZacRhcUncRhcSOdeUdeYdeXdfocUYcUZcVacSOcXacUvcRtcVccVdcWDcVfcWJcUwcVhcVicWTcVkcVkcSVcTScVkbZUaefabqaaaaaacNzcVncNzaaaaaaaaaaaabZUcYmcZJcYwbZUcZNcZYcYwbZUaaaabqcOycOycOyabqaaaabqaaaaaaabqabqaaacYYarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqcSzcSAdewcKPcSDcSEcSFcSGcSHcHZaaaaaaabeabeaaacRhcTycUNcRhcZscUPcZtcURcUScUTcRhcSOcZXcVwcVxcUXcVycVzcVAcSOcSOcUvcRtcRtcRtcTWcUzcUvcRtcVBcVCdaccTXabqabqaaaaaaabqaefabqaaacVFcVGcVHcVGcVIaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUaaaabqaaaaaaaaaabqabqabqabqabqabqaaaaaacYYarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacTxabqdeycHZcHZcHZcHZcHZcHZcHZaaaaaaabfaaacSOcSOcSOcSOcSOcSOcSOcVQdfscSOcSOcSOcVTcVUcVVcVWcUXcUYcUZcVacVXcSOdaucRtcVZcWacUudapcWbcWadawcRtdatcVkaaaabqabqabqabqabqabqabqcVGdaEcWhcWgcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaabqaaaaaacYYaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaabfaaadfvcVLcVMcSOcVNdaScVPcVQcVRcVScSOcUXdfwcWvcWucWwcWpcWxcWwcWycWzcSOcWicTrdbjcTrcTrcTrcTrcTrdbmcTrdaTcTXaaaabqaaaaaaabqaaaaaaaaacVGcWAcWFcWEdeAcxTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYYaaaaaaaaaaaaaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabfaaadfvcWncVMdbpcWpcWpcWpdbwcWrcWscWtcWpdbxdfGcWVcWVcWWcWVcWVcWXcWYcSOcXccXbcXdcXbcXbcXecXbcXbcXpcXfcXMcVkabqabqaaacVGcVGcVGcVGcVGcVGcXgcXicXhcVGcVGcVGcVGcVGcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabqaaaaaaaaaaaaaaacYYaaaaaaabqaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabeaaaaaaaaaabeabfabeabqabeaaaaaaaaaaaaabfabqdfvcWncWMcVRcWNcWOcUXcWPcWQcZlcZkdggdhidgpcXmcUXcXncUXcXmcZxcZCcSOcYfcTXcYfcTXcTXcTXcTXcTXcYfcTXcYfcTXaaaabqabqcVGcXqcmDdbCcXtcVGcXucXvcVGcVGcmGdbKdbFcXzcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqauparBaupabqabqabqabqcYYabqabqabqabqabqabearBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcXjcVMcVRcWNcWNcXkcSOcSOcSOcSOdhjcVacXIcXJcXJcXKcXJcXJcXLcZRcVkcYBcTXcXbcTXaaaaaaaaacTXcYXcTXcXbcTXaaaabqaaacNzcXOcXPcXQcXRcnkcXScXTcXUcnvcXVcXWcXXcnTcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaaaaaacZbaaaaaaabqaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcSOcSOcSOcXEcUXcUXcUXcXFdbLcSOcSOcSOcSOcSOdhldhldhldhldhlcSOcSOcVkcYfcTXcYfcTXaaaaaaaaacTXcYfcTXcYfcZTabqabqaaacNzcnUcYpcYqcYrcYrcYscYtcYucYucYucYucYvcnVcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYZabqcYAcYAcYAcYAcYAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcYgcYhdbXcYjcYkcXKcYldbccSOdhnaaaaaacYDdhpdhpdhpdhpdahdaXdhpdaicZodhpcZodajdhpdhpdhpdaicZpdhpdcbdalcYEcYJaaacVGcYKcnWdcqdclcYQcYPcZKcYRcZLdgWcYUcYVcpecVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZccZdcZdcZdcZdcZjcZWdcvdcNdcNdcNdcNddkabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSOdfvcSOcSOdfvdfvdfvcSOdagcSOabqabqdazdbadaAdcTdcPdaBcZedcncZBdaCcZBdaDcZBdaCdaCdaDdaCddVcZBdaCcZBcZBdaKdaJaaacVGcZrcZrcZrcZrcTkcZucZUcZDcTkcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYZaaacZAcZAcZAcZAcZAabqarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZcHZcFvcHZcFvcHZdeucYLcRWcYMcRYcRZcHZaaaaaaabqaaaaaacRhcUgcUhcUicUjcUkcUlcZacRhcUncRhcSOdeUdeYdeXdfocUYcUZcVacSOcXacUvcRtcVccVdcWDcVfcWJcUwcVhcVicWTcVkcVkcSVcTScVkbZUaefabqaaaaaacNzcVncNzaaaaaaaaaaaabZUcYmcZJcYwbZUcZNcZYcYwbZUaaaabqcOycOycOyabqaaaabqaaaaaaabqabqaaacYAarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqcSzcSAdewcKPcSDcSEcSFcSGcSHcHZaaaaaaabeabeaaacRhcTycUNcRhcZscUPcZtcURcUScUTcRhcSOcZXcVwcVxcUXcVycVzcVAcSOcSOcUvcRtcRtcRtcTWcUzcUvcRtcVBcVCdaccTXabqabqaaaaaaabqaefabqaaacVFcVGcVHcVGcVIaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUaaaabqaaaaaaaaaabqabqabqabqabqabqaaaaaacYAarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacTxabqdeycHZcHZcHZcHZcHZcHZcHZaaaaaaabfaaacSOcSOcSOcSOcSOcSOcSOcVQdfscSOcSOcSOcVTcVUcVVcVWcUXcUYcUZcVacVXcSOdaucRtcVZcWacUudapcWbcWadawcRtdatcVkaaaabqabqabqabqabqabqabqcVGdaEcWhcWgcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaabqaaaaaacYAaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaabfaaadfvcVLcVMcSOcVNdaScVPcVQcVRcVScSOcUXdfwcWvcWucWwcWpcWxcWwcWycWzcSOcWicTrdbjcTrcTrcTrcTrcTrdbmcTrdaTcTXaaaabqaaaaaaabqaaaaaaaaacVGcWAcWFcWEdeAcxTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYAaaaaaaaaaaaaaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabfaaadfvcWncVMdbpcWpcWpcWpdbwcWrcWscWtcWpdbxdfGcWVcWVcWWcWVcWVcWXcWYcSOcXccXbcXdcXbcXbcXecXbcXbcXpcXfcXMcVkabqabqaaacVGcVGcVGcVGcVGcVGcXgcXicXhcVGcVGcVGcVGcVGcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabqaaaaaaaaaaaaaaacYAaaaaaaabqaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabeaaaaaaaaaabeabfabeabqabeaaaaaaaaaaaaabfabqdfvcWncWMcVRcWNcWOcUXcWPcWQcZlcZkdggdhidgpcXmcUXcXncUXcXmcZxcZCcSOcYfcTXcYfcTXcTXcTXcTXcTXcYfcTXcYfcTXaaaabqabqcVGcXqcmDdbCcXtcVGcXucXvcVGcVGcmGdbKdbFcXzcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqauparBaupabqabqabqabqcYAabqabqabqabqabqabearBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcXjcVMcVRcWNcWNcXkcSOcSOcSOcSOdhjcVacXIcXJcXJcXKcXJcXJcXLcZRcVkcYBcTXcXbcTXaaaaaaaaacTXcYXcTXcXbcTXaaaabqaaacNzcXOcXPcXQcXRcnkcXScXTcXUcnvcXVcXWcXXcnTcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaaaaaacYYaaaaaaabqaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcSOcSOcSOcXEcUXcUXcUXcXFdbLcSOcSOcSOcSOcSOdhldhldhldhldhlcSOcSOcVkcYfcTXcYfcTXaaaaaaaaacTXcYfcTXcYfcZTabqabqaaacNzcnUcYpcYqcYrcYrcYscYtcYucYucYucYucYvcnVcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacZbcZbcZbcZbcZbabqcYZabqcZbcZbcZbcZbcZbaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcYgcYhdbXcYjcYkcXKcYldbccSOdhnaaaaaacYDdhpdhpdhpdhpdahdaXdhpdaicZodhpcZodajdhpdhpdhpdaicZpdhpdcbdalcYEcYJaaacVGcYKcnWdcqdclcYQcYPcZKcYRcZLdgWcYUcYVcpecVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZccZdcZdcZdcZdcZjcZAcZWdcvdcvdcvdcvdcNabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSOdfvcSOcSOdfvdfvdfvcSOdagcSOabqabqdazdbadaAdcTdcPdaBcZedcncZBdaCcZBdaDcZBdaCdaCdaDdaCddVcZBdaCcZBcZBdaKdaJaaacVGcZrcZrcZrcZrcTkcZucZUcZDcTkcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqddkddkddkddkddkaaacYZaaaddkddkddkddkddkabqarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqcZFdaZcZedbkcZBddadbqdbhcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZgdhpaaacVGcZGcZHcZHcpfdbecZMdasdaqddWcpgcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqabqabqaaacYZaaaabqaaaabqaaaabqaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZedbPddccZBcZBdaJcZBcZBdbQdbYdbQdbQdbQcZBdbQdbQdbQdbYdbQcZBcZBdccdaiabqcVGcZPcZPcZPcqcdbBcZZdaadabdbIcqjcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYZabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZedcedddcZBcZBdcFcZBcZBdhpdebdhpdcmdhpcZBdhpdcmdhpdebdhpcZBcZBcZBdhpaaacVGaOEcZPcZPcqJdeTdaGdardaIdbRcqXcZHcZHdavcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZccZdcZdcZdcZdcZjcYZdcvdcNdcNdcNdcNddkabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdbaddmddacZBcZBdcocZBcZBdaCdcpdaCdaCdaCcZBdaCdaCdaCdcpdaCcZBcZBdfrdaiaaacVGcZrcZrcZrcZrdaFdaRdaHdfDdaFcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYZabqcZAcZAcZAcZAcZAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZedbPddccZBcZBdaJcZBcZBdbQdbYdbQdbQdbQcZBdbQdbQdbQdbYdbQcZBcZBdccdaiabqcVGcZPcZPcZPcqcdbBcZZdaadabdbIcqjcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacZbcZbcZbcZbcZbabqcYZabqcZbcZbcZbcZbcZbabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZedcedddcZBcZBdcFcZBcZBdhpdebdhpdcmdhpcZBdhpdcmdhpdebdhpcZBcZBcZBdhpaaacVGaOEcZPcZPcqJdeTdaGdardaIdbRcqXcZHcZHdavcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZccZdcZdcZdcZdcZjcYZcZWdcvdcvdcvdcvdcNabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdbaddmddacZBcZBdcocZBcZBdaCdcpdaCdaCdaCcZBdaCdaCdaCdcpdaCcZBcZBdfrdaiaaacVGcZrcZrcZrcZrdaFdaRdaHdfDdaFcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqddkddkddkddkddkaaacYZabqddkddkddkddkddkaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZedcrcZBddccZBcZedcJcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBdhpaaacVGcZGcZHcZHcrsdbedbodaHdbrdfHcsdcZPcZPaOEcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaabqaaacYZaaaabqaaaabqabqabqabqaupaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdbOcZedcMdhvdfScZBcZedcncZBdbQdbQdcQdbQdbQcZBdbQdbQdbYdbQdbQcZBcZBdcRdcoaaacVGcZPcZPcZPcsedcfcZZdbddabdckcsfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqddwabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdcGdcScYEdaXddedaWcYEdcUdhpdalcYHdaXdhpdaYdhpdcVdaXdhpdcmdcWdcWdaldbaabqcVGaOEcZPcZPcsmdfWdaGdbndbsdbRcsAcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcZccZdcZdcZdcZdcZjcYZdcvdcNdcNdcNdcNddkabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZeddbcZEddgddfcZeddiddfddjddjcZeddnddlcZBddodaJdamdbtdbgddpddpddqdaJcVGcVGcZrcZrcZrcZrdaFdbzdaHdbAdaFcZrcZrcZrcZrcVGcVGaaaabqabqabqabqaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaaddDaaacZAcZAcZAcZAcZAaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZeddbcZEdalddEddFddiddfddfddGcZedgacZBcZBdbidhpdgccZEcZEcZEcZEddpdhpcVGcZGcZHcZHcsBdbedchdcgdaHdbrdaqdcwcsDdbDcZPcZPcVGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaacYYabqaaaaaaabqabqaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZeddIcZEcZEddTdbhddYddfddfdevcZedeKcZBcZBcZBdaYddHcZEcZEcZEcZEddpdhpcVGcZPcZPcZPcsFdcxdabdabdbJdabdabdcycsKdbMcZPcZPcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacYYaaaaaaaaaarBarBarBauparBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdbOcZedcMdhvdfScZBcZedcncZBdbQdbQdcQdbQdbQcZBdbQdbQdbYdbQdbQcZBcZBdcRdcoaaacVGcZPcZPcZPcsedcfcZZdbddabdckcsfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacZbcZbcZbcZbcZbabqddwabqcZbcZbcZbcZbcZbabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdcGdcScYEdaXddedaWcYEdcUdhpdalcYHdaXdhpdaYdhpdcVdaXdhpdcmdcWdcWdaldbaabqcVGaOEcZPcZPcsmdfWdaGdbndbsdbRcsAcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcZccZdcZdcZdcZdcZjcYZcZWdcvdcvdcvdcvdcNabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZeddbcZEddgddfcZeddiddfddjddjcZeddnddlcZBddodaJdamdbtdbgddpddpddqdaJcVGcVGcZrcZrcZrcZrdaFdbzdaHdbAdaFcZrcZrcZrcZrcVGcVGaaaabqabqabqabqaaaaaaaaaaaaaaaaaaabqabqddkddkddkddkddkaaaddDaaaddkddkddkddkddkaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZeddbcZEdalddEddFddiddfddfddGcZedgacZBcZBdbidhpdgccZEcZEcZEcZEddpdhpcVGcZGcZHcZHcsBdbedchdcgdaHdbrdaqdcwcsDdbDcZPcZPcVGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaacYAabqaaaaaaabqabqaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZeddIcZEcZEddTdbhddYddfddfdevcZedeKcZBcZBcZBdaYddHcZEcZEcZEcZEddpdhpcVGcZPcZPcZPcsFdcxdabdabdbJdabdabdcycsKdbMcZPcZPcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacYAaaaaaaaaaarBarBarBauparBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfpdbadfMcZEcZEddTcZedgedgYdgQdgZcZedgddhadhcdhbdhedexdgfdeSdfCdeVdfEdcocVGcZPcZPcZPcsLdczdbSdbTdbUdbVdbWdcAcsMdbZcZHdavcVGaaaabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBabqdcaabqarBaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhhdhpddgddgdhpddxcYEdhpdhpdalddxdaXdhpdhpdalddxcYEdaXdhpdhpdalcYEddycVGcVGcVGcVGcVGdcBdcjdcidezcYRdeBddRcVGcVGcVGcVGcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaabqaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacVGdcsdctdcuddSdgBddUdejddXdetdesdcCdcDdcEcVGaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/asteroid4.dmm b/_maps/map_files/RandomRuins/SpaceRuins/asteroid4.dmm
index ce84ac40151..d5314c72509 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/asteroid4.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/asteroid4.dmm
@@ -9,9 +9,9 @@
"i" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/ruin/unpowered)
"j" = (/obj/item/shard,/turf/simulated/shuttle/floor,/area/ruin/unpowered)
"k" = (/turf/simulated/shuttle/floor,/area/ruin/unpowered)
-"l" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/ruin/unpowered)
-"m" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/turf/space,/area/ruin/unpowered)
-"n" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/floor/plating,/area/ruin/unpowered)
+"l" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/ruin/unpowered)
+"m" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/turf/simulated/shuttle/floor,/area/ruin/unpowered)
+"n" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/gasthelizards.dmm b/_maps/map_files/RandomRuins/SpaceRuins/gasthelizards.dmm
index b6545034b91..2d8ea6ed036 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/gasthelizards.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/gasthelizards.dmm
@@ -33,7 +33,7 @@
"G" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"H" = (/obj/structure/table,/obj/item/storage/box/prisoner,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"I" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/light,/obj/structure/table,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
-"J" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/ruin/unpowered)
+"J" = (/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"K" = (/obj/structure/table/reinforced,/obj/item/surgicaldrill,/obj/item/hemostat,/obj/item/scalpel,/obj/item/surgical_drapes,/obj/item/retractor,/obj/item/cautery,/obj/item/circular_saw,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"L" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"M" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/glass/bottle/mutagen,/obj/item/reagent_containers/glass/bottle/mutagen,/obj/item/razor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
index 910d70d7301..9fe0823f8a7 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
@@ -1,6 +1,6 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"},/area/ruin/powered)
-"c" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/space,/area/ruin/powered)
+"c" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating/airless,/area/ruin/powered)
"d" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"},/area/ruin/powered)
"e" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/ruin/powered)
"f" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor,/area/ruin/powered)
@@ -22,7 +22,7 @@
"v" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"w" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"x" = (/obj/effect/decal/cleanable/blood/gibs/robot/up,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
-"y" = (/obj/machinery/door/poddoor{id_tag = "mecha cargo"; name = "Cargo Bay Door"; tag = ""},/turf/space,/area/ruin/powered)
+"y" = (/obj/machinery/door/poddoor{id_tag = "mecha cargo"; name = "Cargo Bay Door"; tag = ""},/turf/simulated/shuttle/floor{tag = "icon-floor3"; icon_state = "floor3"},/area/ruin/powered)
"z" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"A" = (/obj/effect/decal/mecha_wreckage/durand,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"B" = (/obj/item/stack/tile/plasteel{pixel_x = 7; pixel_y = 8},/turf/simulated/floor/plating/airless,/area/ruin/powered)
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
index 7864a7353a7..c95082eac76 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
@@ -16,10 +16,10 @@
"ap" = (/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med)
"aq" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"ar" = (/turf/simulated/wall,/area/ruin/onehalf/drone_bay)
-"as" = (/obj/machinery/door/poddoor{id_tag = "bayext1"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
-"at" = (/obj/machinery/door/poddoor{id_tag = "bayext2"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
-"au" = (/obj/machinery/door/poddoor/preopen{id_tag = "bayext3"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
-"av" = (/obj/machinery/door/poddoor{id_tag = "bayext4"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
+"as" = (/obj/machinery/door/poddoor{id_tag = "bayext1"; name = "mining drone bay blast door"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
+"at" = (/obj/machinery/door/poddoor{id_tag = "bayext2"; name = "mining drone bay blast door"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
+"au" = (/obj/machinery/door/poddoor/preopen{id_tag = "bayext3"; name = "mining drone bay blast door"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
+"av" = (/obj/machinery/door/poddoor{id_tag = "bayext4"; name = "mining drone bay blast door"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
"aw" = (/obj/structure/lattice,/turf/space,/area/space)
"ax" = (/obj/structure/lattice,/turf/space,/area/ruin/onehalf/hallway)
"ay" = (/obj/structure/table_frame,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
@@ -30,7 +30,7 @@
"aD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"aE" = (/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
"aF" = (/obj/structure/disposalpipe/trunk,/obj/item/ore/diamond,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
-"aG" = (/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
+"aG" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
"aH" = (/obj/item/stack/rods,/turf/space,/area/ruin/onehalf/hallway)
"aI" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"aJ" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
@@ -47,11 +47,11 @@
"aU" = (/obj/item/stack/sheet/metal,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/ruin/onehalf/hallway)
"aV" = (/obj/machinery/door/airlock/medical/glass{name = "airlock"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aW" = (/obj/machinery/door/airlock,/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med)
-"aX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
+"aX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"aY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/closet/crate/medical,/obj/item/clothing/accessory/stethoscope,/obj/item/healthanalyzer,/obj/item/reagent_containers/blood/OMinus,/obj/item/reagent_containers/blood/OMinus,/obj/machinery/power/apc/noalarm{dir = 4; keep_preset_name = 1; name = "Crew Quarters APC"; pixel_x = 27},/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
-"aZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
-"ba" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
-"bb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
+"aZ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc/noalarm{dir = 1; keep_preset_name = 1; name = "Mining Drone Bay APC"; pixel_y = 26},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
+"ba" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
+"bb" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bc" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"bd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"be" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/unsimulated/floor/plating/airless,/area/ruin/onehalf/hallway)
@@ -74,7 +74,7 @@
"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bx" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
-"by" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc/noalarm{dir = 1; keep_preset_name = 1; name = "Mining Drone Bay APC"; pixel_y = 26},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
+"by" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bz" = (/obj/structure/closet/emcloset,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bA" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bB" = (/obj/machinery/door/airlock/public/glass{name = "glass airlock"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
@@ -174,7 +174,7 @@ aaaaaaaaaeacafagagagagagagahagagaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaajakakakagalamanagaoapaoagaqarasaratarauaravaraaaaaaaaaaaa
aaaaawaxaxayazagaAamaBagaCapaoagaDaraEaraFaraEaraEarawaraGaraaaa
aaaaaaaHajaxaIagaJaKaYagaoapaoagaqaraMaNaOaraPaQaRaraaaraSaraaaa
-aaaaawajaxaTaIagagaVagagagaWagagaXbyaZbaaZbaaZbabbarararbcararaa
+aaaaawajaxaTaIagagaVagagagaWagagaXaZbabbbabbbabbbyarararbcararaa
aaaaawaUbebdbfbhbhbgbfbfbjbhbkblbmbnbobnbobnbobnbobnbpbqbrbsbtaa
aaaaaabibubvbwbwbvbxbwbwaLbvbAbBbCbnbDbEbDbnbDbEbFbGarbHbGbIbtaa
aaaaaabJajakbzbKbLbNbObPbXaIbSbTbTbTbTbTbTbTbTbTbTbTararbtararaa
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
index 075311311ad..c8de5690285 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
@@ -27,8 +27,8 @@
"aA" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/ruin/powered)
"aB" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/turf/simulated/shuttle/floor,/area/ruin/powered)
"aC" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/ruin/powered)
-"aD" = (/obj/machinery/door_control{name = "pod door cycle"; pixel_x = 6; id = "pod cycle"},/turf/simulated/wall,/area/ruin/powered{name = "Space Bar"})
-"aE" = (/obj/machinery/vending/boozeomat,/turf/simulated/wall,/area/ruin/powered{name = "Space Bar"})
+"aD" = (/obj/machinery/door_control{id = "pod cycle"; name = "pod door cycle"; pixel_x = -26},/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
+"aE" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aF" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aG" = (/obj/machinery/light/small,/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aH" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
@@ -37,7 +37,7 @@
"aK" = (/obj/structure/table,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aL" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/reagent_containers/glass/rag,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aM" = (/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/ruin/powered{name = "Space Bar"})
-"aN" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
+"aN" = (/obj/structure/chair/stool/bar,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aO" = (/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aQ" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/powered{name = "Space Bar"})
@@ -65,9 +65,11 @@
"bm" = (/obj/structure/glowshroom/single,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bn" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered)
"bo" = (/turf/simulated/floor/plating,/area/ruin/powered)
-"bp" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/ruin/powered)
+"bp" = (/turf/simulated/floor/plating/airless/asteroid,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/ruin/powered)
"bq" = (/obj/machinery/door/poddoor/preopen{id_tag = "pod cycle"; name = "airlock dock"},/turf/simulated/floor/plating,/area/ruin/powered)
"br" = (/obj/machinery/door/poddoor{id_tag = "pod cycle"; name = "airlock dock"},/turf/simulated/floor/plating,/area/ruin/powered)
+"bs" = (/turf/simulated/floor/plating/airless/asteroid,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/ruin/powered)
+"bt" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/ruin/powered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -84,7 +86,7 @@ aaaaaaaaaaaaaaacacacafagagagagagagaiaiaiaiagagagagagagagagagagagagafacacaaaaaaaa
aaaaaaaaaaacacacacafagajakalagagaiaiaiamamamamamamamamamamamamagagafacacaaaaaaaa
aaaaaaaaaaacacacafagaganaoanagagaiaiaiamapaqarasamatauavasawamagagafacacacaaaaaa
aaaaaaaaacacafafagagaganaxanagagaiaiaiamasasasasayasasasasazamagagagafacacaaaaaa
-aaaaaaababacafagagagagaAaBaCagagagaiaiaDasasasasaEaFaGaHasaIamagagagafacacaaaaaa
+aaaaaaababacafagagagagaAaBaCagagagaiaiamaDasasasaEaFaGaHasaIamagagagafacacaaaaaa
aaaaaaaaabacaJagagagagagagagagagagagagamaKaKaLaKamamamamaMamamagagagaJacaaaaaaaa
aaaaaaaaabacafafagagagagagagagagagagagamaNaNaNaNaOaOaPaOaOaOamagagagafacabaaaaaa
aaaaaaaaacacacacafagagagagagagagamaQaRamaOaOaOaOaOaOaOaOaOaOaQagagafacacababaaaa
@@ -96,11 +98,11 @@ aaaaaaababacafagagagagagagagagagagagagambeaOaOaOamamamamambfamaiagagafacacacaaaa
aaaaaaaaabacafagagagagagagagagajakalagamaOaOaOaOambgaOaOaOaOamaiagagagafacabaaaa
aaaaaaaaacacafagagagagagagagaganaoanagaQaOaOaOaYambgaOaOaObhamaiaiagagafacabaaaa
aaaaaaaaacacacafagagagagagagaganaxanagagaQaOaObiamamambjaObhamaiaiagagafacabaaaa
-aaaaaaaaaaacacafagagagagagagagaAaBaCagagagaQaObeambkblaObmaOamaiaiagagafacacaaaa
+aaaaaaaaaaacacafagagagagagagagbpaBbsagagagaQaObeambkblaObmaOamaiaiagagafacacaaaa
aaaaaaaaaaacaJaJaJaJagagagagagagagagagagagagaQamamamamamamamamaiaiagafacacacaaaa
aaaaaaaaaaaabnbobobnagagagagagagagagagagaiaiagagagaiaiaiaiaiaiaiaiagafacacacaaaa
aaaaaaaaaaaaaJaJaJaJagagagagagagagagagaiaiaiagagagagagaiaiaiaiaiaiafacacacaaaaaa
-aaaaaaaaaaaaacacaJagaJbpbpbpbpbpbpaJagagaiagagagagagagagagaiaiaiagafacacaaaaaaaa
+aaaaaaaaaaaaacacaJagaJbtbtbtbtbtbtaJagagaiagagagagagagagagaiaiaiagafacacaaaaaaaa
aaaaaaaaaaaaacabaJagaJbqbqbqbqbqbqaJagagagagagagagagagagagagagagafaJacabaaaaaaaa
aaaaaaaaaaaaababaJaJaJboboboboboboaJaJaJaJafafafafafafafafafafaJacacacacaaaaaaaa
aaaaaaaaaaaaababababaJboboboboboboaJacacacacacacacacacacacacacacacacacaaaaaaaaaa
diff --git a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
index 329eb9638b9..cf31f1b8305 100644
--- a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
+++ b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
@@ -3,165 +3,165 @@
"ac" = (/turf/simulated/floor/plating/airless/asteroid,/area/awaymission)
"ad" = (/obj/effect/mob_spawn/human/doctor,/turf/simulated/floor/plating/airless/asteroid,/area/awaymission)
"ae" = (/obj/item/circular_saw,/obj/structure/lattice,/turf/space,/area/space)
-"af" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12"},/area/awaymission/BMPship/Aft)
-"ag" = (/turf/simulated/shuttle/wall{tag = "icon-swall4";icon_state = "swall4"},/area/awaymission/BMPship/Aft)
-"ah" = (/turf/simulated/shuttle/wall{tag = "icon-swall14";icon_state = "swall14"},/area/awaymission/BMPship/Aft)
-"ai" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10";icon_state = "swall_f10";dir = 2},/area/awaymission/BMPship/Aft)
+"af" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/BMPship/Aft)
+"ag" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/BMPship/Aft)
+"ah" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/BMPship/Aft)
+"ai" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/awaymission/BMPship/Aft)
"aj" = (/mob/living/simple_animal/hostile/carp,/turf/space,/area/space)
-"ak" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12"},/area/awaymission/BMPship/Gate)
+"ak" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/BMPship/Gate)
"al" = (/turf/simulated/floor/engine,/area/awaymission/BMPship/Fore)
-"am" = (/turf/simulated/shuttle/wall{tag = "icon-swall4";icon_state = "swall4"},/area/awaymission/BMPship/Gate)
-"an" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/awaymission/BMPship/Aft)
+"am" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/BMPship/Gate)
+"an" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/BMPship/Aft)
"ao" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"ap" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
-"aq" = (/turf/simulated/shuttle/wall{tag = "icon-swall14";icon_state = "swall14"},/area/awaymission/BMPship/Gate)
+"aq" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/BMPship/Gate)
"ar" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
"as" = (/obj/structure/lattice,/turf/space,/area/space)
-"at" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10";icon_state = "swall_f10";dir = 2},/area/awaymission/BMPship/Gate)
-"au" = (/obj/machinery/porta_turret{lethal = 1;name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
+"at" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/awaymission/BMPship/Gate)
+"au" = (/obj/machinery/porta_turret{lethal = 1; name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"av" = (/obj/structure/table,/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"aw" = (/turf/simulated/shuttle/wall{tag = "icon-swall7";icon_state = "swall7"},/area/awaymission/BMPship/Aft)
+"aw" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/BMPship/Aft)
"ax" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
-"ay" = (/turf/simulated/shuttle/wall{tag = "icon-swall13";icon_state = "swall13"},/area/awaymission/BMPship/Aft)
-"az" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/awaymission/BMPship/Gate)
-"aA" = (/turf/simulated/shuttle/wall{tag = "icon-swall8";icon_state = "swall8"},/area/awaymission/BMPship/Aft)
+"ay" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Aft)
+"az" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/BMPship/Gate)
+"aA" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/BMPship/Aft)
"aB" = (/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
-"aC" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f5";icon_state = "swall_f5";dir = 2},/area/awaymission/BMPship/Gate)
+"aC" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/BMPship/Gate)
"aD" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"aE" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aF" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"aG" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"aH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aI" = (/obj/machinery/light/small,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
-"aJ" = (/turf/simulated/shuttle/wall{tag = "icon-swall7";icon_state = "swall7"},/area/awaymission/BMPship/Gate)
-"aK" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6";icon_state = "swall_f6";dir = 2},/area/awaymission/BMPship/Gate)
-"aL" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3"},/area/awaymission/BMPship/Aft)
-"aM" = (/turf/simulated/shuttle/wall{tag = "icon-swall13";icon_state = "swall13"},/area/awaymission/BMPship/Gate)
+"aJ" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/BMPship/Gate)
+"aK" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Gate)
+"aL" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/BMPship/Aft)
+"aM" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Gate)
"aN" = (/obj/machinery/door/airlock/silver{locked = 1},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"aO" = (/turf/simulated/shuttle/wall{tag = "icon-swall8";icon_state = "swall8"},/area/awaymission/BMPship/Gate)
-"aP" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12";dir = 2},/area/awaymission/BMPship/Gate)
+"aO" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/BMPship/Gate)
+"aP" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/awaymission/BMPship/Gate)
"aQ" = (/turf/simulated/shuttle/wall,/area/awaymission/BMPship/Gate)
"aR" = (/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aS" = (/obj/structure/bed/roller,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aT" = (/obj/item/scalpel,/obj/structure/closet/crate,/obj/item/tank/anesthetic,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"aU" = (/turf/simulated/shuttle/wall{tag = "icon-swall4";icon_state = "swall4"},/area/awaymission/BMPship/Fore)
-"aV" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12"},/area/awaymission/BMPship/Fore)
-"aW" = (/turf/simulated/shuttle/wall{tag = "icon-swall14";icon_state = "swall14"},/area/awaymission/BMPship/Fore)
-"aX" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10";icon_state = "swall_s10";dir = 2},/area/awaymission/BMPship/Fore)
+"aU" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/BMPship/Fore)
+"aV" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/BMPship/Fore)
+"aW" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/BMPship/Fore)
+"aX" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/awaymission/BMPship/Fore)
"aY" = (/obj/item/restraints/handcuffs,/obj/structure/closet/crate,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aZ" = (/obj/item/storage/box/syringes,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"ba" = (/obj/item/bodybag,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"bb" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"bc" = (/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1"},/area/awaymission/BMPship/Aft)
+"bb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"bc" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Aft)
"bd" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"be" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"bf" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3"},/area/awaymission/BMPship/Gate)
-"bg" = (/obj/machinery/computer/operating,/obj/structure/cable{d2 = 8;icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"bh" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Gate)
-"bi" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)";icon_state = "warnplate";dir = 9},/area/awaymission/BMPship/Gate)
-"bj" = (/obj/structure/table,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Gate)
+"be" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"bf" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/BMPship/Gate)
+"bg" = (/obj/machinery/computer/operating,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"bh" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bi" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/meat,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bj" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"bl" = (/obj/item/stack/spacecash/c500,/obj/item/stack/spacecash/c100,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
-"bm" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Gate)
+"bm" = (/obj/structure/table,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bn" = (/obj/structure/bed,/obj/item/bedsheet/yellow,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
-"bo" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)";icon_state = "warnplate";dir = 9},/area/awaymission/BMPship/Fore)
-"bp" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3"},/area/awaymission/BMPship/Fore)
-"bq" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Fore)
-"br" = (/obj/structure/rack,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Fore)
-"bs" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)";icon_state = "warnplate";dir = 5},/area/awaymission/BMPship/Fore)
-"bt" = (/obj/structure/sign/vacuum,/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1"},/area/awaymission/BMPship/Fore)
-"bu" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Gate)
-"bv" = (/obj/structure/table,/obj/item/storage/box,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Gate)
-"bw" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)";icon_state = "warnplate";dir = 5},/turf/simulated/shuttle/wall{tag = "icon-swall_f5";icon_state = "swall_f5";dir = 2},/area/awaymission/BMPship/Gate)
-"bx" = (/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1;environ = 2;equipment = 0;lighting = 0;locked = 0;operating = 1;req_access = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/BMPship/Gate)
+"bo" = (/obj/structure/table,/obj/item/storage/box,/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bp" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/BMPship/Fore)
+"bq" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"br" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; environ = 2; equipment = 0; lighting = 0; locked = 0; operating = 1; req_access = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bs" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bt" = (/obj/structure/sign/vacuum,/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Fore)
+"bu" = (/obj/structure/largecrate,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bv" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
+"bw" = (/obj/structure/rack,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
+"bx" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
"by" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bz" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bA" = (/obj/effect/gibspawner/generic,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"bB" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"bC" = (/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1"},/area/awaymission/BMPship/Gate)
-"bD" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/BMPship/Gate)
+"bB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"bC" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Gate)
+"bD" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
"bE" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"bF" = (/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
"bG" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
"bH" = (/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bI" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
-"bJ" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/BMPship/Fore)
-"bK" = (/turf/simulated/shuttle/wall{tag = "icon-swall2";icon_state = "swall2"},/area/awaymission/BMPship/Aft)
+"bJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bK" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Aft)
"bL" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bM" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bN" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"bO" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"bO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bP" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"bQ" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)";icon_state = "warnplate";dir = 4},/area/awaymission/BMPship/Gate)
-"bR" = (/turf/simulated/floor/plasteel{tag = "icon-wood-broken";icon_state = "wood-broken"},/area/awaymission/BMPship/Fore)
-"bS" = (/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Fore)
-"bT" = (/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Fore)
-"bU" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)";icon_state = "warnplate";dir = 6},/area/awaymission/BMPship/Fore)
-"bV" = (/turf/simulated/shuttle/wall{tag = "icon-swall2";icon_state = "swall2"},/area/awaymission/BMPship/Fore)
-"bW" = (/obj/item/hand_labeler,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"bX" = (/turf/simulated/shuttle/wall{tag = "icon-swall11";icon_state = "swall11"},/area/awaymission/BMPship/Aft)
+"bQ" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
+"bR" = (/turf/simulated/floor/plasteel{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/awaymission/BMPship/Fore)
+"bS" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bT" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
+"bU" = (/obj/machinery/light/small,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
+"bV" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Fore)
+"bW" = (/obj/item/hand_labeler,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"bX" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/BMPship/Aft)
"bY" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bZ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"ca" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/obj/item/clothing/glasses/regular/hipster,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"cb" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated,/area/awaymission/BMPship/Gate)
-"cc" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"cd" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/BMPship/Gate)
+"ca" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/item/clothing/glasses/regular/hipster,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"cb" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated,/area/awaymission/BMPship/Gate)
+"cc" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"cd" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
"ce" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"cf" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2";icon_state = "swallc2"},/area/awaymission/BMPship/Fore)
-"cg" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTH)";icon_state = "carpetside";dir = 1},/area/awaymission/BMPship/Fore)
-"ch" = (/turf/simulated/shuttle/wall{tag = "icon-swall8";icon_state = "swall8"},/area/awaymission/BMPship/Fore)
-"ci" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTH)";icon_state = "carpetside";dir = 1},/area/awaymission/BMPship/Fore)
-"cj" = (/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1"},/area/awaymission/BMPship/Fore)
-"ck" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12"},/area/awaymission/BMPship/Midship)
-"cl" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2";icon_state = "swallc2"},/area/awaymission/BMPship/Midship)
-"cm" = (/turf/simulated/shuttle/wall{tag = "icon-swall13";icon_state = "swall13"},/area/awaymission/BMPship/Midship)
-"cn" = (/turf/simulated/shuttle/wall{tag = "icon-swall15";icon_state = "swall15"},/area/awaymission/BMPship/Aft)
-"co" = (/obj/machinery/gateway/centeraway{calibrated = 0},/obj/structure/cable{icon_state = "0-4";d2 = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"cf" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/BMPship/Fore)
+"cg" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTH)"; icon_state = "carpetside"; dir = 1},/area/awaymission/BMPship/Fore)
+"ch" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/BMPship/Fore)
+"ci" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTH)"; icon_state = "carpetside"; dir = 1},/area/awaymission/BMPship/Fore)
+"cj" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Fore)
+"ck" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/BMPship/Midship)
+"cl" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/BMPship/Midship)
+"cm" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Midship)
+"cn" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/BMPship/Aft)
+"co" = (/obj/machinery/gateway/centeraway{calibrated = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cp" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"cq" = (/obj/structure/cable{d2 = 8;icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"cr" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"cs" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"ct" = (/turf/simulated/shuttle/wall{tag = "icon-swall2";icon_state = "swall2"},/area/awaymission/BMPship/Gate)
+"cq" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"cr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"cs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"ct" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Gate)
"cu" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cv" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cw" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"cx" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)";icon_state = "warnplate";dir = 4},/area/awaymission/BMPship/Gate)
-"cy" = (/turf/simulated/shuttle/wall{tag = "icon-swall11";icon_state = "swall11"},/area/awaymission/BMPship/Gate)
-"cz" = (/turf/simulated/floor/plasteel{tag = "icon-carpet";icon_state = "carpet"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9";icon_state = "swall_f9";dir = 2},/area/awaymission/BMPship/Fore)
-"cA" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6";icon_state = "swall_f6";dir = 2},/area/awaymission/BMPship/Fore)
-"cB" = (/turf/simulated/floor/plasteel{tag = "icon-carpet";icon_state = "carpet"},/area/awaymission/BMPship/Fore)
-"cC" = (/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1;equipment = 0;lighting = 0;locked = 0;operating = 0;pixel_y = 24;req_access = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet";icon_state = "carpet"},/area/awaymission/BMPship/Fore)
-"cD" = (/obj/structure/table,/obj/item/screwdriver,/obj/item/screwdriver,/obj/item/paper{info = "The next person who takes one of my screwdrivers gets stabbed with one. They are MINE. - Love, Madsen";name = "scribbled note"},/obj/item/screwdriver,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"cE" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/awaymission/BMPship/Midship)
-"cF" = (/turf/simulated/floor/plasteel{tag = "icon-green (WEST)";icon_state = "green";dir = 8},/area/awaymission/BMPship/Midship)
+"cx" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"cy" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/BMPship/Gate)
+"cz" = (/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/awaymission/BMPship/Fore)
+"cA" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Fore)
+"cB" = (/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
+"cC" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; equipment = 0; lighting = 0; locked = 0; operating = 0; pixel_y = 24; req_access = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
+"cD" = (/obj/structure/table,/obj/item/screwdriver,/obj/item/screwdriver,/obj/item/paper{info = "The next person who takes one of my screwdrivers gets stabbed with one. They are MINE. - Love, Madsen"; name = "scribbled note"},/obj/item/screwdriver,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"cE" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/BMPship/Midship)
+"cF" = (/turf/simulated/floor/plasteel{tag = "icon-green (WEST)"; icon_state = "green"; dir = 8},/area/awaymission/BMPship/Midship)
"cG" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"cH" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/BMPship/Midship)
-"cI" = (/obj/structure/sink{dir = 2},/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/BMPship/Midship)
-"cJ" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/BMPship/Midship)
-"cK" = (/turf/simulated/floor/plasteel{tag = "icon-green (EAST)";icon_state = "green";dir = 4},/area/awaymission/BMPship/Midship)
-"cL" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3"},/area/awaymission/BMPship/Midship)
+"cH" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/BMPship/Midship)
+"cI" = (/obj/structure/sink{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/BMPship/Midship)
+"cJ" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/BMPship/Midship)
+"cK" = (/turf/simulated/floor/plasteel{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/BMPship/Midship)
+"cL" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/BMPship/Midship)
"cM" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"cN" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"cO" = (/obj/structure/table,/obj/item/kitchen/knife/butcher,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"cP" = (/obj/machinery/processor,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"cQ" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"cN" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"cO" = (/obj/structure/table,/obj/item/kitchen/knife/butcher,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"cP" = (/obj/machinery/processor,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"cQ" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
"cR" = (/obj/structure/table,/obj/item/kitchen/knife,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"cS" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"cT" = (/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"cU" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"cV" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"cW" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-13 (EAST)";icon_state = "carpet15-13";dir = 4},/area/awaymission/BMPship/Fore)
-"cX" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)";icon_state = "carpet15-7";dir = 4},/area/awaymission/BMPship/Fore)
-"cY" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)";icon_state = "carpet15-7";dir = 4},/area/awaymission/BMPship/Fore)
+"cW" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-13 (EAST)"; icon_state = "carpet15-13"; dir = 4},/area/awaymission/BMPship/Fore)
+"cX" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)"; icon_state = "carpet15-7"; dir = 4},/area/awaymission/BMPship/Fore)
+"cY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)"; icon_state = "carpet15-7"; dir = 4},/area/awaymission/BMPship/Fore)
"cZ" = (/obj/item/reagent_containers/food/snacks/hugemushroomslice,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"da" = (/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1"},/area/awaymission/BMPship/Midship)
-"db" = (/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"da" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Midship)
+"db" = (/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
"dc" = (/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Midship)
-"dd" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"de" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"df" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3";icon_state = "swallc3"},/area/awaymission/BMPship/Aft)
+"dd" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"de" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"df" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"},/area/awaymission/BMPship/Aft)
"dg" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"dh" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-14 (EAST)";icon_state = "carpet15-14";dir = 4},/area/awaymission/BMPship/Fore)
+"dh" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-14 (EAST)"; icon_state = "carpet15-14"; dir = 4},/area/awaymission/BMPship/Fore)
"di" = (/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"dj" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"dk" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
@@ -169,274 +169,283 @@
"dm" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/BMPship/Aft)
"dn" = (/obj/machinery/gibber,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/BMPship/Aft)
"do" = (/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
-"dp" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-11 (EAST)";icon_state = "carpet15-11";dir = 4},/area/awaymission/BMPship/Fore)
+"dp" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-11 (EAST)"; icon_state = "carpet15-11"; dir = 4},/area/awaymission/BMPship/Fore)
"dq" = (/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"dr" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet";icon_state = "carpet"},/area/awaymission/BMPship/Fore)
-"ds" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-11 (EAST)";icon_state = "carpet15-11";dir = 4},/area/awaymission/BMPship/Fore)
+"dr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
+"ds" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-11 (EAST)"; icon_state = "carpet15-11"; dir = 4},/area/awaymission/BMPship/Fore)
"dt" = (/obj/item/reagent_containers/food/snacks/hugemushroomslice,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Midship)
-"du" = (/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"dv" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"dw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"du" = (/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"dv" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"dw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
"dx" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"dy" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel{tag = "icon-barber";icon_state = "barber"},/area/awaymission/BMPship/Midship)
-"dz" = (/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"dy" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel{tag = "icon-barber"; icon_state = "barber"},/area/awaymission/BMPship/Midship)
+"dz" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"dA" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/BMPship/Aft)
"dB" = (/obj/item/crowbar,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/BMPship/Aft)
-"dC" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/BMPship/Aft)
+"dC" = (/obj/structure/largecrate,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"dD" = (/obj/structure/closet/secure_closet/freezer/meat{opened = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/BMPship/Aft)
-"dE" = (/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1;environ = 0;equipment = 3;locked = 0;operating = 0;req_access = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"dE" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; environ = 0; equipment = 3; locked = 0; operating = 0; req_access = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"dF" = (/obj/effect/landmark{name = "awaystart"},/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/BMPship/Aft)
-"dG" = (/turf/simulated/floor/plasteel{dir = 4;icon_state = "warning"},/area/awaymission/BMPship/Aft)
-"dH" = (/obj/structure/table,/obj/item/paper{info = "I'm no scientist, but judging from the design and components, it seems to be some kind of gateway. This thing is gonna be worth a lot of cash to the right man. The boys are excited, as they have every right to be, and I've let them crack into that case of beer we got. I normally wouldn't allow such a thing, but this is a time for celebration! It's not like a couple drinks will hurt anything.";name = "Captain's log entry"},/turf/simulated/floor/plasteel{tag = "icon-carpet6-0 (EAST)";icon_state = "carpet6-0";dir = 4},/area/awaymission/BMPship/Fore)
-"dI" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{tag = "icon-carpet14-8 (EAST)";icon_state = "carpet14-8";dir = 4},/area/awaymission/BMPship/Fore)
-"dJ" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-carpet14-2 (EAST)";icon_state = "carpet14-2";dir = 4},/area/awaymission/BMPship/Fore)
-"dK" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet";icon_state = "carpet"},/area/awaymission/BMPship/Fore)
-"dL" = (/turf/simulated/floor/plasteel{tag = "icon-carpet10-0 (EAST)";icon_state = "carpet10-0";dir = 4},/area/awaymission/BMPship/Fore)
-"dM" = (/turf/simulated/floor/plasteel{tag = "icon-green (SOUTHWEST)";icon_state = "green";dir = 10},/area/awaymission/BMPship/Midship)
-"dN" = (/turf/simulated/floor/plasteel{tag = "icon-green";icon_state = "green"},/area/awaymission/BMPship/Midship)
-"dO" = (/obj/machinery/seed_extractor,/obj/item/seeds/plump/walkingmushroom,/turf/simulated/floor/plasteel{tag = "icon-green";icon_state = "green"},/area/awaymission/BMPship/Midship)
-"dP" = (/turf/simulated/floor/plasteel{tag = "icon-green (SOUTHEAST)";icon_state = "green";dir = 6},/area/awaymission/BMPship/Midship)
-"dQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall2";icon_state = "swall2"},/area/awaymission/BMPship/Midship)
-"dR" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"dS" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"dT" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"dU" = (/obj/item/reagent_containers/food/snacks/meat,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"dV" = (/obj/structure/cable{icon_state = "0-4";d2 = 4},/obj/machinery/computer/monitor,/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/BMPship/Aft)
-"dW" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"dX" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"dY" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"dZ" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"ea" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"eb" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)";icon_state = "heater";dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{tag = "icon-engine";icon_state = "engine"},/area/awaymission/BMPship/Aft)
-"ec" = (/obj/structure/shuttle/engine/propulsion{dir = 4;icon_state = "propulsion";tag = "icon-propulsion (WEST)"},/turf/space,/area/awaymission/BMPship/Aft)
+"dG" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"dH" = (/obj/structure/table,/obj/item/paper{info = "I'm no scientist, but judging from the design and components, it seems to be some kind of gateway. This thing is gonna be worth a lot of cash to the right man. The boys are excited, as they have every right to be, and I've let them crack into that case of beer we got. I normally wouldn't allow such a thing, but this is a time for celebration! It's not like a couple drinks will hurt anything."; name = "Captain's log entry"},/turf/simulated/floor/plasteel{tag = "icon-carpet6-0 (EAST)"; icon_state = "carpet6-0"; dir = 4},/area/awaymission/BMPship/Fore)
+"dI" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{tag = "icon-carpet14-8 (EAST)"; icon_state = "carpet14-8"; dir = 4},/area/awaymission/BMPship/Fore)
+"dJ" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-carpet14-2 (EAST)"; icon_state = "carpet14-2"; dir = 4},/area/awaymission/BMPship/Fore)
+"dK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
+"dL" = (/turf/simulated/floor/plasteel{tag = "icon-carpet10-0 (EAST)"; icon_state = "carpet10-0"; dir = 4},/area/awaymission/BMPship/Fore)
+"dM" = (/turf/simulated/floor/plasteel{tag = "icon-green (SOUTHWEST)"; icon_state = "green"; dir = 10},/area/awaymission/BMPship/Midship)
+"dN" = (/turf/simulated/floor/plasteel{tag = "icon-green"; icon_state = "green"},/area/awaymission/BMPship/Midship)
+"dO" = (/obj/machinery/seed_extractor,/obj/item/seeds/plump/walkingmushroom,/turf/simulated/floor/plasteel{tag = "icon-green"; icon_state = "green"},/area/awaymission/BMPship/Midship)
+"dP" = (/turf/simulated/floor/plasteel{tag = "icon-green (SOUTHEAST)"; icon_state = "green"; dir = 6},/area/awaymission/BMPship/Midship)
+"dQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Midship)
+"dR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"dS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"dT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"dU" = (/obj/item/reagent_containers/food/snacks/meat,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"dV" = (/obj/machinery/light/small,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"dW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"dX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"dY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"dZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"ea" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"eb" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{tag = "icon-engine"; icon_state = "engine"},/area/awaymission/BMPship/Aft)
+"ec" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion"; tag = "icon-propulsion (WEST)"},/turf/space,/area/awaymission/BMPship/Aft)
"ed" = (/obj/item/multitool,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
-"ee" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/awaymission/BMPship/Fore)
-"ef" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel{tag = "icon-carpet5-0 (EAST)";icon_state = "carpet5-0";dir = 4},/area/awaymission/BMPship/Fore)
-"eg" = (/turf/simulated/floor/plasteel{tag = "icon-carpet13-4 (EAST)";icon_state = "carpet13-4";dir = 4},/area/awaymission/BMPship/Fore)
-"eh" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{tag = "icon-carpet13-1 (EAST)";icon_state = "carpet13-1";dir = 4},/area/awaymission/BMPship/Fore)
-"ei" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet (EAST)";icon_state = "carpet";dir = 4},/area/awaymission/BMPship/Fore)
-"ej" = (/turf/simulated/floor/plasteel{tag = "icon-carpet9-0 (EAST)";icon_state = "carpet9-0";dir = 4},/area/awaymission/BMPship/Fore)
-"ek" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"el" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"ee" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/awaymission/BMPship/Fore)
+"ef" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel{tag = "icon-carpet5-0 (EAST)"; icon_state = "carpet5-0"; dir = 4},/area/awaymission/BMPship/Fore)
+"eg" = (/turf/simulated/floor/plasteel{tag = "icon-carpet13-4 (EAST)"; icon_state = "carpet13-4"; dir = 4},/area/awaymission/BMPship/Fore)
+"eh" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{tag = "icon-carpet13-1 (EAST)"; icon_state = "carpet13-1"; dir = 4},/area/awaymission/BMPship/Fore)
+"ei" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet (EAST)"; icon_state = "carpet"; dir = 4},/area/awaymission/BMPship/Fore)
+"ej" = (/turf/simulated/floor/plasteel{tag = "icon-carpet9-0 (EAST)"; icon_state = "carpet9-0"; dir = 4},/area/awaymission/BMPship/Fore)
+"ek" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"el" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"em" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"en" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"eo" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"ep" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/BMPship/Aft)
+"en" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"eo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"ep" = (/obj/structure/kitchenspike,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"eq" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"er" = (/turf/simulated/wall/r_wall,/area/awaymission/BMPship/Midship)
-"es" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"es" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"et" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"eu" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"ev" = (/obj/item/shard,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTHEAST)";icon_state = "carpetside";dir = 5},/area/awaymission/BMPship/Fore)
-"ew" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTHWEST)";icon_state = "carpetside";dir = 9},/area/awaymission/BMPship/Fore)
-"ex" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet";icon_state = "carpet"},/area/awaymission/BMPship/Fore)
+"eu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"ev" = (/obj/item/shard,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTHEAST)"; icon_state = "carpetside"; dir = 5},/area/awaymission/BMPship/Fore)
+"ew" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTHWEST)"; icon_state = "carpetside"; dir = 9},/area/awaymission/BMPship/Fore)
+"ex" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
"ey" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"ez" = (/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"eA" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
-"eB" = (/obj/machinery/door/airlock/silver,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpetside (EAST)";icon_state = "carpetside";dir = 4},/area/awaymission/BMPship/Midship)
-"eC" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"eD" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"eE" = (/obj/machinery/shieldwallgen,/obj/structure/cable{icon_state = "0-4";d2 = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
-"eF" = (/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1;locked = 0;operating = 0;req_access = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"eG" = (/obj/machinery/conveyor{dir = 4;id = "meatConvey1"},/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
-"eH" = (/turf/simulated/floor/plasteel{tag = "icon-loadingareadirty2 (EAST)";icon_state = "loadingareadirty2";dir = 4},/area/awaymission/BMPship/Midship)
-"eI" = (/obj/machinery/conveyor{dir = 4;id = "meatConvey1"},/obj/structure/plasticflaps,/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
-"eJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"eK" = (/obj/structure/disposalpipe/segment{dir = 2;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"eL" = (/obj/structure/rack,/obj/item/storage/box/lights,/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/BMPship/Aft)
+"eB" = (/obj/machinery/door/airlock/silver,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpetside (EAST)"; icon_state = "carpetside"; dir = 4},/area/awaymission/BMPship/Midship)
+"eC" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"eD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"eE" = (/obj/machinery/shieldwallgen,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
+"eF" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; locked = 0; operating = 0; req_access = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"eG" = (/obj/machinery/conveyor{dir = 4; id = "meatConvey1"},/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
+"eH" = (/obj/structure/closet/crate,/obj/item/analyzer,/obj/item/stack/spacecash/c10,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"eI" = (/obj/machinery/conveyor{dir = 4; id = "meatConvey1"},/obj/structure/plasticflaps,/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
+"eJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"eK" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"eL" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c500,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"eM" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
"eN" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/awaymission/BMPship/Midship)
-"eO" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
-"eP" = (/obj/structure/cable{icon_state = "0-4";d2 = 4},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"eO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
+"eP" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"eQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"eR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"eS" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"eT" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit.";name = "power storage unit";outputting = 0},/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2";d2 = 2},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"eU" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2"},/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"eV" = (/obj/structure/chair/office{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/awaymission/BMPship/Fore)
-"eW" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/awaymission/BMPship/Fore)
-"eX" = (/obj/item/shard{icon_state = "medium"},/turf/simulated/floor/plasteel{tag = "icon-carpet15-14 (EAST)";icon_state = "carpet15-14";dir = 4},/area/awaymission/BMPship/Fore)
+"eT" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"; outputting = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"eU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"eV" = (/obj/structure/chair/office{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-carpet11-12 (EAST)"; icon_state = "carpet11-12"; dir = 4},/area/awaymission/BMPship/Fore)
+"eW" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-carpet7-3 (EAST)"; icon_state = "carpet7-3"; dir = 4},/area/awaymission/BMPship/Fore)
+"eX" = (/obj/item/shard{icon_state = "medium"},/turf/simulated/floor/plasteel{tag = "icon-carpet15-14 (EAST)"; icon_state = "carpet15-14"; dir = 4},/area/awaymission/BMPship/Fore)
"eY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
-"eZ" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/awaymission/BMPship/Fore)
+"eZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/awaymission/BMPship/Fore)
"fa" = (/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"fb" = (/obj/structure/disposalpipe/segment{dir = 1;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"fc" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"fb" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"fc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"fd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
"fe" = (/obj/effect/decal/cleanable/dirt,/obj/effect/gibspawner/generic,/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
"ff" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
"fg" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
-"fh" = (/obj/structure/rack,/obj/item/storage/belt/utility/full,/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/BMPship/Aft)
+"fh" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/hugemushroomslice,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"fi" = (/obj/machinery/conveyor_switch/oneway{id = "meatConvey1"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"fj" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"fj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"fk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Aft)
"fl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"fm" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9";icon_state = "swall_f9";dir = 2},/area/awaymission/BMPship/Aft)
+"fm" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/awaymission/BMPship/Aft)
"fn" = (/obj/effect/gibspawner/human,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"fo" = (/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Aft)
"fp" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"fq" = (/obj/machinery/door/window{base_state = "right";dir = 4;icon_state = "right"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"fr" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-13 (EAST)";icon_state = "carpet15-13";dir = 4},/area/awaymission/BMPship/Fore)
+"fq" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"fr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-13 (EAST)"; icon_state = "carpet15-13"; dir = 4},/area/awaymission/BMPship/Fore)
"fs" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"ft" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)";icon_state = "carpet15-7";dir = 4},/area/awaymission/BMPship/Fore)
-"fu" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/awaymission/BMPship/Fore)
-"fv" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)";icon_state = "carpet15-7";dir = 4},/area/awaymission/BMPship/Fore)
-"fw" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"fx" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"fy" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"ft" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)"; icon_state = "carpet15-7"; dir = 4},/area/awaymission/BMPship/Fore)
+"fu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/awaymission/BMPship/Fore)
+"fv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)"; icon_state = "carpet15-7"; dir = 4},/area/awaymission/BMPship/Fore)
+"fw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"fx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"fy" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"fz" = (/obj/effect/gibspawner/generic,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"fA" = (/obj/structure/rack,/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/BMPship/Aft)
+"fA" = (/obj/machinery/door_control{id = "packerCargo"; pixel_y = -24},/obj/machinery/light/small,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"fB" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"fC" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Aft)
"fD" = (/obj/structure/mopbucket,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"fE" = (/turf/simulated/floor/plasteel{tag = "icon-carpetside (SOUTHEAST)";icon_state = "carpetside";dir = 6},/area/awaymission/BMPship/Fore)
-"fF" = (/turf/simulated/floor/plasteel{tag = "icon-carpetside (SOUTHWEST)";icon_state = "carpetside";dir = 10},/area/awaymission/BMPship/Fore)
+"fE" = (/turf/simulated/floor/plasteel{tag = "icon-carpetside (SOUTHEAST)"; icon_state = "carpetside"; dir = 6},/area/awaymission/BMPship/Fore)
+"fF" = (/turf/simulated/floor/plasteel{tag = "icon-carpetside (SOUTHWEST)"; icon_state = "carpetside"; dir = 10},/area/awaymission/BMPship/Fore)
"fG" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"fH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
-"fI" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-11 (EAST)";icon_state = "carpet15-11";dir = 4},/area/awaymission/BMPship/Fore)
-"fJ" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{tag = "icon-carpetside (EAST)";icon_state = "carpetside";dir = 4},/area/awaymission/BMPship/Midship)
-"fK" = (/obj/machinery/door/window{base_state = "right";dir = 4;icon_state = "right"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
-"fL" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"fI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-11 (EAST)"; icon_state = "carpet15-11"; dir = 4},/area/awaymission/BMPship/Fore)
+"fJ" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{tag = "icon-carpetside (EAST)"; icon_state = "carpetside"; dir = 4},/area/awaymission/BMPship/Midship)
+"fK" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
+"fL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"fM" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
-"fN" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Aft)
+"fN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Aft)
"fO" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"fP" = (/obj/effect/gibspawner/generic,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"fQ" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"fR" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"fS" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit.";name = "power storage unit";outputting = 0},/obj/structure/cable,/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"fT" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"fQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"fR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"fS" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"; outputting = 0},/obj/structure/cable,/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"fT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"fU" = (/obj/structure/window/reinforced{dir = 4},/obj/item/kitchen/knife,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"fV" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/awaymission/BMPship/Fore)
+"fV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/awaymission/BMPship/Fore)
"fW" = (/obj/structure/closet,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plating,/area/awaymission)
"fX" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/power/port_gen/pacman/super,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
-"fY" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/obj/structure/closet,/turf/simulated/floor/plasteel{tag = "icon-carpet (EAST)";icon_state = "carpet";dir = 4},/area/awaymission/BMPship/Fore)
-"fZ" = (/obj/structure/closet,/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/awaymission/BMPship/Fore)
+"fY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet,/turf/simulated/floor/plasteel{tag = "icon-carpet (EAST)"; icon_state = "carpet"; dir = 4},/area/awaymission/BMPship/Fore)
+"fZ" = (/obj/structure/closet,/turf/simulated/floor/plasteel{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/awaymission/BMPship/Fore)
"ga" = (/obj/item/wrench,/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
"gb" = (/obj/effect/gibspawner/xeno,/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
-"gc" = (/obj/structure/disposalpipe/segment{dir = 4;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"gc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"gd" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
"ge" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Aft)
"gf" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"gg" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5";icon_state = "swall_f5";dir = 2},/area/awaymission/BMPship/Fore)
-"gh" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside";icon_state = "carpetside"},/area/awaymission/BMPship/Fore)
-"gi" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside";icon_state = "carpetside"},/area/awaymission/BMPship/Fore)
-"gj" = (/turf/simulated/shuttle/wall{tag = "icon-swall11";icon_state = "swall11";dir = 2},/area/awaymission/BMPship/Midship)
+"gg" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/BMPship/Fore)
+"gh" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside"; icon_state = "carpetside"},/area/awaymission/BMPship/Fore)
+"gi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside"; icon_state = "carpetside"},/area/awaymission/BMPship/Fore)
+"gj" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/awaymission/BMPship/Midship)
"gk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"gl" = (/obj/machinery/conveyor{dir = 4;id = "meatConvey2"},/obj/item/kitchen/knife,/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
+"gl" = (/obj/machinery/conveyor{dir = 4; id = "meatConvey2"},/obj/item/kitchen/knife,/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
"gm" = (/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"gn" = (/turf/simulated/floor/plasteel{tag = "icon-loadingareadirty1 (EAST)";icon_state = "loadingareadirty1";dir = 4},/area/awaymission/BMPship/Midship)
-"go" = (/obj/machinery/conveyor{dir = 4;id = "meatConvey2"},/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
-"gp" = (/obj/machinery/conveyor{dir = 4;id = "meatConvey2"},/obj/structure/plasticflaps,/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
-"gq" = (/obj/structure/disposalpipe/segment{dir = 8;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"gn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"go" = (/obj/machinery/conveyor{dir = 4; id = "meatConvey2"},/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
+"gp" = (/obj/machinery/conveyor{dir = 4; id = "meatConvey2"},/obj/structure/plasticflaps,/turf/simulated/shuttle/plating,/area/awaymission/BMPship/Midship)
+"gq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"gr" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"gs" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"gt" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"gu" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
+"gt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
+"gu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gv" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"gw" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plating,/area/awaymission)
"gx" = (/obj/item/stack/sheet/mineral/uranium{amount = 50},/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)
+"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,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gA" = (/obj/structure/lattice,/turf/space,/area/awaymission/BMPship/Fore)
-"gB" = (/obj/item/shard{icon_state = "small"},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"gC" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
+"gB" = (/obj/item/shard{icon_state = "small"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
+"gC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gD" = (/obj/structure/chair/stool,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gE" = (/obj/structure/computerframe{anchored = 1},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"gF" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/obj/item/kitchen/knife,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"gG" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"gF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/item/kitchen/knife,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"gG" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"gH" = (/obj/machinery/conveyor_switch/oneway{id = "meatConvey2"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"gI" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"gJ" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"gI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
+"gJ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"gK" = (/obj/item/mop,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"gL" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel{dir = 4;icon_state = "warning"},/area/awaymission/BMPship/Aft)
+"gL" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"gM" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"gN" = (/obj/structure/computerframe{anchored = 1},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gO" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/BMPship/Midship)
"gP" = (/obj/item/multitool,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission)
-"gQ" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
+"gQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gR" = (/obj/item/stack/cable_coil{amount = 5},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"gS" = (/obj/structure/cable,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"gT" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
+"gT" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"gU" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"gV" = (/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
-"gW" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2";icon_state = "swallc2"},/area/awaymission/BMPship/Aft)
+"gW" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/BMPship/Aft)
"gX" = (/obj/structure/reagent_dispensers,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/BMPship/Aft)
"gY" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission)
"gZ" = (/obj/effect/landmark{name = "awaystart"},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission)
"ha" = (/obj/effect/gibspawner/robot,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission)
"hb" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission)
+"hc" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
"hd" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
-"he" = (/obj/machinery/door/airlock/silver{locked = 1},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"hf" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"he" = (/obj/machinery/door/airlock/silver{locked = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hf" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hg" = (/obj/machinery/door/airlock/silver{locked = 1},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"hi" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3";icon_state = "swallc3"},/area/awaymission/BMPship/Fore)
+"hh" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hi" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"},/area/awaymission/BMPship/Fore)
"hj" = (/turf/simulated/mineral/random,/area/awaymission)
-"hk" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/obj/machinery/door/airlock/silver,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"hl" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1";icon_state = "swallc1"},/area/awaymission/BMPship/Fore)
-"hm" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3";icon_state = "swallc3"},/area/awaymission/BMPship/Midship)
-"hn" = (/turf/simulated/shuttle/wall{tag = "icon-swall15";icon_state = "swall15"},/area/awaymission/BMPship/Midship)
-"ho" = (/turf/simulated/shuttle/wall{tag = "icon-swall4";icon_state = "swall4"},/area/awaymission/BMPship/Midship)
+"hk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/silver,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
+"hl" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"},/area/awaymission/BMPship/Fore)
+"hm" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"},/area/awaymission/BMPship/Midship)
+"hn" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/BMPship/Midship)
+"ho" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/BMPship/Midship)
"hp" = (/turf/simulated/shuttle/wall,/area/awaymission/BMPship/Midship)
"hq" = (/turf/simulated/mineral/random,/area/awaymission/BMPship/Midship)
-"hr" = (/obj/structure/table,/obj/item/paper{info = "DEAR DAIRY: So we was doing our typpical route when the captain says we've been picking up weird signals on some backwatter planet. Madsen wanted to stay on course but he ain't the captain, so we went out of the way to check it out. There was lots of rocks on the way, but we got to the planet fine. Found a big fancy camp with nobody around and this big metal donut thing with NT stamps all over it right in the middle. Case of beer too. Captain reckons we can pass it off to some buyer in the Syndicate. Ingram says it's bad luck and that someone is going to come look for it but it sounds like better money than selling bad meat to jerky companies.";name = "Old Diary"},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hr" = (/obj/structure/table,/obj/item/paper{info = "DEAR DAIRY: So we was doing our typpical route when the captain says we've been picking up weird signals on some backwatter planet. Madsen wanted to stay on course but he ain't the captain, so we went out of the way to check it out. There was lots of rocks on the way, but we got to the planet fine. Found a big fancy camp with nobody around and this big metal donut thing with NT stamps all over it right in the middle. Case of beer too. Captain reckons we can pass it off to some buyer in the Syndicate. Ingram says it's bad luck and that someone is going to come look for it but it sounds like better money than selling bad meat to jerky companies."; name = "Old Diary"},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hs" = (/obj/structure/table,/obj/item/pen/red,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"ht" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hu" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"hv" = (/obj/machinery/porta_turret{check_synth = 1;lethal = 1;name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Fore)
+"hv" = (/obj/machinery/porta_turret{check_synth = 1; lethal = 1; name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Fore)
+"hw" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hx" = (/obj/structure/closet,/obj/item/clothing/under/overalls,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"hz" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine,/area/awaymission/BMPship/Fore)
-"hA" = (/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1"},/area/awaymission)
+"hA" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission)
"hB" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"hC" = (/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/BMPship/Fore)
"hD" = (/obj/structure/rack,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"hE" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/BMPship/Fore)
"hF" = (/turf/simulated/shuttle/wall,/area/awaymission)
+"hG" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/computer/monitor,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hH" = (/turf/simulated/floor/plating/airless,/area/awaymission)
+"hI" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hJ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission)
-"hK" = (/obj/effect/decal/remains/human,/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hK" = (/obj/effect/decal/remains/human,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hL" = (/obj/item/mounted/frame/apc_frame,/turf/simulated/floor/plating/airless,/area/awaymission)
"hM" = (/obj/structure/ore_box,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission)
"hN" = (/obj/item/stack/cable_coil{amount = 5},/turf/simulated/floor/plating/airless,/area/awaymission)
"hO" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless,/area/awaymission)
"hP" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"hQ" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"hR" = (/obj/structure/cable{d2 = 8;icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"hS" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hR" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"hS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"hT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"hU" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/syndicate/green/dark,/obj/effect/gibspawner/generic,/turf/space,/area/awaymission)
+"hV" = (/obj/effect/decal/warning_stripes/yellow/partial{dir = 4},/obj/effect/decal/warning_stripes/arrow{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"hW" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated,/area/awaymission/BMPship/Fore)
"hX" = (/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"hY" = (/obj/effect/gibspawner/robot,/turf/simulated,/area/awaymission/BMPship/Fore)
+"hZ" = (/obj/structure/rack,/obj/item/storage/box/lights,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
"ia" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/floor/plating/airless,/area/awaymission)
"ib" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating/airless/asteroid,/area/awaymission)
-"ic" = (/obj/structure/bed,/obj/item/bedsheet,/obj/item/storage/wallet/random,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"ic" = (/obj/structure/bed,/obj/item/bedsheet,/obj/item/storage/wallet/random,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"id" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating/airless,/area/awaymission)
"ie" = (/obj/structure/bed,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"if" = (/obj/structure/rack,/obj/item/storage/belt/utility/full,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
"ig" = (/obj/structure/closet,/obj/item/clothing/under/lawyer/bluesuit,/obj/item/clothing/suit/apron,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"ih" = (/obj/item/clothing/suit/space/syndicate/green/dark,/turf/space,/area/awaymission)
"ii" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
-"ij" = (/obj/structure/cable{icon_state = "0-4";d2 = 4},/turf/simulated/floor/plating/airless,/area/awaymission)
-"ik" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
-"il" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission)
-"im" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"in" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"ij" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/awaymission)
+"ik" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
+"il" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission)
+"im" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"in" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"io" = (/obj/item/shard{icon_state = "medium"},/turf/space,/area/space)
-"ip" = (/turf/simulated/shuttle/wall{tag = "icon-swall13";icon_state = "swall13"},/area/awaymission/BMPship/Fore)
+"ip" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Fore)
+"iq" = (/obj/structure/rack,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"ir" = (/turf/simulated/shuttle/wall,/area/awaymission/BMPship/Fore)
"is" = (/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
"it" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"iu" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "cafeteria";dir = 2},/area/awaymission/BMPship/Aft)
-"iv" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria";dir = 2},/area/awaymission/BMPship/Aft)
-"iw" = (/obj/structure/mirror{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "cafeteria";dir = 2},/area/awaymission/BMPship/Aft)
+"iu" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft)
+"iv" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft)
+"iw" = (/obj/structure/mirror{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft)
"ix" = (/obj/item/caution,/turf/simulated/floor/plating/airless,/area/awaymission)
-"iy" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria";dir = 2},/turf/simulated/shuttle/wall{tag = "icon-swall_f6";icon_state = "swall_f6";dir = 2},/area/awaymission/BMPship/Aft)
+"iy" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Aft)
"iz" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating/airless,/area/awaymission)
"iA" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c10,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
-"iB" = (/obj/structure/sink{dir = 2},/turf/simulated/floor/plasteel{icon_state = "cafeteria";dir = 2},/area/awaymission/BMPship/Aft)
-"iC" = (/turf/simulated/shuttle/wall{tag = "icon-swall4";icon_state = "swall4"},/area/awaymission)
+"iB" = (/obj/structure/sink{dir = 2},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft)
+"iC" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission)
"iD" = (/obj/item/clothing/gloves/color/yellow,/turf/space,/area/awaymission)
-"iE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12"},/area/awaymission)
-"iF" = (/obj/machinery/porta_turret{check_synth = 1;lethal = 1;name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
+"iE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission)
+"iF" = (/obj/machinery/porta_turret{check_synth = 1; lethal = 1; name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"iG" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"iH" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"iI" = (/obj/item/storage/box/matches,/obj/item/storage/fancy/cigarettes/dromedaryco,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
@@ -450,7 +459,7 @@
"iQ" = (/obj/machinery/door/airlock/external{name = "Crackden Airlock"},/turf/simulated/floor/plating,/area/awaymission)
"iR" = (/obj/machinery/door/airlock/external{name = "Plain Airlock"},/turf/simulated/floor/plating,/area/awaymission)
"iS" = (/mob/living/simple_animal/hostile/carp,/turf/simulated/floor/plating/airless/asteroid,/area/awaymission)
-"iT" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f6";icon_state = "swall_f6";dir = 2},/area/awaymission/BMPship/Aft)
+"iT" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Aft)
"iU" = (/obj/structure/table,/obj/item/storage/toolbox/syndicate,/turf/simulated/floor/plating,/area/awaymission)
"iV" = (/obj/item/ammo_casing{pixel_y = 3},/turf/simulated/floor/plating,/area/awaymission)
"iW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
@@ -464,27 +473,19 @@
"je" = (/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";pixel_y = -24},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"jh" = (/obj/machinery/door_control{id = "packerMed"; pixel_y = -24},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"ji" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"jj" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"jk" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"jl" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/obj/item/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"jm" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_y = 0;tag = ""},/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"jn" = (/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)";icon_state = "warnplate";dir = 4},/area/awaymission/BMPship/Gate)
-"jo" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
-"jp" = (/turf/simulated/shuttle/wall{tag = "icon-swall15";icon_state = "swall15"},/area/awaymission/BMPship/Gate)
-"jq" = (/obj/machinery/door/poddoor/shutters{dir = 2;id_tag = "packerMed"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
-"jr" = (/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"js" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)";icon_state = "warnplate";dir = 10},/area/awaymission/BMPship/Gate)
-"jt" = (/obj/structure/kitchenspike,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"ju" = (/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"jv" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c500,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"jw" = (/obj/structure/closet/crate,/obj/item/analyzer,/obj/item/stack/spacecash/c10,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"jx" = (/obj/machinery/door_control{id = "packerCargo";pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"jy" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/hugemushroomslice,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"jz" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)";icon_state = "warnplate";dir = 6},/area/awaymission/BMPship/Gate)
-"jA" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
-"jB" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/obj/machinery/door/poddoor/shutters{dir = 2;id_tag = "packerCargo"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"jj" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"jk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"jl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"jm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"jn" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/BMPship/Aft)
+"jo" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
+"jp" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/BMPship/Gate)
+"jq" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "packerMed"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
+"jr" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"js" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/BMPship/Aft)
+"jB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "packerCargo"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -540,25 +541,25 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaajaaaaaaaEaBaBaFaGaGaCataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaaaaaaHauaIazaGaGaGaJataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaKakakakakakakakakakaqakakakaMaOaNamaMaMakaPataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaasaQaSaRaYaTbaaZbebbbgbfbibhbmbjbvbubububububxbwataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaVaVaWaVaVaVaVaVaVaVaXaaaaaaaaaaaaasbybyaRaRbAaRaRaRbBaRaRbCbDaGaGbHaGaGbMbLbNaGbWbQbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbnbpbobrbqbrbqbrbsbtaaaaaaaaaaasbybyaRbzaRaRaRaSaRcabbbbcbcdccaGceaGaGcpcocrcqcsbQbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbFbGbpbJararararararbIaaaaaaasaKaQaRbzbyaRbzaRaRaRbAaRaRaRctbDcsaGaGaGaGcvcucwaGcscxbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbRbFbparbSbSbTbSbSbUbVaaaaaaaKcybybzaRcTjhaRaRaRjiaRcTjiaRbfbDjjjljkjkjmjkjkjkjkjojnbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfchcgcjciclckckckckckcmckckckcmjpakakakakaOjqjqjqamakakakakcyjsjrjujtjrjrjwjvjyjxjAjzbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaasaQaSaRaYaTbaaZbebbbgbfbhbibjbmbobqbqbqbqbqbraCataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaVaVaWaVaVaVaVaVaVaVaXaaaaaaaaaaaaasbybyaRaRbAaRaRaRbBaRaRbCbsaGaGbHaGaGbMbLbNaGbWbubfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbnbpbvbwbxbwbxbwbDbtaaaaaaaaaaasbybyaRbzaRaRaRaSaRcabbbbcbbJccaGceaGaGcpcocrcqcsbubfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbFbGbpbQararararararbIaaaaaaasaKaQaRbzbyaRbzaRaRaRbAaRaRaRctbscsaGaGaGaGcvcucwaGcsbSbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbRbFbparbTbTbUbTbTcdbVaaaaaaaKcybybzaRcTjhaRaRaRjiaRcTjiaRbfbsjjjljkjkjmjkjkjkjkjocxbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfchcgcjciclckckckckckcmckckckcmjpakakakakaOjqjqjqamakakakakcydCdGdVepdGdGeHeLfhfAgngLbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcBcBcCcBcEcDcGcFcIcHcJcIcKcGcMcLcOcNcQcPcMcMcMcMcScRcUavcVaJakakakakakakakakaqaOjBamjpaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcWcXcWcYcBcEcMcZcFdcdcdcdccKcMcMdadbdbdbddcMcMcMcMdgdgcMdgcMandididjdkdldmdldnaLdodedqdfayafahaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcBdhdpdhdsdrcEcMcMcFdcdtdcdccKcMcMdxdvdudydwcMcMcMcMcMcMcMcMcMaLdjdzdjbKdDdAdFdBaLdCdedododEdGawayafaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcBcBdHdJdIdLdKcEcMcMdMdNdNdOdNdPcMcMdQcMdRdSdSdSdSdSdSdSdSdSdTcMandjdUdjdfafafafafbXdVdXdWdZdYeabcedebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjeeeeeeefehegejeidaemelekekekekekekdTcMdacMencMeqerererererererencMaLdjeodjdjdjdjdjetaLepesbdeubdbOeyezebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeAeweveecWcXcWcXexeBekeCererererereEeDcMeFcMeneHeGeIeGeGeGeGeMeNeJeKbcdjeobZbYbYeQdjdjaLeLeObdeTePeUbKezebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeYeWeVeeeXdpdhdpeZdQcMcMerfdfefdfffgenfaencMencMfierererererererenfbfkflfceRbdfneSdjdjaLfheObdfjbdeuawahaffmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeYeWeVeecWftfrfvfudacMcMerfdfdfgfffgfwekfxekfycMcMcMcMcMfBcMcMcMencMfCdjeofpbdbdfqdjdjaLfAesfofjbdfjawayafaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafHfFfEeedhfIdhdpcBfJcMcMerfMfdfgfKfgencMfOcMencMcMfPcMcMcMcMcMcMfLdSfNfRfQfpfzbdfqdjdjaLfAesfofSePfTbcfXebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVeeeeeeeefVeefZfYdQemcMerfdfggbffgaencMdQcMencMeqerererererererengcgeflfceRfDbdfUdjetaLepesfobdbdbdeyezebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaggaWaVaVghgiaVaVaVgjcMcMerfgfgfggdfgengmdacMengnglgpgogogogoeMeNeJgqbKdjeogkgfgfgrdjdjaLdCeObdgvbdfsbKgxebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagygsgAgsgCgBgugtcEcMcMererererereEgFcMdxcMencMgHerererererererencMaLdjgGgIgIgIgJdjgKaLdCesdqdogMgLawahaffmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaasgsgzgAgDgRgQcEcMcMcMcMcMcMcMcMfgcMdQcMgTekekekekekekdSdSdSeCcMangUdjdjdjfGeogVgXaLdCeufogWahafayfmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcWcXcWcYcBcEcMcZcFdcdcdcdccKcMcMdadbdbdbddcMcMcMcMdgdgcMdgcMandididjdkdldmdldnaLhcdedqdfayafahaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcBdhdpdhdsdrcEcMcMcFdcdtdcdccKcMcMdxdvdudydwcMcMcMcMcMcMcMcMcMaLdjdzdjbKdDdAdFdBaLhhdedododEhwawayafaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAczcBcBdHdJdIdLdKcEcMcMdMdNdNdOdNdPcMcMdQcMdRdSdSdSdSdSdSdSdSdSdTcMandjdUdjdfafafafafbXhGdXdWdZdYeabcedebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjeeeeeeefehegejeidaemelekekekekekekdTcMdacMencMeqerererererererencMaLdjeodjdjdjdjdjetaLhIesbdeubdbOeyezebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeAeweveecWcXcWcXexeBekeCererererereEeDcMeFcMenhVeGeIeGeGeGeGeMeNeJeKbcdjeobZbYbYeQdjdjaLhZeObdeTePeUbKezebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeYeWeVeeeXdpdhdpeZdQcMcMerfdfefdfffgenfaencMencMfierererererererenfbfkflfceRbdfneSdjdjaLifeObdfjbdeuawahaffmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeYeWeVeecWftfrfvfudacMcMerfdfdfgfffgfwekfxekfycMcMcMcMcMfBcMcMcMencMfCdjeofpbdbdfqdjdjaLiqesfofjbdfjawayafaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafHfFfEeedhfIdhdpcBfJcMcMerfMfdfgfKfgencMfOcMencMcMfPcMcMcMcMcMcMfLdSfNfRfQfpfzbdfqdjdjaLiqesfofSePfTbcfXebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVeeeeeeeefVeefZfYdQemcMerfdfggbffgaencMdQcMencMeqerererererererengcgeflfceRfDbdfUdjetaLhIesfobdbdbdeyezebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaggaWaVaVghgiaVaVaVgjcMcMerfgfgfggdfgengmdacMenhVglgpgogogogoeMeNeJgqbKdjeogkgfgfgrdjdjaLjneObdgvbdfsbKgxebecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagygsgAgsgCgBgugtcEcMcMererererereEgFcMdxcMencMgHerererererererencMaLdjgGgIgIgIgJdjgKaLhhesdqdogMjrawahaffmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaasgsgzgAgDgRgQcEcMcMcMcMcMcMcMcMfgcMdQcMgTekekekekekekdSdSdSeCcMangUdjdjdjfGeogVgXaLjseufogWahafayfmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaajasaaaaaaaagsgNgEgsgQcEcMhdcMcMcMcMgOcMgOgOcLcMhdcMcMcMhdcMcMcMcMhdcMcMawafaAhgagaAheagafayaAhfagcnfmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahjhjhjacaaasaagPasaahiaVaVhlhkhmckckckckckckckhphqhohnckckckckckckckckckckckckckbXdqdqdqdqhtdehuhrhshteshxaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahjhjhjhjacaaaaajaaaahyhvhzcjgShBhChDgshEgshFhjhjhjhjhAacachHgYachJhHacgYhLhMhNhOaLhPdqbddqdqhKhQhQhQhQhShRaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/RandomZLevels/centcomAway.dmm b/_maps/map_files/RandomZLevels/centcomAway.dmm
index 3a1d56dafcb..748d0cdcda4 100644
--- a/_maps/map_files/RandomZLevels/centcomAway.dmm
+++ b/_maps/map_files/RandomZLevels/centcomAway.dmm
@@ -5,131 +5,131 @@
"ae" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"af" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"ag" = (/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"ah" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/maint)
-"ai" = (/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
-"aj" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
+"ah" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/maint)
+"ai" = (/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
+"aj" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
"ak" = (/turf/simulated/wall,/area/awaymission/centcomAway/cafe)
-"al" = (/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"am" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"an" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"ao" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/peppermill,/obj/item/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"ap" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"aq" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"ar" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"as" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
+"al" = (/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"am" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"an" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"ao" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/peppermill,/obj/item/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"ap" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"aq" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"ar" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"as" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
"at" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"au" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
"av" = (/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
-"aw" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
+"aw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
"ax" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/awaymission/centcomAway/cafe)
-"ay" = (/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
+"ay" = (/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
"az" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/awaymission/centcomAway/cafe)
"aA" = (/obj/structure/table,/obj/item/kitchen/knife/butcher,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/awaymission/centcomAway/cafe)
"aB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"aC" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"aD" = (/turf/simulated/floor/plasteel{dir = 5;icon_state = "green"},/area/awaymission/centcomAway/cafe)
+"aC" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"aD" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/awaymission/centcomAway/cafe)
"aE" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"aF" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
"aG" = (/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
"aH" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
-"aI" = (/turf/simulated/floor/plasteel{dir = 9;icon_state = "green"},/area/awaymission/centcomAway/cafe)
-"aJ" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
+"aI" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/awaymission/centcomAway/cafe)
+"aJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
"aK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"aL" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
-"aM" = (/obj/structure/chair/stool{pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
+"aL" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
+"aM" = (/obj/structure/chair/stool{pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
"aN" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/awaymission/centcomAway/cafe)
-"aO" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3;pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
+"aO" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
"aP" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"aQ" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/awaymission/centcomAway/cafe)
+"aQ" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/centcomAway/cafe)
"aR" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
-"aS" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 8},/area/awaymission/centcomAway/cafe)
+"aS" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/cafe)
"aT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/maint)
"aU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/maint)
"aV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/maint)
"aW" = (/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/hangar)
-"aX" = (/obj/machinery/hydroponics/constructable,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
-"aY" = (/obj/structure/bed,/obj/item/bedsheet,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
-"aZ" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"ba" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"aX" = (/obj/machinery/hydroponics/constructable,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
+"aY" = (/obj/structure/bed,/obj/item/bedsheet,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
+"aZ" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"ba" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"bb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"bc" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"bd" = (/obj/item/radio,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"be" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bg" = (/obj/structure/sink,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bh" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bi" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0;pixel_y = 10},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bj" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"bk" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/centcomAway/hangar)
+"be" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bg" = (/obj/structure/sink,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bh" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bi" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0; pixel_y = 10},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bj" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"bk" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"bl" = (/obj/structure/rack,/obj/item/clothing/suit/fire,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"bm" = (/obj/structure/lattice,/turf/space,/area/space)
-"bn" = (/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"bo" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"bp" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
-"bq" = (/obj/machinery/door/airlock/freezer,/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
-"br" = (/obj/machinery/chem_dispenser,/obj/item/storage/box/beakers,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bs" = (/obj/machinery/chem_master,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bt" = (/obj/machinery/door/poddoor{id_tag = "XCCHangar1";name = "XCC Main Hangar"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/hangar)
-"bu" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHWEST)";icon_state = "vault";dir = 9},/area/awaymission/centcomAway/hangar)
+"bn" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"bo" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"bp" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
+"bq" = (/obj/machinery/door/airlock/freezer,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
+"br" = (/obj/machinery/chem_dispenser,/obj/item/storage/box/beakers,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bs" = (/obj/machinery/chem_master,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bt" = (/obj/machinery/door/poddoor{id_tag = "XCCHangar1"; name = "XCC Main Hangar"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
+"bu" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHWEST)"; icon_state = "vault"; dir = 9},/area/awaymission/centcomAway/hangar)
"bv" = (/obj/machinery/vending/boozeomat{req_access_txt = ""},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/cafe)
-"bw" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r";dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"bx" = (/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f6";dir = 2},/area/awaymission/centcomAway/hangar)
-"by" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l";dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"bw" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"bx" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/awaymission/centcomAway/hangar)
+"by" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"bz" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"bA" = (/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/cafe)
"bB" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
-"bC" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion";dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"bD" = (/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f10";dir = 2},/area/awaymission/centcomAway/hangar)
-"bE" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"bF" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
-"bG" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
+"bC" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"bD" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/awaymission/centcomAway/hangar)
+"bE" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"bF" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
+"bG" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
"bH" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"bI" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
+"bI" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
"bJ" = (/obj/structure/rack,/obj/item/extinguisher/mini,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"bK" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater";dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"bL" = (/turf/simulated/shuttle/wall{icon_state = "swall3";dir = 2},/area/awaymission/centcomAway/hangar)
-"bM" = (/turf/simulated/shuttle/wall{icon_state = "swall8";dir = 2},/area/awaymission/centcomAway/hangar)
-"bN" = (/turf/simulated/shuttle/wall{icon_state = "swall7";dir = 2},/area/awaymission/centcomAway/hangar)
-"bO" = (/turf/simulated/shuttle/wall{icon_state = "swall4";dir = 2},/area/awaymission/centcomAway/hangar)
-"bP" = (/turf/simulated/shuttle/wall{icon_state = "swall12";dir = 2},/area/awaymission/centcomAway/hangar)
+"bK" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"bL" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/awaymission/centcomAway/hangar)
+"bM" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/awaymission/centcomAway/hangar)
+"bN" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/awaymission/centcomAway/hangar)
+"bO" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/awaymission/centcomAway/hangar)
+"bP" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/awaymission/centcomAway/hangar)
"bQ" = (/obj/structure/disposalpipe/segment,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"bR" = (/turf/simulated/shuttle/wall{icon_state = "swall11";dir = 2},/area/awaymission/centcomAway/hangar)
-"bS" = (/obj/structure/chair/comfy/brown,/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
-"bT" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
+"bR" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/awaymission/centcomAway/hangar)
+"bS" = (/obj/structure/chair/comfy/brown,/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
+"bT" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
"bU" = (/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
-"bV" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
-"bW" = (/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
+"bV" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
+"bW" = (/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
"bX" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"bY" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
-"bZ" = (/obj/machinery/gibber,/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
-"ca" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 6},/area/awaymission/centcomAway/cafe)
-"cb" = (/turf/simulated/floor/plasteel{dir = 2;icon_state = "green"},/area/awaymission/centcomAway/cafe)
-"cc" = (/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/machinery/power/solar{id = "centcomawaysolar";name = "Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/awaymission/centcomAway/maint)
-"cd" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6";dir = 2},/area/awaymission/centcomAway/hangar)
-"ce" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9";dir = 2},/area/awaymission/centcomAway/hangar)
-"cf" = (/obj/structure/table,/obj/item/storage/firstaid/toxin{pixel_x = -2;pixel_y = 4},/obj/item/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"cg" = (/obj/structure/table,/obj/item/storage/firstaid/regular{pixel_x = 2;pixel_y = 0},/obj/item/storage/firstaid/regular{pixel_x = -2;pixel_y = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"bZ" = (/obj/machinery/gibber,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
+"ca" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/awaymission/centcomAway/cafe)
+"cb" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "green"},/area/awaymission/centcomAway/cafe)
+"cc" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "centcomawaysolar"; name = "Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/awaymission/centcomAway/maint)
+"cd" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/awaymission/centcomAway/hangar)
+"ce" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/awaymission/centcomAway/hangar)
+"cf" = (/obj/structure/table,/obj/item/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"cg" = (/obj/structure/table,/obj/item/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"ch" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"ci" = (/obj/structure/table,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire{pixel_x = -2;pixel_y = 4},/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"ci" = (/obj/structure/table,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"cj" = (/obj/structure/sign/botany,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/cafe)
-"ck" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 2;icon_state = "swall_f10";layer = 2},/area/awaymission/centcomAway/hangar)
+"ck" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/awaymission/centcomAway/hangar)
"cl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"cm" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"cn" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5";dir = 2},/area/awaymission/centcomAway/hangar)
-"co" = (/obj/item/paper_bin,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
-"cp" = (/obj/item/clipboard,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
+"cn" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/awaymission/centcomAway/hangar)
+"co" = (/obj/item/paper_bin,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
+"cp" = (/obj/item/clipboard,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
"cq" = (/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"cr" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/southright,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)";icon_state = "greenfull";dir = 1},/area/awaymission/centcomAway/cafe)
+"cr" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/southright,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe)
"cs" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
-"ct" = (/turf/simulated/floor/plasteel{icon_state = "vault";dir = 8},/area/awaymission/centcomAway/cafe)
+"ct" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/cafe)
"cu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
-"cv" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/spray/plantbgone{pixel_x = 0;pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
+"cv" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
"cw" = (/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
"cx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"cy" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/maint)
-"cz" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"cz" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"cA" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
-"cB" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"cB" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"cC" = (/turf/simulated/wall,/area/awaymission/centcomAway/hangar)
"cD" = (/turf/simulated/wall,/area/awaymission/centcomAway/maint)
"cE" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
@@ -139,183 +139,183 @@
"cI" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
"cJ" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
"cK" = (/obj/machinery/biogenerator,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
-"cL" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/centcomAway/maint)
-"cM" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"cN" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12";icon_state = "catwalk12"},/area/awaymission/centcomAway/maint)
-"cO" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/centcomAway/maint)
+"cL" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/centcomAway/maint)
+"cM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"cN" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/awaymission/centcomAway/maint)
+"cO" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/awaymission/centcomAway/maint)
"cP" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"cQ" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
-"cR" = (/turf/simulated/shuttle/wall{icon_state = "swall1";dir = 2},/area/awaymission/centcomAway/hangar)
+"cQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
+"cR" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/awaymission/centcomAway/hangar)
"cS" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"cT" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
+"cT" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
"cU" = (/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"cV" = (/obj/item/pen,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
-"cW" = (/obj/structure/disposalpipe/segment{dir = 1;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
-"cX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
+"cV" = (/obj/item/pen,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
+"cW" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
+"cX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
"cY" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"cZ" = (/obj/structure/disposalpipe/segment{dir = 8;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 8},/area/awaymission/centcomAway/cafe)
+"cZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/cafe)
"da" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"db" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
-"dc" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"db" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
+"dc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"dd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"de" = (/obj/structure/table,/obj/item/flash,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
"df" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
"dg" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"dh" = (/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f5";dir = 2},/area/awaymission/centcomAway/hangar)
-"di" = (/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f9";dir = 2},/area/awaymission/centcomAway/hangar)
-"dj" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"dk" = (/obj/machinery/power/solar_control{id = "centcomawaysolar";name = "Solar Control";track = 1},/obj/structure/cable,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/space)
-"dl" = (/turf/simulated/shuttle/wall{icon_state = "swallc1";dir = 2},/area/awaymission/centcomAway/hangar)
+"dh" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/awaymission/centcomAway/hangar)
+"di" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/awaymission/centcomAway/hangar)
+"dj" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"dk" = (/obj/machinery/power/solar_control{id = "centcomawaysolar"; name = "Solar Control"; track = 1},/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/space)
+"dl" = (/turf/simulated/shuttle/wall{icon_state = "swallc1"; dir = 2},/area/awaymission/centcomAway/hangar)
"dm" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"dn" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
+"dn" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
"do" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"dp" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"dq" = (/turf/simulated/shuttle/wall{icon_state = "swallc2";dir = 2},/area/awaymission/centcomAway/hangar)
-"dr" = (/obj/structure/chair{dir = 8},/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"ds" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"dt" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/maint)
+"dp" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"dq" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/awaymission/centcomAway/hangar)
+"dr" = (/obj/structure/chair{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"ds" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"dt" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/maint)
"du" = (/obj/structure/dresser,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
"dv" = (/obj/machinery/vending/boozeomat{req_access_txt = ""},/turf/simulated/wall,/area/awaymission/centcomAway/cafe)
"dw" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"dx" = (/obj/structure/disposalpipe/segment{dir = 4;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
-"dy" = (/obj/structure/disposalpipe/segment{dir = 2;icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 8},/area/awaymission/centcomAway/cafe)
-"dz" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHWEST)";icon_state = "vault";dir = 9},/area/awaymission/centcomAway/hangar)
+"dx" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
+"dy" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/cafe)
+"dz" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHWEST)"; icon_state = "vault"; dir = 9},/area/awaymission/centcomAway/hangar)
"dA" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/stamp/granted,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"dB" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northright,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"dC" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
+"dB" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northright,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"dC" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
"dD" = (/obj/structure/closet/firecloset/full,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"dE" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"dF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
-"dG" = (/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/hangar)
-"dH" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"dI" = (/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"dJ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"dK" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"dG" = (/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/hangar)
+"dH" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"dI" = (/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"dJ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"dK" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
"dL" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/awaymission/centcomAway/cafe)
"dM" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/awaymission/centcomAway/cafe)
-"dN" = (/obj/machinery/gibber,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
-"dO" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 5},/area/awaymission/centcomAway/cafe)
-"dP" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/awaymission/centcomAway/cafe)
-"dQ" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"dR" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/centcomAway/maint)
+"dN" = (/obj/machinery/gibber,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
+"dO" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/awaymission/centcomAway/cafe)
+"dP" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/centcomAway/cafe)
+"dQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"dR" = (/obj/structure/chair/stool/bar,/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
"dS" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"dT" = (/obj/machinery/door/window/northright{base_state = "right";dir = 4;icon_state = "right";name = "Security Desk";req_access_txt = "103"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"dU" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/centcomAway/hangar)
-"dV" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)";icon_state = "warnplate";dir = 9},/area/awaymission/centcomAway/hangar)
+"dT" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
+"dU" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/awaymission/centcomAway/maint)
+"dV" = (/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"dW" = (/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"dX" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"dY" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)";icon_state = "warnplate";dir = 5},/area/awaymission/centcomAway/hangar)
+"dY" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"dZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"ea" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"eb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
-"ec" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor";dir = 2},/area/awaymission/centcomAway/cafe)
-"ed" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 4},/area/awaymission/centcomAway/cafe)
-"ee" = (/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
-"ef" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0;tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3";icon_state = "catwalk3"},/area/awaymission/centcomAway/maint)
-"eg" = (/turf/simulated/shuttle/wall{icon_state = "swall0";dir = 2},/area/awaymission/centcomAway/hangar)
-"eh" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)";icon_state = "warnplate";dir = 4},/area/awaymission/centcomAway/hangar)
+"ec" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe)
+"ed" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/centcomAway/cafe)
+"ee" = (/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe)
+"ef" = (/obj/structure/largecrate,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"eg" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/awaymission/centcomAway/hangar)
+"eh" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/awaymission/centcomAway/maint)
"ei" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"ej" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"ek" = (/obj/machinery/chem_dispenser,/obj/item/storage/box/beakers,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"el" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 8},/area/awaymission/centcomAway/cafe)
-"em" = (/obj/machinery/chem_master,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"en" = (/turf/simulated/floor/plating/airless,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk1";icon_state = "catwalk1"},/area/awaymission/centcomAway/maint)
-"eo" = (/obj/structure/ore_box,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)";icon_state = "warnplate";dir = 4},/area/awaymission/centcomAway/hangar)
-"ep" = (/obj/structure/table,/obj/item/storage/fancy/donut_box,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
-"eq" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"er" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"ej" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"ek" = (/obj/machinery/chem_dispenser,/obj/item/storage/box/beakers,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"el" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/centcomAway/cafe)
+"em" = (/obj/machinery/chem_master,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"en" = (/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"eo" = (/turf/space,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/awaymission/centcomAway/maint)
+"ep" = (/obj/structure/table,/obj/item/storage/fancy/donut_box,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/awaymission/centcomAway/cafe)
+"eq" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"er" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
"es" = (/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/awaymission/centcomAway/cafe)
-"et" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"eu" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0;pixel_y = 10},/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"ev" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"ew" = (/obj/structure/bed,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
-"ex" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
-"ey" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3;pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"ez" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/centcomAway/cafe)
-"eA" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)";icon_state = "warnplate";dir = 9},/area/awaymission/centcomAway/cafe)
-"eB" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)";icon_state = "warnplate";dir = 5},/area/awaymission/centcomAway/cafe)
-"eC" = (/obj/machinery/power/apc/noalarm{cell_type = 15000;dir = 4;locked = 0;name = "Maint APC";pixel_x = 25;req_access = null;start_charge = 100},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"eD" = (/obj/machinery/door/airlock/hatch{name = "Rest Room";req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
-"eE" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/centcomAway/hangar)
+"et" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"eu" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0; pixel_y = 10},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"ev" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"ew" = (/obj/structure/bed,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
+"ex" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
+"ey" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"ez" = (/obj/structure/ore_box,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"eA" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
+"eB" = (/obj/machinery/shieldgen,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
+"eC" = (/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Maint APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"eD" = (/obj/machinery/door/airlock/hatch{name = "Rest Room"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
+"eE" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"eF" = (/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
-"eG" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)";icon_state = "warnplate";dir = 10},/area/awaymission/centcomAway/hangar)
+"eG" = (/obj/structure/largecrate,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"eH" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"eI" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"eJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"eK" = (/obj/structure/table,/obj/item/radio/off,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"eL" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)";icon_state = "warnplate";dir = 6},/area/awaymission/centcomAway/hangar)
+"eL" = (/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"eM" = (/obj/structure/filingcabinet,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"eN" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/centcomAway/cafe)
+"eN" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"eO" = (/turf/simulated/floor/plasteel{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";dir = 2},/area/awaymission/centcomAway/hangar)
-"eR" = (/obj/machinery/power/apc/noalarm{cell_type = 15000;dir = 4;locked = 0;name = "Kitchen APC";pixel_x = 25;req_access = null;start_charge = 100},/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
-"eS" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"eT" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 6},/area/awaymission/centcomAway/cafe)
+"eP" = (/turf/space,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"eQ" = (/turf/simulated/shuttle/wall{icon_state = "swall2"; dir = 2},/area/awaymission/centcomAway/hangar)
+"eR" = (/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Kitchen APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
+"eS" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"eT" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/awaymission/centcomAway/cafe)
"eU" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"eV" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 10},/area/awaymission/centcomAway/cafe)
+"eV" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/centcomAway/cafe)
"eW" = (/obj/machinery/implantchair,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"eX" = (/turf/simulated/floor/plating{dir = 2;icon_state = "warnplate";tag = "icon-warnplate (NORTH)"},/area/awaymission/centcomAway/cafe)
-"eY" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)";icon_state = "warnplate";dir = 10},/area/awaymission/centcomAway/cafe)
-"eZ" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)";icon_state = "warnplate";dir = 6},/area/awaymission/centcomAway/cafe)
+"eX" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
+"eY" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
+"eZ" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
"fa" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"fb" = (/obj/structure/table,/obj/item/hand_labeler,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"fc" = (/obj/structure/chair,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"fd" = (/obj/machinery/telecomms/relay/preset/ruskie,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/general)
-"fe" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid11";name = "plating";icon_state = "asteroid11"},/area/awaymission/centcomAway/cafe)
-"ff" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid2";name = "plating";icon_state = "asteroid2"},/area/awaymission/centcomAway/cafe)
+"fd" = (/obj/machinery/portable_atmospherics/pump,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe)
+"fe" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid11"; name = "plating"; icon_state = "asteroid11"},/area/awaymission/centcomAway/cafe)
+"ff" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid2"; name = "plating"; icon_state = "asteroid2"},/area/awaymission/centcomAway/cafe)
"fg" = (/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/awaymission/centcomAway/general)
"fh" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"fi" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid";name = "plating";icon_state = "asteroid"},/area/awaymission/centcomAway/cafe)
+"fi" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid"; name = "plating"; icon_state = "asteroid"},/area/awaymission/centcomAway/cafe)
"fj" = (/turf/simulated/wall,/area/awaymission/centcomAway/courtroom)
-"fk" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid3";name = "plating";icon_state = "asteroid3"},/area/awaymission/centcomAway/cafe)
+"fk" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid3"; name = "plating"; icon_state = "asteroid3"},/area/awaymission/centcomAway/cafe)
"fl" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"fm" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"fn" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid10";name = "plating";icon_state = "asteroid10"},/area/awaymission/centcomAway/cafe)
-"fo" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid9";name = "plating";icon_state = "asteroid9"},/area/awaymission/centcomAway/cafe)
-"fp" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
-"fq" = (/obj/machinery/door/airlock/centcom,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar";dir = 2},/area/awaymission/centcomAway/cafe)
-"fr" = (/obj/structure/table,/obj/item/radio/off,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"fs" = (/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"ft" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"fu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"fv" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/peppermill,/obj/item/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"fw" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fn" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid10"; name = "plating"; icon_state = "asteroid10"},/area/awaymission/centcomAway/cafe)
+"fo" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid9"; name = "plating"; icon_state = "asteroid9"},/area/awaymission/centcomAway/cafe)
+"fp" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
+"fq" = (/obj/machinery/door/airlock/centcom,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"; dir = 2},/area/awaymission/centcomAway/cafe)
+"fr" = (/obj/structure/table,/obj/item/radio/off,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"fs" = (/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"ft" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fv" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/peppermill,/obj/item/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fw" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
"fx" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"fy" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"fz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
"fA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
"fB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar)
-"fC" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fC" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
"fD" = (/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"fE" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fE" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
"fF" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
"fG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"fH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"fI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"fJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"fK" = (/obj/structure/sign/redcross,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
-"fL" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-redfull";icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
-"fM" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f5";dir = 2},/area/awaymission/centcomAway/hangar)
+"fK" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"fL" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe)
+"fM" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/awaymission/centcomAway/hangar)
"fN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"fO" = (/turf/simulated/shuttle/wall{icon_state = "swall14";dir = 2},/area/awaymission/centcomAway/hangar)
-"fP" = (/turf/simulated/shuttle/wall{icon_state = "swallc4";dir = 2},/area/awaymission/centcomAway/hangar)
+"fO" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/awaymission/centcomAway/hangar)
+"fP" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"; dir = 2},/area/awaymission/centcomAway/hangar)
"fQ" = (/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
-"fR" = (/obj/machinery/door/airlock/hatch{name = "Cockpit";req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
+"fR" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/centcomAway/hangar)
"fS" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"fT" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"fU" = (/obj/structure/chair,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"fV" = (/obj/structure/table/wood,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"fW" = (/obj/structure/table/wood,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"fX" = (/obj/machinery/door/window/northleft,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
-"fY" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"fZ" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"ga" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"gb" = (/obj/structure/chair{dir = 4;name = "Prosecution"},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"gc" = (/turf/simulated/floor/plasteel{dir = 9;icon_state = "yellow"},/area/awaymission/centcomAway/general)
-"gd" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"ge" = (/turf/simulated/floor/plasteel{dir = 5;icon_state = "yellow"},/area/awaymission/centcomAway/general)
-"gf" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"fY" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"fZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"ga" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"gb" = (/obj/structure/chair{dir = 4; name = "Prosecution"},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"gc" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"gd" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ge" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"gf" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"gg" = (/obj/structure/sign/science,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
"gh" = (/obj/machinery/door/window/eastright,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"gi" = (/obj/machinery/door/window/northleft,/obj/structure/chair,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
@@ -325,64 +325,64 @@
"gm" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"gn" = (/turf/simulated/floor/plasteel{icon_state = "greencorner"},/area/awaymission/centcomAway/general)
"go" = (/turf/simulated/floor/plasteel{icon_state = "green"},/area/awaymission/centcomAway/general)
-"gp" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"gp" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"gq" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"gr" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"gs" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"gt" = (/obj/machinery/autolathe,/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/centcomAway/general)
-"gu" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
+"gt" = (/obj/machinery/autolathe,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"gu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
"gv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"gw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"gx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"gy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"gz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"gA" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
+"gA" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"gB" = (/obj/structure/table/reinforced,/obj/item/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"gC" = (/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"gD" = (/obj/structure/table,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"gE" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
-"gF" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/adv,/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"gG" = (/obj/structure/table/reinforced,/obj/item/clothing/accessory/stethoscope,/obj/item/storage/firstaid,/obj/item/storage/firstaid,/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
-"gH" = (/obj/structure/table/reinforced,/obj/item/extinguisher/mini,/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"gF" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/adv,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
+"gG" = (/obj/structure/table/reinforced,/obj/item/clothing/accessory/stethoscope,/obj/item/storage/firstaid,/obj/item/storage/firstaid,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"gH" = (/obj/structure/table/reinforced,/obj/item/extinguisher/mini,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
"gI" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"gJ" = (/obj/machinery/computer/cloning,/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"gJ" = (/obj/machinery/computer/cloning,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
"gK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"gL" = (/obj/machinery/pdapainter,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"gM" = (/obj/machinery/clonepod,/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"gM" = (/obj/machinery/clonepod,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
"gN" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"gO" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
-"gP" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"gO" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"gP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"gQ" = (/obj/structure/filingcabinet,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"gR" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"gS" = (/obj/machinery/light,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"gS" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"gT" = (/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/courtroom)
"gU" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/awaymission/centcomAway/courtroom)
"gV" = (/obj/structure/closet/secure_closet/courtroom,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"gW" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"gX" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
"gY" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"gZ" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"ha" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
+"gZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"ha" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"hb" = (/obj/structure/table/reinforced,/obj/item/t_scanner,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general)
"hc" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
"hd" = (/obj/structure/crematorium,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
-"he" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access";req_access_txt = "10"},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"he" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"hf" = (/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
"hg" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"hh" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"hi" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8";tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"hj" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
+"hh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"hi" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"hj" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
"hk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"hl" = (/obj/machinery/computer/robotics,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"hm" = (/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"hn" = (/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"ho" = (/obj/machinery/computer/med_data,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"hp" = (/obj/machinery/door/airlock/centcom,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
+"hp" = (/obj/machinery/door/airlock/centcom,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
"hq" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"hr" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"hs" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"ht" = (/turf/simulated/floor/plasteel{dir = 4;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
-"hu" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/wall,/area/awaymission/centcomAway/courtroom)
+"ht" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"hu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall,/area/awaymission/centcomAway/courtroom)
"hv" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe)
"hw" = (/obj/item/xenos_claw,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
"hx" = (/obj/structure/table,/obj/item/storage/lockbox,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
@@ -400,20 +400,20 @@
"hJ" = (/obj/structure/closet/body_bag,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
"hK" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
"hL" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"hM" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"hM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"hN" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"hO" = (/obj/structure/cable{d2 = 8;icon_state = "0-8"},/obj/machinery/computer/monitor,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"hO" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/computer/monitor,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general)
"hP" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"hQ" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "yellow";dir = 10},/area/awaymission/centcomAway/general)
+"hQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 10},/area/awaymission/centcomAway/general)
"hR" = (/obj/structure/table/reinforced,/obj/item/taperecorder,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"hS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/courtroom)
"hT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/courtroom)
-"hU" = (/obj/structure/dispenser,/turf/simulated/floor/plasteel{dir = 6;icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"hU" = (/obj/structure/dispenser,/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"hV" = (/obj/structure/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"hW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/courtroom)
"hX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"hY" = (/turf/simulated/floor/plasteel{tag = "icon-blackcorner (NORTH)";icon_state = "blackcorner";dir = 1},/area/awaymission/centcomAway/general)
-"hZ" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-blackcorner (EAST)";icon_state = "blackcorner";dir = 4},/area/awaymission/centcomAway/general)
+"hY" = (/turf/simulated/floor/plasteel{tag = "icon-blackcorner (NORTH)"; icon_state = "blackcorner"; dir = 1},/area/awaymission/centcomAway/general)
+"hZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-blackcorner (EAST)"; icon_state = "blackcorner"; dir = 4},/area/awaymission/centcomAway/general)
"ia" = (/obj/structure/table,/obj/item/storage/box/prisoner,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"ib" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
"ic" = (/turf/simulated/wall,/area/awaymission/centcomAway/general)
@@ -423,116 +423,116 @@
"ig" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"ih" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"ii" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/courtroom)
-"ij" = (/obj/machinery/power/apc/noalarm{cell_type = 15000;dir = 4;locked = 0;name = "Court APC";pixel_x = 25;req_access = null;start_charge = 100},/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
-"ik" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"il" = (/obj/machinery/power/terminal,/obj/structure/cable{d2 = 4;icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ij" = (/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Court APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
+"ik" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"il" = (/obj/machinery/power/terminal,/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"im" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"in" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"io" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"io" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"ip" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"iq" = (/obj/machinery/door/airlock/engineering/glass{name = "Engineering";req_access_txt = "32"},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"ir" = (/obj/machinery/power/apc/noalarm{cell_type = 15000;dir = 4;locked = 0;name = "Control APC";pixel_x = 25;req_access = null;start_charge = 100},/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"iq" = (/obj/machinery/door/airlock/engineering/glass{name = "Engineering"; req_access_txt = "32"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ir" = (/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Control APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"is" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"it" = (/obj/machinery/door/airlock/public/glass{name = "Med-Sci";req_access_txt = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
+"it" = (/obj/machinery/door/airlock/public/glass{name = "Med-Sci"; req_access_txt = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"iu" = (/obj/structure/table,/obj/item/clothing/glasses/welding,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"iv" = (/obj/structure/window/reinforced{dir = 1},/obj/item/storage/box/monkeycubes,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"iw" = (/obj/machinery/computer/scan_consolenew,/obj/item/dnainjector/telemut/darkbundle,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"ix" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 4;icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
+"ix" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/awaymission/centcomAway/general)
"iy" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
-"iz" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
+"iz" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"iA" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/hangar)
"iB" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"iC" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security";opacity = 1;req_access_txt = "101"},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
+"iC" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
"iD" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"iE" = (/turf/simulated/floor/plasteel{icon_state = "yellow";dir = 10},/area/awaymission/centcomAway/general)
+"iE" = (/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 10},/area/awaymission/centcomAway/general)
"iF" = (/obj/structure/closet/secure_closet/injection,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
"iG" = (/obj/structure/bed,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
"iH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/courtroom)
"iI" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"iJ" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"iK" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
-"iL" = (/obj/machinery/power/smes{charge = 5e+006;input_level = 200000;inputting = 0;output_level = 100000;outputting = 1},/obj/structure/cable{d2 = 4;icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"iL" = (/obj/machinery/power/smes{charge = 5e+006; input_level = 200000; inputting = 0; output_level = 100000; outputting = 1},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"iM" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/awaymission/centcomAway/hangar)
"iN" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/bluegrid,/area/awaymission/centcomAway/hangar)
-"iO" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plasteel{dir = 6;icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"iO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"iP" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"iQ" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"iQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"iR" = (/obj/structure/rack,/obj/item/clothing/glasses/night,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"iS" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"iT" = (/obj/structure/bookcase,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
-"iU" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"iV" = (/obj/machinery/light{dir = 1;in_use = 1},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellow"},/area/awaymission/centcomAway/general)
+"iU" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"iV" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"iW" = (/obj/structure/bookcase,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
-"iX" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{dir = 1;icon_state = "yellowcorner"},/area/awaymission/centcomAway/general)
-"iY" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-purplecorner (EAST)";icon_state = "purplecorner";dir = 4},/area/awaymission/centcomAway/general)
+"iX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/awaymission/centcomAway/general)
+"iY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-purplecorner (EAST)"; icon_state = "purplecorner"; 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,/obj/structure/window/reinforced{dir = 1},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/courtroom)
"jb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/courtroom)
-"jc" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = "90Curve"},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"jd" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/awaymission/centcomAway/hangar)
-"je" = (/obj/machinery/light{dir = 1;in_use = 1},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-purple (NORTH)";icon_state = "purple";dir = 1},/area/awaymission/centcomAway/general)
-"jf" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-purple (NORTH)";icon_state = "purple";dir = 1},/area/awaymission/centcomAway/general)
-"jg" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
+"jc" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"jd" = (/obj/structure/sign/redcross{icon_state = "lifestar"},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
+"je" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-purple (NORTH)"; icon_state = "purple"; dir = 1},/area/awaymission/centcomAway/general)
+"jf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-purple (NORTH)"; icon_state = "purple"; dir = 1},/area/awaymission/centcomAway/general)
+"jg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
"jh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"ji" = (/obj/structure/chair{dir = 8},/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
+"ji" = (/obj/structure/chair{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"jj" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"jk" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"jl" = (/obj/machinery/power/apc/noalarm{cell_type = 15000;dir = 4;locked = 0;name = "Hangar APC";pixel_x = 25;req_access = null;start_charge = 100},/obj/structure/cable{icon_state = "0-2";pixel_y = 1;d2 = 2},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"jm" = (/turf/simulated/floor/plasteel{icon_state = "greencorner";dir = 8},/area/awaymission/centcomAway/general)
-"jn" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
-"jo" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"jp" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"jq" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"jr" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/hangar)
-"js" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"jt" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8;icon_state = "warning"},/area/awaymission/centcomAway/general)
-"ju" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/awaymission/centcomAway/general)
-"jv" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 8},/area/awaymission/centcomAway/general)
-"jw" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4";tag = "90Curve"},/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plasteel{dir = 4;icon_state = "warning"},/area/awaymission/centcomAway/general)
+"jl" = (/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Hangar APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"jm" = (/turf/simulated/floor/plasteel{icon_state = "greencorner"; dir = 8},/area/awaymission/centcomAway/general)
+"jn" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
+"jo" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"jp" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"jq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"jr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/hangar)
+"js" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
+"jt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ju" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/centcomAway/general)
+"jv" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/general)
+"jw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"jx" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"jy" = (/obj/structure/chair{dir = 4},/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
-"jz" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "vault"},/area/awaymission/centcomAway/hangar)
-"jA" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)";icon_state = "warnplate";dir = 9},/area/awaymission/centcomAway/hangar)
-"jB" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)";icon_state = "warnplate";dir = 1},/area/awaymission/centcomAway/hangar)
-"jC" = (/turf/simulated/floor/plasteel{icon_state = "greencorner";dir = 4},/area/awaymission/centcomAway/general)
+"jy" = (/obj/structure/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/centcomAway/courtroom)
+"jz" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
+"jA" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"jB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"jC" = (/turf/simulated/floor/plasteel{icon_state = "greencorner"; dir = 4},/area/awaymission/centcomAway/general)
"jD" = (/obj/machinery/photocopier,/obj/item/paper/ccaMemo,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"jE" = (/obj/structure/table/reinforced,/obj/item/hand_labeler,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"jF" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"jG" = (/turf/simulated/floor/plasteel{icon_state = "greencorner";dir = 1},/area/awaymission/centcomAway/general)
-"jH" = (/obj/machinery/door/airlock/command/glass{name = "Bridge";req_access_txt = "19"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"jG" = (/turf/simulated/floor/plasteel{icon_state = "greencorner"; dir = 1},/area/awaymission/centcomAway/general)
+"jH" = (/obj/machinery/door/airlock/command/glass{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"jI" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"jJ" = (/obj/structure/chair/comfy/beige{dir = 1;icon_state = "comfychair_beige"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"jJ" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"jK" = (/obj/structure/table/wood{dir = 10},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"jL" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"jM" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
-"jN" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security";opacity = 1;req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
-"jO" = (/obj/machinery/crema_switch{pixel_x = 0;pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
+"jN" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
+"jO" = (/obj/machinery/crema_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
"jP" = (/obj/item/reagent_containers/glass/rag,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"jQ" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"jR" = (/obj/structure/closet/crate/trashcart,/obj/item/reagent_containers/spray/cleaner,/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"jS" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-blackcorner (WEST)";icon_state = "blackcorner";dir = 8},/area/awaymission/centcomAway/general)
+"jS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-blackcorner (WEST)"; icon_state = "blackcorner"; dir = 8},/area/awaymission/centcomAway/general)
"jT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/cafe)
"jU" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/centcomAway/cafe)
-"jV" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-blackcorner";icon_state = "blackcorner"},/area/awaymission/centcomAway/general)
+"jV" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-blackcorner"; icon_state = "blackcorner"},/area/awaymission/centcomAway/general)
"jW" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"jX" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
-"jY" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f6";dir = 2},/area/awaymission/centcomAway/hangar)
-"jZ" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/turf/simulated/shuttle/wall{icon_state = "swall_f10";dir = 2},/area/awaymission/centcomAway/hangar)
+"jX" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
+"jY" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"jZ" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/awaymission/centcomAway/hangar)
"ka" = (/obj/structure/table,/obj/item/paper/ccaMemo,/obj/item/rcd_ammo,/obj/item/rcd_ammo,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kb" = (/obj/structure/chair{dir = 1},/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
-"kc" = (/obj/machinery/door/airlock/centcom{name = "Special Operations";opacity = 1;req_access_txt = "103"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"kc" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "103"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"kd" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/rcd,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"ke" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"kf" = (/obj/machinery/door/window/northright,/obj/machinery/door/window/southleft,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"kg" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"kg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"kh" = (/obj/structure/table/reinforced,/obj/item/folder/red,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"ki" = (/obj/structure/table/reinforced,/obj/item/storage/box/PDAs,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"kj" = (/obj/structure/table/reinforced,/obj/item/folder/blue,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"kk" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security";opacity = 1;req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
-"kl" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f5";dir = 2},/area/awaymission/centcomAway/hangar)
-"km" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/turf/simulated/shuttle/wall{icon_state = "swall_f9";dir = 2},/area/awaymission/centcomAway/hangar)
+"kk" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
+"kl" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"km" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/awaymission/centcomAway/hangar)
"kn" = (/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/obj/item/storage/toolbox/electrical{pixel_y = 5},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"ko" = (/obj/structure/sink{icon_state = "sink";dir = 8;pixel_x = -12;pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
+"ko" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"kp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{name = "plating"},/area/awaymission/centcomAway/general)
"kq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{name = "plating"},/area/awaymission/centcomAway/general)
"kr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{name = "plating"},/area/awaymission/centcomAway/general)
@@ -540,17 +540,17 @@
"kt" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"ku" = (/obj/structure/chair,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"kv" = (/obj/structure/table/reinforced,/obj/item/storage/box/bodybags,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
-"kw" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 1},/area/awaymission/centcomAway/general)
+"kw" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 1},/area/awaymission/centcomAway/general)
"kx" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"ky" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/hangar)
-"kz" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
-"kA" = (/obj/machinery/door_control{id = "XCCHangar1";name = "Hangar Bay Blast Doors";pixel_x = -28;pixel_y = 7;req_access_txt = "2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/centcomAway/hangar)
-"kB" = (/obj/structure/rack,/obj/item/clothing/ears/earmuffs{pixel_x = -3;pixel_y = -2},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"kz" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom)
+"kA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"kB" = (/obj/structure/rack,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"kD" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
"kE" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
-"kF" = (/obj/structure/rack,/obj/item/clothing/ears/earmuffs{pixel_x = -3;pixel_y = -2},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/centcomAway/hangar)
-"kG" = (/turf/simulated/floor/plasteel{dir = 2;icon_state = "greencorner"},/area/awaymission/centcomAway/general)
+"kF" = (/obj/structure/chair/comfy/beige{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"kG" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"},/area/awaymission/centcomAway/general)
"kH" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"kI" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kJ" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
@@ -559,287 +559,293 @@
"kM" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kN" = (/obj/machinery/gateway/centeraway,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kO" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"kP" = (/turf/simulated/floor/plasteel{dir = 2;icon_state = "green"},/area/awaymission/centcomAway/general)
+"kP" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "green"},/area/awaymission/centcomAway/general)
"kQ" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kR" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"kS" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"kT" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{dir = 8;icon_state = "greencorner"},/area/awaymission/centcomAway/general)
+"kT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "greencorner"},/area/awaymission/centcomAway/general)
"kU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"kV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"kW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"kX" = (/obj/structure/table,/obj/item/flash,/obj/item/flash,/turf/simulated/floor/plasteel{tag = "icon-vault";icon_state = "vault"},/area/awaymission/centcomAway/hangar)
-"kY" = (/obj/structure/table,/obj/item/mmi,/turf/simulated/floor/plasteel{tag = "icon-vault";icon_state = "vault"},/area/awaymission/centcomAway/hangar)
-"kZ" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4";tag = ""},/turf/simulated/floor/plasteel{dir = 2;icon_state = "green"},/area/awaymission/centcomAway/general)
-"la" = (/obj/machinery/light,/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-blackcorner";icon_state = "blackcorner"},/area/awaymission/centcomAway/general)
-"lb" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0;tag = ""},/turf/simulated/floor/plasteel{tag = "icon-blackcorner (WEST)";icon_state = "blackcorner";dir = 8},/area/awaymission/centcomAway/general)
+"kX" = (/obj/structure/table,/obj/item/flash,/obj/item/flash,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
+"kY" = (/obj/structure/table,/obj/item/mmi,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
+"kZ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "green"},/area/awaymission/centcomAway/general)
+"la" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-blackcorner"; icon_state = "blackcorner"},/area/awaymission/centcomAway/general)
+"lb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-blackcorner (WEST)"; icon_state = "blackcorner"; dir = 8},/area/awaymission/centcomAway/general)
"lc" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"ld" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ld" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"le" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"lf" = (/obj/structure/table/wood,/obj/item/paper_bin,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom)
"lg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"lh" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"li" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
-"lj" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security";opacity = 1;req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"lh" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"li" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general)
+"lj" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"lk" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"ll" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"lm" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"ln" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2";d2 = 2},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"lo" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)";icon_state = "vault";dir = 8},/area/awaymission/centcomAway/hangar)
-"lp" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/hangar)
-"lq" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
+"ln" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"lo" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/hangar)
+"lp" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/hangar)
+"lq" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"lr" = (/obj/structure/rack,/obj/item/storage/secure/briefcase,/obj/item/storage/belt/utility/full,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
-"ls" = (/obj/machinery/door/poddoor/shutters{dir = 2;id_tag = "XCCsec3";name = "XCC Main Access Shutters"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/general)
-"lt" = (/obj/machinery/door/poddoor/shutters{dir = 2;id_tag = "XCCsec3";name = "XCC Main Access Shutters"},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/general)
-"lu" = (/obj/structure/flora/ausbushes,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "asteroid6";name = "sand";tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
-"lv" = (/obj/machinery/door/poddoor{id_tag = "XCCMechs";name = "XCC Mech Bay"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/hangar)
-"lw" = (/obj/machinery/mass_driver{dir = 8;id_tag = "XCCMechs";name = "gravpult"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/awaymission/centcomAway/hangar)
+"ls" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/awaymission/centcomAway/hangar)
+"lt" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/awaymission/centcomAway/hangar)
+"lu" = (/obj/structure/flora/ausbushes,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "asteroid6"; name = "sand"; tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
+"lv" = (/obj/machinery/door_control{id = "XCCHangar1"; name = "Hangar Bay Blast Doors"; pixel_x = -28; pixel_y = 7; req_access_txt = "2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"lw" = (/obj/structure/rack,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"lx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"ly" = (/obj/structure/table/wood,/obj/item/clothing/accessory/medal,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/general)
"lz" = (/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/general)
-"lA" = (/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)";icon_state = "vault";dir = 8},/area/awaymission/centcomAway/hangar)
+"lA" = (/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/hangar)
"lB" = (/obj/structure/table/wood,/obj/item/clothing/accessory/medal/gold,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/general)
"lC" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"lD" = (/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/thunderdome)
-"lE" = (/turf/simulated/floor/plasteel{tag = "icon-loadingarea (WEST)";icon_state = "loadingarea";dir = 8},/area/awaymission/centcomAway/hangar)
-"lF" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"lG" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"lH" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"lI" = (/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},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"lE" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "XCCsec3"; name = "XCC Main Access Shutters"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"lF" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"lG" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"lH" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"lI" = (/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},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"lJ" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
-"lK" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"lL" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"lM" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand3 (WEST)";icon_state = "ironsand3";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/general)
-"lN" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"lO" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"lP" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome Administration";opacity = 1;req_access_txt = "102"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"lQ" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "green";dir = 9},/area/awaymission/centcomAway/general)
+"lK" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
+"lL" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"lM" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand3 (WEST)"; icon_state = "ironsand3"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/general)
+"lN" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"lO" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"lP" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome Administration"; opacity = 1; req_access_txt = "102"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"lQ" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 9},/area/awaymission/centcomAway/general)
"lR" = (/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/awaymission/centcomAway/thunderdome)
-"lS" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "green";dir = 5},/area/awaymission/centcomAway/general)
-"lT" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "greencorner";dir = 4},/area/awaymission/centcomAway/general)
-"lU" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
-"lV" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/general)
-"lW" = (/obj/effect/decal/mecha_wreckage/seraph,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"lX" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/hangar)
-"lY" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"lZ" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand11 (WEST)";icon_state = "ironsand11";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/general)
-"ma" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 9},/area/awaymission/centcomAway/general)
-"mb" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 5},/area/awaymission/centcomAway/general)
-"mc" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/general)
-"md" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand9 (WEST)";icon_state = "ironsand9";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/general)
+"lS" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 5},/area/awaymission/centcomAway/general)
+"lT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "greencorner"; dir = 4},/area/awaymission/centcomAway/general)
+"lU" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
+"lV" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/general)
+"lW" = (/obj/effect/decal/mecha_wreckage/seraph,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"lX" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/hangar)
+"lY" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"lZ" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand11 (WEST)"; icon_state = "ironsand11"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/general)
+"ma" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 9},/area/awaymission/centcomAway/general)
+"mb" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 5},/area/awaymission/centcomAway/general)
+"mc" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/general)
+"md" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand9 (WEST)"; icon_state = "ironsand9"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/general)
"me" = (/obj/structure/table/wood{dir = 5},/obj/item/lighter/zippo,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"mf" = (/obj/structure/table/wood{dir = 9},/obj/item/clothing/mask/cigarette/cigar/havana,/obj/item/reagent_containers/food/drinks/sillycup,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"mg" = (/obj/structure/table/wood{dir = 5},/obj/item/storage/backpack/satchel,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
-"mh" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "XCCsec3";name = "XCC Shutter 3 Control"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"mh" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "XCCsec3"; name = "XCC Shutter 3 Control"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"mi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
"mj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
"mk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
"ml" = (/obj/structure/table/reinforced,/obj/item/folder/red,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"mm" = (/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/general)
-"mn" = (/obj/machinery/driver_button{id_tag = "XCCMechs";name = "XCC Mechbay Mass Driver";pixel_x = 25},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/hangar)
-"mo" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand4 (WEST)";icon_state = "ironsand4";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/general)
-"mp" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 10},/area/awaymission/centcomAway/general)
-"mq" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 6},/area/awaymission/centcomAway/general)
+"mm" = (/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/general)
+"mn" = (/obj/machinery/driver_button{id_tag = "XCCMechs"; name = "XCC Mechbay Mass Driver"; pixel_x = 25},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/hangar)
+"mo" = (/turf/simulated/floor/plasteel{tag = "icon-ironsand4 (WEST)"; icon_state = "ironsand4"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/general)
+"mp" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 10},/area/awaymission/centcomAway/general)
+"mq" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/awaymission/centcomAway/general)
"mr" = (/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
"ms" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"mt" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/hangar)
-"mu" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"mv" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "greencorner"},/area/awaymission/centcomAway/general)
-"mw" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2;icon_state = "greencorner"},/area/awaymission/centcomAway/general)
+"mt" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/hangar)
+"mu" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"mv" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "greencorner"},/area/awaymission/centcomAway/general)
+"mw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"},/area/awaymission/centcomAway/general)
"mx" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
"my" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
"mz" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"mA" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
"mB" = (/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
"mC" = (/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
-"mD" = (/obj/item/stamp/granted,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/general)
+"mD" = (/obj/item/stamp/granted,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/general)
"mE" = (/obj/machinery/igniter,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
-"mF" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)";icon_state = "vault";dir = 8},/area/awaymission/centcomAway/hangar)
+"mF" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/hangar)
"mG" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
"mH" = (/obj/structure/table,/obj/item/flashlight/flare,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"mI" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/centcomAway/thunderdome)
-"mJ" = (/obj/structure/table,/obj/item/firstaid_arm_assembly,/turf/simulated/floor/plasteel{tag = "icon-vault";icon_state = "vault"},/area/awaymission/centcomAway/hangar)
+"mJ" = (/obj/structure/table,/obj/item/firstaid_arm_assembly,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
"mK" = (/obj/structure/table,/obj/item/flashlight/flare,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"mL" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault";icon_state = "vault"},/area/awaymission/centcomAway/hangar)
-"mM" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{tag = "icon-vault";icon_state = "vault"},/area/awaymission/centcomAway/hangar)
-"mN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"mO" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{icon_state = "asteroid6";name = "sand";tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
-"mP" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid10";name = "plating";icon_state = "asteroid10"},/area/awaymission/centcomAway/general)
-"mQ" = (/obj/structure/sink/puddle,/turf/simulated/floor/plasteel{icon_state = "asteroid6";name = "sand";tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
-"mR" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid4";name = "plating";icon_state = "asteroid4"},/area/awaymission/centcomAway/general)
-"mS" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green";dir = 8},/area/awaymission/centcomAway/general)
-"mT" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/awaymission/centcomAway/general)
+"mL" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
+"mM" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
+"mN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"mO" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{icon_state = "asteroid6"; name = "sand"; tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
+"mP" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid10"; name = "plating"; icon_state = "asteroid10"},/area/awaymission/centcomAway/general)
+"mQ" = (/obj/structure/sink/puddle,/turf/simulated/floor/plasteel{icon_state = "asteroid6"; name = "sand"; tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
+"mR" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid4"; name = "plating"; icon_state = "asteroid4"},/area/awaymission/centcomAway/general)
+"mS" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/general)
+"mT" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/centcomAway/general)
"mU" = (/obj/structure/urinal{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
"mV" = (/obj/machinery/shower{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
-"mW" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid";name = "plating";icon_state = "asteroid"},/area/awaymission/centcomAway/general)
-"mX" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid9";name = "plating";icon_state = "asteroid9"},/area/awaymission/centcomAway/general)
+"mW" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid"; name = "plating"; icon_state = "asteroid"},/area/awaymission/centcomAway/general)
+"mX" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid9"; name = "plating"; icon_state = "asteroid9"},/area/awaymission/centcomAway/general)
"mY" = (/obj/machinery/shower{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
-"mZ" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid11";name = "plating";icon_state = "asteroid11"},/area/awaymission/centcomAway/general)
-"na" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid8";name = "plating";icon_state = "asteroid8"},/area/awaymission/centcomAway/general)
-"nb" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"nc" = (/obj/machinery/door/poddoor/shutters{id_tag = "XCCFerry";name = "XCC Ferry Hangar"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/hangar)
-"nd" = (/obj/machinery/vending/coffee,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "green";dir = 8},/area/awaymission/centcomAway/general)
-"ne" = (/obj/machinery/vending/cigarette,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/awaymission/centcomAway/general)
+"mZ" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid11"; name = "plating"; icon_state = "asteroid11"},/area/awaymission/centcomAway/general)
+"na" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid8"; name = "plating"; icon_state = "asteroid8"},/area/awaymission/centcomAway/general)
+"nb" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"nc" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "XCCsec3"; name = "XCC Main Access Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"nd" = (/obj/machinery/vending/coffee,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/general)
+"ne" = (/obj/machinery/vending/cigarette,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/centcomAway/general)
"nf" = (/obj/structure/table,/obj/item/paper/pamphlet/ccaInfo,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"ng" = (/obj/machinery/door/poddoor/shutters{id_tag = "XCCsec1";name = "XCC Checkpoint 1 Shutters"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/general)
-"nh" = (/obj/machinery/door/poddoor/shutters{id_tag = "XCCsec2";name = "XCC Checkpoint 2 Shutters"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/general)
-"ni" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
-"nj" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{dir = 6;icon_state = "asteroid8";name = "sand";tag = "icon-asteroid8 (SOUTHEAST)"},/area/awaymission/centcomAway/general)
-"nk" = (/obj/structure/flora/ausbushes,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroid6";name = "sand";tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
-"nl" = (/obj/structure/flora/ausbushes,/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-asteroid";name = "plating";icon_state = "asteroid"},/area/awaymission/centcomAway/general)
-"nm" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid5";name = "plating";icon_state = "asteroid5"},/area/awaymission/centcomAway/general)
-"nn" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"no" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"np" = (/obj/structure/chair{dir = 4},/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "green";dir = 8},/area/awaymission/centcomAway/general)
-"nq" = (/obj/structure/chair{dir = 8},/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/awaymission/centcomAway/general)
-"nr" = (/obj/machinery/door_control{id = "XCCFerry";name = "Hangar Bay Shutters";pixel_x = -28;pixel_y = 7;req_access_txt = "2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)";icon_state = "warnplate";dir = 8},/area/awaymission/centcomAway/hangar)
-"ns" = (/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)";icon_state = "delivery";dir = 6},/area/awaymission/centcomAway/general)
-"nt" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "green"},/area/awaymission/centcomAway/general)
-"nu" = (/obj/structure/table/reinforced,/obj/item/paper/pamphlet/ccaInfo,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/general)
-"nv" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "XCCsec1";name = "XCC Shutter 1 Control"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"nw" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
-"nx" = (/obj/item/paper_bin,/obj/structure/table/reinforced,/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ng" = (/obj/machinery/door/poddoor{id_tag = "XCCMechs"; name = "XCC Mech Bay"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/hangar)
+"nh" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/hangar)
+"ni" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
+"nj" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{dir = 6; icon_state = "asteroid8"; name = "sand"; tag = "icon-asteroid8 (SOUTHEAST)"},/area/awaymission/centcomAway/general)
+"nk" = (/obj/structure/flora/ausbushes,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroid6"; name = "sand"; tag = "icon-asteroid6"},/area/awaymission/centcomAway/general)
+"nl" = (/obj/structure/flora/ausbushes,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-asteroid"; name = "plating"; icon_state = "asteroid"},/area/awaymission/centcomAway/general)
+"nm" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/plasteel{tag = "icon-asteroid5"; name = "plating"; icon_state = "asteroid5"},/area/awaymission/centcomAway/general)
+"nn" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"no" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"np" = (/obj/structure/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/general)
+"nq" = (/obj/structure/chair{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/centcomAway/general)
+"nr" = (/obj/machinery/mass_driver{dir = 8; id_tag = "XCCMechs"; name = "gravpult"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/hangar)
+"ns" = (/obj/effect/decal/warning_stripes/yellow/partial{dir = 8},/obj/effect/decal/warning_stripes/arrow{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/hangar)
+"nt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "green"},/area/awaymission/centcomAway/general)
+"nu" = (/obj/structure/table/reinforced,/obj/item/paper/pamphlet/ccaInfo,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/general)
+"nv" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "XCCsec1"; name = "XCC Shutter 1 Control"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"nw" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
+"nx" = (/obj/item/paper_bin,/obj/structure/table/reinforced,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"ny" = (/obj/structure/chair/comfy/teal,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
-"nz" = (/turf/simulated/floor/plasteel{icon_state = "neutral";dir = 8},/area/awaymission/centcomAway/general)
-"nA" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "neutral";dir = 4},/area/awaymission/centcomAway/general)
-"nB" = (/obj/machinery/computer/card,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
+"nz" = (/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/awaymission/centcomAway/general)
+"nA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/awaymission/centcomAway/general)
+"nB" = (/obj/machinery/computer/card,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
"nC" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint)
-"nD" = (/obj/machinery/photocopier,/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/general)
+"nD" = (/obj/machinery/photocopier,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/general)
"nE" = (/obj/structure/table,/obj/item/multitool,/obj/machinery/light,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"nF" = (/obj/machinery/door/window/northright{icon_state = "right";dir = 2},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"nG" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "XCCsec2";name = "XCC Shutter 2 Control"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"nH" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
-"nI" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "red"},/area/awaymission/centcomAway/general)
-"nJ" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 10},/area/awaymission/centcomAway/general)
-"nK" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 2},/area/awaymission/centcomAway/general)
-"nL" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "red";dir = 2},/area/awaymission/centcomAway/general)
-"nM" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "redcorner"},/area/awaymission/centcomAway/general)
-"nN" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
-"nO" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/obj/item/stamp/granted,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
-"nP" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{icon_state = "red";dir = 10},/area/awaymission/centcomAway/general)
-"nQ" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "green";dir = 6},/area/awaymission/centcomAway/general)
+"nF" = (/obj/machinery/door/window/northright{icon_state = "right"; dir = 2},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"nG" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "XCCsec2"; name = "XCC Shutter 2 Control"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
+"nH" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
+"nI" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaymission/centcomAway/general)
+"nJ" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/centcomAway/general)
+"nK" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 2},/area/awaymission/centcomAway/general)
+"nL" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 2},/area/awaymission/centcomAway/general)
+"nM" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/awaymission/centcomAway/general)
+"nN" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
+"nO" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/obj/item/stamp/granted,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
+"nP" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/centcomAway/general)
+"nQ" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/awaymission/centcomAway/general)
"nR" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/trophy/gold_cup,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/general)
-"nS" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/general)
-"nT" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"nU" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r";dir = 1},/turf/space,/area/space)
+"nS" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general)
+"nT" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"nU" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/space,/area/space)
"nV" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/courtroom)
-"nW" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l";dir = 1},/turf/space,/area/space)
-"nX" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion";dir = 1},/turf/space,/area/space)
+"nW" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/space,/area/space)
+"nX" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/space)
"nY" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
"nZ" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general)
"oa" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"ob" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
+"ob" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"oc" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
"od" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/light,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
"oe" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
-"of" = (/obj/item/clipboard,/obj/structure/table,/obj/item/taperecorder,/obj/item/stamp/granted,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/general)
+"of" = (/obj/item/clipboard,/obj/structure/table,/obj/item/taperecorder,/obj/item/stamp/granted,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/general)
"og" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"oh" = (/obj/structure/table,/obj/item/paicard,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oi" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
-"oj" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"ok" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"ol" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"om" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"on" = (/obj/machinery/power/apc/noalarm{cell_type = 15000;dir = 4;locked = 0;name = "Kitchen APC";pixel_x = 25;req_access = null;start_charge = 100},/obj/structure/cable,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oo" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oh" = (/obj/structure/table,/obj/item/paicard,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oi" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/centcomAway/thunderdome)
+"oj" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"ok" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"ol" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"om" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"on" = (/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Kitchen APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oo" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"op" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"oq" = (/obj/structure/safe/floor,/obj/item/clothing/suit/storage/det_suit,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"or" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"os" = (/obj/machinery/computer/card,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
-"ot" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"ou" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"ov" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)";icon_state = "barber";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
-"ow" = (/obj/machinery/door/window/southleft,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"ox" = (/obj/machinery/door/window/southright,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oy" = (/obj/structure/chair,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oz" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)";icon_state = "barber";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
-"oA" = (/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)";icon_state = "barber";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
-"oB" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/snacks/popcorn,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)";icon_state = "barber";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
-"oC" = (/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
-"oD" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
+"ot" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"ou" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"ov" = (/obj/machinery/door/airlock/centcom,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
+"ow" = (/obj/machinery/door/window/southleft,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"ox" = (/obj/machinery/door/window/southright,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oy" = (/obj/structure/chair,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oz" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
+"oA" = (/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
+"oB" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/snacks/popcorn,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
+"oC" = (/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
+"oD" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
"oE" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"oF" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
-"oG" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
-"oH" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
+"oF" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
+"oG" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
+"oH" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
"oI" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "green"},/area/awaymission/centcomAway/general)
-"oJ" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
-"oK" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oL" = (/obj/structure/table,/obj/item/lipstick,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oM" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/sugar,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/drinks/ice,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)";icon_state = "barber";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
-"oN" = (/obj/machinery/icecream_vat,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)";icon_state = "barber";dir = 8;heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
-"oO" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oP" = (/obj/structure/chair,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/awaymission/centcomAway/thunderdome)
-"oQ" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "red"},/area/awaymission/centcomAway/thunderdome)
+"oJ" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
+"oK" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oL" = (/obj/structure/table,/obj/item/lipstick,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oM" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/sugar,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/drinks/ice,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
+"oN" = (/obj/machinery/icecream_vat,/turf/simulated/floor/plasteel{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome)
+"oO" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oP" = (/obj/structure/chair,/turf/simulated/floor/plasteel{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome)
+"oQ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaymission/centcomAway/thunderdome)
"oR" = (/obj/structure/rack,/obj/item/restraints/legcuffs/beartrap,/obj/item/twohanded/fireaxe,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
"oS" = (/obj/structure/rack,/obj/item/restraints/legcuffs/beartrap,/obj/item/twohanded/fireaxe,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
-"oT" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/awaymission/centcomAway/thunderdome)
-"oU" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oV" = (/obj/machinery/door/poddoor{id_tag = "XCCtdomemelee";name = "XCC Thunderdome Melee"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/thunderdome)
-"oW" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/awaymission/centcomAway/thunderdome)
-"oX" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "red";dir = 9},/area/awaymission/centcomAway/thunderdome)
-"oY" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"oZ" = (/turf/simulated/floor/plasteel{icon_state = "redcorner";dir = 1},/area/awaymission/centcomAway/thunderdome)
+"oT" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/centcomAway/thunderdome)
+"oU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oV" = (/obj/effect/decal/warning_stripes/arrow{dir = 8},/obj/effect/decal/warning_stripes/yellow/partial{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/hangar)
+"oW" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/centcomAway/thunderdome)
+"oX" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/awaymission/centcomAway/thunderdome)
+"oY" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"oZ" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/awaymission/centcomAway/thunderdome)
"pa" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
"pb" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
-"pc" = (/turf/simulated/floor/plasteel{dir = 1;icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
-"pd" = (/turf/simulated/floor/plasteel{dir = 4;icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
-"pe" = (/turf/simulated/floor/plasteel{dir = 9;icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
-"pf" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{dir = 5;icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
-"pg" = (/obj/structure/sink{icon_state = "sink";dir = 8;pixel_x = -12;pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
+"pc" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
+"pd" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
+"pe" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
+"pf" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
+"pg" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
"ph" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/hatchet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
-"pi" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
-"pj" = (/obj/structure/table,/obj/item/camera,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pk" = (/obj/machinery/door/poddoor{id_tag = "XCCtdome";name = "XCC Thunderdome"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/thunderdome)
+"pi" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
+"pj" = (/obj/structure/table,/obj/item/camera,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pk" = (/obj/machinery/door/poddoor/shutters{id_tag = "XCCFerry"; name = "XCC Ferry Hangar"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/hangar)
"pl" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/hatchet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
-"pm" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)";icon_state = "vault";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pn" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
-"po" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
-"pp" = (/turf/simulated/floor/plasteel{dir = 2;icon_state = "redcorner"},/area/awaymission/centcomAway/thunderdome)
-"pq" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
-"pr" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
-"ps" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 4},/area/awaymission/centcomAway/thunderdome)
-"pt" = (/obj/machinery/light{icon_state = "tube1";dir = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
-"pu" = (/turf/simulated/floor/plasteel{tag = "icon-plaque";icon_state = "plaque"},/area/awaymission/centcomAway/thunderdome)
-"pv" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
-"pw" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 8},/area/awaymission/centcomAway/thunderdome)
-"px" = (/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitered"},/area/awaymission/centcomAway/thunderdome)
-"py" = (/turf/simulated/floor/plasteel{icon_state = "redcorner";dir = 4},/area/awaymission/centcomAway/thunderdome)
-"pz" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "redcorner"},/area/awaymission/centcomAway/thunderdome)
-"pA" = (/turf/simulated/floor/plasteel{dir = 2;icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
-"pB" = (/turf/simulated/floor/plasteel{dir = 1;icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
-"pC" = (/turf/simulated/floor/plasteel{dir = 1;icon_state = "whitegreen"},/area/awaymission/centcomAway/thunderdome)
-"pD" = (/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)";icon_state = "vault";dir = 4},/area/awaymission/centcomAway/thunderdome)
-"pE" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)";icon_state = "vault";dir = 1},/area/awaymission/centcomAway/thunderdome)
-"pF" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome";opacity = 1;req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
-"pG" = (/obj/machinery/door/poddoor{id_tag = "XCCtdomeguns";name = "XCC Thunderdome Guns"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/centcomAway/thunderdome)
-"pH" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "red";dir = 10},/area/awaymission/centcomAway/thunderdome)
-"pI" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 6},/area/awaymission/centcomAway/thunderdome)
-"pJ" = (/turf/simulated/floor/plasteel{dir = 2;icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
-"pK" = (/turf/simulated/floor/plasteel{dir = 10;icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
-"pL" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "green";dir = 6},/area/awaymission/centcomAway/thunderdome)
+"pm" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pn" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
+"po" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
+"pp" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/awaymission/centcomAway/thunderdome)
+"pq" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
+"pr" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
+"ps" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/centcomAway/thunderdome)
+"pt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
+"pu" = (/turf/simulated/floor/plasteel{tag = "icon-plaque"; icon_state = "plaque"},/area/awaymission/centcomAway/thunderdome)
+"pv" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
+"pw" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/thunderdome)
+"px" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/awaymission/centcomAway/thunderdome)
+"py" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/awaymission/centcomAway/thunderdome)
+"pz" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/awaymission/centcomAway/thunderdome)
+"pA" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
+"pB" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "greencorner"},/area/awaymission/centcomAway/thunderdome)
+"pC" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/awaymission/centcomAway/thunderdome)
+"pD" = (/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/thunderdome)
+"pE" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/thunderdome)
+"pF" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
+"pG" = (/obj/machinery/door/poddoor/shutters{id_tag = "XCCsec1"; name = "XCC Checkpoint 1 Shutters"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"pH" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/centcomAway/thunderdome)
+"pI" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/awaymission/centcomAway/thunderdome)
+"pJ" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
+"pK" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/awaymission/centcomAway/thunderdome)
+"pL" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/awaymission/centcomAway/thunderdome)
"pM" = (/obj/item/soap/nanotrasen,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/thunderdome)
-"pN" = (/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pO" = (/obj/structure/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pP" = (/obj/structure/table/wood,/obj/item/radio/off,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pQ" = (/obj/structure/chair/comfy/black{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pR" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome Administration";opacity = 1;req_access_txt = "102"},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pS" = (/obj/structure/chair/stool{pixel_y = 8},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pN" = (/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pO" = (/obj/structure/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pP" = (/obj/structure/table/wood,/obj/item/radio/off,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pQ" = (/obj/structure/chair/comfy/black{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pR" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome Administration"; opacity = 1; req_access_txt = "102"},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pS" = (/obj/structure/chair/stool{pixel_y = 8},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"pT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
-"pU" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pV" = (/obj/structure/table,/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pW" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pX" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pY" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"pZ" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pU" = (/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged)},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pV" = (/obj/structure/table,/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pW" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pX" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pY" = (/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"pZ" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"qa" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
-"qb" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"qc" = (/obj/structure/closet/secure_closet/bar,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"qd" = (/obj/structure/table,/obj/item/storage/toolbox/electrical,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"qe" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/popcorn,/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"qf" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/awaymission/centcomAway/thunderdome)
-"qg" = (/obj/machinery/door_control{id = "XCCtdomemelee";name = "XCC Thunderdome Melee!"},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
-"qh" = (/obj/machinery/door_control{id = "XCCtdomeguns";name = "XCC Thunderdome Guns!"},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
-"qi" = (/obj/machinery/door_control{id = "XCCtdome";name = "XCC Thunderdome Go!"},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
+"qb" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"qc" = (/obj/structure/closet/secure_closet/bar,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"qd" = (/obj/structure/table,/obj/item/storage/toolbox/electrical,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"qe" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/popcorn,/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"qf" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"qg" = (/obj/machinery/door_control{id = "XCCtdomemelee"; name = "XCC Thunderdome Melee!"},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
+"qh" = (/obj/machinery/door_control{id = "XCCtdomeguns"; name = "XCC Thunderdome Guns!"},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
+"qi" = (/obj/machinery/door_control{id = "XCCtdome"; name = "XCC Thunderdome Go!"},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/thunderdome)
"qj" = (/obj/structure/rack,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
+"qk" = (/obj/machinery/door/poddoor/shutters{id_tag = "XCCsec2"; name = "XCC Checkpoint 2 Shutters"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"ql" = (/obj/machinery/door_control{id = "XCCFerry"; name = "Hangar Bay Shutters"; pixel_x = -28; pixel_y = 7; req_access_txt = "2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
+"qm" = (/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
+"qn" = (/obj/machinery/door/poddoor{id_tag = "XCCtdomemelee"; name = "XCC Thunderdome Melee"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
+"qo" = (/obj/machinery/door/poddoor{id_tag = "XCCtdome"; name = "XCC Thunderdome"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
+"qp" = (/obj/machinery/door/poddoor{id_tag = "XCCtdomeguns"; name = "XCC Thunderdome Guns"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/thunderdome)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -876,56 +882,56 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaWaWaWaWaWaWaWaW
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWbkbjbnbnbnbnbnbnbnbobjbnbnbnbnbnbnbnbnbnbjbnaWagagakaFaGaHakaiaiaiaiaiaiaiaiaMbpayaxaxbfakakbqakakbraSaQbsakblagagagagagagabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbxbwbCbybDbnbnbnbnbnbnbnbxbwbCbybDbnbobEaWagagakaYaGaGaRaiaiaiaiaiaiaiaiaMbpayaxaxbfbvbFbIbGakbzbAaQbBakbJagagagagagagabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbLbKbKbKbNbMbHbObPbMbHbObRbKbKbKbLbnbnbnaWagagakakakakakaJaiaibSbSaiaiaiaMbpaybTbVbfakbWbIbZakbQcbcabBakakakacababbaagabababbmccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbLbUbUcdcebXbYcfcicgbYbXcnckbUbUbLbnbnbnaWagagakaFaGaHakaiaiaMcocpaiaiaiawakakakaKcrakakakakakchctctaKcjcvcvataaclagcBczcMcLcOcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbLbUbUcdcebXbYcfcicgbYbXcnckbUbUbLbnbnbnaWagagakaFaGaHakaiaiaMcocpaiaiaiawakakakaKcrakakakakakchctctaKcjcvcvataaclagcBczcMcLcNcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbLcQbUcRcqcqbYcqcqcqbYcqcqcRbUcTbLbnbnbnaWagagakaYaGhvaRaiaiaMcVaLaiaiaiaiaKcscscscWcXcucucucucZcwcwcwdbcwcwaBaacxagdccyababbmccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubndhckbUcAcqbYbYbYbYbYbYbYcqcAbUcddibndjcCaWcDcEakakakakakaiaiaMaLaLaiaiaiaicFcscscGcGcGcscscscsctcwcHcIcJcKcwaBaacxagdkabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbndhbPdldndmdocPbYdpcqbYdrdqbPdibnbncUcUcmdsagagdtaiaiaiaiaiaMaLaLaiaiaiaiaKcscscsdxjTcucucucudycwcwcwjUcwcwaBaacxagdcabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtdzbnbobnbnbLcYkbdadAbYcqcqbYcSbLbnbnbnbnbncUcmagagagdtaiaiaiaiaiaMaLaLaiaiaiaiakakakaKdBakakakakakchctctaKcjcvcvbbaaddagdccyababbmccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbocUbnbLdedfdfcPbYcSdgbYcScRdCbnbndGdGcCaWaWcEakakakakakaJaiaiaiaiaiaiaiaMbpdIdHdKdJakbWbIdNakbQdPdObBakakakacababagdQczcMczdRcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdSdfdfdTbYcSdgbYbYbHbnbnbnbudVdUdYaWagakaFduaHakaiaiaiaiaiaiaiaiaMbpdIaxaxdJdvbFbIecakdwbAedeeakbJagagagagagdcabababefccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubncUbobnbNbPbPbPdlbYcqcqbYcSegbnbnbnbubkcUehaWagakaYaGaGaRaiaiaiaiaiaiaiaiaMbpdIaxaxejakakbqakakekeledemakdDagagaglmagdcabaabmenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdEbYdEbLbYcSdgbYcSdFbnbnbnbubkcUeoaWbaakakakakakaiaiaMaLepaiaiaieqaKeraxaxdJdIetdIeuataueledauakakakakakbacBevabaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdEbYewcRexcSdgbYdregbnbnbnbubkcUeoaWagakaFduaHakaiaiaMaLaLaiaiaidIdMdIaxaxazaxaxaxeyaBaueledauakeAezeBakageCababaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdEbYbYeDbYbYbYbYbYbHbnbnbnbueGeEeLaWagakaYaGaGaRaiaiaiaiaiaiaiaidIaKdIaxaNazaxaxaxeyaBaueledaXakeNdWdWdXagdcabaaaabmbmaaaaaaaaaaaaaaaaaaaaePePaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtdzbnbnbnbnbLdEbYdEeQbYcqcqcqcqeQbnbndjaWaWaWaWaWagakakdZeaakakakdZebeaakaiaieRakdIaxaAazaxaxaxeSaBaueVeTauakeYeXeZakagdcabaaaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbocUbnbLdedfdfcPbYcSdgbYcScRdCbnbndGdGcCaWaWcEakakakakakaJaiaiaiaiaiaiaidRbpdIdHdKdJakbWbIdNakbQdPdObBakakakacababagdQczcMczdUcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdSdfdfdTbYcSdgbYbYbHbnbnbnbudVdYefaWagakaFduaHakaiaiaiaiaiaiaiaidRbpdIaxaxdJdvbFbIecakdwbAedeeakbJagagagagagdcabababehccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubncUbobnbNbPbPbPdlbYcqcqbYcSegbnbnbnbubkcUenaWagakaYaGaGaRaiaiaiaiaiaiaiaidRbpdIaxaxejakakbqakakekeledemakdDagagaglmagdcabaabmeoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdEbYdEbLbYcSdgbYcSdFbnbnbnbubkcUezaWbaakakakakakaiaiaMaLepaiaiaieqaKeraxaxdJdIetdIeuataueledauakakakakakbacBevabaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdEbYewcRexcSdgbYdregbnbnbnbubkcUezaWagakaFduaHakaiaiaMaLaLaiaiaidIdMdIaxaxazaxaxaxeyaBaueledauakeAeBeEakageCababaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbLdEbYbYeDbYbYbYbYbYbHbnbnbnbueGeLeNaWagakaYaGaGaRaiaiaiaiaiaiaiaidIaKdIaxaNazaxaxaxeyaBaueledaXakeXdWdWdXagdcabaaaabmbmaaaaaaaaaaaaaaaaaaaaePePaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtdzbnbnbnbnbLdEbYdEeQbYcqcqcqcqeQbnbndjaWaWaWaWaWagakakdZeaakakakdZebeaakaiaieRakdIaxaAazaxaxaxeSaBaueVeTauakeYeZfdakagdcabaaaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbncUbLdEbYdEbLbYeifbfabXbLbnbobnbEaWbdagagagacfffefififkfifnfifoacfpesfqakftfsfvfufCfwfLfEbbauavavauakakakakakagdcababababababaTaUaUaVababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbncUfMfOfObPfPfRbObPfOfOdibnbnbnbnaWbaageFeFeFeFeFeFeFeFeFeFeFeFeFfZfYgaeFeFeFeFeFeFeFeFeFeFeFeFeFakakeHeIbdagagdceJagagagagagagagagagagabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbncUcUfMbReKcSbYgbeMbNdibnbnbnbncUaWagageFgceOgdeOgeeFgcgfgtgpgeeFfYfYgueFgAeUgFgBeWeFgHgGgMgJgOeFcBcMcMcMcMcMgSgPgZagagagagagagnCagagagageIabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbncUcUbLhacqfccqfrbLbnbnbnbncUcUaWagageFeOeOfdeOhhhehieOeOeOeOeFhjfghpeFeUeUeUeUfhhteUeUeUfhhteFdcfjfjfjfjfjfjfjhufjfjfjfjfjfjfjfjfjfjagbdabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbncUcUbLhacqfccqfrbLbnbnbnbncUcUaWagageFeOeOfKeOhhhehieOeOeOeOeFhjfghpeFeUeUeUeUfhhteUeUeUfhhteFdcfjfjfjfjfjfjfjhufjfjfjfjfjfjfjfjfjfjagbdabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbncUbnbncUbLhxflfmhHhLbLbnbnbnbncUcUaWagageFeOeOeOeOhMeFhQhOhbhbhUeFhYeOhZeFgAeUeUeUeUhteUeUeUeUhteFdcfjidiafxfjfyfyijfjfyfyfyfyfyfyfyfyfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbnbndhfzfAfAfAfBdibnbnbnbnbncUaWagageFeOeOilikioeFiqfFfGfHfIeFeOeOireFfGfHfJfKiteFivfNeUiwixeFdcfjizfQfQiCfyfyfyfSfyfTfUfTfyfVfWfXfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbnbndhfzfAfAfAfBdibnbnbnbnbncUaWagageFeOeOilikioeFiqfFfGfHfIeFeOeOireFfGfHfJjditeFivfNeUiwixeFdcfjizfQfQiCfyfyfyfSfyfTfUfTfyfVfWfXfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtdzbnbnbnbnbnbnbnbnbnbnbnbnbnbncUbnbnbnbnaWagageFiEeOiLikiOeFiUiQiQiViQiXikikjciYjfjejfjfhiggeOgheUfhhteFdcfjfjfjfjfjjgfyfyfjgigjfTgkgiglgmjifjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbobnbnbnbnbnbnbnbobnbnbnbnbnbnjlaWagageFeFeFeFeFeFeFhMeOgngogogogogogogogogojmeOhMeFeFeFeFeFeFeFdcfjgqfQidfjfyfyfyfjjngrgrgrgrglgmgmfjbagsabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbndjjobnjpbnbnbnbnbnbnbnbnbnjqjrcMcMcMcMcMcMcMcMjsjteOjugvgweFgxgygweFgxgzjveOjwjscMcMcMcMcMgSevfjjygCgDfjfyfyfyfjgEgEgCgEgEglgmgmfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbujzjzjzjzjzjzjzjzjzjzjzjzjzjAdUdUdUdUjBaWdDbleHnCeJaggIgIeFeOeOjCgKgLjDgNjEjFgQgRgKjGeOhMgTgTgTgTgTgTgTgUfjgVgCgDfjfyfyfyfjgWgWgCgWgWglgmgmfjagaEabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXgXgXgXgXgXgXgXgXgXgXgXjzbkcUcUcUcUgYaWeFeFeFeFeFeFeFeFeFeOeOeOjHeOeOeOjJeOeOeOjHeOeOhMgTfUfUfUfUfUgTgTgTgTiCgTgTgTjNgTgTgCgCgCgCgCglgmgmfjaghcabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbobnbnbnbnbnbnbnbobnbnbnbnbnbnjlaWagageFeFeFeFeFeFeFjteOgngogogogogogogogogojmeOjweFeFeFeFeFeFeFdcfjgqfQidfjfyfyfyfjjngrgrgrgrglgmgmfjbagsabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbubnbnbnbnbndjjobnjpbnbnbnbnbnbnbnbnbnjqjrcMcMcMcMcMcMcMcMjsjAeOjugvgweFgxgygweFgxgzjveOjBjscMcMcMcMcMgSevfjjygCgDfjfyfyfyfjgEgEgCgEgEglgmgmfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbujzjzjzjzjzjzjzjzjzjzjzjzjzjJdYdYdYdYjYaWdDbleHnCeJaggIgIeFkleOjCgKgLjDgNjEjFgQgRgKjGeOkAgTgTgTgTgTgTgTgUfjgVgCgDfjfyfyfyfjgWgWgCgWgWglgmgmfjagaEabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXgXgXgXgXgXgXgXgXgXgXgXjzbkcUcUcUcUgYaWeFeFeFeFeFeFeFeFeFeOeOeOjHeOeOeOkFeOeOeOjHeOeOhMgTfUfUfUfUfUgTgTgTgTiCgTgTgTjNgTgTgCgCgCgCgCglgmgmfjaghcabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXgXgXgXgXgXgXgXgXgXgXgXjzbkcUcUcUcUgYaWhdjOhfhfeFhgjPjReFjSeOgnhkhlhmeOeOeOhnhohkjmeOjVgTfyfyfyfyfyfyfSfyfyfyfyfyfyfyfyfSgChqhqhqjXfjfjhrfjcEfjgTgTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXgXgXgXgXhsgXjYbPbPjZgXjzbkcUcUcUcUkaaWhfhwhfhfkcfYfYfYhjeOeOjuhyhzeOhAeOhAeOhBhyjveOhMfSfyfynVfyfyfyfSfyfyfyfynVfyfyfyfSgChqhqhqgCfjfyfyfyfyfyhCgTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtdzgXjYbPbPjZgXgXhDhEdghFgXjzbkcUcUcUhGkdaWhIhfhfhJhKkgfYhgeFhYeOjugKkikhhNnYhPkjhRgKjveOhZgTgTgTgThShTgTgTgTgTkkgTgTgTiCgTgTgChqhqhqgCfjfyfyhVhVfyfyhWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXhDhEdghXgXgXklbPbPkmgXjzbkcUcUcUcUknaWhIhfhfhJibhgfYhgeFeOeOjueFfGfHfHfHfHfHfJeFjveOhMickoeUeFaaaaaaaagTieifgTfQfQfQfQgTgCfQfQfQgCfjfyigfTfTihfyiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXklbPbPkmgXgXgXgXgXgXgXjzbkcUcUcUcUktaWhInZhfkveFhgfYhgeFeOeOjCkwkwkwkwkwkwkwkwkwjGoahMimeUineFaaaaaaaagTiekzgTizfUfQfQgTgTgTgTgTgTgTjgigfTfTihfyiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWkAgXgXgXocgXgXgXgXgXgXocipjzkFkBisodiuktaWeFeFeFeFeFeFhjeFeFeOeOeOoeeOkGkPeOkZkTiklaiklbldicogeUeFaaaaaaaagTiyifgTlfgEgEgCgTaaaaaaaaaahWfyigfTfTihfyiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXgXgXgXgXhsgXlsbPbPjZgXjzbkcUcUcUcUkaaWhfhwhfhfkcfYfYfYhjeOeOjuhyhzeOhAeOhAeOhBhyjveOhMfSfyfynVfyfyfyfSfyfyfyfynVfyfyfyfSgChqhqhqgCfjfyfyfyfyfyhCgTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtdzgXlsbPbPjZgXgXhDhEdghFgXjzbkcUcUcUhGkdaWhIhfhfhJhKkgfYhgeFhYeOjugKkikhhNnYhPkjhRgKjveOhZgTgTgTgThShTgTgTgTgTkkgTgTgTiCgTgTgChqhqhqgCfjfyfyhVhVfyfyhWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXhDhEdghXgXgXltbPbPkmgXjzbkcUcUcUcUknaWhIhfhfhJibhgfYhgeFeOeOjueFfGfHfHfHfHfHfJeFjveOhMickoeUeFaaaaaaaagTieifgTfQfQfQfQgTgCfQfQfQgCfjfyigfTfTihfyiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbugXltbPbPkmgXgXgXgXgXgXgXjzbkcUcUcUcUktaWhInZhfkveFhgfYhgeFeOeOjCkwkwkwkwkwkwkwkwkwjGoahMimeUineFaaaaaaaagTiekzgTizfUfQfQgTgTgTgTgTgTgTjgigfTfTihfyiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWlvgXgXgXocgXgXgXgXgXgXocipjzlwkBisodiuktaWeFeFeFeFeFeFhjeFeFeOeOeOoeeOkGkPeOkZkTiklaiklbldicogeUeFaaaaaaaagTiyifgTlfgEgEgCgTaaaaaaaaaahWfyigfTfTihfyiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWiAaWaWaWaWaWaWaWaWaWiBaWaWaWaWaWaWaWaWaWaWlhfYfYfYlheFfYeFeFeFeFeFeFeFeFeFiDlieFeFeFljeFeFeFeFeFeFaaaaaaaagTiFiGgTgVgWgCgCgTaaaaaaaaaaiHiIfyiJiJfyiKiHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWlniMiNloiPlpcCiRpTcUcUiScCaaaaaaaaaaaaeFhghghghghgeFhjeFiTlqfDlriWeFeFlslslteFlufghgiZaabmaaaaaaaaaaaaaagTgTgTgThSjajajbgTbmbmbmbmbmgTgTgTgTgTgTgTgTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvjdlwlElAlAgXlpcCcCcClFcCcCcCfGfHfHfHfHjheFhgfYlGfYhglHfYeFjjjjjjjjjjeFeFfgiDlIeFeFeFljeFeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWlniMiNloiPlpcCiRpTcUcUiScCaaaaaaaaaaaaeFhghghghghgeFhjeFiTlqfDlriWeFeFlElEnceFlufghgiZaabmaaaaaaaaaaaaaagTgTgTgThSjajajbgTbmbmbmbmbmgTgTgTgTgTgTgTgTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaangnhnrnslAlAgXlpcCcCcClFcCcCcCfGfHfHfHfHjheFhgfYlGfYhglHfYeFjjjjjjjjjjeFeFfgiDlIeFeFeFljeFeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcClniMiNlAgXdGcCjklKlLgXjkcChghghghghghglHhglNlMlOhghgfYlPjjjjjjfDfDeFlQjGeOlTlSeFlUhglVeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvjdlwlElAlAlAbulFlLlWlLlLlLlXfYfYfYlYfYfYfYfYlNlZlOfYfYfYeFjjjjjjjjfDeFmaeOeOhMmbjxhghgmceFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaangnhnroVlAlAlAbulFlLlWlLlLlLlXfYfYfYlYfYfYfYfYlNlZlOfYfYfYeFjjjjjjjjfDeFmaeOeOhMmbjxhghgmceFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcClniMiNlAlAbulFlLlLlLlLlLlXfYfYfYfYfYfYfYfYlNmdlOfYfYfYeFjjmfmemgjMeFjveOeOhMjumlmhhgmmeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvjdlwlElAlAgXmnaWgXjIgXjIgXaWhghghghghghgophglNmolOhghgfYeFjjjKjLjMjLeFmpeOeOhMmqmsjQhgmmeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaangnhnroVlAlAgXmnaWgXjIgXjIgXaWhghghghghghgophglNmolOhghgfYeFjjjKjLjMjLeFmpeOeOhMmqmsjQhgmmeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcClniMiNlAgXmtaWgXgXgXgXgXaWfGfHfHfHfHjheFhgfYmufYhgopfYeFfDoroqjjjjeFmpmveOmwmqmzjWosmDeFbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvjdlwlElAmFgXmtaWmJkXmLkYmMaWaaaaaaaaaaaaeFhghghghghgeFkeeFeFeFeFeFeFeFfHfJkfmNfHeFeFeFeFeFeFeFeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaangnhnroVlAmFgXmtaWmJkXmLkYmMaWaaaaaaaaaaaaeFhghghghghgeFkeeFeFeFeFeFeFeFfHfJkfmNfHeFeFeFeFeFeFeFeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWeFlhfYfYfYlheFqaeFmOmQmPeFmRhkmSeOeOhMmThkmOeFmWmZmXnaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWbkgXcUnbgXcUcUnbgXgXgXgXlKgXgXgXnbcUgXaWeFeFeFeFeFeFeFkeeFkpkqkreFmOksmSeOeOhMmTksmXeFfGfHfHjheFfGjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXgXgXgXcUcUgXgXgXgXgXhsgXgXgXgXcUgXaWkwkwkwkwkwkweFeOeOkukueOeFeFeFndeOeOhMneeFeFeFeOkukueOkxfDkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXgXgXcUgXgXgXgXgXgXgXgXgXgXgXgXgXgXkyeOeOeOeOeOeOiDeOeOnfnfeOiDngiDeOeOeOhMeOiDnhiDeOeOeOeOkCfHjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXgXkDkDkDkDgXhshsgXgXgXgXgXgXgXgXniaWfGfHfHfHfHjheFeOeOnfnfeOeFngeFmSeOeOhMmTeFnheFeOeOeOeOkEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXgXkDkDkDkDgXgXgXgXgXgXgXgXgXgXgXgXaWnknjmOmWnmnleFeOeOkHkHeOfgngfgjveOeOhMjufgnhfgeOeOeOeOeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXgXgXcUcUgXgXgXgXgXgXgXgXgXgXgXgXniaWfGfHfHfHfHjheFnneOeOeOnoeFngeFnpeOeOhMnqeFnheFnneOeOnokEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXgXcUkIkJkKcUgXgXgXgXgXgXgXgXgXcUgXkyeOeOeOeOeOeOiDeOeOeOeOeOiDngiDeOeOeOhMeOiDnhiDeOeOoaeOkLfHjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaancbugXcUcUkMkNkOcUgXgXgXgXcUgXgXgXcUcUgXaWgogogogogogoeFeOeOeOeOeOeFngeFmSeOeOhMmTeFnheFeOeOeOeOkxfDkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWnrgXcUgXkQkRkScUcUgXgXgXgXgXgXcUcUcUcUaWeFfGfHfHjheFeFnsnsnsnsnseFngkUmpgogontmqkVnheFeOeOeOeOgxgykWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXgXgXgXcUcUgXgXgXgXgXhsgXgXgXgXcUgXaWkwkwkwkwkwkweFeOeOkukueOeFeFeFndeOeOhMneeFeFeFeOkukueOkxfDkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXgXgXcUgXgXgXgXgXgXgXgXgXgXgXgXgXgXkyeOeOeOeOeOeOiDeOeOnfnfeOiDpGiDeOeOeOhMeOiDqkiDeOeOeOeOkCfHjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXgXkDkDkDkDgXhshsgXgXgXgXgXgXgXgXniaWfGfHfHfHfHjheFeOeOnfnfeOeFpGeFmSeOeOhMmTeFqkeFeOeOeOeOkEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXgXkDkDkDkDgXgXgXgXgXgXgXgXgXgXgXgXaWnknjmOmWnmnleFeOeOkHkHeOfgpGfgjveOeOhMjufgqkfgeOeOeOeOeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXgXgXcUcUgXgXgXgXgXgXgXgXgXgXgXgXniaWfGfHfHfHfHjheFnneOeOeOnoeFpGeFnpeOeOhMnqeFqkeFnneOeOnokEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXgXcUkIkJkKcUgXgXgXgXgXgXgXgXgXcUgXkyeOeOeOeOeOeOiDeOeOeOeOeOiDpGiDeOeOeOhMeOiDqkiDeOeOoaeOkLfHjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapkbugXcUcUkMkNkOcUgXgXgXgXcUgXgXgXcUcUgXaWgogogogogogoeFeOeOeOeOeOeFpGeFmSeOeOhMmTeFqkeFeOeOeOeOkxfDkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWqlgXcUgXkQkRkScUcUgXgXgXgXgXgXcUcUcUcUaWeFfGfHfHjheFeFqmqmqmqmqmeFpGkUmpgogontmqkVqkeFeOeOeOeOgxgykWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWiAcUcUoEcUcUcUocgXcUgXgXocgXmKmHnEktaWaWbmaaaaaaaaaaeFnujxmlmsmzeFeFeFgvfJfYmNgzeFeFeFeOeOeOeOkxfDkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaabmbmaaaaaaaaeFmmhgnvlcnweFlenxlgnzfYnAgKnxleeFnsnsnsnsfGfHjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaWaabmbmaaaaaaaaeFmmhgnvlcnweFlenxlgnzfYnAgKnxleeFqmqmqmqmfGfHjhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbmaaaaaaeFmmhghghgnBeFeOlklenzfYnAlelleOeFjxmlmsmzeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbmaaaaeFnDhghghgofeFfgnFfgnzfYnAfgnFfgeFmmnGlcnweFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbmaaeFmmhghghgnHeFnIeOeOeOhkhMeOeOjueFmmhghgnBeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -945,13 +951,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDomomlDoMoMoNoNoAoBoCoCoCoCoCoCoCoCoCoCoCoCoCoCoClDomoOoOoOotomomomlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDomomlDlDlDlDlDlDlDoPoPoPoPoPoPoPoPoPoPoPoPoPoPoPlDlDlDlDlDlDomomomlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDoQomomlDlDoRoSoRoRlDmimjmjmjmjmjmjmjmjmjmjmjmjmjmklDoRoSoRoRlDomomomoTlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDlDlDlDlDoQoUlDlDlDoVoVoVoVlDoXoWoYoWoYoWoZmrpdpcpepcpepcpflDoVoVoVoVlDlDlDomoTlDlDlDlDlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpgmxmxmylDoQomlDphpimBmCmCmCpkoQmrmrmrmrmEmrmrmrmEmrmrmrmroTpkmCmCmCmBpipllDpmoTlDmymxmxpnlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpomxmxmxmGoQomlDphmAmBmCmCmCpkoQmrppmrmrmroZmIpdmrmrmrpqmroTpkmCmCmCmBmApllDomoTmGmxmxmxprlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDmxmymymylDoQomlDphmAmCmCmCmCpkoQmrpsmrmEptpspupwpvmEmrpwmroTpkmCmCmCmCmApllDomoTlDmymymymxlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpxlDlDlDlDoQomlDphmAmBmCmCmCpkoQmrpymrmrmrpzpcpAmrmrmrpBmroTpkmCmCmCmBmApllDomoTlDlDlDlDpClDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDmxmUmxmVlDoQomlDpDpamBmCmCmCpkoQmrmrmrmrmEmrmrmrmEmrmrmrmroTpkmCmCmCmBpapElDomoTlDmYmxmUpnlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpomxmxmVlDoQoUlDpFlDpGpGpGpGlDpHmIpImIpImIpzmrpApJpKpJpKpJpLlDpGpGpGpGlDpFlDpmoTlDmYmxmxmxlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDlDlDlDlDoQoUlDlDlDqnqnqnqnlDoXoWoYoWoYoWoZmrpdpcpepcpepcpflDqnqnqnqnlDlDlDomoTlDlDlDlDlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpgmxmxmylDoQomlDphpimBmCmCmCqooQmrmrmrmrmEmrmrmrmEmrmrmrmroTqomCmCmCmBpipllDpmoTlDmymxmxpnlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpomxmxmxmGoQomlDphmAmBmCmCmCqooQmrppmrmrmroZmIpdmrmrmrpqmroTqomCmCmCmBmApllDomoTmGmxmxmxprlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDmxmymymylDoQomlDphmAmCmCmCmCqooQmrpsmrmEptpspupwpvmEmrpwmroTqomCmCmCmCmApllDomoTlDmymymymxlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpxlDlDlDlDoQomlDphmAmBmCmCmCqooQmrpymrmrmrpzpcpAmrmrmrpBmroTqomCmCmCmBmApllDomoTlDlDlDlDpClDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDmxmUmxmVlDoQomlDpDpamBmCmCmCqooQmrmrmrmrmEmrmrmrmEmrmrmrmroTqomCmCmCmBpapElDomoTlDmYmxmUpnlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDpomxmxmVlDoQoUlDpFlDqpqpqpqplDpHmIpImIpImIpzmrpApJpKpJpKpJpLlDqpqpqpqplDpFlDpmoTlDmYmxmxmxlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDmxpMmVlDoQomomomlDpbqjpbpblDmimjmjmjmjmjmjmjmjmjmjmjmjmjmklDpbqjpbpblDomomomoTlDmYmxmxlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDlDlDlDoQotomomlDlDlDlDlDlDpNpNpOpOpOpOpNpPpNpOpOpOpOpNpNlDlDlDlDlDlDpmomomoTlDlDlDlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalDlDlDlDomomomomomomomlDpNpNpNpNpNpNpNpQpNpNpNpNpNpNpNlDomomomomomomomlDlDlDlDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/RandomZLevels/evil_santa.dmm b/_maps/map_files/RandomZLevels/evil_santa.dmm
index 10f7aeffd37..70248dcf770 100644
--- a/_maps/map_files/RandomZLevels/evil_santa.dmm
+++ b/_maps/map_files/RandomZLevels/evil_santa.dmm
@@ -42,7 +42,7 @@
"aP" = (/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/awaymission/challenge/main)
"aQ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/awaymission/challenge/main)
"aR" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/awaymission/challenge/main)
-"aS" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/fans/tiny,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/challenge/main)
+"aS" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/fans/tiny,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/challenge/main)
"aT" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/awaymission/challenge/main)
"aU" = (/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/awaymission/challenge/main)
"aV" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/awaymission/challenge/main)
@@ -80,12 +80,12 @@
"bB" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main)
"bC" = (/obj/item/storage/toolbox/emergency,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main)
"bD" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start)
-"bE" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/obj/structure/fans/tiny,/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start)
-"bF" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start)
-"bG" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start)
+"bE" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/fans/tiny,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/challenge/main)
+"bF" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/obj/structure/fans/tiny,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
+"bG" = (/obj/machinery/door/unpowered/shuttle,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
"bH" = (/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
-"bI" = (/obj/machinery/door_control{id = "challenge"; name = "Gateway Lockdown"; pixel_x = -4; pixel_y = 26; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/challenge/start)
-"bJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/challenge/start)
+"bI" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
+"bJ" = (/obj/machinery/door_control{id = "challenge"; name = "Gateway Lockdown"; pixel_x = -4; pixel_y = 26; req_access_txt = "0"},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
"bK" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/greengrid,/area/awaymission/challenge/start)
"bL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
"bM" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/item/paper/journal_scrap_1,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
@@ -126,6 +126,8 @@
"cv" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1},/turf/simulated/floor/plating,/area/awaymission/challenge/start)
"cw" = (/turf/space,/area/space)
"cx" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/challenge/start)
+"cy" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
+"cz" = (/obj/machinery/door_control{id = "challenge"; name = "Gateway Lockdown"; pixel_x = -4; pixel_y = 26; req_access_txt = "0"},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -156,15 +158,15 @@ aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
aaabaJabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaKacacacacacacacacacacacacacacacacacacacacacacacababababaa
aaabaHaLacaLacabaKacacacacacacacacacacacaKacacacacacacacacacacacacacacaKacacacacacacacacacacacacacacacaHacacacacacacabababababaa
aaabababacabababababacacacacacaHacacacacaKacacacacacacacacaGacacacaGacacacacacacacacacacacacacacacacacacacacacacacacabacabababaa
-aaabaMaMaNaMaOababacacacacacacacacacacacacacacacacacacaPaQaRaSaSaSaTaQaUacacacacacacacacacacacacacacacacacacacacacacacacabababaa
+aaabaMaMaNaMaOababacacacacacacacacacacacacacacacacacacaPaQaRaSbEaSaTaQaUacacacacacacacacacacacacacacacacacacacacacacacacabababaa
aaabaMaVaVaVaWababacacacacacacacacacacacacacacacacacacaXaYaZaYaZaYaZaYaXacacacacacacacacacapacacacacacacacacacacacababababababaa
aaabaOaVbaaVaMababacacacacacacacacacacacacacacacacacaGbbaZaYaZaYaZaYaZbbaGacacacacacacacacacacacacacacacacacacacacacabababababaa
aaabaWbcbdbeaOababababacacacacacacaIacacacacacacacacacaSaYaZaYaZaYaZaYaSacacacacacacacacacacacacacacacacacacacacacacabababababaa
-aaabaMaMaOaMaWabababacacacacacacacacacacacacacacacacacaSaZaYaZbfaZaYaZaSacacacacacacacacacacacacacacacacavacacacacacabababababaa
+aaabaMaMaOaMaWabababacacacacacacacacacacacacacacacacacbEaZaYaZbfaZaYaZbEacacacacacacacacacacacacacacacacavacacacacacabababababaa
aaababababababababacacacacacacacacacacacacacacacacacacaSaYaZaYaZaYaZaYaSacacacacacacacacacacacacacacacacacacacacacacabababababaa
aaabababababababababacacacacacacacacacacacacacacacacaGbgaZaYaZaYaZaYaZbgaGacacacacacacacacacacacaIacacacacacacacacacacababababaa
aaabababacabababababacacacacacacacacacacacacacacacacacaXaYaZaYaZaYaZaYaXacacacacacacacacacacacacacacacacacacacacacacacacabababaa
-aaabababacacacacacacacacacacacacacacacacacacacacacacacbhaQaRaSaSaSaTaQbiacacacaKacacacacaoacacacacacacacacacacacacacacacabababaa
+aaabababacacacacacacacacacacacacacacacacacacacacacacacbhaQaRaSbEaSaTaQbiacacacaKacacacacaoacacacacacacacacacacacacacacacabababaa
aaabababacacacacacacacacacacacacacacacacacacacacaHacacacacaGacacacaGacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa
aaabababacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa
aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa
@@ -181,10 +183,10 @@ aaabababacacacacacagbwamambxagacacacacacacacacacacacacacacacaIacacacacacacacacaf
aaabababacacacacacaubyamamamagbzacacacacacbjacacacacacacacacacbAacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa
aaabababacacacacacauasamamamaqacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa
aaabababacacacacacagbBamambCagbzacacacacacacacacacacacacacacacacacacacacacacacacacacacacacapacacacacacacacacacacacacacacabababaa
-aaabababacacacacacagagagagagagacacacacacacacacacacacacacacbDbEbEbEbDbkacacacacacacacacacacacacacacacacacacacacacacaeacacabababaa
-aaabababacacacacacalacacacacacacacacacacacacacacacacacaeacbDbFbFbFbDbjaIacacacacacacacacacacacacacacacacacacacacacacacacabababaa
-aaabababacacacacacacacacacacacacacacacacacacacacbDbDbDbDbDbDbGbGbGbDbDbDbDbDbDacacacacacacacacacacacacacacacacacacacacacabababaa
-aaabababacaeacacacacacacacacacacacacacacacabacabbDbHbHbHbHbIbJbJbJbIbHbHbHbHbDababacacacacacacacacacacacacacacacacacacacabababaa
+aaabababacacacacacagagagagagagacacacacacacacacacacacacacacbDbFbFbFbDbkacacacacacacacacacacacacacacacacacacacacacacaeacacabababaa
+aaabababacacacacacalacacacacacacacacacacacacacacacacacaeacbDbGbGbGbDbjaIacacacacacacacacacacacacacacacacacacacacacacacacabababaa
+aaabababacacacacacacacacacacacacacacacacacacacacbDbDbDbDbDbDbIbIbIbDbDbDbDbDbDacacacacacacacacacacacacacacacacacacacacacabababaa
+aaabababacaeacacacacacacacacacacacacacacacabacabbDbHbHbHbHbJcycycyczbHbHbHbHbDababacacacacacacacacacacacacacacacacacacacabababaa
aaababababacacacacacacadacacacacacacacacababababbDbHbKbKbKbHbLbMbNbHbObPbQbHbDabbjacababacacacacacacacadacacacacacacacacabababaa
aaabababababacacacacacacacacacacacacacababbRbRbRbDbHbKbKbKbHbSbTbSbHbUbVbWbHbDbRbRbRababacacacacacacacacacacacacacacacababababaa
aaabababababacabacacacacacacacacacacacababbRbXbYbDbHbKbKbKbZcacbcacccdcecfbHbDcgcgbRabababacacacacacacacacacacacacacabababababaa
diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm
index 7dd71410a55..12e7ca4df90 100644
--- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm
@@ -66,20 +66,20 @@
"bn" = (/obj/machinery/light/small{dir = 8},/obj/structure/sign/poster/contraband/power_people{pixel_x = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bo" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bp" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 1; pixel_y = 23; req_access = "150"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/radio/off{pixel_x = -4; pixel_y = 4},/obj/item/radio/off{pixel_x = 2},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"br" = (/obj/machinery/door/window{dir = 1; name = "Gateway Access"; req_access_txt = "150"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/item/paper{info = "Log 1:
We got our promised supply drop today. We were only meant to get it, what, a week ago? This bloody gateway keeps desyncing itself, and that means subsisting off recycled water and carb packs. No clue where the damn thing connects to on its off days, and HQ say we are 'not to touch it if it isn't linking to command.' We dumped off the assload of crates Jim filled, got our boxes of oxygen, food and drink, and closed the portal.
Log 2:
Damn thing is acting up again. Three days no contact this time. I thought I heard clanking noises from it yesterday. Jim is going on about the NT base or some shit. We've been over this before – They don't know we're here, that engineer was too drunk to recognise his suit, especially since I had it painted orange. He's starting to get annoying. We're safe.
Log 3:
Gateway synced itself up automatically today. I opened it for an instant to spy through it, got a glimpse of the inside of a transport container. Either HQ's redecorating or something, or there's more than two of these things."; name = "Personal Log"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bu" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/storage/firstaid/regular,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/radio/off{pixel_x = -4; pixel_y = 4},/obj/item/radio/off{pixel_x = 2},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"br" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/item/paper{info = "Log 1:
We got our promised supply drop today. We were only meant to get it, what, a week ago? This bloody gateway keeps desyncing itself, and that means subsisting off recycled water and carb packs. No clue where the damn thing connects to on its off days, and HQ say we are 'not to touch it if it isn't linking to command.' We dumped off the assload of crates Jim filled, got our boxes of oxygen, food and drink, and closed the portal.
Log 2:
Damn thing is acting up again. Three days no contact this time. I thought I heard clanking noises from it yesterday. Jim is going on about the NT base or some shit. We've been over this before – They don't know we're here, that engineer was too drunk to recognise his suit, especially since I had it painted orange. He's starting to get annoying. We're safe.
Log 3:
Gateway synced itself up automatically today. I opened it for an instant to spy through it, got a glimpse of the inside of a transport container. Either HQ's redecorating or something, or there's more than two of these things."; name = "Personal Log"},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bs" = (/obj/machinery/door/window{dir = 1; name = "Gateway Access"; req_access_txt = "150"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/storage/firstaid/regular,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bu" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bv" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bw" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bx" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"by" = (/obj/structure/table,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32; pixel_y = 0},/obj/item/trash/plate,/obj/item/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bz" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bA" = (/obj/machinery/light{dir = 8},/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bC" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 1; pixel_x = 23; pixel_y = 0; req_access = "150"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 1; pixel_x = 23; pixel_y = 0; req_access = "150"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bE" = (/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bF" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
@@ -93,46 +93,46 @@
"bO" = (/obj/machinery/door/airlock/public/glass{name = "Break Room"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bP" = (/obj/structure/grille,/obj/structure/window/full/basic,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "Gateway"; req_access_txt = "150"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/clothing/gloves/color/yellow,/obj/item/multitool,/turf/simulated/floor/plating{dir = 9; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/clothing/gloves/color/yellow,/obj/item/multitool,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bS" = (/obj/machinery/power/smes{charge = 0; input_level = 10000; inputting = 0; output_level = 15000; outputting = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bT" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/computer/monitor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"; tag = "icon-warnplate (NORTHEAST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bU" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"; tag = "icon-warnplate (NORTHEAST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bV" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/alarm/monitor{frequency = 1439; locked = 1; pixel_y = 23; req_access = "150"},/turf/simulated/floor/plating{dir = 9; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bT" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/computer/monitor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bU" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/alarm/monitor{frequency = 1439; locked = 1; pixel_y = 23; req_access = "150"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bV" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"bW" = (/obj/structure/alien/weeds/node,/mob/living/simple_animal/hostile/alien,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"bX" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bY" = (/obj/machinery/conveyor{dir = 2; id = "awaysyndie"},/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"bZ" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"ca" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/sign/poster/contraband/syndicate_recruitment{pixel_y = 32},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "loadingarea"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bY" = (/obj/machinery/conveyor{dir = 2; id = "awaysyndie"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"bZ" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/sign/poster/contraband/syndicate_recruitment{pixel_y = 32},/obj/effect/decal/warning_stripes/yellow/partial{dir = 8},/obj/effect/decal/warning_stripes/arrow{dir = 8},/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"ca" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cb" = (/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cc" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = "150"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"ce" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{tag = "icon-warning (NORTH)"; icon_state = "warning"; dir = 1},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cf" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "warningcorner"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"ce" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/structure/alien/weeds/node,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cg" = (/obj/machinery/light/small{active_power_usage = 0; dir = 4; icon_state = "bulb-broken"; status = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"ch" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "warningcorner"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"ci" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/light/small{dir = 8},/obj/item/stock_parts/cell/high,/obj/item/paper{info = "Alright, listen up. If you're reading this, I'm either taking a shit or I've been recalled back to Command. Either way, you'll need to know how to restore power. We've stolen this stuff from Nanotrasen, so all the equipment is jury-rigged. We have generators that work on both plasma and uranium, about 50 sheets should power the outpost for quite a while. If the generators aren't working, which is very likely, take the power cell on the desk and put it into the APC in the hallway. That should get the place running, at least for a little while."; name = "Engineering Instructions"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cj" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"ch" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"ci" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/light/small{dir = 8},/obj/item/stock_parts/cell/high,/obj/item/paper{info = "Alright, listen up. If you're reading this, I'm either taking a shit or I've been recalled back to Command. Either way, you'll need to know how to restore power. We've stolen this stuff from Nanotrasen, so all the equipment is jury-rigged. We have generators that work on both plasma and uranium, about 50 sheets should power the outpost for quite a while. If the generators aren't working, which is very likely, take the power cell on the desk and put it into the APC in the hallway. That should get the place running, at least for a little while."; name = "Engineering Instructions"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cj" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"ck" = (/obj/structure/chair/stool,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cl" = (/obj/machinery/light/small{dir = 4},/obj/structure/sign/poster/contraband/hacking_guide{pixel_x = 32},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cm" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"; tag = "icon-warnplatecorner (EAST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cl" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cm" = (/obj/machinery/light/small{dir = 4},/obj/structure/sign/poster/contraband/hacking_guide{pixel_x = 32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cn" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"co" = (/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cp" = (/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cp" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cq" = (/obj/machinery/door/airlock/public/glass{density = 0; emagged = 1; icon_state = "door_open"; locked = 1; name = "Dormitories"},/obj/item/stack/rods,/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plasteel{carbon_dioxide = 0; nitrogen = 0; oxygen = 0; temperature = 2.7},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cr" = (/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cs" = (/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"ct" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cw" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/engineering{name = "Power Maintenance"; req_access_txt = "150"},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cz" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cA" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cA" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cB" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cC" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cC" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cD" = (/obj/machinery/mineral/processing_unit_console{machinedir = 8},/turf/simulated/wall,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cE" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cE" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cF" = (/obj/structure/grille/broken,/obj/item/stack/rods,/obj/item/stack/rods,/obj/item/shard,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cH" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 2; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
@@ -140,34 +140,34 @@
"cJ" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 2; locked = 1; name = "Worn-out APC"; pixel_x = 0; pixel_y = -25; req_access = "150"; start_charge = 0},/turf/simulated/floor/plasteel/airless{dir = 2; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cK" = (/turf/simulated/floor/plasteel/airless{dir = 2; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cL" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{dir = 6; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cM" = (/obj/item/storage/box/lights/mixed,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 10; icon_state = "warnplate"; tag = "icon-warnplate (SOUTHWEST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cN" = (/obj/structure/cable,/obj/effect/decal/cleanable/dirt,/obj/machinery/power/port_gen/pacman/super{desc = "A portable generator for emergency backup power."; name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cO" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman{desc = "A portable generator for emergency backup power."; name = "P.A.C.M.A.N.-type portable generator"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cP" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating{dir = 6; icon_state = "warnplate"; tag = "icon-warnplate (SOUTHEAST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cQ" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cR" = (/obj/machinery/conveyor_switch/oneway{id = "awaysyndie"; layer = 3.1; name = "mining conveyor"},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cM" = (/obj/item/storage/box/lights/mixed,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cN" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman{desc = "A portable generator for emergency backup power."; name = "P.A.C.M.A.N.-type portable generator"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cO" = (/obj/structure/cable,/obj/effect/decal/cleanable/dirt,/obj/machinery/power/port_gen/pacman/super{desc = "A portable generator for emergency backup power."; name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cP" = (/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cQ" = (/obj/machinery/conveyor_switch/oneway{id = "awaysyndie"; layer = 3.1; name = "mining conveyor"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cR" = (/obj/effect/landmark/damageturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cS" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 1; pixel_x = 23; pixel_y = 0; req_access = "150"},/obj/machinery/light{active_power_usage = 0; dir = 4; icon_state = "tube-broken"; status = 2},/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cT" = (/obj/machinery/door/airlock{density = 0; emagged = 1; icon_state = "door_open"; id_tag = "awaydorm4"; locked = 1; name = "Dorm 1"; opacity = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cU" = (/obj/machinery/door/airlock{id_tag = "awaydorm5"; name = "Dorm 2"},/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cV" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cW" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"cX" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 12},/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "bot"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cW" = (/obj/structure/alien/weeds/node,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"cX" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 12},/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cY" = (/obj/structure/closet/crate,/obj/item/storage/bag/ore,/obj/structure/alien/weeds,/obj/item/mining_scanner,/obj/item/shovel,/obj/item/pickaxe,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"cZ" = (/obj/machinery/door_control{id = "awaydorm4"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/bed,/obj/item/bedsheet/syndie,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"da" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"db" = (/obj/machinery/door_control{id = "awaydorm5"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/dresser,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dc" = (/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dd" = (/obj/structure/alien/weeds/node,/mob/living/simple_animal/hostile/alien/drone{plants_off = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
-"de" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 1; output_dir = 2},/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"de" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 1; output_dir = 2},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"df" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 8},/turf/simulated/wall,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dg" = (/obj/structure/closet/crate,/obj/item/stack/sheet/glass{amount = 10},/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "bot"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dg" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dh" = (/obj/structure/chair/wood/normal,/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 1; pixel_x = -23; pixel_y = 0; req_access = "150"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"di" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dj" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 1; pixel_x = 23; pixel_y = 0; req_access = "150"},/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dk" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dl" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{tag = "icon-warning (NORTH)"; icon_state = "warning"; dir = 1},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dm" = (/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "loadingarea"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dn" = (/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "warningcorner"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dl" = (/obj/structure/closet/crate,/obj/item/stack/sheet/glass{amount = 10},/obj/structure/alien/weeds,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dm" = (/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dn" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"do" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dp" = (/obj/machinery/power/port_gen/pacman/super{desc = "A portable generator for emergency backup power."; name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a7)
"dq" = (/obj/structure/table/wood,/obj/structure/sign/poster/contraband/c20r{pixel_y = -32},/obj/item/pen,/obj/item/paper{info = "Log 1:
While mining today I noticed the NT station was finished with its renovations. They placed some huge reinforced tumor on the station – looks so ugly. I wouldn't be surprised if those pigs decided to turn that little astronomy outpost into a prison with that thing, it'd be pretty typical of them.
Log 2:
Really dumb of me, but I just waved at an engineer in the outpost, and he waved back. I hope to god he was too dumb or drunk to recognize the suit, because if he isn't, then we might have to pull out before they come looking for us.
Log 3:
That huge reinforced tumor in their science section has been making a lot of noise lately. I've been hearing some banging and scratching from the other side and I'm kind of glad now that they reinforced this thing so much. I'll be sleeping with my gun under my pillow from now on."; name = "Personal Log"},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
@@ -177,13 +177,13 @@
"du" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dv" = (/obj/item/ore/iron,/obj/item/ore/iron{pixel_x = -7; pixel_y = -4},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"dw" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dx" = (/obj/structure/dispenser/oxygen{oxygentanks = 9},/obj/machinery/light/small{active_power_usage = 0; dir = 1; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dy" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/orange,/obj/item/clothing/mask/gas,/obj/item/pickaxe/drill,/obj/item/clothing/head/helmet/space/syndicate/orange,/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dx" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dy" = (/obj/structure/dispenser/oxygen{oxygentanks = 9},/obj/machinery/light/small{active_power_usage = 0; dir = 1; icon_state = "bulb-broken"; status = 2},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dz" = (/obj/item/ore/iron{pixel_x = -3; pixel_y = 9},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"dA" = (/turf/simulated/mineral,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"dB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a7)
-"dC" = (/obj/structure/sign/vacuum{desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = 0; pixel_y = -32},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"dD" = (/obj/structure/rack,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dC" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/orange,/obj/item/clothing/mask/gas,/obj/item/pickaxe/drill,/obj/item/clothing/head/helmet/space/syndicate/orange,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"dD" = (/obj/structure/sign/vacuum{desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = 0; pixel_y = -32},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"dE" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"dF" = (/obj/item/flashlight/lantern{icon_state = "lantern-on"; on = 1},/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"dG" = (/obj/item/mining_scanner,/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 6; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
@@ -207,15 +207,15 @@
"dY" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"dZ" = (/turf/simulated/wall/r_wall/rust,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ea" = (/turf/simulated/wall/r_wall,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"eb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
+"eb" = (/obj/structure/rack,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
"ec" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ed" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ee" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ee" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ef" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eg" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eh" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ei" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ej" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ej" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ek" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/shieldwallgen{locked = 0; req_access = null},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"el" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/bed/nest,/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 9; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"em" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -227,10 +227,10 @@
"es" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/bed/nest,/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"et" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eu" = (/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ev" = (/obj/machinery/light/small{active_power_usage = 0; dir = 4; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ev" = (/obj/machinery/light/small{active_power_usage = 0; dir = 4; icon_state = "bulb-broken"; status = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ew" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ex" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ey" = (/obj/structure/table/reinforced,/obj/structure/alien/weeds,/obj/machinery/computer/security/telescreen{desc = "Used for watching the contents of the xenobiology containment pen."; dir = 8; name = "xenobiology monitor"; network = list("MO19X")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ey" = (/obj/structure/table/reinforced,/obj/structure/alien/weeds,/obj/machinery/computer/security/telescreen{desc = "Used for watching the contents of the xenobiology containment pen."; dir = 8; name = "xenobiology monitor"; network = list("MO19X")},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ez" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/structure/cable,/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eB" = (/obj/structure/alien/weeds,/obj/structure/bed/nest,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 2},/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib2_flesh"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -247,7 +247,7 @@
"eM" = (/obj/structure/grille,/obj/machinery/door/poddoor{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaybiohazard"; name = "Acid-Proof biohazard containment door"; unacidable = 1},/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eN" = (/obj/machinery/light/small{active_power_usage = 0; dir = 8; icon_state = "bulb-broken"; status = 2},/obj/machinery/camera{c_tag = "Xenobiology"; dir = 4; network = list("MO19","MO19R")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"eP" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "Awaylab"; name = "Containment Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "201"},/obj/machinery/ignition_switch{id = "awayxenobio"; pixel_x = 4; pixel_y = 8},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"eP" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "Awaylab"; name = "Containment Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "201"},/obj/machinery/ignition_switch{id = "awayxenobio"; pixel_x = 4; pixel_y = 8},/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eQ" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eR" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"eS" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -265,13 +265,13 @@
"fe" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a7)
"ff" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a7)
"fg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/newspaper,/turf/simulated/floor/plating,/area/awaycontent/a7)
-"fh" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"fi" = (/obj/structure/closet/crate/freezer,/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 2},/obj/item/xenos_claw,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fh" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fi" = (/obj/structure/closet/crate/freezer,/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 2},/obj/item/xenos_claw,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fj" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/storage/box/syringes,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"fk" = (/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fk" = (/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fl" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"fn" = (/obj/structure/closet/l3closet/scientist,/obj/structure/window/reinforced,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fn" = (/obj/structure/closet/l3closet/scientist,/obj/structure/window/reinforced,/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fo" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fp" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fq" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/bed/nest,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 2},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -283,12 +283,12 @@
"fw" = (/obj/structure/extinguisher_cabinet{pixel_x = -26},/obj/effect/decal/cleanable/blood/tracks{desc = "Your instincts say you shouldn't be following these."; icon_state = "ltrails_2"},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a7)
"fy" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating,/area/awaycontent/a7)
-"fz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"fB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"fE" = (/obj/machinery/atmospherics/pipe/simple/visible{desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof Pipe"; unacidable = 1},/obj/item/stack/rods,/obj/item/stack/cable_coil{amount = 5},/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"fE" = (/obj/machinery/atmospherics/pipe/simple/visible{desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof Pipe"; unacidable = 1},/obj/item/stack/rods,/obj/item/stack/cable_coil{amount = 5},/obj/item/shard{icon_state = "small"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fF" = (/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/machinery/atmospherics/pipe/simple/visible{desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof Pipe"; unacidable = 1},/obj/item/stack/rods,/obj/item/stack/cable_coil{amount = 5},/obj/item/shard{icon_state = "medium"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fG" = (/obj/machinery/atmospherics/pipe/simple/visible{desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof Pipe"; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"fH" = (/obj/machinery/atmospherics/pipe/simple/visible{desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof Pipe"; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -311,7 +311,7 @@
"fY" = (/obj/item/cigbutt,/turf/simulated/floor/plating,/area/awaycontent/a7)
"fZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a7)
"ga" = (/turf/simulated/floor/plating,/area/awaycontent/a7)
-"gb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/closet/l3closet/scientist,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gc" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/item/stack/cable_coil/cut{amount = 1; icon_state = "coil_red1"; item_state = "coil_red1"},/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gd" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood{color = "red"},/obj/item/stack/rods,/obj/item/shard{icon_state = "small"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ge" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -325,21 +325,21 @@
"gm" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall/r_wall/rust,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"go" = (/obj/structure/sign/biohazard{pixel_x = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"gp" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"gq" = (/obj/structure/table,/obj/item/scalpel{pixel_y = 12},/obj/item/circular_saw,/obj/item/razor{pixel_y = 5},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"gr" = (/obj/structure/table,/obj/item/mmi,/obj/item/mmi,/obj/item/mmi,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"gs" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gp" = (/obj/machinery/door/firedoor,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/closet/l3closet/scientist,/obj/structure/alien/weeds,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gr" = (/obj/structure/table,/obj/item/scalpel{pixel_y = 12},/obj/item/circular_saw,/obj/item/razor{pixel_y = 5},/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gs" = (/obj/structure/alien/weeds/node,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gt" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"gu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gu" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gv" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/structure/cable,/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gw" = (/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds,/obj/structure/alien/resin/wall,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gx" = (/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 2; icon_state = "pipe-c"; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gz" = (/turf/simulated/mineral/random/labormineral,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"})
-"gA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gA" = (/obj/structure/table,/obj/item/mmi,/obj/item/mmi,/obj/item/mmi,/obj/structure/alien/weeds,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gB" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"gD" = (/obj/machinery/door/firedoor,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gE" = (/obj/structure/chair{dir = 4},/obj/machinery/newscaster/security_unit{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gF" = (/obj/item/stack/rods,/obj/item/shard{icon_state = "small"},/obj/effect/decal/cleanable/blood/tracks{desc = "Your instincts say you shouldn't be following these."; dir = 8; icon_state = "ltrails_1"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gG" = (/obj/effect/decal/cleanable/blood/splatter{color = "red"},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -348,7 +348,7 @@
"gJ" = (/obj/structure/table,/obj/machinery/light/small{active_power_usage = 0; dir = 4; icon_state = "bulb-broken"; status = 2},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gK" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/light/small{active_power_usage = 0; dir = 8; icon_state = "bulb-broken"; status = 2},/obj/item/paper{info = "Researcher: Dr. Sakuma Sano
Date: 04/06/2554
Report:
As expected, all that is left of the monkeys we sent in earlier is a group of xenomorph larvae. It is quite clear that the facehuggers are not selective in their hosts, and so far the gestation process has been shown to have a 100% success rate.
The larvae themselves have been behaving very differently from the lone larva we first observed, and despite shying away from humans, they are clearly comfortable with others of their kind. Our previous suspicions on larvae have been confirmed with their demonstration of playfulness: they are not nearly as aggressive nor violent when young, before molting to adulthood.
The majority of the play we observed involved a sort of hide-and-seek, and occasionally wrestling by tangling themselves and struggling out of it. While normally we would write these off as instinctual play for honing their skills when they molt, their growth period is so incredibly fast and they are still such adept killers, that it would serve no practical purpose. The only explanation for this is perhaps to create bonds and friendships with each other, if that is even possible for such an incredibly hostile race. It may be that they are much more reasonable with each other than other life forms.
It had become clear that now was the best time to extract a xenomorph for dissecting, as these were all still larvae and the queen was still attached to its ovipositor and would be immobile. With the approval of the research director, we sent in our medical robot that had been dubbed 'Head Surgeon' into the containment pen, dropping the shields for only a fraction of a second to allow it entry. The larvae were cautious, but the curiosity of one had him within grabbing range of our robot. It was brought out and quickly euthanized through lethal injection, courtesy of our mechanical doctor."; name = "Larva Xenomorph Social Interactions & Capturing Procedure"},/obj/item/paper{info = "Researcher: Dr. Sakuma Sano
Date: 04/06/2554
Report:
I have studied many interesting and diverse life-forms as a xenobiologist, ranging from creatures as large as cows, to specimens too small see with the naked eye. This is by far the largest alien I have ever seen. The alien we were previously studying has molted and has become an absolutely enormous creature. Standing at over 15 feet tall, and weighing in at likely two tons or more, the xenomorph queen is an absolutely breathtakingly large and cruel monster. Its behavior has changed drastically from when it was a drone, having become far more comfortable with sitting and staring at us, rather than smashing at the windows.
The queen, physiologically speaking, is fairly similar to the other xenomorphs, with a few key differences. Its enormous size demands large legs, while the back seems to be always hunched forward. The dorsal tubes on the back have changed to several large spikes, and we observed that the alien now sports a second pair of smaller arms on its chest. The purpose of these secondary arms is still unknown. Finally, the queen's crown has become incredibly large, with what seems to be a retractable slot to hide its head in. The dome appears to be extremely thick near the front, and will likely be able to resist a lot of trauma. Despite the enormous size it has grown to, it is not much slower than it used to be.
After two hours of doing relatively nothing but staring, the queen began to produce an unusually large amount of resin and weeds, quickly shaping up a large nest, that it then hid behind. It then proceeded to smash out all the lights, leaving us with very little to see with our cameras. When we looked through the back cameras, we had discovered that it had grown a large ovipositor, and was releasing large eggs onto the ground. This had us all in agreement that this stage of the life cycle was the queen.
Over the next few hours, the eggs grew to their full sizes, and we provided the subject with new monkey hosts. When they approached the eggs, they opened to release more facehuggers. It seems that we have observed the full cycle of reproduction for this species. We can expect more larvae in the next few hours."; name = "Queen Xenomorph Physiology & Behavior Observation"},/obj/item/paper{info = "Researcher: Dr. Sakuma Sano
Date: 03/06/2554
Report:
The other scientists and I can hardly believe our eyes. The snake-like larva has molted into a 7 foot tall insectoid nightmare in just a few hours. It's obvious now as to why such heavy duty containment was needed. It immediately tried to escape, however, by flinging itself at the window in a flurry of swipes and stabs. It seems its behavior has returned to a state that is very similar to the facehugger, though I doubt with the same intent! Thankfully, our glass and shields have shown to be more than sturdy enough for such a violent creature, and so far, any attempts at the creature escaping have been in vain.
As for its physiology, the creature has an elongated head, with what appears to be have an exoskeleton resembling an external rib-cage on the torso. The alien is also fairly skinny with a lean body. The little amount of meat on the alien appears to be entirely muscle. We assume this makes it deceptively strong, while remaining agile at the same time. One of the most interesting things we have seen is its pharyngeal jaw. It has somewhat of an inner mouth, capable of being fired externally at extremely high speeds. It has already caused many dents in the walls and a few small cracks in the window with it. The alien also has a couple of dorsal tubes on its back, their purpose unknown. Finally, this monster sports a long ridged tail, complete with a large and extremely sharp blade at the tip.
Normally I would be absolutely terrified of something like this, but I'm putting my trust in Nanotrasen with the containment. After all, they wouldn't build a cell that could fail to contain its subject – would they?"; name = "Adult Xenomorph Physiology & Behavior Observation"},/obj/item/paper{info = "Researcher: Dr. Sakuma Sano
Date: 03/06/2554
Report:
When the larva first emerged from the chest of the monkey, it seemed very curious. It would wander around aimlessly for awhile and then sit still. We are unable to determine the gender of the larva, or even determine if it has a gender. After some time had passed, it seemed to lose interest in its surroundings and sat mostly still while occasionally wagging its tail. We decided to throw in a live mouse to see if it would consume it. The larva quickly attacked and ate the mouse, and seemed to get larger very suddenly; this suggests that the larvae are capable of metabolizing and directing all the energy towards growth at previously-thought impossible speeds. It is a shame that we cannot observe the process more closely, as we do not currently know how dangerous or violent this creature is, or will become, as it matures fully.
It is tempting to imagine the possibilities of utilizing such a mechanism. The capability of skipping years of growth time for children, repairing bodily damage in a matter of moments, even its usage in existing cloning technology."; name = "Larva Xenomorph Physiology & Behavior Observation"},/obj/item/paper{info = "Researcher: Dr. Sakuma Sano
Date: 03/06/2554
Report:
The test subject we were provided with truly is alien. It is a small spider-like creature with bony legs, leading to a smooth body. It has a long tail connected to it, and it has shown extremely aggressive behavior by flinging its entire body at the glass and shields to no avail. While doing so, we noticed there was a small pink hole in the middle of the body.
When we sent in a monkey through the crude but effective disposal tube, the alien immediately jumped at its face and latched on. The monkey was quickly suffocated by its constricting tail, unable to pry off the fingers. The monkey at first seemed to be dead, but was observed to be breathing. The recently named alien 'facehugger' fell off, dead, and curled its legs up like a spider moments after it had finished with the monkey's body.
While the monkey appeared to be unharmed, we kept it in the cell for a couple more hours, until we were horrified to discover it screaming out in pain, as a snake-like creature erupted from the monkey's chest! It appears that the 'facehugger' is only the start of this life cycle. The impregnation cycle involving the creatures growing inside the chests of their hosts seems to only be the beginning."; name = "'Facehugger' Xenomorph Physiology & Behavior Observation"},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gL" = (/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/awaycontent/a7)
-"gM" = (/obj/structure/table/reinforced,/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/item/radio/off,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"gM" = (/obj/structure/table/reinforced,/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/item/radio/off,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gN" = (/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gO" = (/obj/structure/cable,/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gP" = (/obj/effect/decal/cleanable/blood/oil{color = "black"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Maintenance APC"; pixel_x = 25; req_access = null; start_charge = 100},/obj/structure/cable,/turf/simulated/floor/plating,/area/awaycontent/a7)
@@ -362,7 +362,7 @@
"gX" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/paper{info = "Researcher: Dr. Mark Douglas
Date: 17/06/2554
Report:
Earlier today we have observed a new phenomenon with our subjects. While feeding them our last monkey subject and throwing out the box, the aliens merely looked at us, instead of infecting the monkey right away. They looked to be collectively distressed as they would no longer be given hosts, where instead we would move to the next phase of the experiment. When I glanced at the gas tanks and piping leading to their cell, I looked back to see all of them were up against the glass, even the queen! It was as if they all understood what was going to happen, even though we knew only the queen had the cognitive capability to do so.
The only explanation for this is a form of communication between the aliens, but we have seen no such action take place anywhere in the cell until now. We also know that regular drone and hunter xenomorphs have no personality or instinct to survive by themselves. Perhaps the queen has a direct link to them? A form of a commander or overseer that controls their every move? A hivemind?"; name = "The Hivemind Hypothesis"},/obj/item/paper{info = "Researcher: Dr. Sakuma Sano
Date: 08/06/2554
Report:
The xenomorphs we have come to study here are a remarkable species. They are almost universally aggressive across all castes, showing no remorse or guilt or pause before or after acts of violence. They appear to be a species entirely designed to kill. Oddly enough, even their method of reproduction is a brutal two-for-one method of birthing a new xenomorph and killing its host.
The lone xenomorph we studied only five days ago showed little sign of intelligence. Only a simple drone that flung itself at the safety glass and shields repeatedly and thankfully without success. Once the drone molted into a queen, it became much more calm and calculating, merely looking at us and waiting while building its nest. As the hive grew in size and in numbers, so too did the intelligence of the common hunter and drone. We are still researching how they can communicate with one another and the relationship between the different castes and the queen. We will continue to update our research as we learn more about the species."; name = "A Preliminary Study of Alien Behavior"},/obj/item/paper{info = "Researcher: Dr. Mark Douglas
Date: 06/06/2554
Report:
While observing the growing number of aliens in the containment cell, we began to notice subtle differences that were consistently repeating. Like ants, these creatures clearly have different specialized variations that determine their roles in the hive. We have dubbed the three currently observed castes as Hunters, Drones, and Sentinels.
Hunters have been observed to be by far the most aggressive and agile of the three, constantly running on every surface and frequently swiping at the windows. They are also remarkably good at camouflaging themselves in darkness and on their resin structures, appearing almost invisible to the unwary observer. They are always the first to reach the monkeys we send in leading us to believe that this caste is primarily used for finding and retrieving hosts.
Drones on the other hand are much more docile and seem more shy by comparison, though not any less aggressive than the other castes. They have been observed to have a much wider head and lack dorsal tubes. They have shown to be less agile and visibly more fragile than any other caste. The drone however has never been observed to interact with the monkeys directly and instead preferring maintenance of the hive by building walls of resin and moving eggs around the nest. As far as we know, we have only ever observed a drone become a queen, and we have no way of knowing if the other castes have that capability.
Lastly, we have the Sentinels, which appear at first glance to be the guards of the hive. They have so far been only observed to remain near the queen and the eggs, frequently curled up against the walls. We have only observed one instance where they have interacted with a monkey who strayed too closely to the queen, and was pounced and held down immediately until it was applied with a facehugger. Their lack of movement makes it difficult to determine their exact purpose as guards, sentries, or other role."; name = "The Xenomorph 'Castes'"},/obj/item/paper{info = "Researcher: Dr. Mark Douglas
Date: 04/06/2554
Report:
After an extremely dangerous, time consuming and costly dissection, we have managed to record and identify several of the organs inside of the first stage of the xenomorph cycle: the larva. This procedure took an extensive amount of time because these creatures have incredibly, almost-comically acidic blood that can melt through almost anything in a few moments. We had to use over a dozen scalpels and retractors to complete the autopsy.
The larva seems to possess far fewer and quite different organs than that of a human. There is a stomach, with no digestive tract, a heart, which seems to lack any blood-oxygen circulation purpose, and an elongated brain, even though its as dumb as any large cat. It also lacks any liver, kidneys, or other basic organs.
We can't determine the exact nature of how these creatures grow, nor if they gain organs as they become adults. The larger breeds of xenomorph are too dangerous to kill and capture to give us an accurate answer to these questions. All that we can conclude is that being able to function with so little and yet be so deadly means that these creatures are highly evolved and likely to be extremely durable to various hazards that would otherwise be lethal to humans."; name = "Larva Xenomorph Autopsy Report"},/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gY" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"gZ" = (/obj/machinery/computer/operating,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ha" = (/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ha" = (/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"hb" = (/obj/structure/disposaloutlet{desc = "An outlet for the pneumatic disposal system. This one has been applied with an acid-proof coating."; dir = 1; name = "Acid-Proof disposal outlet"; unacidable = 1},/obj/structure/disposalpipe/trunk{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 1; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"hc" = (/obj/machinery/light{active_power_usage = 0; dir = 2; icon_state = "tube-broken"; status = 2},/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/machinery/camera{c_tag = "Xenobiology Containment South"; dir = 1; network = list("MO19X")},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"hd" = (/obj/machinery/sparker{desc = "A wall-mounted ignition device. This one has been applied with an acid-proof coating."; id = "awayxenobio"; name = "Acid-Proof mounted igniter"; pixel_x = 0; pixel_y = -25; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/resin/wall,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -402,7 +402,7 @@
"hL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a7)
"hM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a7)
"hN" = (/obj/structure/chair,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"hO" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaybiohazard"; name = "Acid-Proof biohazard containment door"; unacidable = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"hO" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaybiohazard"; name = "Acid-Proof biohazard containment door"; unacidable = 1},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"hP" = (/obj/structure/table,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"hQ" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"hR" = (/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -416,9 +416,9 @@
"hZ" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ia" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the research division and the labs within."; name = "research monitor"; network = list("MO19X","MO19R")},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ib" = (/obj/machinery/computer/aifixer,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ic" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/circuitboard/teleporter,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"id" = (/obj/structure/rack,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ie" = (/obj/structure/rack,/obj/item/paicard{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ic" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaybiohazard"; name = "Acid-Proof biohazard containment door"; unacidable = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"id" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaybiohazard"; name = "Acid-Proof biohazard containment door"; unacidable = 1},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ie" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/circuitboard/teleporter,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"if" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ig" = (/obj/structure/closet/l3closet/general,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ih" = (/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -429,14 +429,14 @@
"im" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"in" = (/obj/item/soap/nanotrasen,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"io" = (/obj/machinery/shower{dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"ip" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ip" = (/obj/structure/rack,/obj/item/paicard{pixel_x = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"iq" = (/obj/structure/window/reinforced,/obj/structure/closet/secure_closet{icon_broken = "secureresbroken"; icon_closed = "secureres"; icon_locked = "secureres1"; icon_off = "secureresoff"; icon_opened = "secureresopen"; icon_state = "secureres1"; locked = 1; name = "scientist's locker"; req_access_txt = "271"},/obj/item/clothing/suit/storage/labcoat,/obj/item/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ir" = (/obj/structure/chair/office/light{dir = 1; pixel_y = 3},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"is" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"it" = (/obj/item/storage/secure/safe{pixel_x = 32; pixel_y = 0},/obj/effect/decal/cleanable/blood/splatter,/obj/item/pen,/obj/item/paper/crumpled{info = "19 06 2554
I fucking knew it. There was a major breach, that idiotic force field failed, and the xenomorphs rushed out and took out the scientists. I've managed to make it to my office and closed the blast doors. I can hear them trying to pry open the doors. Probably don't have long. I have no clue what has happened to the rest of the crew, for all I know they've been killed to produce more of the fucks."; name = "Hastily Written Note"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"it" = (/obj/structure/rack,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"iu" = (/obj/effect/decal/cleanable/blood/splatter{color = "red"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"iv" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"iw" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"iv" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"iw" = (/obj/item/storage/secure/safe{pixel_x = 32; pixel_y = 0},/obj/effect/decal/cleanable/blood/splatter,/obj/item/pen,/obj/item/paper/crumpled{info = "19 06 2554
I fucking knew it. There was a major breach, that idiotic force field failed, and the xenomorphs rushed out and took out the scientists. I've managed to make it to my office and closed the blast doors. I can hear them trying to pry open the doors. Probably don't have long. I have no clue what has happened to the rest of the crew, for all I know they've been killed to produce more of the fucks."; name = "Hastily Written Note"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ix" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"iy" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"iz" = (/obj/machinery/door/airlock{name = "Unisex Showers"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -452,10 +452,10 @@
"iJ" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"iK" = (/obj/structure/table,/obj/item/radio/off,/obj/item/laser_pointer,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"iL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaycontent/a7)
-"iM" = (/obj/structure/table,/obj/item/storage/secure/briefcase,/obj/item/taperecorder{pixel_x = -3},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"iN" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"iO" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"iP" = (/obj/structure/closet/emcloset,/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"iM" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"iN" = (/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"iO" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/computer/id_upgrader,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"iP" = (/obj/machinery/light/small,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"iQ" = (/obj/machinery/shower{dir = 1; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"iR" = (/obj/structure/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"iS" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -468,8 +468,8 @@
"iZ" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ja" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"jb" = (/obj/item/stack/rods,/obj/item/shard,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
-"jc" = (/obj/structure/table,/obj/item/book/manual/detective,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jd" = (/obj/structure/chair/comfy/black{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jc" = (/obj/structure/table,/obj/item/storage/secure/briefcase,/obj/item/taperecorder{pixel_x = -3},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"jd" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"je" = (/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jf" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jg" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -479,32 +479,32 @@
"jk" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jl" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jm" = (/obj/structure/chair/stool,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jn" = (/obj/structure/chair,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jn" = (/obj/structure/closet/emcloset,/obj/machinery/light/small,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"jo" = (/obj/effect/decal/cleanable/flour,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jp" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jq" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "awaykitchen"; name = "Serving Hatch"},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jr" = (/obj/structure/closet/secure_closet{icon_broken = "rdsecurebroken"; icon_closed = "rdsecure"; icon_locked = "rdsecure1"; icon_off = "rdsecureoff"; icon_opened = "rdsecureopen"; icon_state = "rdsecure1"; locked = 1; name = "research director's locker"; req_access_txt = "271"},/obj/item/storage/backpack/satchel_tox,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"js" = (/obj/item/twohanded/required/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"js" = (/obj/structure/chair/comfy/black{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jt" = (/obj/structure/closet/crate/can,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ju" = (/obj/machinery/vending/snack,/obj/structure/sign/poster/official/ue_no{pixel_y = 32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jv" = (/obj/structure/chair,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jw" = (/obj/structure/chair,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jx" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jx" = (/obj/structure/table,/obj/item/book/manual/detective,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jy" = (/obj/structure/sign/science{pixel_x = 0; pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 9; icon_state = "purple"; tag = "icon-purple (NORTHWEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jz" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "purple"; tag = "icon-purple (NORTHEAST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"jB" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"jC" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"jD" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
-"jE" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jE" = (/obj/item/twohanded/required/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jG" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jH" = (/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jI" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jI" = (/obj/structure/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"jK" = (/obj/structure/noticeboard{pixel_y = 32},/obj/item/paper{info = "I Can't Believe It's Not Pasta: Half off on Wednesdays
Burger night every Friday 6PM-10PM, free drinks with purchase of meal!
Premiering Tonight: The comedy stylings of Shoe Snatching Willy! 11AM-7PM
"; name = "Specials This Week"},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jL" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jM" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jM" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/newspaper,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jN" = (/obj/item/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jO" = (/obj/structure/grille,/obj/structure/window/full/basic,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jP" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -512,8 +512,8 @@
"jR" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jS" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jT" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "awaykitchen"; name = "Serving Hatch"},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"jV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jU" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"jV" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"jX" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"jY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{density = 0; emagged = 1; icon_state = "door_open"; locked = 1; name = "Research Director's Office"; opacity = 0; req_access_txt = "271"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
@@ -524,12 +524,12 @@
"kd" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ke" = (/obj/structure/grille,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"kg" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaybiohazard"; name = "Acid-Proof biohazard containment door"; unacidable = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"kh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kg" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ki" = (/obj/machinery/door/airlock/research{id_tag = ""; name = "Research Division"; req_access_txt = "271"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"kj" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door_control{id = "Awaybiohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 8; req_access_txt = "271"},/obj/machinery/door_control{id = "AwayRD"; name = "Privacy Shutter Control"; pixel_x = 0; pixel_y = -2; req_access_txt = "271"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"kk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a7)
-"kl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/computer/id_upgrader,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"kl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"km" = (/obj/structure/closet/crate/can,/obj/item/trash/candy,/obj/item/trash/can,/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/blood/oil{color = "black"},/turf/simulated/floor/plating,/area/awaycontent/a7)
"ko" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Diner"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -538,33 +538,33 @@
"kr" = (/obj/structure/table,/obj/item/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ks" = (/obj/effect/decal/cleanable/plant_smudge,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/processor,/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"ku" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/newspaper,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"ku" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kv" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kw" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kx" = (/obj/machinery/light/small,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1; network = list("MO19")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ky" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kz" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kA" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kB" = (/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kC" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "purple"; tag = "icon-purple (NORTH)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kD" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 1; locked = 0; name = "Habitat APC"; pixel_x = 0; pixel_y = 25; req_access = null; start_charge = 100},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kE" = (/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kG" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark/damageturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kI" = (/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kJ" = (/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kK" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kL" = (/obj/effect/decal/cleanable/blood/xeno{color = "green"},/obj/effect/decal/cleanable/blood/gibs/xeno,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kM" = (/obj/effect/decal/cleanable/blood/xeno{color = "green"},/obj/effect/decal/remains/xeno{desc = "They look like the remains of something... alien. The front of skull appears to have been completely obliterated."},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kN" = (/obj/structure/closet/crate/can,/obj/item/trash/plate,/obj/item/reagent_containers/food/snacks/badrecipe,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kO" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kP" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kQ" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kP" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kS" = (/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kT" = (/obj/effect/decal/cleanable/generic,/obj/effect/decal/remains/human{desc = "They look like human remains. The skeleton is curled up in fetal position with the hands placed near the throat."},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"kU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"kU" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kV" = (/obj/machinery/door_control{id = "awaydorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"kX" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -577,7 +577,7 @@
"le" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lf" = (/turf/simulated/floor/plating/airless/asteroid,/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lg" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"lh" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"lh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"li" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lj" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lk" = (/obj/item/stack/rods,/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
@@ -591,7 +591,7 @@
"ls" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lt" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/cleanable/dirt,/obj/machinery/camera{c_tag = "Bar"; dir = 8; network = list("MO19")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lu" = (/obj/machinery/door_control{id = "awaykitchen"; name = "Kitchen Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"lv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"lv" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lw" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lx" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ly" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/storage/box/mousetraps,/obj/item/clothing/under/waiter,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -602,9 +602,9 @@
"lD" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lE" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "neutral"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lF" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "burst_r"; tag = "icon-burst_r (WEST)"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"lG" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"lH" = (/obj/structure/table,/obj/item/storage/fancy/cigarettes/dromedaryco,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"lI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"lG" = (/obj/effect/landmark/damageturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"lH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"lI" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "purplecorner"; tag = "icon-purplecorner (NORTH)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lK" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"lL" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -629,7 +629,7 @@
"me" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 30},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mf" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mg" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "burst_l"; tag = "icon-burst_l (WEST)"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"mh" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"mh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mi" = (/turf/simulated/floor/plasteel/airless{icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mj" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mk" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/cleanable/dirt,/obj/structure/window/basic{dir = 1},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -647,7 +647,7 @@
"mw" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mx" = (/obj/structure/grille,/obj/structure/sign/vacuum{desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = 0},/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"my" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"mz" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"mz" = (/obj/effect/decal/cleanable/generic,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mA" = (/obj/structure/table/wood,/obj/machinery/door_control{id = "awaydorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mB" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mC" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -666,7 +666,7 @@
"mP" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mQ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mR" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"mS" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"mS" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mT" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mU" = (/obj/machinery/door/airlock{id_tag = "awaydorm2"; name = "Dorm 2"},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mV" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -674,7 +674,7 @@
"mX" = (/obj/structure/chair,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mY" = (/turf/simulated/shuttle/wall{icon_state = "swall2"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"mZ" = (/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"na" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"na" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nb" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nc" = (/obj/structure/bed,/obj/item/bedsheet,/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nd" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -691,10 +691,11 @@
"no" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"np" = (/obj/structure/sign/vacuum{desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nq" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"nr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nr" = (/obj/structure/chair{dir = 8},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ns" = (/obj/structure/table,/obj/item/toy/cards/deck,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nt" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nu" = (/obj/structure/grille/broken,/obj/item/stack/rods,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nv" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nw" = (/turf/simulated/floor/plating/airless/asteroid,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel/airless{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ny" = (/obj/machinery/light/small{dir = 1},/obj/structure/window/reinforced{dir = 4; layer = 2.9},/obj/structure/table,/obj/structure/bedsheetbin,/obj/item/clothing/accessory/black,/obj/item/clothing/under/lawyer/black,/turf/simulated/floor/plasteel/airless{icon_state = "barber"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -704,10 +705,12 @@
"nC" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nD" = (/obj/item/stack/rods,/obj/item/shard{icon_state = "small"},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"nE" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/turf/simulated/floor/plasteel/airless{icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"nG" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nG" = (/obj/structure/table,/obj/item/storage/fancy/cigarettes/dromedaryco,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nI" = (/obj/structure/bed,/obj/item/bedsheet,/obj/machinery/door_control{id = "awaydorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/effect/decal/remains/human{desc = "They look like human remains. The skeleton is laid out on its side and there seems to have been no sign of struggle."; layer = 4.1},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nJ" = (/obj/structure/dresser,/obj/item/paper{info = "Bugs break out. I run to here and lock door. I hear door next to me break open and screams. All nice people here dead now. I no want to be eaten, and bottle always said to be coward way out, but person who say that is stupid. Mira, there is no escape for me, tell Alexis and Elena that father will never come home, and that I love you all."; name = "Note"},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"nK" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nK" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nL" = (/obj/structure/sign/vacuum{desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = -32},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nM" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -720,6 +723,7 @@
"nU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nV" = (/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nW" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"nX" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/noticeboard{dir = 8; pixel_x = 32; pixel_y = 0},/obj/item/paper{info = "
Welcome to Moon Outpost 19! Property of Nanotrasen Inc.
Staff Roster:
- Dr. Gerald Rosswell: Research Director & Acting Captain
- Dr. Sakuma Sano: Xenobiologist
- Dr. Mark Douglas: Xenobiologist
- Kenneth Cunningham: Security Officer
- Ivan Volodin: Engineer
- Mathias Kuester: Bartender
- Sven Edling: Chef
- Steve: Assistant
Please enjoy your stay, and report any abnormalities to an officer."; name = "Welcome Notice"},/obj/machinery/camera{c_tag = "Arrivals South"; dir = 8; network = list("MO19")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nY" = (/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nZ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oa" = (/turf/simulated/floor/plating/airless,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
@@ -736,49 +740,44 @@
"ol" = (/turf/simulated/mineral,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"om" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
"on" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0})
-"oo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"oo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"op" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Diner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"or" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"os" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ot" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/reagent_containers/glass/rag{pixel_y = 5},/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "awaykitchen"; name = "Serving Hatch"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ou" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"ov" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"ow" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"ov" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"ow" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ox" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oz" = (/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oA" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "271"},/obj/item/clothing/under/suit_jacket/navy,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oB" = (/obj/structure/table,/obj/item/multitool,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"oC" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"oC" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oD" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oE" = (/obj/machinery/door/airlock{name = "Kitchen Cold Room"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"oF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"oF" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Kitchen"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"oI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+"oI" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 6; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oJ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oK" = (/obj/structure/closet/secure_closet{icon_broken = "fridgebroken"; icon_closed = "fridge"; icon_locked = "fridge1"; icon_off = "fridgeoff"; icon_opened = "fridgeopen"; icon_state = "fridge"; locked = 0; name = "meat fridge"; req_access_txt = "271"},/obj/item/reagent_containers/food/snacks/meat/monkey,/obj/item/reagent_containers/food/snacks/meat/monkey,/obj/item/reagent_containers/food/snacks/meat/monkey,/obj/item/reagent_containers/food/snacks/meat/monkey,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oL" = (/obj/structure/closet/secure_closet{icon_state = "secure"; locked = 0; name = "kitchen Cabinet"; req_access_txt = "271"},/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/sugar,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oM" = (/obj/structure/closet/secure_closet{icon_broken = "fridgebroken"; icon_closed = "fridge"; icon_locked = "fridge1"; icon_off = "fridgeoff"; icon_opened = "fridgeopen"; icon_state = "fridge"; locked = 0; name = "refrigerator"; req_access_txt = "271"},/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/milk,/obj/item/storage/fancy/egg_box,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"oN" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oO" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/obj/machinery/meter,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oQ" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"oS" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/noticeboard{dir = 8; pixel_x = 32; pixel_y = 0},/obj/item/paper{info = "Welcome to Moon Outpost 19! Property of Nanotrasen Inc.
Staff Roster:
- Dr. Gerald Rosswell: Research Director & Acting Captain
- Dr. Sakuma Sano: Xenobiologist
- Dr. Mark Douglas: Xenobiologist
- Kenneth Cunningham: Security Officer
- Ivan Volodin: Engineer
- Mathias Kuester: Bartender
- Sven Edling: Chef
- Steve: Assistant
Please enjoy your stay, and report any abnormalities to an officer."; name = "Welcome Notice"},/obj/machinery/camera{c_tag = "Arrivals South"; dir = 8; network = list("MO19")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oT" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oU" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 9; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"oV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oW" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oX" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oY" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"oZ" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "271"},/obj/item/clothing/under/assistantformal,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"pa" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"pb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Dormitories"; dir = 4; network = list("MO19")},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"pd" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"pe" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "271"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
-"pf" = (/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 6; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"pg" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "271"},/obj/item/clothing/under/suit_jacket/burgundy,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
(1,1,1) = {"
@@ -800,20 +799,20 @@ aaaaaaaaaaaaaaafafagaoaCalahaoaqafahaoaqacafacafadacabadaqaoacababadacaDajadabab
aaaaaaaaaaaaaaacaeakahalaqaoahaoaoaqahaoahafamahaqacadacahafadababafaIaKaJafacadacafacafafaqaLaqahafabababababababababababababababasaMaOaNaQaPasababababababababababababababaRababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaadagahakaoaSaqamaoahahaoamaqadamaoaqahafafaoacadafafacahaiaoahaoaoamaoahaqaoahaoamanadababababababababababaTaTaTaTabasaUaWaVaYaXasabababababababababababababaZaZababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaacafakbaaqatbbaqaqahaqahaqaoafacadahahaoaqahaoahaLaoaqaqahanafacafadacafacafakahahalacababababababababababaTbcbdaTaTasbeaUbfbhbgasababababababababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabadahaqaCbibkbjakaCaqaqahacafabacafaoamaoaqafadafahaqamaealafblblblblblbladacaqaeafafababababababababaTaTaTbnbmbpboasbqbsbrbubtasababababababababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabadahaqaCbibkbjakaCaqaqahacafabacafaoamaoaqafadafahaqamaealafblblblblblbladacaqaeafafababababababababaTaTaTbnbmbpboasbqbrbsbtbuasababababababababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabadafagahbbaqakaoaeaoaoafadabababafafaoahaqacblacacafaealafacblblblblblblacafaoafadabababababababababaTbwbvbxbxbzbyasbAbCbBbEbDasababababababababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababadafadacafacafadafacafabababadacahaqaoafafblblbladacafadblblblblblblblafahaoacababababababababababaTbFaTbHbGbJbIasbKbLbBbNbMasasasasasasasababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababacaqaqahacadblblblblblblblblblblblblblblblafaqadafababababababababababaTaTaTaTbObPaTasasasbQasasasbRbTbSbVbUasababababababababaZaZaZaZaZababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababafahaoafadblblblblblblblblblblblblblblblbladbWafabababababababababababaTbYbXcabZcbbPcdcccfcechcgascickcjcmclasababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababacaqahacblblblblblblblblblblblblblblblbladafahacabababababababababababaTbYcncpcocrcqcsbZbZctcvcucxcwczcycBcAasababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababafaoaqafblblblblblblbladacafadacacblblafacaoaqafabababababababababababaTcCcDcEbZcGcFcIcHcKcJcHcLascMcOcNcOcPasababababaZababaZaZababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababadahaoacadacafafadacafafahaqaoahafadafacahaqafacabababababababababababaTbYcncRcQcSaTaTaTcTaTcUaTasasasasasasasababababaZababaZaZababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababacahamaqafaqahaoahaqafahaoacafahamaoaqahaoacadababababababababababababaTbYcncWcQcVcXaTcZdaaTdcdbaTababababababababababaZabaZaZabababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababacafaqaoahaqaoahddaoahaqafafadacafacafacadafabababababababababababababaTdedfebbZcGdgaTdhdiaTdkdjaTababababababababababaZaZaZababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababacafadahaqaoahafafadaqaoacacababababababababababababababababababababababaTdmdldnbZcVcYaTdqdraTdtdsaTababababababababababaZaZabababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababacaqaqahacadblblblblblblblblblblblblblblblafaqadafababababababababababaTaTaTaTbObPaTasasasbQasasasbRbTbSbUbVasababababababababaZaZaZaZaZababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababafahaoafadblblblblblblblblblblblblblblblbladbWafabababababababababababaTbYbXbZcacbbPcdcccecfchcgascickcjclcmasababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababacaqahacblblblblblblblblblblblblblblblbladafahacabababababababababababaTbYcncpcocrcqcscacactcvcucxcwczcycBcAasababababababababaZababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababafaoaqafblblblblblblbladacafadacacblblafacaoaqafabababababababababababaTcCcDcEcacGcFcIcHcKcJcHcLascMcNcOcNcPasababababaZababaZaZababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababadahaoacadacafafadacafafahaqaoahafadafacahaqafacabababababababababababaTbYcncQcRcSaTaTaTcTaTcUaTasasasasasasasababababaZababaZaZababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababacahamaqafaqahaoahaqafahaoacafahamaoaqahaoacadababababababababababababaTbYcncWcRcVcXaTcZdaaTdcdbaTababababababababababaZabaZaZabababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababacafaqaoahaqaoahddaoahaqafafadacafacafacadafabababababababababababababaTdedfdgcacGdlaTdhdiaTdkdjaTababababababababababaZaZaZababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababacafadahaqaoahafafadaqaoacacababababababababababababababababababababababaTdmdndxcacVcYaTdqdraTdtdsaTababababababababababaZaZabababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababadacahahaoacafacadabafahaoafadababababababababababababababababababababababgzaTaTaTduaTaTaTaTaTaTaTaTaTabababababababababaZaZababababababababaZaZdvabababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababacaqaoafadadababababadafahahafacabababababababababababababababababababababababaTdxdwdyaTababababababababababababababaZaZaZaZabababaZaZaZaZaZaZaZaZdzababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababadafafaiacacabababababababacaqaoahafabababababababdAdAdAabababababababababababababaTdCdodDaTabababababababababababababaZaZababaZaZdEdEaZaZaZaZaZdEaZdGdFaZabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababacaqaoafadadababababadafahahafacabababababababababababababababababababababababaTdydwdCaTababababababababababababababaZaZaZaZabababaZaZaZaZaZaZaZaZdzababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababadafafaiacacabababababababacaqaoahafabababababababdAdAdAabababababababababababababaTdDdoebaTabababababababababababababaZaZababaZaZdEdEaZaZaZaZaZdEaZdGdFaZabababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababacacajaoahafababababababababafadaqamadababdAdAdAdAdAdAdAdAdAababababababababababababaTaTdHaTaTdAabababababababababababaZaZababababababababababaZaZaZaZaZdIdJabababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababafadaeaqahagadabababababababababafadadafdAdAdAdAdAdAdAdAdVdVdAabababababababababababdAdAdLdKdAdAdAdAdAdAabababababababaZaZababababababababababababdMaZaZaZaZababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababacdNdOamaqacacabababababababdAdAdQdPdPdRdAdAdRdRdVdVdVdVdVdVdAdAabababababababababdAdAdAaZaZaZdAdAdAdAdAdAdAdAdAabaZaZaZababababababababababababababaZaZaZaZababababababababababaaaaaaaaaaaaaa
@@ -835,36 +834,36 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab
aaaaaaaaaaaaaaababababababababababababababababababababababababababeTeTeUeUeUeTeUeTeTeTeUeVeVeWeXeaeaeadZeaeJeNeOePezeqeFeHeQeqeQeReSeCeaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababeTeYdpeZfcfbeTfefgdBfsfrftfdfueafhfvfjfifkflfmfnfoeEeneSeFeqeEfpenfqeaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababeTfxfyfrfNfaeUfOeVeVfPeVeVfwfRfQfzfzfAfAfBfCfDfEfFfGfHfIfJfKeEeDeRfLecabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababeUfSfYfVgafZgigheVfTgjfUfXfWgogngygygBgAgDgCgIgbgcgdgegfeFeFeFggeDeIeaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababeTgagLfVffgPeUfOeVgkeuglgUgmhfeagqgpgsgreKgtflgugvgwgxeDeEeqeqeqeSfpeaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababeUfSfYfVgafZgigheVfTgjfUfXfWgogngygygBgbgpgCgIgqgcgdgegfeFeFeFggeDeIeaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababeTgagLfVffgPeUfOeVgkeuglgUgmhfeagrgsgugAeKgtflgDgvgwgxeDeEeqeqeqeSfpeaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababeUhgfMhhhnhmeUfOfPgEgGgFgHgmhqdZhrflflgJeJgKflgMgOeAgNeCeDeneReneCeEeaabababababdAabababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababeUeUeTeTeTeUeTgQfPhvgSgRfXgThEdZdZgVgZgWeKgXgYhaheeahbeFeqhchdeqeqeqeaababdAdAdAdAdAdAdAababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababeThHfrfrhLfrhMeVhihkhjfXgTifhXeaeadZeaeaeadZdZeaeaeaeaeaeceaeaeaeaeaabdAdAaZaZaZaZaZdAdAdAababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababeUfOeVeVeVeVfPeVfXfXfXfXgTifiqfXiGhoeLhpdZdAdAdAdAdAdAdAdAababababababdAaZaZaZaZaZaZaZaZdAababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababeThleVjrhshtjthxjAjAjAjAgCjPjJhAhyflhzhBeadAaZaZaZaZaZaZdAdAabababababdAdAaZaZaZaZaZaZaZdAdAdAababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababeTeUeTfafPhChChCjXjYgTgTgThFfljZhwkaflflflhIeadAaZaZaZaZaZaZaZhJhJhKhJhJhJhJhJhJaZaZaZaZaZaZaZaZdAdAabababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababeUhukbfOfPhChDhNkfhxhxhxhxeJhOkghOeJflflhGhPeadAaZaZaZaZaZaZaZhJhQhShRhThJhVhUhJhJaZaZaZhWaZaZaZaZdAabababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababeUfeiLhMeVhChYhZiaibicieideaeakieadZigiiihijdZdAaZaZaZaZaZaZdAhKhKhJikilhJinimiohKisisishKdAdAdAdAdAabababdAdAdAdAdAabababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababeUfOeVfPeVhCkjirhDhCipiuitdZivifiweadZdZeaeaeaaZaZaZaZhWaZaZdAhKixiyimimiziAimiBhKiDiCiEhKhKhKhJhJhKhJhKdAdAaZaZaZdAdAababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababeTkkeViHiFhDhCiIiJiKkliNiMdZiOifiPeadAdAaZaZaZaZohaZhKhKisishKhKhKhKiAimhKiQiQhJhKiSiRiTiUhKiViXiWiYiZhKdAaZaZaZaZaZdAababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababeTfOfPjadZeadZeaeaeadZeaeaeaeJkieJeadAaZaZaZhWaZjbaZhJjdjcjijejgjhhJjfhKhJhJhJhJjjjkjkjljmjqiYjoiYiYjphJaZaZaZaZaZaZdAdAabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababdAdAdAdAdAeTknfPfPeajsjnjvkujwjnjxjuhKjykCjzhJhKkdkdkdhJkdkekdhJjGjFjEjHjEjEkDjEjLjIjMjKjOjljljljNjmjTiYjQjRjojSisaZaZaZaZaZaZaZdAdAababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababdAdAdAdAdAdAdAeUkcfrgijUjWjWjVkUlikWlIlvlRlJmomnlJmpmykhnamzkFkHkhnrnAlIlililinKnUnNnNokoooooqopopopoporotoskqkrkskthKaZaZaZaZaZaZaZaZdAababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAdAdAdAaZaZaZeTeTeUeUkmkwkvkwkxkwkvkvkwkzkyoujEkAkBkQkEkTovkGkQkRkJowjHhJhKhJhJkIkKjEoxjEjHkojljlkLkMjmjTiYiYkpiYkNhKaZaZaZaZaZdAdAdAdAababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAdAaZaZaZaZaZaZaZaZhJhJisisishJisisishJhJkOoykPhKhJkdlllmhJhJhJhJhKozkShJkVoAhKkXhKkYoBlakZjOlbjNjljljmjTiYiYiYlchKhKhJhJhKaZdAdAabababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZldlelfaZaZhJlgoClhhKdAaZaZlkljhKnbnbhKoDlElplolqhKlnhKhKhJhKhKhKlrlsjllthKhKluiYiYiYoElxlwlyhKdAdAababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZldlelelzlelAlBlClAlBlDlKlFaZaZislGoFlHhKdAaZaZaZaZhJlOlOhKoGmihKlMlNhJlPlOlQlPlnlOkXjljkjljloHlSlSlTlSlUhKlxlxlVhKababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZldlWlXlYlZmambmcmdmemdmflKmgaZaZislGoIisisaZaZaZaZaZhJnBlOoJoGmihJhKhKhJlOmkhJhJhJhKhKmjmjjkmlhKlSlTlSlSmmhKoLoKoMhJababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmqmcmrlDmsmdmtmumtmdmcmvlDismxislGoNisaZaZaZaZaZaZhKoOoQoPoRmQhJmAmBhKlOmMhKabababhKmCmCmDhJhKhKmEmFmGhJhJhKhKhJhJababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmHmdmsmImsmsmJmKmJmsmsmsmLmNlPmOjHoShJmPaZaZaZaZaZhKoTlOhJoUmRmUmTmVhKlOnbhJabababhKhKhJhJhKdAhKisisishJaZaZaZaZdAababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmWmcmXmYmsmdmtmumtmdmcmZmYisisislGoVisaZaZaZaZaZaZhJoWoXhJoYlLhKncoZhKlQnlhJhJhJdKaZaZdAdAdAdAaZaZaZaZljaZaZaZdAdAababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZnenfnglYlZmanhmcmdnimdmflKlFaZaZislGmhisaZaZaZaZaZaZhJpaoXhKpbmwhKhKhKhJnnnmmOnpmOdKaZaZdAdAaZaZaZaZaZaZaZaZaZaZdAabababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZnelelenolelAlBlClAlBmYlKmgaZaZismSmhisaZaZaZaZdAdAhJhJhJhKndmikXlPlnlnnunthJlnhJnxaZdAdAdAaZaZaZaZaZaZaZaZaZdAdAabababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZnelenwaZaZhJmOmOhJhJdAdAdAdAdAaZkdnznypdnEhJhKhJhJhKpehJhJhJaZdAdAabdAdAdAaZaZaZaZaZdAdAdAababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababdAdAdAdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZhJnBlPnChJdAdAaZaZaZnDnjnknGpfmQhKnInJhKlPlOnqhKaZaZdAdAabababdAdAaZaZaZdAdAababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababdAdAdAdAdAdAdAdAdAdAdAdAaZdAdAdAdAdAdAdAhJnLlOnMhJomaZaZaZaZjbkdnOkGovnTnQnPlohKlOnRnShKaZaZdAdAababababdAdAdAdAdAabababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAhJmOmOhJhJaZaZaZaZaZaZkdnskQkGnYhKpgnVhKhJnWhKhKaZaZdAdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababdAdAdAdAdAabdAdAdAaZnZdKdKnZaZaZaZaZaZaZaZkdoboakGochJhJhKhKdKoddKonaZaZdAdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababeUhukbfOfPhChDhNkfhxhxhxhxeJhOicideJflflhGhPeadAaZaZaZaZaZaZaZhJhQhShRhThJhVhUhJhJaZaZaZhWaZaZaZaZdAabababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababeUfeiLhMeVhChYhZiaibieipiteaeakieadZigiiihijdZdAaZaZaZaZaZaZdAhKhKhJikilhJinimiohKisisishKdAdAdAdAdAabababdAdAdAdAdAabababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababeUfOeVfPeVhCkjirhDhCiviuiwdZiMifiNeadZdZeaeaeaaZaZaZaZhWaZaZdAhKixiyimimiziAimiBhKiDiCiEhKhKhKhJhJhKhJhKdAdAaZaZaZdAdAababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababeTkkeViHiFhDhCiIiJiKiOiPjcdZjdifjneadAdAaZaZaZaZohaZhKhKisishKhKhKhKiAimhKiQiQhJhKiSiRiTiUhKiViXiWiYiZhKdAaZaZaZaZaZdAababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababeTfOfPjadZeadZeaeaeadZeaeaeaeJkieJeadAaZaZaZhWaZjbaZhJjsjxjijejgjhhJjfhKhJhJhJhJjjjkjkjljmjqiYjoiYiYjphJaZaZaZaZaZaZdAdAabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababdAdAdAdAdAeTknfPfPeajEjIjvjMjwjIjUjuhKjykCjzhJhKkdkdkdhJkdkekdhJjGjFjFjHjFjFkDjFjLjVkgjKjOjljljljNjmjTiYjQjRjojSisaZaZaZaZaZaZaZdAdAababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababdAdAdAdAdAdAdAeUkcfrgikhjWjWklkulikWkAkFlRlJmomnlJmpmykGkIkPkQkHkGkRnAkAlililikUnUnNnNoklhlhoqopopopoporotoskqkrkskthKaZaZaZaZaZaZaZaZdAababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAdAdAdAaZaZaZeTeTeUeUkmkwkvkwkxkwkvkvkwkzkyoujFlvkBlGkEkTlHjFlGlIkJmhjHhJhKhJhJmzkKjFoxjFjHkojljlkLkMjmjTiYiYkpiYkNhKaZaZaZaZaZdAdAdAdAababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAdAaZaZaZaZaZaZaZaZhJhJisisishJisisishJhJkOoymShKhJkdlllmhJhJhJhJhKozkShJkVoAhKkXhKkYoBlakZjOlbjNjljljmjTiYiYiYlchKhKhJhJhKaZdAdAabababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZldlelfaZaZhJlgnanrhKdAaZaZlkljhKnbnbhKoDlElplolqhKlnhKhKhJhKhKhKlrlsjllthKhKluiYiYiYoElxlwlyhKdAdAababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZldlelelzlelAlBlClAlBlDlKlFaZaZisnvnFnGhKdAaZaZaZaZhJlOlOhKoGmihKlMlNhJlPlOlQlPlnlOkXjljkjljloHlSlSlTlSlUhKlxlxlVhKababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZldlWlXlYlZmambmcmdmemdmflKmgaZaZisnvnHisisaZaZaZaZaZhJnBlOoJoGmihJhKhKhJlOmkhJhJhJhKhKmjmjjkmlhKlSlTlSlSmmhKoLoKoMhJababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmqmcmrlDmsmdmtmumtmdmcmvlDismxisnvnKisaZaZaZaZaZaZhKoOoQoPoRmQhJmAmBhKlOmMhKabababhKmCmCmDhJhKhKmEmFmGhJhJhKhKhJhJababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmHmdmsmImsmsmJmKmJmsmsmsmLmNlPmOjHnXhJmPaZaZaZaZaZhKoTlOhJoUmRmUmTmVhKlOnbhJabababhKhKhJhJhKdAhKisisishJaZaZaZaZdAababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmWmcmXmYmsmdmtmumtmdmcmZmYisisisnvooisaZaZaZaZaZaZhJoWoXhJoYlLhKncoZhKlQnlhJhJhJdKaZaZdAdAdAdAaZaZaZaZljaZaZaZdAdAababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZnenfnglYlZmanhmcmdnimdmflKlFaZaZisnvovisaZaZaZaZaZaZhJpaoXhKpbmwhKhKhKhJnnnmmOnpmOdKaZaZdAdAaZaZaZaZaZaZaZaZaZaZdAabababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZnelelenolelAlBlClAlBmYlKmgaZaZisowovisaZaZaZaZdAdAhJhJhJhKndmikXlPlnlnnunthJlnhJnxaZdAdAdAaZaZaZaZaZaZaZaZaZdAdAabababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZnelenwaZaZhJmOmOhJhJdAdAdAdAdAaZkdnznyoCnEhJhKhJhJhKpehJhJhJaZdAdAabdAdAdAaZaZaZaZaZdAdAdAababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababdAdAdAdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZhJnBlPnChJdAdAaZaZaZnDnjnkoFoImQhKnInJhKlPlOnqhKaZaZdAdAabababdAdAaZaZaZdAdAababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababdAdAdAdAdAdAdAdAdAdAdAdAaZdAdAdAdAdAdAdAhJnLlOnMhJomaZaZaZaZjbkdnOjFlHnTnQnPlohKlOnRnShKaZaZdAdAababababdAdAdAdAdAabababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAdAhJmOmOhJhJaZaZaZaZaZaZkdnslGjFnYhKpgnVhKhJnWhKhKaZaZdAdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababdAdAdAdAdAabdAdAdAaZnZdKdKnZaZaZaZaZaZaZaZkdoboajFochJhJhKhKdKoddKonaZaZdAdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZkdkdkdoioghJabababdAodaZaZaZaZdAdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZkdkdkdhKababdAdAodaZaZaZaZaZdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZonoldAdAdAaZodaZaZaZaZdAdAababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
@@ -894,4 +893,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-"}
\ No newline at end of file
+"}
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 772d3a2fd53..77877d4486f 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -99,29 +99,29 @@
"bU" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser)
"bV" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-engine"; icon_state = "engine"},/area/awaymission/spacebattle/cruiser)
"bW" = (/obj/machinery/computer/telecomms/monitor,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"bX" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/awaymission/spacebattle/cruiser)
+"bX" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"bY" = (/obj/machinery/computer/pod{id_tags = list("spacebattlepod"); name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser)
"bZ" = (/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"ca" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cb" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/spacebattle/cruiser)
"cc" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser)
"cd" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"ce" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
+"ce" = (/turf/simulated/floor/plasteel,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
"cf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "spacebattlepod"; name = "Front Hull Door"; opacity = 1; tag = "icon-pdoor0"},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser)
-"cg" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
+"cg" = (/turf/simulated/floor/plasteel,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
"ch" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"ci" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
-"cj" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/awaymission/spacebattle/cruiser)
-"ck" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/area/awaymission/spacebattle/cruiser)
-"cl" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
-"cm" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/area/awaymission/spacebattle/cruiser)
-"cn" = (/obj/effect/landmark/corpse/engineer{mobname = "Rosen Miller"; name = "Rosen Miller"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"ci" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"cj" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"ck" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"cl" = (/obj/effect/mob_spawn/human/engineer{name = "Clay Dawson"},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"cm" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"cn" = (/obj/effect/mob_spawn/human/engineer{name = "Rosen Miller"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"co" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cp" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/spacebattle/cruiser)
"cq" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"},/area/awaymission/spacebattle/cruiser)
"cr" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/spacebattle/cruiser)
"cs" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"ct" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser)
+"ct" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cu" = (/obj/item/stack/sheet/metal,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cv" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cw" = (/obj/structure/closet/cabinet,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
@@ -138,12 +138,12 @@
"cH" = (/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"cI" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cJ" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"cK" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser)
+"cK" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cL" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cM" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser)
"cN" = (/obj/item/stack/sheet/metal,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cO" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"},/area/awaymission/spacebattle/cruiser)
-"cP" = (/obj/effect/landmark/corpse/engineer{mobname = "Bill Sanchez"; name = "Bill Sanchez"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"cP" = (/obj/effect/mob_spawn/human/engineer{name = "Bill Sanchez"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"cQ" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser)
"cR" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/snacks/fries,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser)
"cS" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/snacks/stew,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser)
@@ -157,36 +157,33 @@
"da" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"db" = (/obj/machinery/shieldgen{anchored = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"dc" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (EAST)"; icon_state = "propulsion_r"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser)
-"dd" = (/obj/effect/landmark/corpse/engineer{mobname = "John Locke"; name = "John Locke"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"dd" = (/obj/effect/mob_spawn/human/engineer{name = "John Locke"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"de" = (/obj/structure/rack,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"df" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"dg" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"dh" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"di" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"dj" = (/obj/effect/landmark/corpse/doctor{mobname = "Daniel Kalla"; name = "Daniel Kalla"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"dj" = (/obj/effect/mob_spawn/human/doctor{name = "Daniel Kalla"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"dk" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"dl" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/awaymission/spacebattle/cruiser)
"dm" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/awaymission/spacebattle/cruiser)
-"dn" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
+"dn" = (/obj/effect/mob_spawn/human/corpse/syndicatesoldier,/obj/item/gun/projectile/automatic/c20r,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"do" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "spacebattlepod2"; name = "Front Hull Door"; opacity = 1; tag = "icon-pdoor0"},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser)
-"dp" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
"dq" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/spacebattle/cruiser)
"dr" = (/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/spacebattle/cruiser)
"ds" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/spacebattle/cruiser)
"dt" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/spacebattle/cruiser)
-"du" = (/obj/effect/landmark/corpse/chef{mobname = "Nathaniel Waters"; name = "Nathaniel Waters"},/obj/item/kitchen/knife/butcher,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
+"du" = (/obj/effect/mob_spawn/human/cook{name = "Nathaniel Waters"},/obj/item/kitchen/knife/butcher,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"dv" = (/obj/structure/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"dw" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/awaymission/spacebattle/cruiser)
"dx" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/spacebattle/cruiser)
"dy" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/spacebattle/cruiser)
"dz" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/awaymission/spacebattle/cruiser)
-"dA" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/spacebattle/cruiser)
"dB" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"dC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"dD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"dE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"dF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
-"dG" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser)
"dH" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"dI" = (/obj/mecha/medical/odysseus,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"dJ" = (/obj/mecha/working/ripley/firefighter,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
@@ -200,11 +197,9 @@
"dR" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"dS" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/spacebattle/cruiser)
"dT" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser)
-"dU" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/spacebattle/cruiser)
-"dV" = (/obj/effect/landmark/corpse/engineer/hardsuit{corpseidjob = "Gunner"; mobname = "Andrew Thorn"; name = "Andrew Thorn"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
+"dV" = (/obj/effect/mob_spawn/human/engineer/hardsuit{name = "Andrew Thorn"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"dW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"dX" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/gun/energy/lasercannon},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
-"dY" = (/obj/effect/landmark/corpse/engineer{mobname = "Clay Dawson"; name = "Clay Dawson"},/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/awaymission/spacebattle/cruiser)
"dZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"ea" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"eb" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
@@ -213,7 +208,6 @@
"ee" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"ef" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"eg" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser)
-"eh" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/spacebattle/cruiser)
"ei" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"ej" = (/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"ek" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
@@ -228,7 +222,7 @@
"et" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"eu" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"ev" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/spacebattle/cruiser)
-"ew" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Davis Hume"; name = "Davis Hume"},/obj/item/gun/projectile/shotgun/automatic/combat,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"ew" = (/obj/effect/mob_spawn/human/bridgeofficer{name = "Davis Hume"},/obj/item/gun/projectile/shotgun/automatic/combat,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"ex" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"ey" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser)
"ez" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/spacebattle/cruiser)
@@ -237,7 +231,7 @@
"eC" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser)
"eD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"eE" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
-"eF" = (/obj/effect/landmark/corpse/engineer/hardsuit{corpseidjob = "Gunner"; mobname = "Peter West"; name = "Peter West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
+"eF" = (/obj/effect/mob_spawn/human/engineer/hardsuit{name = "Peter West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"eG" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/awaymission/spacebattle/cruiser)
"eH" = (/turf/simulated/shuttle/wall{tag = "icon-swallc4"; icon_state = "swallc4"},/area/awaymission/spacebattle/cruiser)
"eI" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4)
@@ -252,11 +246,11 @@
"eR" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"eS" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
"eT" = (/obj/structure/table/reinforced,/obj/item/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser)
-"eU" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"eV" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Kurt Kliest"; name = "Kurt Kliest"},/obj/item/gun/projectile/shotgun/automatic/combat,/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"eU" = (/obj/effect/mob_spawn/human/corpse/syndicatesoldier,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"eV" = (/obj/effect/mob_spawn/human/bridgeofficer{name = "Kurt Kliest"},/obj/item/gun/projectile/shotgun/automatic/combat,/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"eW" = (/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"eX" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser)
-"eY" = (/obj/effect/landmark/corpse/engineer/hardsuit{corpseidjob = "Gunner"; mobname = "Eric Abnett"; name = "Eric Abnett"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
+"eY" = (/obj/effect/mob_spawn/human/engineer/hardsuit{name = "Eric Abnett"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"eZ" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"fa" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/spacebattle/cruiser)
"fb" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/spacebattle/cruiser)
@@ -271,11 +265,11 @@
"fk" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/material,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"fl" = (/obj/structure/closet/crate,/obj/item/light/tube,/obj/item/light/tube,/obj/item/light/tube,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"fm" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
-"fn" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
+"fn" = (/obj/effect/mob_spawn/human/corpse/syndicatesoldier,/obj/item/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
"fo" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
-"fp" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Walter Strider"; name = "Walter Strider"},/obj/item/gun/projectile/shotgun/automatic/combat,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
+"fp" = (/obj/effect/mob_spawn/human/bridgeofficer{name = "Walter Strider"},/obj/item/gun/projectile/shotgun/automatic/combat,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
"fq" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/awaymission/spacebattle/cruiser)
-"fr" = (/obj/item/ammo_casing/a357,/obj/item/ammo_casing/a357,/obj/item/gun/projectile/revolver/mateba,/obj/effect/landmark/corpse/commander{mobname = "Aaron Bowden"; name = "Aaron Bowden"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"fr" = (/obj/item/ammo_casing/a357,/obj/item/ammo_casing/a357,/obj/item/gun/projectile/revolver/mateba,/obj/effect/mob_spawn/human/corpse/syndicatecommando{name = "Aaron Bowden"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"fs" = (/obj/structure/chair{dir = 4},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"ft" = (/obj/machinery/computer/shuttle,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser)
"fu" = (/obj/machinery/bsa/full/east,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
@@ -287,11 +281,11 @@
"fI" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
"fJ" = (/obj/item/ammo_casing/shotgun,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
"fK" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
-"fL" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
+"fL" = (/obj/effect/mob_spawn/human/corpse/syndicatesoldier,/obj/item/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser)
"fM" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/awaymission/spacebattle/cruiser)
"fN" = (/obj/machinery/computer/communications,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser)
"ga" = (/obj/structure/closet/crate,/obj/item/poster/random_contraband,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
-"gb" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Robert Faver"; name = "Robert Faver"},/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"gb" = (/obj/effect/mob_spawn/human/bridgeofficer{name = "Robert Faver"},/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"gn" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_casing/a357,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"go" = (/obj/structure/closet/crate,/obj/item/lipstick/black,/obj/item/lipstick/jade,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"gp" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/color/rainbow,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
@@ -308,19 +302,19 @@
"gA" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4)
"gB" = (/obj/structure/closet/crate/secure/weapon,/obj/item/gun/energy/laser,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"gD" = (/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/spacebattle/cruiser)
-"gE" = (/obj/effect/landmark/corpse/doctor{mobname = "Adam Smith"; name = "Adam Smith"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"gE" = (/obj/effect/mob_spawn/human/doctor{name = "Adam Smith"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"gF" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"gG" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser)
"gH" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser)
"gI" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser)
"gJ" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser)
-"gK" = (/obj/effect/landmark/corpse/engineer/hardsuit{corpseidjob = "Gunner"; name = "Jeremy Tailor"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
+"gK" = (/obj/effect/mob_spawn/human/engineer/hardsuit{name = "Jeremy Tailor"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"gL" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/gun/energy/lasercannon},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7)
"gM" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7)
"gN" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate4)
"gO" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"gP" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
-"gQ" = (/obj/effect/landmark/corpse/doctor{mobname = "Allan Yoshimaru"; name = "Allan Yoshimaru"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
+"gQ" = (/obj/effect/mob_spawn/human/doctor{name = "Allan Yoshimaru"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"gR" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"gS" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser)
"gT" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/awaymission/spacebattle/cruiser)
@@ -332,7 +326,7 @@
"gZ" = (/obj/item/pickaxe,/obj/item/gun/energy/plasmacutter,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"ha" = (/obj/item/circular_saw,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"hb" = (/obj/item/paper_bin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser)
-"hc" = (/obj/effect/landmark/corpse/engineer/hardsuit{corpseidjob = "Gunner"; mobname = "Dan Hedricks"; name = "Dan Hedricks"},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
+"hc" = (/obj/effect/mob_spawn/human/engineer/hardsuit{name = "Dan Hedricks"},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser)
"hd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7)
"he" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7)
"hf" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7)
@@ -342,7 +336,6 @@
"hj" = (/obj/structure/closet/crate/secure/plasma,/obj/item/tank/plasma,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"hk" = (/obj/structure/closet/crate/medical,/obj/item/storage/firstaid/fire,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser)
"hl" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit,/obj/item/clothing/head/helmet/space/hardsuit,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"hm" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/spacebattle/cruiser)
"hn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"ho" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"hp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7)
@@ -359,13 +352,12 @@
"hB" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"hC" = (/obj/structure/bed,/obj/item/bedsheet/captain,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser)
"hD" = (/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser)
-"hE" = (/obj/effect/landmark/corpse/engineer{corpseidjob = "Gunner"; mobname = "William Gannon"; name = "William Gannon"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"hF" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/spacebattle/cruiser)
+"hE" = (/obj/effect/mob_spawn/human/engineer{name = "William Gannon"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"hG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"hH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"hI" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
"hJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser)
-"hK" = (/obj/effect/landmark/corpse/engineer{mobname = "Javier Wismer"; name = "Javier Wismer"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"hK" = (/obj/effect/mob_spawn/human/engineer{name = "Javier Wismer"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"hL" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7)
"hM" = (/obj/structure/chair{dir = 8},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7)
"hN" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7)
@@ -382,26 +374,25 @@
"hY" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"hZ" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/item/soap,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"ia" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
-"ib" = (/obj/effect/landmark/corpse/doctor{mobname = "Herbert West"; name = "Herbert West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
-"ic" = (/obj/effect/landmark/corpse/engineer{mobname = "Carth Robinson"; name = "Carth Robinson"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
+"ib" = (/obj/effect/mob_spawn/human/doctor{name = "Herbert West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
+"ic" = (/obj/effect/mob_spawn/human/engineer{name = "Carth Robinson"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"id" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"ie" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"ig" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7)
"ih" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"ii" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser)
"ik" = (/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser)
-"il" = (/obj/effect/landmark/corpse/engineer{mobname = "Cyrion"; name = "Cyrion"},/obj/item/flamethrower/full,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"il" = (/obj/effect/mob_spawn/human/engineer{name = "Cyrion"},/obj/item/flamethrower/full,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"im" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
-"in" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/gun/projectile/automatic/c20r,/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser)
"io" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (EAST)"; icon_state = "burst_r"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser)
-"ip" = (/obj/effect/landmark/corpse/engineer{mobname = "Mercutio"; name = "Mercutio"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
+"ip" = (/obj/effect/mob_spawn/human/engineer{name = "Mercutio"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"iq" = (/obj/structure/lattice,/turf/space,/area/space)
-"ir" = (/obj/effect/landmark/corpse/syndicatesoldier,/turf/space,/area/space)
+"ir" = (/obj/effect/mob_spawn/human/corpse/syndicatesoldier,/turf/space,/area/space)
"is" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/space)
"it" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/space)
"iu" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space)
"iv" = (/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space)
-"iw" = (/obj/effect/landmark/corpse/syndicatesoldier,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space)
+"iw" = (/obj/effect/mob_spawn/human/corpse/syndicatesoldier,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space)
"ix" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space)
"iy" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space)
"iz" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5)
@@ -550,16 +541,16 @@ abababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbPbQbQbQbJbLbLbLbLbJbQbQbQbQbQbQbQbQbQbRbQbQbQbQbQbQbQbQbQbQbQbQbQbSbQbQbSbSbSbSbSbSbSbSbSbSbSbSbTabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbEbFbGbGbHbIababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbUbVbWbXbJbYbLbLbLbJbZbZbZbZbZbZbZbZbZcabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbKbLbLbMbJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZcebJcfcfbJcgbZbZbZbZbZbZbZbZbZcabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZchbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZcicjckclcmbZbZbZbZbZbZbZcncocpbQbQbQbQbQbQbQbQbQbQbQbQbQcqbZbZcrbSbSbSbSbSbSbSbScqbZbZcpbQbQbQbQbQbQbTababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZcmbZctcjcubZbZbZcvbZbZbZcobZbZcbcwbZcxbZcxbZcxbZcxbZcxbZcycbbZbZcbczcAcBcCcDcEcFcFcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZcIcmcJcKcKbZcIcJbZbZbZbZbZbZcbcwbZbZbZbZbZcLbZbZbZbZbZbZcbbZbZcbcMcMcMcMcMcMcMcMcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZcebXbXcgbXbZbZbZbZbZbZbZcncocpbQbQbQbQbQbQbQbQbQbQbQbQbQcqbZbZcrbSbSbSbSbSbSbSbScqbZbZcpbQbQbQbQbQbQbTababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbXbZcibXcubZbZbZcvbZbZbZcobZbZcbcwbZcxbZcxbZcxbZcxbZcxbZcycbbZbZcbczcAcBcCcDcEcFcFcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZcIbXcJbXbXbZcIcJbZbZbZbZbZbZcbcwbZbZbZbZbZcLbZbZbZbZbZbZcbbZbZcbcMcMcMcMcMcMcMcMcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbNbLbLbObJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZcJbZbZcNbZbZbZcLcLbZbZcbcwbZcxbZcxbZcxbZcxbZcxbZbZcabZbZcbcMcMcMcMcMcMcMcMcbbZbZcObSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbTabababababababababababababababababababababababababababbPbSbSbSbJbNbLbLbObJbSbSbSbSbSbTababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZcNbZbZbZcPbZbZbZbZcLcLbZbZcbcwbZbZbZbZbZbZbZbZbZbZbZbZcabZbZcpbQcQbQcRcRcScTcTcbbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbZcjbJbLbLbLbLbJbZcmbZcVcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdcNbZcobZbZbZcobZbZbZbZbZcLcLbZbZcbcwbZcxbZcxbZcxbZcxbZcxbZbZcbbZbZcbcXcXcXcXcXcXcXcXcbbZcYbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZcjckbJcZbLbLbLbJcKbZbZdacWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdcbVcdbZddcodedededfdfdgdgdhdhdhdididicbcwbZbZbZbZbZbZbZbZbZcodjcocbbZbZcbcXcXdkdkcXcXcXcXcbbZbZcrbSbSbSbSbSbRbSbSbSbScabSbSbSbSbRbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbScqcacadlbTabababababababababababababababababababababababababbPdmbZbZcmdnbJdodobJdpbZbZbZcGcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdqbSbSbSdrbSbSbSbSbSbSbSbSbSbSbSbSbSbSdsbQbQbQbQbQbQbQbQbQbQbQbQbQdtbZbZcacXcXcXducXdvdvcXcbbZbZcbdwdxdxdydzcbdebZbZbZbZbZbZbZdAcbcWcWcWcWdBcWcWcWcWcWcWcWcWcWcWcWcbbZbZdldscqdCdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdFcrdsdmcNbZcmcjceckbXdGbZbZdHbZcVcWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbcHcHcHcHcHdIdJdKdLdMdMdNdNcbbZbZcacXcXcXcXdOdPdQdRcbbZbZcbdSbZbZbZdTcbdebZbZbZbZbZbZbZdUcacWcWcWcWdVcWcWcWcWcWcWcWcWcWcWcWcbbZbZdldsdmdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdldsdmbZbZckbZcmcmdYbZckbZbZbZdZcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbcHeaebeccHcHdJedeedMdMdNdNcbbZbZcbcXcXefcXdOdQdQdRcbbZbZcbdSbZbZbZegcbdebZbZbZbZbZbZbZehcbcWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcbbZbZdldsdmeiejeiejeiejeiejeiejeiejeiejeiejeiejeiejeiejeidldsdmbZbZbZbZbZckbZbXcmbZbZbZdZcWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZcNbZbZbZcPbZbZbZbZcLcLbZbZcbcwbZbZbZbZbZbZbZbZbZbZbZbZcabZbZcpbQcQbQcRcRcScTcTcbbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbZbXbJbLbLbLbLbJbZbXbZcVcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdcNbZcobZbZbZcobZbZbZbZbZcLcLbZbZcbcwbZcxbZcxbZcxbZcxbZcxbZbZcbbZbZcbcXcXcXcXcXcXcXcXcbbZcYbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbXbXbJcZbLbLbLbJbXbZbZdacWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdcbVcdbZddcodedededfdfdgdgdhdhdhdididicbcwbZbZbZbZbZbZbZbZbZcodjcocbbZbZcbcXcXdkdkcXcXcXcXcbbZbZcrbSbSbSbSbSbRbSbSbSbScabSbSbSbSbRbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbScqcacadlbTabababababababababababababababababababababababababbPdmbZbZbXcebJdodobJcgbZbZbZcGcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdqbSbSbSdrbSbSbSbSbSbSbSbSbSbSbSbSbSbSdsbQbQbQbQbQbQbQbQbQbQbQbQbQdtbZbZcacXcXcXducXdvdvcXcbbZbZcbdwdxdxdydzcbdebZbZbZbZbZbZbZcjcbcWcWcWcWdBcWcWcWcWcWcWcWcWcWcWcWcbbZbZdldscqdCdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdEdDdFcrdsdmcNbZbXbXcebXbXcgbZbZdHbZcVcWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbcHcHcHcHcHdIdJdKdLdMdMdNdNcbbZbZcacXcXcXcXdOdPdQdRcbbZbZcbdSbZbZbZdTcbdebZbZbZbZbZbZbZckcacWcWcWcWdVcWcWcWcWcWcWcWcWcWcWcWcbbZbZdldsdmdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdXdWdldsdmbZbZbXbZbXbXclbZbXbZbZbZdZcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbcHeaebeccHcHdJedeedMdMdNdNcbbZbZcbcXcXefcXdOdQdQdRcbbZbZcbdSbZbZbZegcbdebZbZbZbZbZbZbZcmcbcWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcbbZbZdldsdmeiejeiejeiejeiejeiejeiejeiejeiejeiejeiejeiejeidldsdmbZbZbZbZbZbXbZbXbXbZbZbZdZcWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbcHekelemcHcHcHcHcHcHcHcHcHcbbZbZcbcXcXcXcXcXenencXcbbZbZcbdSbZbZbZegdlbSbSbSbSbSbSbSbSbSdtcWcWcWcWcWcWcWcWcWcWcWdBcWcWcWcWcbbZbZdldsdmejejejejejejejejejejejejejejejejejejejejejejejdldsdmbZbZdHbZbZbZbZbZcNbZbZbZdZcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababeoepepepepepepeqababababababababababababababababababababababababababababababababcbcHeresetcHcHcHcHcHcHcHcHcHcbbZbZcbcXdvdveucXdvdvcXcbbZbZcbevewexbZeyezeAeBeBeBeBeBeBeBeCeDcWeEcWcWcWcWcWcWcWcWcWeFdBcWcWcWcbbZbZcOeGeGbSbSbSbSbSbSbSbSbSbSbScabSbSbSbSbSbSbSbSbSbSbSeGeGeHbZbZbZbZcNbZbZbZbZbZbZbZdacWdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababeoepeIeJeIeIeJeIepeqabababababababababababababababababababababababababababababababcbcHcHcHcHcHcHcHcHcHcHcHcHcHcbbZbZcbdOdQdQdRdOdPdQdRcbbZbZcbevbZbZbZeyezeKeLbZbZbZcobZeMeNeOcWcWcWcWcWcWcWeEcWcWcWdBdBcWcWcWcbbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcUbZbZbZbZdHbZbZbZbZcGcWcWababababababababababababababababababababababababababababababababababababababababababababababababababababababab
@@ -574,18 +565,18 @@ abababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababgzepePeIeIeIeIePepgAabababababababababababababababababababababababababababababababcbgBcHcHcHcHcHcHcHcHcHcHcHcHcbcobZcbgFgFgFgFgFgFgFgFcbbZbZcbgxgxgxgxgxezeKbZbZbZbZbZbZeMgJeOcWcWgKcWcWcWcWcWcWcWcWcWcWcWcWcWcbbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcGcWcWababababababababababababababababababababababababababababababgLgMababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababgzepgNgNgNgNepgAababababababababababababababababababababababababababababababababcbgOgOeRcHcHcHcHcHcHcHcHcHcHcbbZbZcbgPgFgFgFgQgRgFgPcbbZbZcbgxgxgxgxgSezgTgUgUgUgUgUgUgUeCgVcWcWcWcWeEcWcWcWcWcWcWcWeEcWcWcWcbbZbZcrbRbRbSbSbSbSbSbSbSbSbSbSbScabSbSbSbSbSbSbSbSbSbSbSbRbRcqbZchbZbZbZbZbZbZbZbZbZbZcVcWdbababababababababababababababababababababababababababababgWgXgXgXgXgXgXgXgXgXgMabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababgzgYgYgYgYgAabababababababababababababababababababababababababababababababababcbgOgOgZcHcHcHcHcHcHcHcHcHcHcbbZbZcbgFgFgFgFhagRgFgFcbbZbZcbgxgxgxhbgxdlbSbSbSbSbSbSbSbSbSdtcWcWcWcWcWcWcWhccWcWcWcWcWcWcWcWcbbZbZcpdsdtejejejejejejejejejejejejejejejejejejejejejejejcpdsdtbZbZbZbZbZbZbZbZbZbZcYbZdZcWcWababababababababababababababababababababababababababababhdhehfhfhfhfhfhfhfhghhabababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbhihihihihihjhjeReReReRhkhkcbbZbZcbgFgFgFgFgFgFgFgFcbbZbZcbgxgxgxgxgxezhlbZchbZbZbZbZbZhmcbcWcWcWcWcWcWcWdBdBcWcWcWcWcWcWcWcbbZbZcpdsdthnejhnejhnejhoejhoejhoejhoejhoejhoejhoejhoejhocpdsdtbZbZbZbZbZbZbZbZbZbZbZbZdZcWdbababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfhghqabababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbhrhihihihihjhjeReReRhshshtcbbZbZhugFhvgFgFgFgFgFhwcbbZbZcbfxgHgxgxgxezdebZbZbZbZbZchbZdUcacWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcbbZbZcpdsdthydXhydXhydXhydXhydXhydXhydXhydXhydXhydXhydXhycpdsdtbZbZbZbZbZbZbZbZbZbZbZbZdZcWcWababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfgXhzabababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbPbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSdsbQbQbQhAbQhAbQhAbQhAbQhAbQdtbZbZhugFgFgFgFgFgFgFhBcbbZbZcbhCgxgxgxhDezdebZbZhEbZbZbZbZhFcbcWcWcWcWcWcWcWeEcWcWcWcWcWcWcWcWcbbZbZcpdseHhGhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhJcOdsdtbZbZbZbZbZhKbZbZbZbZbZbZdacWdbababababababababababababababababababababababababababababhphLhMhfhfhfhfhfhfhNababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbhihihihihihjhjeReReReRhkhkcbbZbZcbgFgFgFgFgFgFgFgFcbbZbZcbgxgxgxgxgxezhlbZchbZbZbZbZbZctcbcWcWcWcWcWcWcWdBdBcWcWcWcWcWcWcWcbbZbZcpdsdthnejhnejhnejhoejhoejhoejhoejhoejhoejhoejhoejhocpdsdtbZbZbZbZbZbZbZbZbZbZbZbZdZcWdbababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfhghqabababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcbhrhihihihihjhjeReReRhshshtcbbZbZhugFhvgFgFgFgFgFhwcbbZbZcbfxgHgxgxgxezdebZbZbZbZbZchbZckcacWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcWcbbZbZcpdsdthydXhydXhydXhydXhydXhydXhydXhydXhydXhydXhydXhycpdsdtbZbZbZbZbZbZbZbZbZbZbZbZdZcWcWababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfgXhzabababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbPbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSdsbQbQbQhAbQhAbQhAbQhAbQhAbQdtbZbZhugFgFgFgFgFgFgFhBcbbZbZcbhCgxgxgxhDezdebZbZhEbZbZbZbZcKcbcWcWcWcWcWcWcWeEcWcWcWcWcWcWcWcWcbbZbZcpdseHhGhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhIhHhJcOdsdtbZbZbZbZbZhKbZbZbZbZbZbZdacWdbababababababababababababababababababababababababababababhphLhMhfhfhfhfhfhfhNababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbUbVcdbZbZbZdedededfdfdgdgdhdhdhdididicbhOhPhQcbhRcbhRcbhRcbhRcbhRcbbZbZcbgFgFgFgFgFgFgFhScbbZbZcObSbSbSbSbSeGbSbSbSbScabSbSbSbSeGbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSeHcacacphTabababababababababababababababababababababababababdqdtbZbZbZbZbZbZbZbZbZbZbZbZcGcWcWababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfgXgMabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhPhPhPcbhUhVhUhVhUhVhUhVhUcbbZbZcbgFhvgFgFgFgFhWhXcbbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcYbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbZbZbZbZbZbZbZbZbZcYbZcVcWdbababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfhghhabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhYhPhZcbhPhPhPhPhPhPiahPhPcabZchcbgFgFgFgFgFibgRgFcbbZcYbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbZbZbZbZbZbZbZbZbZbZbZdacWcWababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfhghqabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhPhPhPgDichPhPhPhPhPidhPhPcabZbZcbiegFgFiegFgFiegFcbbZbZcrbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbShTabababababababababababababababababababababababababababdqbSbSbSbSbSbSbSbSbSbSbSbSbSbShTababababababababababababababababababababababababababababiggXgXgXgXgXgXgXgXgXhzabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhYhPhQhVhPhPhPhPhPhPiahPihcbbZbZcbgFgFgFgFgFgFgFgFcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgLhzababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZcobZbZbZbZbZbZbZbZcbhPhPhPhUhPhPhPhPhPhPhPhPihcbbZbZcbiiikikiiikikiiikcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZilbZimcKcJbZcmcpbQbQbQbQbQbQbQbQbQbQbQbQbQeHbZbZcObSbSbSbSbSbSbSbSeHbZbZcpbQbQbQbQbQbQhTababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZcKincKcabZbZbZbZimbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiobVbWipbZbZbZbZbZbZimbZbZbZcIcIcKcmcKcabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZchbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZilbZimbXcJbZbXcpbQbQbQbQbQbQbQbQbQbQbQbQbQeHbZbZcObSbSbSbSbSbSbSbSeHbZbZcpbQbQbQbQbQbQhTababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZbXdnbXcabZbZbZbZimbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiobVbWipbZbZbZbZbZbZimbZbZbZcIcIbXbXbXcabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZchbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdqbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQeGbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbSbSbSbSbSbSbSbSbSbSbShTabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
@@ -695,4 +686,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
-
diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm
index e6bd4ba2eb8..f386ccb963c 100644
--- a/_maps/map_files/RandomZLevels/spacehotel.dmm
+++ b/_maps/map_files/RandomZLevels/spacehotel.dmm
@@ -431,7 +431,7 @@
"io" = (/obj/effect/decal/cleanable/blood/old,/obj/structure/falsewall,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
"ip" = (/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
"iq" = (/obj/structure/closet/crate/secure/loot,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
-"ir" = (/turf/unsimulated/floor{icon_state = "warning"; dir = 8},/area/awaymission/spacehotel)
+"ir" = (/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
"is" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
"it" = (/obj/machinery/vending/sovietsoda,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
"iu" = (/obj/structure/table,/obj/machinery/computer/security/telescreen{desc = "Not used to spy on hotel rooms."; dir = 4; name = "Hotel Security Monitor"; network = list("Hotel"); use_power = 0},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
@@ -452,9 +452,9 @@
"iJ" = (/obj/structure{desc = "It appears to be similar to a SMES."; icon = 'icons/obj/power.dmi'; icon_state = "smes"; name = "WaffeCo PSU"},/turf/unsimulated/floor/plating,/area/awaymission/spacehotel)
"iK" = (/obj/structure{desc = "It appears to be some sort of generator."; icon = 'icons/obj/power.dmi'; icon_state = "teg"; name = "WaffeCo PGU"},/turf/unsimulated/floor/plating,/area/awaymission/spacehotel)
"iL" = (/obj/machinery/power/supermatter_shard,/turf/unsimulated/floor/plating,/area/awaymission/spacehotel)
-"iM" = (/obj/machinery/gateway{dir = 9},/turf/unsimulated/floor{icon_state = "warning"; dir = 9},/area/awaymission/spacehotel)
-"iN" = (/obj/machinery/gateway{dir = 1},/turf/unsimulated/floor{icon_state = "warning"; dir = 1},/area/awaymission/spacehotel)
-"iO" = (/obj/machinery/gateway{dir = 5},/turf/unsimulated/floor{icon_state = "warning"; dir = 5},/area/awaymission/spacehotel)
+"iM" = (/obj/machinery/gateway{dir = 9},/obj/effect/decal/warning_stripes/northwest,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
+"iN" = (/obj/machinery/gateway{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
+"iO" = (/obj/machinery/gateway{dir = 5},/obj/effect/decal/warning_stripes/northeast,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
"iP" = (/obj/structure/window/basic{icon_state = "window"; dir = 8},/obj/structure/flora/grass/both,/turf/unsimulated/floor/grass,/area/awaymission/spacehotel)
"iQ" = (/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
"iR" = (/obj/effect/gibspawner/human,/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
@@ -468,9 +468,9 @@
"iZ" = (/obj/structure/cable/heavyduty{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/damageturf,/turf/unsimulated/floor/plating,/area/awaymission/spacehotel)
"ja" = (/obj/structure/cable/heavyduty{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/heavyduty{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/unsimulated/floor/plating,/area/awaymission/spacehotel)
"jb" = (/obj/machinery/light/small{dir = 4},/turf/unsimulated/floor/plating,/area/awaymission/spacehotel)
-"jc" = (/obj/machinery/gateway{dir = 8},/turf/unsimulated/floor{icon_state = "warning"; dir = 8},/area/awaymission/spacehotel)
+"jc" = (/obj/machinery/gateway{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
"jd" = (/obj/machinery/gateway/centeraway{calibrated = 0},/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
-"je" = (/obj/machinery/gateway{dir = 4},/turf/unsimulated/floor{icon_state = "warning"; dir = 4},/area/awaymission/spacehotel)
+"je" = (/obj/machinery/gateway{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
"jf" = (/obj/structure/window/basic{icon_state = "window"; dir = 8},/obj/structure/flora/rock,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/grass,/area/awaymission/spacehotel)
"jg" = (/obj/item/candle,/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
"jh" = (/obj/effect/rune,/obj/item/organ/internal/brain,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
@@ -486,9 +486,9 @@
"jr" = (/obj/item/grown/bananapeel,/obj/item/toy/spinningtoy,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
"js" = (/obj/structure/barricade/wooden,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
"jt" = (/obj/machinery/door/airlock/public/glass,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
-"ju" = (/obj/machinery/gateway{dir = 10},/turf/unsimulated/floor{icon_state = "warning"; dir = 10},/area/awaymission/spacehotel)
-"jv" = (/obj/machinery/gateway,/turf/unsimulated/floor{icon_state = "warning"},/area/awaymission/spacehotel)
-"jw" = (/obj/machinery/gateway{dir = 6},/turf/unsimulated/floor{icon_state = "warning"; dir = 6},/area/awaymission/spacehotel)
+"ju" = (/obj/machinery/gateway{dir = 10},/obj/effect/decal/warning_stripes/southwest,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
+"jv" = (/obj/machinery/gateway,/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
+"jw" = (/obj/machinery/gateway{dir = 6},/obj/effect/decal/warning_stripes/southeast,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel)
"jx" = (/obj/structure/window/basic{icon_state = "window"; dir = 8},/obj/structure/flora/ausbushes/palebush,/turf/unsimulated/floor/grass,/area/awaymission/spacehotel)
"jy" = (/obj/item/flashlight/lantern{on = 1},/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
"jz" = (/obj/effect/rune,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm
index 7c4dbffad8a..2041accb87f 100644
--- a/_maps/map_files/RandomZLevels/terrorspiders.dmm
+++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm
@@ -2,18 +2,18 @@
"ab" = (/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/outside)
"ac" = (/turf/simulated/wall,/area/awaymission/UO71/plaza)
"ad" = (/turf/simulated/wall/rust,/area/awaymission/UO71/plaza)
-"ae" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"af" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"ag" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"ah" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/camera{c_tag = "Gateway Ready Room"; dir = 2; network = list("UO71")},/obj/structure/table,/obj/machinery/computer/id_upgrader{light_color = "#00ffff"; light_power = 4; light_range = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway)
-"ai" = (/obj/structure/spider/cocoon{icon_state = "cocoon_large1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
+"ae" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
+"af" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/light/small{dir = 8},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
+"ag" = (/obj/machinery/r_n_d/destructive_analyzer,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/UO71/science)
+"ah" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/UO71/science)
+"ai" = (/obj/machinery/r_n_d/protolathe,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/UO71/science)
"aj" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza)
"ak" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza)
"al" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
"am" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
"an" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
"ao" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza)
-"ap" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza)
+"ap" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"aq" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster/official/safety_internals{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza)
"ar" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
"as" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza)
@@ -142,14 +142,14 @@
"cL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/rust,/area/awaymission/UO71/plaza)
"cM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm1"; locked = 0; name = "Dorm 1"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
"cN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/closet,/obj/item/poster/random_contraband,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza)
-"cO" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/light/small{dir = 8},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza)
+"cO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/stock_parts/scanning_module,/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"cP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/stack/rods,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza)
"cQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/awaymission/UO71/plaza)
"cR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza)
"cS" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza)
"cT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/awaymission/UO71/plaza)
"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/awaymission/UO71/plaza)
-"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza)
+"cV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"cW" = (/obj/machinery/firealarm{dir = 2; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza)
"cX" = (/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"; tag = "icon-greencorner"},/area/awaymission/UO71/plaza)
"cY" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"},/area/awaymission/UO71/plaza)
@@ -303,7 +303,7 @@
"fQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"fR" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"fS" = (/obj/machinery/door/airlock{name = "Kitchen Cold Room"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/UO71/centralhall)
-"fT" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"fT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"fU" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall)
"fV" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall)
"fW" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/reagent_containers/glass/beaker{pixel_x = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall)
@@ -361,11 +361,11 @@
"gW" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster/official/safety_internals{pixel_y = 32},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"gX" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/awaymission/UO71/gateway)
"gY" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 1},/obj/item/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/awaymission/UO71/gateway)
-"gZ" = (/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/science)
-"ha" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/science)
-"hb" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/science)
+"gZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
+"ha" = (/obj/structure/table,/obj/item/storage/firstaid/regular,/obj/structure/sign/biohazard{pixel_x = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
+"hb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table,/obj/item/paper/pamphlet,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"hc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
-"hd" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"hd" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/camera{c_tag = "Gateway Chamber"; dir = 4; network = list("UO71")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"he" = (/obj/structure/table/glass,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/micro_laser,/obj/item/stock_parts/micro_laser,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/science)
"hf" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/mob/living/simple_animal/hostile/poison/terror_spider/gray,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"hg" = (/obj/structure/table,/obj/item/trash/chips,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
@@ -415,15 +415,15 @@
"hY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/window{dir = 2; name = "Gateway Chamber"; req_access_txt = "271"},/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway)
"hZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway)
"ia" = (/obj/machinery/door/airlock{name = "Emergency Supplies"},/turf/simulated/floor/plating,/area/awaymission/UO71/gateway)
-"ib" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/stock_parts/scanning_module,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaymission/UO71/science)
-"ic" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"ib" = (/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
+"ic" = (/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"id" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/awaymission/UO71/prince)
"ie" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0; welded = 1},/turf/simulated/floor/vault,/area/awaymission/UO71/prince)
"if" = (/obj/machinery/light/small,/turf/simulated/floor/vault,/area/awaymission/UO71/prince)
"ig" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/science)
-"ih" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"ih" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/camera{c_tag = "Gateway Ready Room"; dir = 2; network = list("UO71")},/obj/structure/table,/obj/machinery/computer/id_upgrader{light_color = "#00ffff"; light_power = 4; light_range = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"ii" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
-"ij" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/awaymission/UO71/science)
+"ij" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"ik" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/science)
"il" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
"im" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
@@ -434,12 +434,12 @@
"ir" = (/obj/structure/closet/secure_closet{icon_broken = "fridgebroken"; icon_closed = "fridge"; icon_locked = "fridge1"; icon_off = "fridgeoff"; icon_opened = "fridgeopen"; icon_state = "fridge"; locked = 0; name = "refrigerator"; req_access_txt = "271"},/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/milk,/obj/item/storage/fancy/egg_box,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall)
"is" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"it" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/storage/toolbox/syndicate,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
-"iu" = (/obj/structure/table,/obj/item/storage/firstaid/regular,/obj/structure/sign/biohazard{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway)
+"iu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"iv" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"iw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"ix" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/gateway)
"iy" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/gateway)
-"iz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table,/obj/item/paper/pamphlet,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway)
+"iz" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_biohazard"; name = "biohazard containment door"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"iA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/awaymission/UO71/gateway)
"iB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/outside)
"iC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/awaymission/UO71/mother)
@@ -466,7 +466,7 @@
"iX" = (/obj/structure/closet/secure_closet{icon_state = "secure"; locked = 0; name = "kitchen Cabinet"; req_access_txt = "271"},/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/sugar,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall)
"iY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"iZ" = (/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib2_flesh"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
-"ja" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/camera{c_tag = "Gateway Chamber"; dir = 4; network = list("UO71")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway)
+"ja" = (/obj/structure/sink{pixel_y = 25},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"jb" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"jc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway)
"jd" = (/obj/machinery/door/poddoor{id_tag = "UO71_Start"; name = "UO71 Sealed Facility"},/obj/machinery/door/airlock/research{name = "Gateway Observation"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway)
@@ -495,8 +495,8 @@
"jA" = (/obj/machinery/camera{c_tag = "Bar"; dir = 8; network = list("UO71")},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
"jB" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/obj/machinery/door/airlock{name = "Kitchen"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
"jC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
-"jD" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/UO71/gateway)
-"jE" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/gateway)
+"jD" = (/obj/machinery/shower{pixel_y = 15},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
+"jE" = (/obj/structure/sink{pixel_y = 25},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"jF" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood/splatter{color = "red"},/obj/item/paper/terrorspiders1,/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"jG" = (/turf/simulated/wall/r_wall,/area/awaymission/UO71/science)
"jH" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
@@ -549,9 +549,9 @@
"kC" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/dirt,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/multitool,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"kD" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"kE" = (/obj/structure/table,/obj/item/storage/belt/utility,/obj/item/storage/belt/utility,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
-"kF" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway)
+"kF" = (/obj/structure/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"kG" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/suit_storage_unit/engine,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
-"kH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/gateway)
+"kH" = (/obj/structure/spider/cocoon{contents = newlist(/obj/effect/decal/remains/human); icon_state = "cocoon_large1"},/obj/structure/spider/terrorweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
"kI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science)
"kJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science)
"kK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/mob/living/simple_animal/hostile/poison/terror_spider/gray,/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science)
@@ -561,7 +561,7 @@
"kO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science)
"kP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science)
"kQ" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "271"},/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science)
-"kR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/gateway)
+"kR" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"kS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway)
"kT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway)
"kU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway)
@@ -577,10 +577,10 @@
"le" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"lf" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/awaymission/UO71/science)
"lg" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/awaymission/UO71/science)
-"lh" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_biohazard"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaymission/UO71/science)
-"li" = (/obj/machinery/shower{pixel_y = 15},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaymission/UO71/science)
-"lj" = (/obj/structure/sink{pixel_y = 25},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/awaymission/UO71/science)
-"lk" = (/obj/structure/sink{pixel_y = 25},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"lh" = (/obj/structure/closet/firecloset,/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
+"li" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
+"lj" = (/obj/structure/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
+"lk" = (/obj/structure/table,/obj/item/newspaper,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"ll" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"lm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/obj/structure/sign/science{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "purplecorner"; tag = "icon-purplecorner (WEST)"},/area/awaymission/UO71/centralhall)
"ln" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
@@ -624,7 +624,7 @@
"lZ" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"ma" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"mb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "purple"; tag = "icon-purple (WEST)"},/area/awaymission/UO71/centralhall)
-"mc" = (/obj/structure/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"mc" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"md" = (/obj/structure/chair{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
"me" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
"mf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/sign/deathsposal{desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall)
@@ -634,7 +634,7 @@
"mj" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"mk" = (/obj/structure/table,/obj/item/folder/white,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warndark"; tag = "icon-warndark (EAST)"},/area/awaymission/UO71/gateway)
"ml" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
-"mm" = (/obj/structure/spider/cocoon{contents = newlist(/obj/effect/decal/remains/human); icon_state = "cocoon_large1"},/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway)
+"mm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/poison/terror_spider/gray,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"mn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"mo" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway)
"mp" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway)
@@ -644,19 +644,19 @@
"mt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/command{name = "Research Director's Office"; req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
"mu" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"mv" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/awaymission/UO71/science)
-"mw" = (/obj/structure/closet/firecloset,/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"mw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"mx" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/vault,/area/awaymission/UO71/mother)
"my" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_pump{icon_state = "weld"; on = 1; welded = 1},/turf/simulated/floor/vault,/area/awaymission/UO71/prince)
"mz" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("UO71")},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
-"mA" = (/obj/structure/table,/obj/item/newspaper,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
-"mB" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"mA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
+"mB" = (/obj/machinery/door/poddoor{id_tag = "UO71_SciStorage"; name = "SciStorage Door"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/loot)
"mC" = (/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall)
"mD" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall)
"mE" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/item/reagent_containers/food/pill/haloperidol,/obj/item/reagent_containers/food/pill/haloperidol,/obj/item/reagent_containers/food/pill/haloperidol,/obj/item/reagent_containers/food/pill/haloperidol,/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall)
"mF" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "271"},/obj/item/clothing/under/pj/red,/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall)
"mG" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/structure/chair/wood/normal{dir = 8},/obj/item/paper/terrorspiders4,/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall)
"mH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
-"mI" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"mI" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"mJ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"mK" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "UO71_Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 6; pixel_y = -24; req_access_txt = "271"},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"mL" = (/obj/structure/table,/obj/item/hand_labeler,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway)
@@ -694,7 +694,7 @@
"nr" = (/turf/simulated/wall/r_wall/rust,/area/awaymission/UO71/eng)
"ns" = (/obj/structure/chair/comfy/black{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutral"},/area/awaymission/UO71/centralhall)
"nt" = (/obj/structure/chair/comfy/black{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "neutral"},/area/awaymission/UO71/centralhall)
-"nu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"nu" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"nv" = (/obj/machinery/door/poddoor{id_tag = "UO71_Secure Storage"; name = "secure storage"},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"nw" = (/obj/machinery/chem_master,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"nx" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
@@ -736,7 +736,7 @@
"oh" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/radio/off,/obj/item/laser_pointer,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
"oi" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/folder/white,/obj/item/stamp/rd{pixel_x = 3; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
"oj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
-"ok" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"ok" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"ol" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/science)
"om" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/rust,/area/awaymission/UO71/science)
"on" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the research division and the labs within."; dir = 2; name = "research monitor"; network = list("UO71")},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
@@ -759,7 +759,7 @@
"oE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall)
"oF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutral"},/area/awaymission/UO71/centralhall)
"oG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
-"oH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/mob/living/simple_animal/hostile/poison/terror_spider/gray,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"oH" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"oI" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"oJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{dir = 2; icon_state = "pipe-y"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutral"},/area/awaymission/UO71/centralhall)
"oK" = (/mob/living/carbon/human/monkey{name = "George the lab monkey"; toxloss = 193},/turf/simulated/floor/engine,/area/awaymission/UO71/science)
@@ -772,7 +772,7 @@
"oR" = (/obj/machinery/chem_heater,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"oS" = (/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
"oT" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/pill/methamphetamine,/obj/item/reagent_containers/food/pill/methamphetamine,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science)
-"oU" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"oU" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"oV" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
"oW" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door_control{desc = "A remote control-switch whichs locks the research division down in the event of a biohazard leak or contamination."; id = "UO71_biohazard"; name = "Biohazard Door Control"; pixel_x = 0; pixel_y = 8; req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
"oX" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science)
@@ -792,7 +792,7 @@
"pl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall)
"pm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/awaymission/UO71/centralhall)
"pn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall)
-"po" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"po" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"pp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall)
"pq" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/awaymission/UO71/centralhall)
"pr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 6; icon_state = "neutral"},/area/awaymission/UO71/centralhall)
@@ -821,7 +821,7 @@
"pO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"pP" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "UO71_air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/awaymission/UO71/eng)
"pQ" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 2; frequency = 1443; id = "UO71_air_in"},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/awaymission/UO71/eng)
-"pR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"pR" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"pS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"pT" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/loot)
"pU" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
@@ -833,7 +833,7 @@
"qa" = (/turf/simulated/wall,/area/awaymission/UO71/medical)
"qb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"qc" = (/obj/machinery/door/airlock/command{name = "Server Room"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science)
-"qd" = (/obj/machinery/door/poddoor{id_tag = "UO71_SciStorage"; name = "SciStorage Door"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/loot)
+"qd" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"qe" = (/obj/structure/grille,/obj/structure/window/full/basic,/turf/simulated/floor/plating,/area/awaymission/UO71/medical)
"qf" = (/obj/machinery/door/airlock/medical/glass{id_tag = null; name = "Medical Storage"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical)
"qg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
@@ -859,7 +859,7 @@
"qA" = (/obj/structure/closet,/obj/item/storage/belt/utility,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"qB" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science)
"qC" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science)
-"qD" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/awaymission/UO71/science)
+"qD" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Waste In"; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"qE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/awaymission/UO71/centralhall)
"qF" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/loot)
"qG" = (/obj/machinery/vending/medical{req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/awaymission/UO71/medical)
@@ -885,9 +885,9 @@
"ra" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm/monitor/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/r_n_d/server/core{id_with_download_string = "3"; id_with_upload_string = "3"; req_access = null},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/awaymission/UO71/science)
"rb" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8; initialize_directions = 11},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/awaymission/UO71/science)
"rc" = (/obj/machinery/camera{c_tag = "Atmospherics"; dir = 2; network = list("UO71")},/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/obj/item/storage/toolbox/mechanical{pixel_y = 5},/obj/machinery/firealarm{dir = 2; pixel_x = 0; pixel_y = 24},/obj/item/multitool,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/awaymission/UO71/eng)
-"rd" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
+"rd" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Unfiltered to Mix"; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"re" = (/obj/machinery/atmospherics/trinary/mixer{dir = 1; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 0; req_access = null; target_pressure = 4500},/turf/simulated/floor/plasteel{dir = 5; icon_state = "arrival"},/area/awaymission/UO71/eng)
-"rf" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
+"rf" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"rg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"rh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/wall,/area/awaymission/UO71/medical)
"ri" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science)
@@ -908,9 +908,9 @@
"rx" = (/obj/machinery/door/airlock{name = "Unit 2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/centralhall)
"ry" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/centralhall)
"rz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
-"rA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall)
+"rA" = (/obj/machinery/alarm/monitor{dir = 1; frequency = 1439; locked = 0; pixel_y = -23; req_access = null},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5; initialize_directions = 5},/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"rB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
-"rC" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"rC" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"rD" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"rE" = (/obj/item/twohanded/required/kirbyplants{layer = 5},/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/awaymission/UO71/eng)
"rF" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
@@ -923,10 +923,10 @@
"rM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 6; initialize_directions = 6; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"rN" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"rO" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"rP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"rP" = (/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"rQ" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/awaymission/UO71/science)
-"rR" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
-"rS" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"rR" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8; initialize_directions = 11},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
+"rS" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/item/reagent_containers/food/pill/methamphetamine,/obj/item/storage/toolbox/syndicate,/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"rT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"rU" = (/obj/structure/table,/obj/item/folder/white,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science)
"rV" = (/obj/machinery/computer/rdservercontrol,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science)
@@ -937,14 +937,14 @@
"sa" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/bridge)
"sb" = (/obj/structure/table,/obj/item/reagent_containers/food/pill/patch/synthflesh,/obj/item/reagent_containers/food/pill/patch/synthflesh,/obj/item/reagent_containers/food/pill/patch/synthflesh,/obj/item/reagent_containers/food/pill/patch/synthflesh,/obj/item/reagent_containers/food/pill/patch/synthflesh,/obj/item/reagent_containers/food/pill/patch/synthflesh,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"sc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical)
-"sd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
+"sd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"se" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/bridge)
"sf" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/gun/energy/laser/awaymission_aeg,/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"sg" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"sh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"si" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"sj" = (/obj/machinery/door/airlock{name = "Unisex Showers"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/centralhall)
-"sk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/stack/sheet/mineral/plasma{amount = 6},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"sk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"sl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"sm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/obj/machinery/camera{c_tag = "Engineering Hallway"; dir = 4; network = list("UO71")},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall)
"sn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/awaymission/UO71/centralhall)
@@ -964,7 +964,7 @@
"sB" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id_tag = "UO71_EngineeringOffice"; name = "Privacy Shutters"},/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"sC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaymission/UO71/eng)
"sD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; initialize_directions = 14; tag = "icon-manifold-b-f (NORTH)"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"sE" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"sE" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"sF" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"sG" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"sH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/meter{frequency = 1443; id = "UO71_dloop_atm_meter"; name = "Distribution Loop"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
@@ -1001,7 +1001,7 @@
"tm" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id_tag = "UO71_EngineeringOffice"; name = "Privacy Shutters"},/obj/item/folder/red,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"tn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 14; tag = "icon-manifold-r-f (NORTH)"},/obj/structure/table,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaymission/UO71/eng)
"to" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"tp" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Waste In"; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"tp" = (/obj/machinery/atmospherics/binary/valve{dir = 2},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"tq" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"tr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"ts" = (/obj/machinery/atmospherics/binary/pump{dir = 2; name = "Mix to Filter"; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
@@ -1021,7 +1021,7 @@
"tG" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"tH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/medical)
"tI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/rust,/area/awaymission/UO71/medical)
-"tJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"tJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"tK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"tL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"tM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/awaymission/UO71/science)
@@ -1045,11 +1045,12 @@
"ue" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2 Outlet Pump"; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"uf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/wall/rust,/area/awaymission/UO71/science)
"ug" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "O2 Outlet Pump"; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"uh" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Unfiltered to Mix"; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"uh" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"ui" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/engineering{name = "Engineering Maintenance"; req_access_txt = "271"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"uj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"uk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"ul" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/science)
+"um" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"un" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"uo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "271"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical)
"up" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/medical)
@@ -1057,6 +1058,8 @@
"ur" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/securearea{desc = "A warning sign which reads 'DANGER - LETHAL BIOHAZARDS WITHIN'"; name = "CONTAINMENT AREA"},/turf/simulated/wall/rust,/area/awaymission/UO71/mining)
"us" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall,/area/awaymission/UO71/science)
"ut" = (/turf/simulated/wall,/area/awaymission/UO71/outside)
+"uu" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
+"uv" = (/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"uw" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/item/stack/rods,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"ux" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"uy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; icon_state = "weld"; on = 1; pressure_checks = 1; welded = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
@@ -1071,26 +1074,27 @@
"uH" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/awaymission/UO71/eng)
"uI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "UO71_Engineering"; name = "Engineering Lockdown"; pixel_x = 24; pixel_y = 6; req_access_txt = "271"},/obj/structure/closet/secure_closet{icon_broken = "secbroken"; icon_closed = "sec"; icon_locked = "sec1"; icon_off = "secoff"; icon_opened = "secopen"; icon_state = "sec1"; locked = 1; name = "security officer's locker"; req_access_txt = "271"},/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet,/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaymission/UO71/eng)
"uJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/UO71/eng)
-"uK" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
+"uK" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
"uL" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Air to External"; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"uM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "External to Filter"; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"uN" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 2; on = 1; req_access = null},/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/awaymission/UO71/eng)
-"uO" = (/obj/machinery/alarm/monitor{dir = 1; frequency = 1439; locked = 0; pixel_y = -23; req_access = null},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5; initialize_directions = 5},/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
-"uP" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"uO" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaymission/UO71/science)
+"uP" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"uQ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "UO71_n2_in"; name = "Nitrogen Supply Control"; output_tag = "UO71_n2_out"; sensors = list("UO71_n2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaymission/UO71/eng)
"uR" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "UO71_o2_in"; name = "Oxygen Supply Control"; output_tag = "UO71_o2_out"; sensors = list("UO71_o2_sensor" = "Tank")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "blue"},/area/awaymission/UO71/eng)
"uS" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 1; on = 1; req_access = null},/turf/simulated/floor/plasteel{dir = 10; icon_state = "blue"},/area/awaymission/UO71/eng)
"uT" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaymission/UO71/eng)
-"uU" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8; initialize_directions = 11},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"},/area/awaymission/UO71/science)
+"uU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"uV" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/awaymission/UO71/medical)
"uW" = (/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/UO71/outside)
-"uX" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating{dir = 9; icon_state = "warnplate"},/area/awaymission/UO71/science)
-"uY" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/item/reagent_containers/food/pill/methamphetamine,/obj/item/storage/toolbox/syndicate,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaymission/UO71/science)
+"uX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
+"uY" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"uZ" = (/obj/machinery/door/airlock/medical{name = "Medical"; req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/awaymission/UO71/medical)
+"va" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/noticeboard{dir = 1; pixel_y = -27},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vb" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"vc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("UO71_n2_sensor" = "Nitrogen", "UO71_o2_sensor" = "Oxygen", "UO71_waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "caution"},/area/awaymission/UO71/eng)
-"ve" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"ve" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vf" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/awaymission/UO71/eng)
"vg" = (/obj/machinery/meter{layer = 3.3},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall,/area/awaymission/UO71/eng)
"vh" = (/obj/machinery/meter{layer = 3.3},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/wall,/area/awaymission/UO71/eng)
@@ -1099,8 +1103,8 @@
"vk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/engineering{name = "Engineering"; req_access_txt = "271"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'DANGER - LETHAL BIOHAZARDS WITHIN'"; name = "CONTAINMENT AREA"},/turf/simulated/wall/rust,/area/awaymission/UO71/mining)
"vm" = (/obj/machinery/atmospherics/binary/valve{dir = 2},/turf/simulated/floor/plating,/area/awaymission/UO71/science)
-"vn" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/awaymission/UO71/science)
-"vo" = (/obj/machinery/atmospherics/binary/valve{dir = 2},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaymission/UO71/science)
+"vn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/engivend{req_access_txt = "0"},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 1; network = list("UO71")},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
+"vo" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vp" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"vq" = (/obj/structure/table,/obj/item/defibrillator,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/awaymission/UO71/medical)
"vr" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaymission/UO71/medical)
@@ -1108,24 +1112,26 @@
"vt" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"vu" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"vv" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
+"vw" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
+"vx" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"},/area/awaymission/UO71/centralhall)
"vz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"vA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/eng)
"vB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("UO71_mair_in_meter" = "Mixed Air In", "UO71_air_sensor" = "Mixed Air Supply Tank", "UO71_mair_out_meter" = "Mixed Air Out", "UO71_dloop_atm_meter" = "Distribution Loop", "UO71_wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/awaymission/UO71/eng)
"vC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"vD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"vD" = (/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"vE" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1441; id = "UO71_n2_in"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 10000; oxygen = 0},/area/awaymission/UO71/eng)
"vF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; id_tag = "UO71_n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 10000; oxygen = 0},/area/awaymission/UO71/eng)
"vG" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1441; id = "UO71_o2_in"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/awaymission/UO71/eng)
"vH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; id_tag = "UO71_o2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/awaymission/UO71/eng)
"vI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/awaymission/UO71/eng)
-"vJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaymission/UO71/eng)
-"vK" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaymission/UO71/eng)
-"vL" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaymission/UO71/eng)
-"vM" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/awaymission/UO71/science)
-"vN" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating{dir = 10; icon_state = "warnplate"},/area/awaymission/UO71/science)
+"vJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"vK" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"vL" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"vM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"vN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"vO" = (/obj/structure/sign/deathsposal,/turf/simulated/wall/rust,/area/awaymission/UO71/medical)
-"vP" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{dir = 6; icon_state = "warnplate"},/area/awaymission/UO71/science)
+"vP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/closet/secure_closet/miner{req_access = list(201)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"vQ" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical)
"vR" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker/cryoxadone,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"vS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/medical)
@@ -1136,6 +1142,7 @@
"vX" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control-switch for heavy lockdown doors."; id = "UO71_Containment"; name = "Science Containment Doors"; pixel_x = 0; pixel_y = -2; req_access_txt = "271"; wires = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"vY" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control-switch for heavy lockdown doors."; id = "UO71_Armory"; name = "Armory Doors"; pixel_x = 0; pixel_y = -2; req_access_txt = "271"; wires = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
"vZ" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
+"wa" = (/obj/machinery/conveyor{dir = 2; id = "UO71_mining"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"wb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"wc" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall)
"wd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 6; icon_state = "brown"},/area/awaymission/UO71/centralhall)
@@ -1143,17 +1150,17 @@
"wf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/awaymission/UO71/eng)
"wg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"wh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"wi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
+"wi" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"wj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; initialize_directions = 14; tag = "icon-manifold-b-f (NORTH)"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"wk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/awaymission/UO71/eng)
"wl" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "UO71_n2_sensor"},/obj/machinery/light/small,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 10000; oxygen = 0},/area/awaymission/UO71/eng)
"wm" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 10000; oxygen = 0},/area/awaymission/UO71/eng)
"wn" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "UO71_o2_sensor"},/obj/machinery/light/small,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/awaymission/UO71/eng)
"wo" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/awaymission/UO71/eng)
-"wp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"wp" = (/obj/effect/decal/warning_stripes/yellow/partial{dir = 8},/obj/effect/decal/warning_stripes/arrow{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"wq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"wr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/engineering{name = "Engineering"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"ws" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"ws" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"wt" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical)
"wu" = (/turf/simulated/wall/rust,/area/awaymission/UO71/mining)
"wv" = (/turf/simulated/wall,/area/awaymission/UO71/mining)
@@ -1164,17 +1171,17 @@
"wA" = (/obj/machinery/door/airlock/maintenance{name = "Mining Maintenance"; req_access_txt = "271"},/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"wB" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/mining/glass{name = "Mining Foyer"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"wC" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/mining/glass{name = "Mining Foyer"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"wD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/noticeboard{dir = 1; pixel_y = -27},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"wD" = (/obj/machinery/conveyor{dir = 2; id = "UO71_mining"},/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"wE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{dir = 10; icon_state = "caution"; tag = "icon-caution (SOUTHWEST)"},/area/awaymission/UO71/eng)
"wF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
-"wG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
-"wH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/engivend{req_access_txt = "0"},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 1; network = list("UO71")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng)
+"wG" = (/obj/machinery/suit_storage_unit/mining,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"wH" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"wI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng)
"wJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high,/obj/item/t_scanner,/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaymission/UO71/eng)
"wK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/tool,/obj/structure/sign/poster/official/build{pixel_y = -32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaymission/UO71/eng)
-"wL" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
-"wM" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
-"wN" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng)
+"wL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/camera{c_tag = "Mining"; dir = 4; network = list("UO71")},/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"wM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"wN" = (/obj/machinery/conveyor{dir = 2; id = "UO71_mining"},/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"wO" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitehall"},/area/awaymission/UO71/medical)
"wP" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/awaymission/UO71/medical)
"wQ" = (/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitehall"},/area/awaymission/UO71/medical)
@@ -1188,9 +1195,10 @@
"wY" = (/obj/machinery/light/small{dir = 1},/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/UO71/mining)
"wZ" = (/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/awaymission/UO71/mining)
"xa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaymission/UO71/mining)
-"xb" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
+"xb" = (/obj/structure/dispenser/oxygen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"xc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; tag = "icon-manifold-r-f (EAST)"},/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 26},/obj/item/stack/sheet/glass{amount = 19},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"xd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; tag = "icon-manifold-r-f (EAST)"},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"xe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
+"xe" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 8; output_dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"xf" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"xg" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/eng)
"xh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/airlock/command/glass{name = "Chief Engineer"; req_access_txt = "271"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
@@ -1208,8 +1216,8 @@
"xt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
"xu" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/eng)
"xv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"xw" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
-"xx" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
+"xw" = (/obj/effect/decal/warning_stripes/yellow/partial{dir = 4},/obj/effect/decal/warning_stripes/arrow{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"xx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"xy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"xz" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
"xA" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
@@ -1221,7 +1229,7 @@
"xG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock{id_tag = "awaydorm9"; name = "Mining Dorm 2"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"xH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door_control{id = "awaydorm9"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/awaymission/UO71/mining)
"xI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"xJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
+"xJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/stack/sheet/mineral/plasma{amount = 6},/obj/effect/landmark/damageturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"xK" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/stamp/ce,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
"xL" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/pen,/obj/effect/decal/cleanable/dirt,/obj/item/stack/sheet/plasteel{amount = 50},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
"xM" = (/obj/structure/table/reinforced,/obj/item/folder/yellow,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
@@ -1229,7 +1237,7 @@
"xO" = (/obj/machinery/light/small,/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaymission/UO71/mining)
"xP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "271"},/turf/simulated/floor/carpet,/area/awaymission/UO71/mining)
"xQ" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 2; locked = 0; name = "UO71 Mining APC"; pixel_x = 0; pixel_y = -25; req_access = null; start_charge = 1},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/closet/secure_closet/engineering_personal{icon_broken = "miningsecbroken"; icon_closed = "miningsec"; icon_locked = "miningsec1"; icon_off = "miningsecoff"; icon_opened = "miningsecopen"; icon_state = "miningsec"; locked = 0; name = "miner's equipment"; req_access = list(201)},/obj/item/storage/backpack/satchel_eng,/obj/item/clothing/gloves/fingerless,/turf/simulated/floor/plasteel{dir = 2; icon_state = "browncorner"},/area/awaymission/UO71/mining)
-"xR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/closet/secure_closet/miner{req_access = list(201)},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining)
+"xR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"xS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; tag = "icon-manifold-r-f (EAST)"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/awaymission/UO71/mining)
"xT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/awaymission/UO71/mining)
"xU" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/cigarettes{pixel_x = -2},/obj/item/lighter/zippo{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
@@ -1242,49 +1250,51 @@
"yb" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
"yc" = (/obj/machinery/computer/monitor{name = "primary power monitoring console"},/obj/structure/cable,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
"yd" = (/obj/machinery/light/small,/obj/machinery/computer/atmos_alert,/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "UO71_Engineering"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -24; req_access_txt = "271"},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "UO71_Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 6; pixel_y = -24; req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng)
-"ye" = (/obj/machinery/conveyor{dir = 2; id = "UO71_mining"},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaymission/UO71/mining)
-"yf" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/awaymission/UO71/mining)
-"yg" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaymission/UO71/mining)
-"yh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"ye" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"yf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"yg" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/damageturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"yh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yj" = (/obj/machinery/conveyor{dir = 2; id = "UO71_mining"},/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaymission/UO71/mining)
+"yj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yk" = (/obj/machinery/conveyor_switch/oneway{id = "UO71_mining"; name = "mining conveyor"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yl" = (/obj/structure/grille,/obj/structure/window/full/basic,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"ym" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yn" = (/obj/machinery/mineral/processing_unit_console{machinedir = 8},/turf/simulated/wall/rust,/area/awaymission/UO71/mining)
-"yo" = (/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yo" = (/obj/structure/closet/emcloset,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yp" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"yq" = (/obj/structure/table,/obj/item/pickaxe,/obj/item/radio/off,/obj/effect/decal/cleanable/dirt,/obj/item/gun/energy/kinetic_accelerator,/obj/item/borg/upgrade/modkit/damage,/obj/item/borg/upgrade/modkit/chassis_mod/orange,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yr" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaymission/UO71/mining)
-"ys" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/camera{c_tag = "Mining"; dir = 4; network = list("UO71")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yr" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
+"ys" = (/obj/machinery/door/poddoor{id_tag = "UO71_Queen"; name = "Caves Lockdown Door"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yu" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yv" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"yw" = (/obj/machinery/light/small{dir = 4},/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/gun/energy/kinetic_accelerator,/obj/item/borg/upgrade/modkit/tracer,/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaymission/UO71/mining)
"yx" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yy" = (/obj/machinery/conveyor{dir = 2; id = "UO71_mining"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaymission/UO71/mining)
+"yy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yz" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yC" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/awaymission/UO71/mining)
"yD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/mining/glass{name = "Mining EVA"; req_access_txt = "271"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yF" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yF" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/mech_bay_recharge_floor,/area/awaymission/UO71/mining)
"yI" = (/obj/machinery/mech_bay_recharge_port{tag = "icon-recharge_port (WEST)"; icon_state = "recharge_port"; dir = 8},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
"yJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; tag = "icon-manifold-r-f (EAST)"},/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 26},/obj/item/stack/sheet/glass{amount = 19},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yK" = (/obj/structure/spider/cocoon{icon_state = "cocoon_large1"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
"yM" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining)
-"yN" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/awaymission/UO71/mining)
-"yO" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 8; output_dir = 4},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaymission/UO71/mining)
-"yQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yN" = (/obj/structure/spider/terrorweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yO" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yP" = (/obj/machinery/light{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yQ" = (/obj/structure/spider/cocoon{icon_state = "cocoon_large1"},/obj/structure/spider/terrorweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yR" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/awaymission/UO71/mining)
-"yS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
-"yT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
-"yV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
-"yW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"yS" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yT" = (/obj/machinery/door/poddoor{id_tag = "UO71_Caves"; name = "Caves Lockdown Door"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/spider/terrorweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yV" = (/obj/structure/spider/terrorweb,/obj/structure/spider/terrorweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"yW" = (/obj/machinery/door/poddoor{id_tag = "UO71_Caves"; name = "Caves Lockdown Door"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"yX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/outside)
"yY" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/prince)
"yZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/rust,/area/awaymission/UO71/mining)
@@ -1293,38 +1303,27 @@
"zc" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/outside)
"zd" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/queen)
"ze" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/queen)
-"zf" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
+"zf" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"zg" = (/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/queen)
"zh" = (/turf/simulated/wall/rust,/area/awaymission/UO71/queen)
"zi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/rust,/area/awaymission/UO71/queen)
-"zj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
-"zk" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
-"zl" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/mining)
-"zm" = (/obj/machinery/door/poddoor{id_tag = "UO71_Queen"; name = "Caves Lockdown Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
+"zj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"zk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"zl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
+"zm" = (/obj/structure/table,/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/queen)
"zn" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "271"},/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
"zo" = (/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
"zp" = (/obj/structure/dresser,/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
-"zq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
"zr" = (/obj/structure/glowshroom/single,/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/UO71/outside)
"zs" = (/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
"zt" = (/obj/structure/chair/wood/normal,/obj/item/clothing/shoes/syndigaloshes,/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
"zu" = (/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
"zv" = (/obj/structure/table/wood,/obj/item/paper/terrorspiders3,/obj/item/pen/edagger,/obj/item/stack/telecrystal{amount = 10},/obj/item/chameleon,/obj/item/reagent_containers/glass/bottle/traitor,/obj/item/borg/upgrade/syndicate,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
-"zw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
"zx" = (/obj/machinery/door/airlock/external{name = "Strange Airlock"; req_access_txt = "271"},/obj/machinery/door/poddoor{id_tag = "UO71_Caves"; name = "Caves Lockdown Door"},/turf/simulated/floor/carpet,/area/awaymission/UO71/loot)
"zy" = (/turf/simulated/wall,/area/awaymission/UO71/queen)
"zz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/awaymission/UO71/queen)
-"zA" = (/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"zB" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"zC" = (/obj/structure/spider/cocoon{icon_state = "cocoon_large1"},/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"zF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"zG" = (/obj/machinery/door/poddoor{id_tag = "UO71_Caves"; name = "Caves Lockdown Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
"zH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/turf/simulated/wall,/area/awaymission/UO71/science)
-"zJ" = (/obj/structure/spider/terrorweb,/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"zK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
-"zL" = (/obj/structure/table,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
"zM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/queen)
-"zN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen)
"zO" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/item/borg/upgrade/vtec,/obj/item/stock_parts/cell/bluespace,/obj/item/paper/terrorspiders9,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/loot)
"zP" = (/turf/simulated/wall,/area/awaymission/UO71/bridge)
"zQ" = (/obj/machinery/door/poddoor{id_tag = "UO71_Bridge"; name = "Bridge Lockdown Door"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge)
@@ -1369,8 +1368,8 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababacadacadadadadacadacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababadakajamalalalalanapaoacababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababacaqajalalalararalalasadababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababadakaramalalalalanaraoacababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababacaqaralalalararalalasadababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababacacalauatatatatavalacadacacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababacawayaxaAazaCaBaDacaFaEacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababacalayaxaAaAaGaBalacaIaHacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
@@ -1378,15 +1377,15 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababacacacaQaRaQadaSaUaTaWaVaTaXalacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababadaYbaaZbcbbbdawbeacacacacaXbfacbhbgacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababadaYacbiacbjacalblbkbnbmbpboaladbqaHacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababacaYacbradbsadajbtalbvbuarbwalbBbqbCacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababacaYacbradbsadarbtalbvbuarbwalbBbqbCacababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababacbFadbxbybzbzbybAbzbHbGbybybzbDbybybEababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababadbIbKbJbMbLbObNbQbPbSbRbPbTbUbXcabZbVababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababadacacacbWcbadbYacbWadawalacbYacbVadccbWababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccebFcfbWccadchcgciacapaladcjclckaccdbWacadacadacadadacacadadadacacababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccnbIcpcmcdaccscrctacajalaccucrcvadcccxcwcwcwcwcwcwcocAczcqcCcCcEcBababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccebFcfbWccadchcgciacaraladcjclckaccdbWacadacadacadadacacadadadacacababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccnbIcpcmcdaccscrctacaralaccucrcvadcccxcwcwcwcwcwcwcocAczcqcCcCcEcBababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababadcGcFcGcHcbadaccIacadcJcJacaccMacadcNcacycKcKcKcLcKcLcLcPbLbNbLcQbWababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccDcabNbQcTbaajcVaralalalcWalbucXacacadcUaccYdacZdcdbadbVacadaccbbVababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccbacacbWadadcOdddfalalalaldgdidhatatdkdjdmdldodndodpdrdqdtdsaccRbVababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccDcabNbQcTbaaraearalalalcWalbucXacacadcUaccYdacZdcdbadbVacadaccbbVababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaccbacacbWadadafdddfalalalaldgdidhatatdkdjdmdldodndodpdrdqdtdsaccRbVababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababadcbacdwdvdydxalaldAdzdzdzdCdBdEdDdGdFdHbudIardIaldIaldIdJdhdKaccdbWababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaddMdLdOdNdPatdQalaydRdRdRdRdSdTdhdUalaldVdIaldIaldIaldIdWdhdXadccbVababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababacacacdZdYebeaecaleddRefeedRegdTdhatatalaldIaldIaldIaldIehdheiadccbVababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
@@ -1398,86 +1397,86 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababadadacacadadaccJfzacacacacacadadababababababababfefAftftfBfkfCfDfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababfbfFfEfbababababababababababababababfefGftfHfbfJeSfKfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababzczczczczczczczczczczcabfbfRfQfbababababababababababababababfefefSfbfbfefbfxfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfLfLfLfLfMfLfLabababababababababababababababababababfNfNfOfOababzcfPfPfPfPfPfPfPfPfPzcabfbfTfFfbababababababababababababababfbfVfUfYfWfZfegbfXabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfLfLfLfLfMfLfLabababababababababababababababababababfNfNfOfOababzcfPfPfPfPfPfPfPfPfPzcabfbfFfFfbababababababababababababababfbfVfUfYfWfZfegbfXabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababfMgggcghgcghfLfLfMfLababababgagagagagagagagagafNfNfOfOgjgifOfOabzcfPgdgdgegfgdgdgdfPzcabfbfRfRfbabababababfbfbfbfbfbfbfbfefbfbgkgkgkgkglfedefXabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababfMgggngrgogggsgugtfLfMfLfMfMgagpgpgpgqhGgpgpgafOgvgygwgAgzgBfNabzcfPgdgdgegxgdgdgdfPzcabfegDgCfbabababababfbgEgGgFgIgHgKgJgLfbgNgMgOgkgPfefxfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfLghgQgSgRghgsgVgTfMfjgYgXfLgagpgpgpgUhWgpgpgafNgZhbhahdhchefNabzcfPgdgdgdgdgdgegdfPzcabfbhffFfbabababababfbhghhgEhjhihlhkhkhmhohnhqhphshrhtfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfLghhuhwhvghgshyhxfMhzhBhAfLgagpgpgpgphWgpgpgafOhCighFhdhHhIfNabzcfPhDgegdgegdgdhEfPzcabfbhJfFfbabababababfbhKhLgEhNhMgEgEhOfehPgOhQgkhRfbgbfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfMhThShYhXhSgshyhZfLfLiafLfLgahUgphVgpmimhmxgafOibihicijiiikfNabzcidiegdifgdgdmygefPzcabfbhJfTfbabababababfbilhhgEhNimgEgEioiniqipgkgkirfefyfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfMiufIiwiviziyiGiEixiHiJiAiBiCiDgagaiOiOgaiFgafNiPiQgAfOfNfNfOabzciIfPfPfPiRiRiKiLiLjmiMiNiSfTfeabababababfbiTgEiohjhMgEgEiUfbiWiVgkfUiXfbiYfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfMjamliwiZjbgsghghjdjcjkfMababababjgjnjnjgjifOfOjojpgzfOababababzcyXzczcyYjqjqyYzczczcabfejsjrfefeababababfejtjugEiohMjyjvjAfbfbjBjwjwjxjxgmjzabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababfLjEjDiwjFjHfLfLfMfMjIjJfMababababjGjKjKjGjifOfOjLjNjMfOabababababjlababjGjOjOjGababababfbjPfRgWfefbfbfbfefejRjShhjThjhjgEgEjUjWjVjYjXkaiskbfeabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfLghgQgSgRghgsgVgTfMfjgYgXfLgagpgpgpgUhWgpgpgafNagahaiaphchefNabzcfPgdgdgdgdgdgegdfPzcabfbhffFfbabababababfbhghhgEhjhihlhkhkhmhohnhqhphshrhtfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfLghhuhwhvghgshyhxfMhzhBhAfLgagpgpgpgphWgpgpgafOhCighFaphHhIfNabzcfPhDgegdgegdgdhEfPzcabfbhJfFfbabababababfbhKhLgEhNhMgEgEhOfehPgOhQgkhRfbgbfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfMhThShYhXhSgshyhZfLfLiafLfLgahUgphVgpmimhmxgafOcOcVfTgZiiikfNabzcidiegdifgdgdmygefPzcabfbhJfFfbabababababfbilhhgEhNimgEgEioiniqipgkgkirfefyfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfMhafIiwivhbiyiGiEixiHiJiAiBiCiDgagaiOiOgaiFgafNiPiQgAfOfNfNfOabzciIfPfPfPiRiRiKiLiLjmiMiNiSfFfeabababababfbiTgEiohjhMgEgEiUfbiWiVgkfUiXfbiYfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfMhdmliwiZjbgsghghjdjcjkfMababababjgjnjnjgjifOfOjojpgzfOababababzcyXzczcyYjqjqyYzczczcabfejsjrfefeababababfejtjugEiohMjyjvjAfbfbjBjwjwjxjxgmjzabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababfLibiciwjFjHfLfLfMfMjIjJfMababababjGjKjKjGjifOfOjLjNjMfOabababababjlababjGjOjOjGababababfbjPfRgWfefbfbfbfefejRjShhjThjhjgEgEjUjWjVjYjXkaiskbfeabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababfMfLfMkdkcfLfLkkkifMklkqfLfOfOfOfOkekfkgkekhfNkrkjktksfOfOfOfOfOfOkmfOfOknkokpkefOfOfNfOfOkufRfRkvfRfFfRfRjrgEgEgEkwiogEkxkykykAkzfbitkDkCfefbabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababfLkEiwkFahkGkRkHixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglflhfOljlilkfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababfLlxlzlylElylClBmMlDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlflhlZgAgAgAlZmbmafFmcfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltnBmzmjltabababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababfMmkmmmliwjHjHjjfLmompfMfNfOfOfOfNfOfOmqfOfOmsmrfOfOfOmtfOfOfOfNmumumumumvlflhfOokmwqDtDqKfEmBmAfbmCmDmCfemEmGmFfefefbfbfefbmImHfeababababababababababababababababababltmKmJmjltabababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababfLmLmlmNmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOmRfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbnumHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababfLkEiwmlihkGijiuixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglfizfOjajDjEfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababfLlxlzlylElylClBmMlDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlfizlZgAgAgAlZmbmafFkFfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltnBmzmjltabababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababfMmkkHmliwjHjHjjfLmompfMfNfOfOfOfNfOfOmqfOfOmsmrfOfOfOmtfOfOfOfNmumumumumvlfizfOkRlhlitDqKfEljlkfbmCmDmCfemEmGmFfefefbfbfefbmcmHfeababababababababababababababababababltmKmJmjltabababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababfLmLmlmNmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOmRfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbjPmHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababfLfLfMfMfLfLfMfMfLababababfOgAgAgAfOnwmUnxfOmRnyfOnzojnAnDnanafNnFnEnGmumvnCfNnHjCnInInKnMnLnOnNfbfXnPfbfefXnQfbfbnRfFnSnVnUnZnWfbabababababababababababababababababnToaobobobocnpababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababfOnXnYgAodgAoeoffOkmogfOohojoiooonopfNoroqosmumvlbfNogzHolomomouotowovoyoxoAozoCoBoAoDoFoEoHoGoJoIoNoMfbabababababababababababababababababnToOoQoPoQoOnpnpnpnpabababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababfOoKoLgAfOoSoRoTfOkmjQfOoVojoWoYoXoZfNpbpapdpcmvlbfOnymRfOfOfbjellllpgpiphpkpjplphpnpmpppopkpqprfbptpsfeabababababababababababababababababnppwpypxpApznppupvnpabababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababfOfOfOfOfOfOfOfOfNpDjZfOpEpFnapGnaoXfOfOpBkmfOmvlafNkBmRfOfOfbpJpIfRpKfbpLfbfhfepMfbfbfepNfbfbpOfbpRmHfbabababababababababababababababababnppSpYpUpYpZnTpPpQnpabababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNqbjifOfOfOqcfOpTqdpTpTpVpWpXqfqeqaogkmfOfOfbjhjfqkqjfeqlqmqhqoqnfeqpqtqqqwfelAfehJmHfbababababababababnTnTnpnpnTababababnpqyqyqzqyqynpqrqsnpnpnpabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOmnkhquqvmuqBqCpTqFzOpTpVqHqGqJqIqaogmRfOfOfbqEzPzQzQzPqLqMfbqOqNfbfbfbqPqQfeqRfbhJmHfbababababababababnTqTqSqSnpnTnTnTnpnpqUqWqVqYqXrcqZrerdrfnpabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOrgjirarbrjrirkpTqFqFpTrhroqJqJrpqanJrlrmrmrmrnrmrsrrsartmCfbrvrufbrwrxqqryfbrzfbrBrAfbfbfbfbfefbfbfbfbnpoUrCrFrEnTrHrJrIrGrKrMrLrOrNrNrPrSrRrfnpnpnTnTababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNpekhqurQmurUrVpTrXrWpTpVrZrYscsbqakBmRsasgsfshsesirrsafefefefbfefbfefesjfbfbpffesmslsosnsqspsrsnstsssvsusxswszsysBsAsDsCsFsEsHsGsJsIsOsOsPsPsQsKsLsMnTababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrgkhfOfOfOfNfNpTpTsNpTpVsSsRsUsTqaogmRsarrrrsVsarrsWsaabababababfbsXsYqqsZferzfejPtanUtbtctbtdtbtftethtgtititktjtmtltotnsFtptrtqtttstvtutAtztBtwtxtynpababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNtGtFpCpHnInItCtDAitDtDtEtLtKtHtItItMkmsasasatNsatOtOsasasasaababfbtPqqqqsZferzfbtRtQfefbfbfbfefbfbfbfbnptTtStVtUnptWtYtXuatZubtzuducuerFrFuguhnpnpnTnTababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOufuiolomomujulukunqgukuouqupqiqxukuwusutsarruyuxrrrruxuzsgsaababfefeuDuAfefeqRfbuFuEfbababababababababnTuBuCuGnpnpuHuJuInpuKuMuLuOuNuQuPuSuRuTnTabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNuXuUuYfOfOfOfOqapVpXpXqauZuVpXfNfNfNfNabsarrrrrrrrrrrrsgrrsaababuWfefefefeqArzvbuFuEfbababababababababnTvdvcvivenpqyvjqynpnpvkvfnpvgvhnTvgvhnTnTabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOvnvmvofOabababqavqvpvsvrqJvtpXabababababsarrrrrrrrrrrrrrrrsaababuWuWuWvurqvvrDfbvyuEfbababababababababnpvBvzvCtivDtitovIvAvJvLvKnpvEvFnpvGvHnpababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOvNvMvPfNabababqavRvQqJqJqJvSvOabababababsavTsgvVrrrrvXvWvYsaababuWuWvUvZwbrTwcfewewdfbababababababababnpwfrFwhwgwjwiwpwkwrwqqVwsnpwlwmnpwnwonpababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOfOfNfNfOabababqawwwtqJqJqJwxqaabababababsarrwyrrrrrrwzwyrrsaabababwuwvwvwvwuwAwvwCwBwvababababababababnTwEwDwGwFwIwHwKwJrGwLwNwMnpnpnpnpnpnpnpababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababqawPwOwRwQwTwSqaabababababsawUrrwVwXrrwVrrwUsaabababwuwZwYxawWsdxbxexdwvababababababababnTnTnpxgxfxhnTnpnTnTnpnpnTnTababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababfOnXnYgAodgAoeoffOkmogfOohojoiooonopfNoroqosmumvlbfNogzHolomomouotowovoyoxoAozoCoBoAoDoFoEmmoGoJoIoNoMfbabababababababababababababababababnToOoQoPoQoOnpnpnpnpabababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababfOoKoLgAfOoSoRoTfOkmjQfOoVojoWoYoXoZfNpbpapdpcmvlbfOnymRfOfOfbjellllpgpiphpkpjplphpnpmppmwpkpqprfbptpsfeabababababababababababababababababnppwpypxpApznppupvnpabababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababfOfOfOfOfOfOfOfOfNpDjZfOpEpFnapGnaoXfOfOpBkmfOmvlafNkBmRfOfOfbpJpIfRpKfbpLfbfhfepMfbfbfepNfbfbpOfbmAmHfbabababababababababababababababababnppSpYpUpYpZnTpPpQnpabababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNqbjifOfOfOqcfOpTmBpTpTpVpWpXqfqeqaogkmfOfOfbjhjfqkqjfeqlqmqhqoqnfeqpqtqqqwfelAfehJmHfbababababababababnTnTnpnpnTababababnpqyqyqzqyqynpqrqsnpnpnpabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOmnkhquqvmuqBqCpTqFzOpTpVqHqGqJqIqaogmRfOfOfbqEzPzQzQzPqLqMfbqOqNfbfbfbqPqQfeqRfbhJmHfbababababababababnTqTqSqSnpnTnTnTnpnpqUqWqVqYqXrcqZremInunpabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOrgjirarbrjrirkpTqFqFpTrhroqJqJrpqanJrlrmrmrmrnrmrsrrsartmCfbrvrufbrwrxqqryfbrzfbrBokfbfbfbfbfefbfbfbfbnpoHoUrFrEnTrHrJrIrGrKrMrLrOrNrNpopRqdnunpnpnTnTababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNpekhqurQmurUrVpTrXrWpTpVrZrYscsbqakBmRsasgsfshsesirrsafefefefbfefbfefesjfbfbpffesmslsosnsqspsrsnstsssvsusxswszsysBsAsDsCsFrOsHsGsJsIsOsOsPsPsQsKsLsMnTababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrgkhfOfOfOfNfNpTpTsNpTpVsSsRsUsTqaogmRsarrrrsVsarrsWsaabababababfbsXsYqqsZferzfejPtanUtbtctbtdtbtftethtgtititktjtmtltotnsFqDtrtqtttstvtutAtztBtwtxtynpababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNtGtFpCpHnInItCtDAitDtDtEtLtKtHtItItMkmsasasatNsatOtOsasasasaababfbtPqqqqsZferzfbtRtQfefbfbfbfefbfbfbfbnptTtStVtUnptWtYtXuatZubtzuducuerFrFugrdnpnpnTnTababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOufuiolomomujulukunqgukuouqupqiqxukuwusutsarruyuxrrrruxuzsgsaababfefeuDuAfefeqRfbuFuEfbababababababababnTuBuCuGnpnpuHuJuInprfuMuLrAuNuQrCuSuRuTnTabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrPrRrSfOfOfOfOqapVpXpXqauZuVpXfNfNfNfNabsarrrrrrsdrrrrsgrrsaababuWfefefefeqArzvbuFuEfbababababababababnTvdvcvisknpqyvjqynpnpvkvfnpvgvhnTvgvhnTnTabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOsEvmtpfOabababqavqvpvsvrqJvtpXabababababsarrsdrrsdrrsdrrrrsaababuWuWuWvurqvvrDfbvyuEfbababababababababnpvBvzvCtitJtitovIvAuhumuunpvEvFnpvGvHnpababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOuvuKuOfNabababqavRvQqJqJqJvSvOabababababsavTsgvVrrsdvXvWvYsaababuWuWvUvZwbrTwcfewewdfbababababababababnpwfuPwhwgwjuUuXwkwrwqqVuYnpwlwmnpwnwonpababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOfOfNfNfOabababqawwwtqJqJqJwxqaabababababsarrwyrrrrrrwzwyrrsaabababwuwvwvwvwuwAwvwCwBwvababababababababnTwEvavewFwIvnwKwJrGvovwvxnpnpnpnpnpnpnpababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababqawPwOwRwQwTwSqaabababababsawUrrvDwXrrwVrrwUsaabababwuwZwYxawWvJvKyLxdwvababababababababnTnTnpxgxfxhnTnpnTnTnpnpnTnTababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababqaqaqaqaqaqaqaqaabababababsasasasasasasasasasaabababwuxjxixlxkxnxmxpxowvabababababababababnpxqxsxrxtnpxunpabababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwvwuwuwuxwxvxyxxwvabababababababababnpxzxBxAxDxCxEnTabababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvxFxixHxGxmxIxpxJwvabababababababababnpxKxMxLxNnpnpnTabababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwZxOxPwWxRxQxTxSwuabababababababababnpxUxWxVxYxXnpababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwvwuwuwuvLxvxyvMwvabababababababababnpxzxBxAxDxCxEnTabababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvxFxixHxGxmxIxpvNwvabababababababababnpxKxMxLxNnpnpnTabababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwZxOxPwWvPxQxTxSwuabababababababababnpxUxWxVxYxXnpababababababababababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwuwvwvwvwvwuyaxZwuabababababababababnpybydycnpnpnTababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvyeygyfyiyhwvwvwuwuwuabababababnpnTnTnpnpababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvyjylykyiymypyoyoyqwuababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvyrynysxpytyvyuyxywwvababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyyylyzyByAyEyDyGyFwuababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyeyCyJyLyKypyMyHyIwvababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvyeyOyNyQskwuwuwvwuwuababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwvwuypySyRwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyTyVtJyWwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuzfyQzfzfwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwuzjzfzkwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvzlzfzfwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyQzfzfwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuurzfvlwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyZzfwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyZzfwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuzazfzbwuabababababababababababababababababababababababababababababababababababababababababababababababab
-zczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczdzdzdzezmzdzdzdzdzdzdzdzdzczczczczczczczczczczczczcpTpTpTpTpTzczczczczczczczczczczczczczczczczczczczczczczczc
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzdzhziagzhzhzgzgzgzgzdzgabababababababababababababpTzoznzppTabababababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzdzhzqagagzhzgzgzgzgzdzgabababababababababababababpTztzszupTababababababzruWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWabababababzgzdzhzqagagzhzgzgzgzgzdzgabababababababababababababpTzvzszspTababzruWuWuWuWzrabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWababababzgzdzhzqagzwzhzgzgzgzgzdzgabababababababababababababpTpTzxpTpTabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababzgzdzhzqaiagzhzgzgzgzgzdzgababababababababababababuWuWuWuWabababuWuWabuWuWuWuWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWzruWuWuWababababababababababuWuWuWabzgzdzhzqagzAzhzgzgzgzgzdzgabuWuWuWuWuWuWabababababuWababababuWzruWabzruWuWuWuWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababuWababababababababababababababababababababababababababuWuWuWuWababababababababababababuWuWuWzyzdzyzzzBzyzyzyzyzgzgzdzguWuWabababuWuWuWabababuWuWuWuWuWuWuWuWuWabuWuWuWuWuWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababuWuWabababababababababababababababababababababababababuWuWuWababababababababababababababuWuWzyzdzyzzagzFzCzAzyzyzyzdzguWabababababuWababababuWabababuWuWuWabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababuWuWabababababababababababababababababababababababuWuWzrabababababababababababababababuWuWzBagzGzqaiagagzAzAzyzyzdzguWababuWabuWuWabababababababuWuWuWababababuWuWuWuWuWuWababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWababababababababababababababababababababuWuWuWabababababababababababababababababuWzyzdzyzKagagagzAzJzyzyzdzguWababuWabuWabababababababuWuWuWababababababuWuWuWuWzrababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababuWuWuWababababababababuWuWuWuWuWabababababuWuWuWabababababababababababababababababababzyzdzyzKzAagagaizAzyzyzdzyuWababuWuWuWababuWababababuWuWabababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababuWuWuWuWuWuWuWuWabababuWuWzrabababababababababababababababababababzyzdzyzMzAzAagagagagzyzdzyuWababuWuWabababuWababababuWuWabababababababzruWuWuWuWababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWuWuWuWuWuWababababababuWuWuWabuWuWababababababababababababababababababababzyzdzyzMzAzCagagagagzyzdzyuWabababababababuWuWababuWuWababababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababuWuWuWabababababababababababuWuWuWuWababababababababababababababababababababzyzdzyzMzAzAagagagagzGagzBuWuWuWabababababuWuWababuWuWabababababababababuWuWuWabababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWabababababababababababababababuWuWababababababababababababababababababababzyzdzgzMzAagagaizAzgzyzdzyuWuWuWuWuWuWababuWuWababuWuWabababababuWuWuWuWuWuWababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababababababababababababababuWababababababababababababababababababababzyzdzgzKzAagagagzAzgzgzdzyabuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWuWababababababababababababuWzruWababababuWuWuWabababababababababuWababababababababzyzdzgzKaiagagagzAzAzgzdzyabuWuWuWuWuWuWuWuWuWuWababababababababababuWuWuWabababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababuWabababababababababababababuWuWuWuWuWuWzrababababuWuWuWuWabababababuWuWababuWabababababzyzdzgafaezNzLagzAzAzgzdzyababuWuWuWuWuWuWuWuWababababababababababuWuWuWuWabababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababzruWuWuWuWuWuWuWababababababuWuWuWababababuWababuWabababababzyzdzyzqagzAzgagzCagzgzdzyabababuWuWuWuWuWuWuWabababuWuWuWuWabababuWabuWuWabababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWababababababuWababababuWababuWuWababababzyzdzyzqagagzgagzAzAzgzdzyababuWuWuWuWababuWuWabababuWabababababuWuWuWuWababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWzruWuWuWuWabababuWuWuWababababuWababuWuWabababuWzyzdzyzqzCzgzgzgzAzAzgzdzyababuWuWababababuWuWuWababuWababababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWzruWuWuWabuWuWuWzruWuWuWuWuWababababababuWababuWuWabuWuWuWzBagzGzqzAzgzgzgzgzAzgzdzyabuWuWuWuWuWabababuWuWababuWuWabababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWzyzdzyzqzAagzgzgagagzyzdzyuWuWuWababuWuWababuWuWuWababuWababuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababababzyzdzgzqagzAzgagzAaizGagzBuWuWababababuWabababuWuWababuWuWabuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababzyzdzgzqagaizFagagagzyzdzyabuWababuWabuWuWababuWuWabababuWuWuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWuWabababzyzdzgzqagagagaiagagzyzdzyabuWuWuWuWababuWababuWuWuWababuWuWuWuWuWuWababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababuWuWuWababzyzdzgzMagagagagagzgzyzdzyabababababababuWabababuWuWabuWuWuWabuWuWuWababababababababababababababaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababuWuWuWabzyzdzyzMzgagagagzgzgzyzdzyababababababuWuWababababuWuWuWuWabuWuWuWabababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvwawiwpyiwswvwvwuwuwuabababababnpnTnTnpnpababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvwDylykyiymypwGwGyqwuababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvwHynwLxpytyvwMyxywwvababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwNylyzyByAyEyDyGxbwuababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwayCyJyLxcypyMyHyIwvababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvwaxexwxxxJwuwuwvwuwuababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwvwuypxRyRwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyeyfygyhwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyzxxyzyzwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuwuyjyzyowuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwvyryzyzwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuxxyzyzwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuuryzvlwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyZyzwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyZyzwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuzayzzbwuabababababababababababababababababababababababababababababababababababababababababababababababab
+zczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczdzdzdzeyszdzdzdzdzdzdzdzdzczczczczczczczczczczczczcpTpTpTpTpTzczczczczczczczczczczczczczczczczczczczczczczczc
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzdzhziyuzhzhzgzgzgzgzdzgabababababababababababababpTzoznzppTabababababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzdzhyyyuyuzhzgzgzgzgzdzgabababababababababababababpTztzszupTababababababzruWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWabababababzgzdzhyyyuyuzhzgzgzgzgzdzgabababababababababababababpTzvzszspTababzruWuWuWuWzrabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWababababzgzdzhyyyuyFzhzgzgzgzgzdzgabababababababababababababpTpTzxpTpTabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababzgzdzhyyyKyuzhzgzgzgzgzdzgababababababababababababuWuWuWuWabababuWuWabuWuWuWuWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWzruWuWuWababababababababababuWuWuWabzgzdzhyyyuyNzhzgzgzgzgzdzgabuWuWuWuWuWuWabababababuWababababuWzruWabzruWuWuWuWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababuWababababababababababababababababababababababababababuWuWuWuWababababababababababababuWuWuWzyzdzyzzyOzyzyzyzyzgzgzdzguWuWabababuWuWuWabababuWuWuWuWuWuWuWuWuWabuWuWuWuWuWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababuWuWabababababababababababababababababababababababababuWuWuWababababababababababababababuWuWzyzdzyzzyuyPyQyNzyzyzyzdzguWabababababuWababababuWabababuWuWuWabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababuWuWabababababababababababababababababababababababuWuWzrabababababababababababababababuWuWySyuyTyyyKyuyuyNyNzyzyzdzguWababuWabuWuWabababababababuWuWuWababababuWuWuWuWuWuWababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWababababababababababababababababababababuWuWuWabababababababababababababababababuWzyzdzyyUyuyuyuyNyVzyzyzdzguWababuWabuWabababababababuWuWuWababababababuWuWuWuWzrababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababuWuWuWababababababababuWuWuWuWuWabababababuWuWuWabababababababababababababababababababzyzdzyyUyNyuyuyKyNzyzyzdzyuWababuWuWuWababuWababababuWuWabababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababuWuWuWuWuWuWuWuWabababuWuWzrabababababababababababababababababababzyzdzyzMyNyNyuyuyuyuzyzdzyuWababuWuWabababuWababababuWuWabababababababzruWuWuWuWababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWuWuWuWuWuWababababababuWuWuWabuWuWababababababababababababababababababababzyzdzyzMyNyQyuyuyuyuzyzdzyuWabababababababuWuWababuWuWababababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababuWuWuWabababababababababababuWuWuWuWababababababababababababababababababababzyzdzyzMyNyNyuyuyuyuyWzfySuWuWuWabababababuWuWababuWuWabababababababababuWuWuWabababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWabababababababababababababababuWuWababababababababababababababababababababzyzdzgzMyNyuyuyKyNzgzyzdzyuWuWuWuWuWuWababuWuWababuWuWabababababuWuWuWuWuWuWababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababababababababababababababuWababababababababababababababababababababzyzdzgyUyNyuyuyuyNzgzgzdzyabuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWuWababababababababababababuWzruWababababuWuWuWabababababababababuWababababababababzyzdzgyUyKyuyuyuyNyNzgzdzyabuWuWuWuWuWuWuWuWuWuWababababababababababuWuWuWabababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababuWabababababababababababababuWuWuWuWuWuWzrababababuWuWuWuWabababababuWuWababuWabababababzyzdzgzjzkzlzmyuyNyNzgzdzyababuWuWuWuWuWuWuWuWababababababababababuWuWuWuWabababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababzruWuWuWuWuWuWuWababababababuWuWuWababababuWababuWabababababzyzdzyyyyuyNzgyuyQyuzgzdzyabababuWuWuWuWuWuWuWabababuWuWuWuWabababuWabuWuWabababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWababababababuWababababuWababuWuWababababzyzdzyyyyuyuzgyuyNyNzgzdzyababuWuWuWuWababuWuWabababuWabababababuWuWuWuWababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWzruWuWuWuWabababuWuWuWababababuWababuWuWabababuWzyzdzyyyyQzgzgzgyNyNzgzdzyababuWuWababababuWuWuWababuWababababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWzruWuWuWabuWuWuWzruWuWuWuWuWababababababuWababuWuWabuWuWuWySzfyWyyyNzgzgzgzgyNzgzdzyabuWuWuWuWuWabababuWuWababuWuWabababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWzyzdzyyyyNyuzgzgyuyuzyzdzyuWuWuWababuWuWababuWuWuWababuWababuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababababzyzdzgyyyuyNzgyuyNyKyWzfySuWuWababababuWabababuWuWababuWuWabuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababzyzdzgyyyuyKyPyuyuyuzyzdzyabuWababuWabuWuWababuWuWabababuWuWuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWuWabababzyzdzgyyyuyuyuyKyuyuzyzdzyabuWuWuWuWababuWababuWuWuWababuWuWuWuWuWuWababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababuWuWuWababzyzdzgzMyuyuyuyuyuzgzyzdzyabababababababuWabababuWuWabuWuWuWabuWuWuWababababababababababababababaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababuWuWuWabzyzdzyzMzgzfyuzfzgzgzyzdzyababababababuWuWababababuWuWuWuWabuWuWuWabababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababababuWuWabzgzdzdzezdzRzRzRzdzdzdzdzgababuWuWuWuWuWabababuWuWuWuWabuWuWuWuWababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababababababababababuWuWuWzgzdzSzTzUzSzSzSzVzWzSzdzgabababababababababuWuWuWuWuWuWuWabababababababababababababababababababaaaaaaaaaaaaaa
aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWabababababababababababababuWuWzgzdzSzXzYzSzSzSzZzYAazdzgabababababababuWuWuWuWuWuWababababababababababababababababababababababaaaaaaaaaaaaaa
@@ -1496,4 +1495,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-"}
\ No newline at end of file
+"}
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index a6e1cc84f7c..72abcbc1ce4 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -340,9 +340,9 @@
"agB" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "open"; id_tag = "voxshutters"; 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/simulated/shuttle/plating/vox,/area/shuttle/vox)
"agC" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25; req_access_txt = "152"},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
"agD" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
-"agE" = (/obj/machinery/sleeper/syndie{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"agF" = (/obj/structure/table,/obj/item/gun/syringe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"agG" = (/obj/structure/table,/obj/item/reagent_containers/syringe/charcoal,/obj/item/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/reagent_containers/syringe/charcoal{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"agE" = (/obj/structure/table/glass,/obj/item/storage/backpack/duffel/syndie/surgery_fake,/obj/item/circular_saw,/obj/item/surgicaldrill,/obj/item/clothing/gloves/color/latex/nitrile,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"agF" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"agG" = (/obj/structure/table,/obj/item/reagent_containers/syringe/charcoal,/obj/item/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/reagent_containers/syringe/charcoal{pixel_y = 4},/obj/item/gun/syringe/syndicate,/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/adv,/obj/item/storage/box/syndie_kit/bonerepair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"agH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"agI" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"agJ" = (/obj/structure/table,/obj/item/radio/beacon/syndicate/bomb{pixel_y = 5},/obj/item/radio/beacon/syndicate/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
@@ -383,9 +383,9 @@
"ahs" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/vox)
"aht" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; req_one_access_txt = "152"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox)
"ahu" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access_txt = "152"; req_one_access = null; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
-"ahv" = (/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 = "floor4"},/area/shuttle/syndicate)
+"ahv" = (/obj/structure/closet/crate/medical,/obj/item/reagent_containers/glass/bottle/morphine,/obj/item/storage/box/beakers,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/obj/item/clothing/mask/surgical,/obj/item/reagent_containers/blood/OMinus,/obj/item/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/r_leg,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"ahw" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"ahx" = (/obj/structure/closet/crate/medical,/obj/item/reagent_containers/glass/bottle/morphine,/obj/item/storage/box/beakers,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"ahx" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"ahy" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/syndicate)
"ahz" = (/obj/structure/computerframe,/obj/item/paper/synditele,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"ahA" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
@@ -578,7 +578,7 @@
"alf" = (/obj/machinery/vending/security,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury)
"alg" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury)
"alh" = (/obj/effect/decal/warning_stripes/red/hollow,/obj/structure/closet/l3closet/security,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury)
-"ali" = (/obj/effect/decal/warning_stripes/red/hollow,/obj/structure/closet/bombcloset,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury)
+"ali" = (/obj/effect/decal/warning_stripes/red/hollow,/obj/structure/closet/bombclosetsecurity,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury)
"alj" = (/obj/machinery/light_switch{pixel_x = -25},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
"alk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/light,/obj/machinery/door_control{id = "Secure Armory"; name = "Secure Armory Shutter Control"; pixel_x = 7; pixel_y = -28; req_access_txt = "3"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
"all" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
@@ -1400,7 +1400,7 @@
"aAV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/lobby)
"aAW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/lobby)
"aAX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/lobby)
-"aAY" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"aAY" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aAZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/security/lobby)
"aBa" = (/obj/structure/chair{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/lobby)
"aBb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/lobby)
@@ -1425,7 +1425,7 @@
"aBu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "63"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aBv" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall,/area/maintenance/fsmaint)
"aBw" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
-"aBx" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "bar_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"aBx" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"aBy" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/space)
"aBz" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/security/prisonershuttle)
"aBA" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/security/prisonershuttle)
@@ -1491,7 +1491,7 @@
"aCI" = (/obj/item/radio/intercom{pixel_x = 28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/A)
"aCJ" = (/obj/structure/bed,/obj/machinery/flasher{id = "Cell 3"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison/cell_block/A)
"aCK" = (/obj/machinery/power/treadmill{dir = 4},/obj/structure/cable/yellow,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/treadmill_monitor{id = "Cell 3"; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison/cell_block/A)
-"aCL" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_1)
+"aCL" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "bar_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"aCM" = (/obj/item/shard,/obj/item/stack/rods,/obj/item/airlock_electronics,/turf/simulated/floor/plating{dir = 9; icon_regular_floor = "escape"},/area/maintenance/abandonedbar)
"aCN" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/abandonedbar)
"aCO" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
@@ -1500,7 +1500,7 @@
"aCR" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "escape"},/area/maintenance/abandonedbar)
"aCS" = (/obj/item/lighter/random,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
"aCT" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite)
-"aCU" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1)
+"aCU" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_1)
"aCV" = (/obj/structure/table/wood,/obj/item/trash/plate,/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
"aCW" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/bottle/patron,/obj/item/storage/fancy/cigarettes/cigpack_shadyjims,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"aCX" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0; req_access_txt = "150"},/obj/docking_port/mobile{dir = 8; dwidth = 3; height = 5; id = "sst"; name = "SST shuttle"; roundstart_move = "sst_away"; width = 11},/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "sst_home"; name = "northwest of station"; width = 11},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite)
@@ -1557,7 +1557,7 @@
"aDW" = (/obj/structure/door_assembly,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"aDX" = (/obj/item/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating{dir = 4; icon_regular_floor = "escape"},/area/maintenance/abandonedbar)
"aDY" = (/obj/item/stack/tile/plasteel,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
-"aDZ" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_2)
+"aDZ" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1)
"aEa" = (/obj/structure/table/wood,/obj/item/trash/can,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
"aEb" = (/obj/machinery/computer/pod{id_tags = list("syndicate_elite"); name = "Hull Door Control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite)
"aEc" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
@@ -1608,7 +1608,7 @@
"aEV" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "escape"},/area/maintenance/abandonedbar)
"aEW" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/maintenance/abandonedbar)
"aEX" = (/obj/item/trash/pistachios,/obj/machinery/light_construct,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
-"aEY" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2)
+"aEY" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_2)
"aEZ" = (/obj/machinery/light,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"aFa" = (/obj/structure/sign/poster/contraband/random{pixel_x = 32},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
"aFb" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/condiment/saltshaker,/obj/item/reagent_containers/food/condiment/peppermill,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
@@ -1709,7 +1709,7 @@
"aGS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"aGT" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard)
"aGU" = (/obj/machinery/power/solar_control{id = "auxsolareast"; name = "Fore Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
-"aGV" = (/turf/simulated/floor/plating{icon_state = "panelscorched"},/area/maintenance/fsmaint2)
+"aGV" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2)
"aGW" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"aGX" = (/turf/simulated/wall,/area/maintenance/fsmaint2)
"aGY" = (/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
@@ -1756,7 +1756,7 @@
"aHN" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aHO" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aHP" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/fsmaint2)
-"aHQ" = (/turf/space,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/fpmaint)
+"aHQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aHR" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air{filled = 0.1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aHS" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aHT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
@@ -2254,7 +2254,7 @@
"aRr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aRs" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aRt" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
-"aRu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "panelscorched"},/area/maintenance/fsmaint2)
+"aRu" = (/turf/space,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/fpmaint)
"aRv" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
"aRw" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva)
"aRx" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva)
@@ -2483,7 +2483,7 @@
"aVM" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness)
"aVN" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aVO" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
-"aVP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/grille/broken,/obj/structure/window/basic{dir = 4},/obj/structure/window/basic,/turf/simulated/floor/plating{icon_state = "panelscorched"},/area/maintenance/fsmaint2)
+"aVP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/grille/broken,/obj/structure/window/basic{dir = 4},/obj/structure/window/basic,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aVQ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "maint1"; name = "Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aVR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "maint1"; name = "Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aVS" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/arrival/station)
@@ -3318,7 +3318,7 @@
"blP" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port)
"blQ" = (/turf/simulated/wall,/area/maintenance/port)
"blR" = (/turf/simulated/wall,/area/storage/emergency2)
-"blS" = (/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/hallway/primary/central/nw)
+"blS" = (/turf/simulated/floor/plasteel{icon_state = "stairs-l"},/area/hallway/primary/central/nw)
"blT" = (/turf/simulated/wall,/area/civilian/pet_store)
"blU" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge)
"blV" = (/obj/machinery/door/airlock/public/glass{name = "Pet Store"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/civilian/pet_store)
@@ -3331,7 +3331,7 @@
"bmc" = (/turf/simulated/wall/r_wall,/area/bridge)
"bmd" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/bridge)
"bme" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/status_display{density = 0; layer = 4},/turf/simulated/floor/plating,/area/bridge)
-"bmf" = (/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/hallway/primary/central/ne)
+"bmf" = (/turf/simulated/floor/plasteel{icon_state = "stairs-m"},/area/hallway/primary/central/nw)
"bmg" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"bmh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bmi" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne)
@@ -3602,7 +3602,7 @@
"brn" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/reagent_containers/food/drinks/bottle/cream,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bro" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"brp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
-"brq" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/transport)
+"brq" = (/turf/simulated/floor/plasteel{icon_state = "stairs-r"},/area/hallway/primary/central/nw)
"brr" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/hydroponics)
"brs" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/hydroponics)
"brt" = (/obj/machinery/hydroponics/constructable,/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics)
@@ -4245,10 +4245,10 @@
"bDG" = (/obj/structure/chair{dir = 4},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops)
"bDH" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "109"},/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 11; id = "specops"; name = "ert shuttle"; roundstart_move = "specops_away"; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "specops_home"; name = "port bay 2"; width = 5},/turf/simulated/shuttle/plating,/area/shuttle/specops)
"bDI" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
-"bDJ" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bDK" = (/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32},/obj/machinery/recycler,/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bDL" = (/obj/machinery/light/small{dir = 1},/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bDM" = (/obj/machinery/conveyor{dir = 9; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bDJ" = (/obj/machinery/conveyor/east{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bDK" = (/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32},/obj/machinery/recycler,/obj/machinery/conveyor/east{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bDL" = (/obj/machinery/light/small{dir = 1},/obj/machinery/conveyor/east{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bDM" = (/obj/machinery/conveyor/southeast{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bDN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bDO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bDP" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/port)
@@ -4311,12 +4311,12 @@
"bEU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port)
"bEV" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"bEW" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
-"bEX" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bEY" = (/obj/machinery/conveyor{dir = 5; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bEX" = (/obj/machinery/conveyor/west{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bEY" = (/obj/machinery/conveyor/southwest/ccw{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bEZ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port)
"bFa" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bFb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
-"bFc" = (/obj/machinery/conveyor{dir = 10; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bFc" = (/obj/machinery/conveyor/southwest{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bFd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bFe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"bFf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -4421,7 +4421,7 @@
"bHa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"bHb" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/quartermaster/storage)
"bHc" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office)
-"bHd" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bHd" = (/obj/structure/sign/vacuum{pixel_x = -32},/obj/machinery/conveyor/south{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bHe" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; layer = 3; name = "interior door"; req_access_txt = "50"},/obj/machinery/disposal/deliveryChute{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
"bHf" = (/obj/machinery/mineral/stacking_machine{input_dir = 1; stack_amt = 10},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bHg" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -4503,7 +4503,7 @@
"bIE" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/shuttle/escape)
"bIF" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape)
"bIG" = (/obj/item/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
-"bIH" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bIH" = (/turf/simulated/floor/plating,/area/maintenance/disposal)
"bII" = (/obj/effect/decal/warning_stripes/north,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bIJ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bIK" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -4531,7 +4531,7 @@
"bJg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bJh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/bridge/meeting_room)
"bJi" = (/obj/structure/disposalpipe/sortjunction{dir = 1; name = "Sorting Office"; sortType = 2},/turf/simulated/floor/plasteel,/area/quartermaster/office)
-"bJj" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "packageExternal"},/turf/simulated/floor/plasteel,/area/quartermaster/office)
+"bJj" = (/obj/machinery/conveyor/south{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bJk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/bridge/meeting_room)
"bJl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/lattice,/turf/space,/area/space)
"bJm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
@@ -4602,7 +4602,7 @@
"bKz" = (/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bKA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bKB" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bKC" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Disposal Exit"; name = "Disposal Exit Vent"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bKC" = (/obj/machinery/conveyor_switch/oneway{id = "packageExternal"},/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bKD" = (/obj/machinery/driver_button{id_tag = "trash"; pixel_x = -26; pixel_y = -6},/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/maintenance/disposal)
"bKE" = (/obj/machinery/light_switch{pixel_x = 30},/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/disposal)
"bKF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/port)
@@ -4615,8 +4615,8 @@
"bKM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bKN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 8},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se)
"bKO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/quartermaster/office)
-"bKP" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/office)
-"bKQ" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/office)
+"bKP" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Disposal Exit"; name = "Disposal Exit Vent"; opacity = 0},/obj/machinery/conveyor/south{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bKQ" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/conveyor/east{id = "packageExternal"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/office)
"bKR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central/west)
"bKS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
"bKT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/bridge/meeting_room)
@@ -4689,7 +4689,7 @@
"bMi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bMj" = (/obj/machinery/light{dir = 8},/obj/machinery/computer/rdconsole/core,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/lab)
"bMk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bMl" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bMl" = (/obj/structure/plasticflaps{opacity = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/conveyor/east{id = "packageExternal"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/office)
"bMm" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bMn" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bMo" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/supply)
@@ -4774,7 +4774,7 @@
"bNP" = (/obj/effect/landmark/start{name = "Scientist"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/lab)
"bNQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bNR" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
-"bNS" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bNS" = (/obj/machinery/conveyor_switch/oneway{id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bNT" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bNU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Research Research and Development Lab"; dir = 8; network = list("Research","SS13")},/obj/item/stock_parts/manipulator,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/micro_laser,/obj/item/stock_parts/micro_laser,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
"bNV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
@@ -4972,18 +4972,18 @@
"bRF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "ramptop"; tag = "icon-stage_stairs"},/area/hallway/primary/starboard/east)
"bRG" = (/turf/simulated/shuttle/wall{dir = 4; 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/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bRJ" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/structure/plasticflaps/mining,/turf/simulated/shuttle/plating,/area/shuttle/supply)
-"bRK" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bRI" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bRJ" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"bRK" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bRL" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bRM" = (/obj/machinery/autolathe,/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bRN" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bRO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bRP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bRQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office)
-"bRR" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
-"bRS" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bRT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
+"bRR" = (/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
+"bRS" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bRT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bRU" = (/obj/machinery/recharge_station,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/assembly/chargebay)
"bRV" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/sw)
"bRW" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #2"},/obj/effect/decal/warning_stripes/yellow/hollow,/mob/living/simple_animal/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
@@ -5062,7 +5062,7 @@
"bTr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{id_tag = "supply_home"; name = "Cargo Docking Hatch"; req_access_txt = "31"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bTs" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #3"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bTt" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "31"},/turf/simulated/shuttle/floor,/area/shuttle/supply)
-"bTu" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bTu" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bTv" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor/plasteel,/area/quartermaster/office)
"bTw" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bTx" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/hallway/primary/central/sw)
@@ -5100,7 +5100,7 @@
"bUd" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 1},/area/medical/genetics)
"bUe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2)
"bUf" = (/obj/machinery/door/window/southright{dir = 2; name = "Primate Pen"; req_access_txt = "9"},/turf/simulated/floor/plasteel{dir = 1},/area/medical/genetics)
-"bUg" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bUg" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bUh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/east,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/primary/central/se)
"bUi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2)
"bUj" = (/obj/effect/decal/warning_stripes/blue,/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
@@ -5231,7 +5231,7 @@
"bWE" = (/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/eastright{dir = 1; icon_state = "left"; name = "Cryo Tank Storage"; req_access_txt = "0"; req_one_access_txt = "5;32"},/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning)
"bWF" = (/obj/machinery/clonepod/biomass,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning)
"bWG" = (/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/wall{icon_state = "wall3"},/area/shuttle/administration)
-"bWH" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/transport)
+"bWH" = (/turf/simulated/floor/plasteel{icon_state = "stairs-l"},/area/hallway/primary/central/ne)
"bWI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
"bWJ" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
"bWK" = (/obj/machinery/recharge_station/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
@@ -5240,7 +5240,7 @@
"bWN" = (/obj/structure/dispenser,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
"bWO" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"; tag = "icon-propulsion_l (EAST)"},/turf/space,/area/shuttle/administration)
"bWP" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "31"},/obj/docking_port/mobile/supply,/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_home"; name = "supply bay"; width = 12},/turf/simulated/shuttle/floor,/area/shuttle/supply)
-"bWQ" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
+"bWQ" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply)
"bWR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bWS" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "open"; id_tag = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central/sw)
"bWT" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel,/area/engine/break_room)
@@ -5324,9 +5324,9 @@
"bYt" = (/obj/machinery/door/airlock/public/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
"bYu" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"; tag = "icon-propulsion_r (EAST)"},/turf/space,/area/shuttle/administration)
"bYv" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration)
-"bYw" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bYx" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/shuttle/plating,/area/shuttle/supply)
-"bYy" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bYw" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bYx" = (/obj/machinery/light,/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/effect/decal/warning_stripes/north,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bYy" = (/obj/machinery/status_display/supply_display{pixel_y = -32},/obj/effect/decal/warning_stripes/north,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bYz" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor)
"bYA" = (/obj/structure/rack,/obj/item/aicard,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor)
"bYB" = (/obj/structure/lamarr,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor)
@@ -6931,7 +6931,7 @@
"cDo" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/genetics)
"cDp" = (/obj/item/lipstick/jade,/turf/simulated/floor/plating,/area/maintenance/genetics)
"cDq" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cDr" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cDr" = (/turf/simulated/floor/plasteel{icon_state = "stairs-m"},/area/hallway/primary/central/ne)
"cDs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/atmos)
"cDt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/atmos)
"cDu" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/misc_lab)
@@ -7225,7 +7225,7 @@
"cIW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cIX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cIY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
-"cIZ" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cIZ" = (/turf/simulated/floor/plasteel{icon_state = "stairs-r"},/area/hallway/primary/central/ne)
"cJa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cJb" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cJc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
@@ -7404,7 +7404,7 @@
"cMt" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line)
"cMu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/engine,/area/toxins/test_chamber)
"cMv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
-"cMw" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cMw" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/transport)
"cMx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line)
"cMy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line)
"cMz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/assembly/assembly_line)
@@ -7456,7 +7456,7 @@
"cNt" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio7"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/toxins/xenobiology)
"cNu" = (/obj/item/radio/beacon,/turf/simulated/floor/engine,/area/toxins/test_chamber)
"cNv" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/engine,/area/toxins/test_chamber)
-"cNw" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cNw" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/transport)
"cNx" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio7"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/toxins/xenobiology)
"cNy" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access_txt = "55"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio7"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"cNz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/sparker{id = "testigniter"; name = "Test Igniter"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/test_chamber)
@@ -7464,7 +7464,7 @@
"cNB" = (/turf/simulated/floor/plating,/area/maintenance/aft)
"cNC" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft)
"cND" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/aft)
-"cNE" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cNE" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cNF" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/port)
"cNG" = (/turf/simulated/floor/plating,/area/assembly/assembly_line)
"cNH" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line)
@@ -7485,7 +7485,7 @@
"cNW" = (/obj/effect/decal/warning_stripes/east,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cNX" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow{d1 = 0; d2 = 8; icon_state = "0-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cNY" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/plating,/area/maintenance/asmaint)
-"cNZ" = (/turf/space,/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cNZ" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cOa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cOb" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cOc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/engineering)
@@ -7560,18 +7560,18 @@
"cPt" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera{c_tag = "Xenobiology Module North-East"; dir = 8; network = list("Research","SS13"); pixel_y = -22},/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cPu" = (/obj/structure/chair,/turf/simulated/floor/plating,/area/maintenance/aft)
"cPv" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line)
-"cPw" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
-"cPx" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cPw" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cPx" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk,/area/space)
"cPy" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/item/pen,/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/engine,/area/toxins/test_chamber)
"cPz" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/clipboard,/obj/item/hand_labeler,/turf/simulated/floor/engine,/area/toxins/test_chamber)
"cPA" = (/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor/engine,/area/toxins/test_chamber)
"cPB" = (/obj/effect/spawner/lootdrop/maintenance,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
-"cPC" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cPC" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cPD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cPE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cPF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering)
-"cPG" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
-"cPH" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cPG" = (/turf/space,/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cPH" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cPI" = (/obj/structure/table,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line)
"cPJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cPK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/engine/break_room)
@@ -7590,7 +7590,7 @@
"cPX" = (/obj/machinery/camera{c_tag = "Engineering SMES"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cPY" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/vending/cigarette,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel,/area/engine/break_room)
"cPZ" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution)
-"cQa" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cQa" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cQb" = (/obj/machinery/particle_accelerator/control_box,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/engineering)
"cQc" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cQd" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel,/area/atmos)
@@ -7606,7 +7606,7 @@
"cQn" = (/turf/simulated/wall,/area/medical/virology)
"cQo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plasteel,/area/atmos/distribution)
"cQp" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/space,/area/space)
-"cQq" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cQq" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cQr" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/storage/box/syringes,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cQs" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cQt" = (/obj/structure/table/reinforced,/obj/item/circular_saw{pixel_y = 0},/obj/item/scalpel,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
@@ -7646,7 +7646,7 @@
"cRb" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering)
"cRc" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution)
"cRd" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix to Gas Turbine"},/turf/simulated/floor/plasteel,/area/atmos/distribution)
-"cRe" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "south_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cRe" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cRf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Blast Doors"; opacity = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering)
"cRg" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cRh" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_east_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering)
@@ -7704,7 +7704,7 @@
"cSh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cSi" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "engineering_west_pump"; tag_exterior_door = "engineering_west_outer"; frequency = 1379; id_tag = "engineering_west_airlock"; tag_interior_door = "engineering_west_inner"; pixel_x = 25; req_access_txt = "10;13"; tag_chamber_sensor = "engineering_west_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "engineering_west_sensor"; pixel_x = 25; pixel_y = 12},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering)
"cSj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/decal/warning_stripes/red/hollow,/obj/machinery/camera{c_tag = "Atmospherics North-West"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos)
-"cSk" = (/turf/space,/obj/machinery/access_button/airlock_exterior{master_tag = "atmospherics_south"; pixel_x = -25; pixel_y = -8},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cSk" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
"cSl" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 8; name = "Mix to Filter"},/turf/simulated/floor/plasteel,/area/atmos/distribution)
"cSm" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 1; level = 2},/turf/simulated/floor/plasteel,/area/atmos/distribution)
"cSn" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/grille,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos)
@@ -7788,14 +7788,14 @@
"cTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/computer/camera_advanced/xenobio,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cTO" = (/obj/item/extinguisher,/obj/item/extinguisher{pixel_x = 4; pixel_y = 4},/obj/structure/table/glass,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sign/deathsposal{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cTP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cTQ" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
-"cTR" = (/turf/space,/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
-"cTS" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space)
-"cTT" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
-"cTU" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "ai_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "75;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
-"cTV" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cTQ" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cTR" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port)
+"cTS" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
+"cTT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
+"cTU" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "south_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cTV" = (/turf/space,/obj/machinery/access_button/airlock_exterior{master_tag = "atmospherics_south"; pixel_x = -25; pixel_y = -8},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"cTW" = (/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
-"cTX" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space)
+"cTX" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cTY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cTZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cUa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
@@ -7826,7 +7826,7 @@
"cUz" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cUA" = (/obj/structure/table,/obj/machinery/requests_console{department = "Engineering"; departmentType = 3; name = "Engineering Requests Console"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cUB" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering)
-"cUC" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cUC" = (/turf/space,/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"cUD" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cUE" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cUF" = (/obj/structure/grille,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/engine/engineering)
@@ -7860,7 +7860,7 @@
"cVh" = (/obj/machinery/computer/security/engineering,/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cVi" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cVj" = (/turf/simulated/floor/plasteel,/area/engine/engineering)
-"cVk" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cVk" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space)
"cVl" = (/obj/machinery/power/solar_control{id = "portsolar"; name = "Aft Port Solar Control"; track = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cVm" = (/obj/machinery/camera{c_tag = "Aft Port Solar Control"; dir = 1; network = list("SS13")},/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump Engineering"; pixel_y = -24; shock_proof = 1},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cVn" = (/obj/structure/closet/wardrobe/black,/obj/machinery/camera{c_tag = "Aft Port Solar Access"; dir = 1; network = list("SS13")},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/aft)
@@ -7883,7 +7883,7 @@
"cVE" = (/turf/simulated/wall,/area/atmos/distribution)
"cVF" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/stack/rods{amount = 50},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cVG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering)
-"cVH" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cVH" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cVI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos)
"cVJ" = (/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 4; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plasteel,/area/atmos)
"cVK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/atmos/distribution)
@@ -7925,7 +7925,7 @@
"cWu" = (/turf/simulated/floor/plasteel,/area/engine/hardsuitstorage)
"cWv" = (/obj/structure/table,/obj/item/toy/plushie/octopus,/obj/machinery/camera{c_tag = "Departure Lounge East"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
"cWw" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWx" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cWx" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "ai_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "75;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"cWy" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cWz" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/machinery/computer/monitor{name = "Grid Power Monitoring Computer"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cWA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
@@ -7966,7 +7966,7 @@
"cXj" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "purplecorner"},/area/hallway/secondary/exit)
"cXk" = (/obj/item/flag/nt,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
"cXl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
-"cXm" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cXm" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cXn" = (/obj/machinery/camera{c_tag = "Departure Lounge West"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "purple"},/area/hallway/secondary/exit)
"cXo" = (/obj/structure/chair{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 8; icon_state = "purple"},/area/hallway/secondary/exit)
"cXp" = (/obj/structure/chair,/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/hallway/secondary/exit)
@@ -8012,7 +8012,7 @@
"cYd" = (/obj/structure/chair,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/hallway/secondary/exit)
"cYe" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/hallway/secondary/exit)
"cYf" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/engine/n20,/area/atmos)
-"cYg" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"cYg" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"cYh" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "purple"},/area/hallway/secondary/exit)
"cYi" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cYj" = (/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/maintenance/asmaint)
@@ -8030,7 +8030,7 @@
"cYv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
"cYw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
"cYx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
-"cYy" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_4)
+"cYy" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cYz" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_se"; name = "southeast of SS13"; width = 19},/turf/space,/area/space)
"cYA" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"cYB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
@@ -8131,7 +8131,7 @@
"das" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"dat" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/escapepodbay)
"dau" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
-"dav" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "sci_maint"; name = "exterior access button"; pixel_x = 8; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk0"; icon_state = "catwalk0"},/area/space)
+"dav" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"daw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering)
"dax" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/generic,/obj/machinery/camera{c_tag = "Engineering Shuttle Access"; dir = 8; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"day" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/engine/engineering)
@@ -8231,22 +8231,24 @@
"dco" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne)
"dcp" = (/obj/machinery/porta_turret{dir = 1},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior)
"dcq" = (/obj/machinery/door/airlock/external{aiControlDisabled = 0; frequency = 1379; hackProof = 0; icon_state = "door_locked"; id_tag = "atmospherics_south_outer"; locked = 1; name = "Atmospherics External Access"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering)
-"dcr" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_4)
+"dcr" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/fungus,/turf/simulated/wall/r_wall,/area/engine/engineering)
"dct" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel,/area/atmos)
-"dcu" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcu" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcv" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel,/area/atmos)
"dcw" = (/obj/structure/closet/radiation,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{dir = 9; icon_state = "yellow"},/area/engine/engineering)
-"dcx" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
-"dcy" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
-"dcz" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcx" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcy" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcz" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_4)
"dcA" = (/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/asmaint)
"dcB" = (/obj/structure/chair/comfy/black{dir = 4},/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor/plasteel,/area/engine/break_room)
"dcC" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/medical/virology)
"dcD" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"dcE" = (/obj/structure/chair/comfy/black{dir = 8},/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor/plasteel,/area/engine/break_room)
-"dcF" = (/turf/space,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
+"dcF" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "sci_maint"; name = "exterior access button"; pixel_x = 8; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk0"; icon_state = "catwalk0"},/area/space)
"dcG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/engine/break_room)
+"dcH" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_4)
+"dcI" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcJ" = (/obj/structure/table,/obj/item/flashlight/lamp,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"dcK" = (/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"dcL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel,/area/atmos)
@@ -8255,12 +8257,18 @@
"dcO" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 1; name = "Gas filter (Toxins tank)"; on = 1},/turf/simulated/floor/plasteel,/area/atmos)
"dcP" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure)
"dcQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure)
+"dcR" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcS" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space)
"dcT" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1441; icon_state = "on"; id = "tox_in"; on = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos)
"dcU" = (/obj/machinery/door/airlock/external{id_tag = "engineering_home"; name = "Engineering Dock Airlock"; req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
+"dcV" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dcW" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id_tag = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"dcX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/engine/engineering)
+"dcY" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"dcZ" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"dda" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"ddb" = (/obj/structure/particle_accelerator/end_cap,/turf/simulated/floor/plating,/area/engine/engineering)
+"ddc" = (/turf/space,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"ddm" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel,/area/atmos)
"ddr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/airlock/external{name = "Engineering Escape Pod"; req_access = null; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engine/engineering)
"dds" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos)
@@ -8388,7 +8396,6 @@
"dgY" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/obj/item/reagent_containers/food/snacks/donkpocket,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"dgZ" = (/obj/item/c_tube,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"dha" = (/obj/structure/mopbucket,/obj/item/caution,/turf/simulated/floor/plating,/area/maintenance/asmaint)
-"dhb" = (/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/asmaint2)
"dhc" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space)
"dhd" = (/obj/machinery/computer/shuttle/engineering,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite)
"dhf" = (/obj/structure/closet/radiation,/turf/simulated/floor/plating,/area/storage/secure)
@@ -8453,7 +8460,6 @@
"diD" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"diE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/maintenance/asmaint2)
"diF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/maintenance/asmaint2)
-"diG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/asmaint2)
"diH" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"diI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"diJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
@@ -8942,9 +8948,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQafzafzafAafBafCabQafDabVabVabQafEafFafGafHafIabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNadgadhacKadhacDadiadjadkaciadlachadmadbaddadcadqadradsacWaduadtadwadvadxabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVabVadyabVafPabVabVabVafQabVadyabVadyafRabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaabNadDadEadFadoacDadGachachadHadIadladJadnadpadladladNadOacWadPadPadQadRadRacoaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafZagbagaagcaaaaaaaaaafZaaaaaaaaaagcaaaaaaaaaafZagdageagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagfabVabVabVabVaggabVabVabVaghabVabVabVabVagiabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadXacwadYacwadZadLadKaeaadMaecaebaeeaedaegaefacwaehaehaeiaejaemaekaeoaeraeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagyagxagwaaaaaaafZagwagzagBagAagwagcaaaaaaagwagCagDagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagEabVabVagFagGabQagHagIagHabQagJagKabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadlaenaelaeAaeBaeCaeDaeAaeAaeEaepaeGaeHaeAaeyaeFaezaezaeIaeJaeLaeNaeLadRaeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagXagYagwaaaafZagZahaahbahcahdahaagZagcaaaagwaheahfagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagEabVagFahvagGabQagHagIagHabQagJagKabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadlaenaelaeAaeBaeCaeDaeAaeAaeEaepaeGaeHaeAaeyaeFaezaezaeIaeJaeLaeNaeLadRaeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagXagYagwaaaafZagZahaahbahcahdahaagZagcaaaagwaheahfagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVahgabQabIabQabVahhahiabQabIabQabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNaeKaeWaeVaeXacWaeYaeYacWafaafaacWafcafcabNabNabNabNaeTaeMaeZaeUadRaffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwahmahlahnaaaahoahpahaahaahqahaahaahpahraaaahsahtahuagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahvahwahxabQaaaabQahyahyahyabQaaaabQahzahAahBabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNafhachafiadiacWachafbacWachafdacWachafeabNafjafOabNaflafkafkafkafxabNafmafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZaaaaaaahJahpahaahKahLahaahaahpahMaaaaaaagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahwdcZahxabQaaaabQahyahyahyabQaaaabQahzahAahBabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNafhachafiadiacWachafbacWachafdacWachafeabNafjafOabNaflafkafkafkafxabNafmafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZaaaaaaahJahpahaahKahLahaahaahpahMaaaaaaagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahyahyahyabQaaaacqahNahOahPacsaaaabQahyahyahyabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNafJacWafKafLacWafMafNacWafMafNacWafMafNabNaabafOabNabNabNabNabNabNabNafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZagZagZagZagZagZagZahZagZagZagZagZagZagZagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqahNahOahPacsaaaaaaaaaaaaaaaaaaaaaacqahNahOahPacsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNabNafJacWafSafTacWafnafnacWafoafoacWafpafpabNafqaabaabaabaabaaaaaaafraabafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahoahIailailailailailailagwaimagwailailailailailailahIahraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagkagjagmaglagoagnagqagpagragrafsagsagsaftagsagvabNaabaabaabaabaabaaaaaaaaaaabaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiCaiDaiEaiFaiGaiHagwahZagZahZagZahZagwaiIaiJaiKaiLaiDaiMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8979,20 +8985,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaCTazgazgaCXaaaaxkaCYaykaykaCZalwalwalwaabaabaabaabaDbaDaaDbaabaabaabaabalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnaDdaDcaCEaCDaCGaCFaCHaDiaElauYaCIawWaCKaCJawWaDeaDfaEBaCqaFFaDgaEBaDkaDjaxpaDlaDmaxpaDoaDnaBsaDpaDraDqaBsaDsaDNaDNaDNaDNaDPaDPaDPaDPaDPaDPcXKcXHaJccYNatGatGatGatGaaaaaaaaaabpaabaabaabaaaaabaaaaabaabaDSaDKaDSaabaabaaaaabaaaaaaaabaabaaaaaaaaaaaaaaaaaaaAfaDUaDTaDWaDVaDYaDXaBgaBgaBgaAbaEaaBgaEcaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaEbazgaEeaxiaaaaxkaEfaykaykaxkaabaaaaabaaaaaaaabaaaaDbaEgaEdaaaaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaEiaEiaEiaEiaEiaEiaAmaElaElaElaDtaElaElaElaDuaAmaAxaAxaAxaAxaAxaAxaEBaEBaDvaCqaFFaDgaDvaDvaDvaEpaEpaEpaEpaDxaDwaBsaDyaDAaDzaBsaDsaDNaELaEMaEKaDPaENaDBaEOaEQaDPaJlcXHcXHcXHaJnaJmaJobWvaaaaaaaaaaabaabaaaaabaabaabaabaabaaaaDSaERaDSaaaaabaaaaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaAfaETaESaCPaEUaEWaEVaEXaBgaEZaALaFbaFaaAfaFdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFeaFfaFcaFfaFgaaaaFiaFhaykaFkaFiaabaaaaabaaaaaaaabaDbaDbaFjaFmaDbaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaFlaFoaDCaDDaFvaFwaFsaDFaDEaDDaDGaFvaFvaDIaDHaFBaFAaFyaFyaFyaFyaFyaFyaFyaDJaDLaGraDMaEjaDOavqavqavqavqavqaBsaDQaEkaEhaEnaEmaBsaEoaDNaFTaFUaFPaDPaFVaEqaFWaFYaDPaJEaJpaJFcXHcXHcXHcXHbWraaaaaaaabaabaaaaaaaaaaaaaaaaabaabaDSaDSaFZaDSaDSaabaaaaabaaaaaaaaaaaaaabaabaaaaaaaaaaaaaAfaGbaGaaCPaAfaCPaCPaGdaGcaAfaAfaAfaAfaAfaAfaaaaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaFeaGfaFgaaaaaaaGgaFiaGeaFiaGhaabaaaaabaaaaaaaabaGjaGiaGlaGkaGjaGnaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaGmaEraGpaEtaEsaEuaEsaEvaEsaExaEwaGraGraEzaEyaGraGraGraGraGraGraGraGraGraECaEEaEDaEGaEFaEHaAQaASaEIaASaAQaBsaEJaFnaEPaFnaFnaBsaDsaDNaFpaGNaFqaDPaFraGRaGQaEQaDPaJGcXHaKycXHcXHbYecWGbWraaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaGTaGUaGSaGWaGTaabaaaaabaaaaaaaabaaaaaaaabaabaaaaaaaGXaAfaCPaAfaCPaGYaGVaHbaMzaGYaGYaGYaIEaGYajcaMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaFeaGfaFgaaaaaaaGgaFiaGeaFiaGhaabaaaaabaaaaaaaabaGjaGiaGlaGkaGjaGnaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaGmaEraGpaEtaEsaEuaEsaEvaEsaExaEwaGraGraEzaEyaGraGraGraGraGraGraGraGraGraECaEEaEDaEGaEFaEHaAQaASaEIaASaAQaBsaEJaFnaEPaFnaFnaBsaDsaDNaFpaGNaFqaDPaFraGRaGQaEQaDPaJGcXHaKycXHcXHbYecWGbWraaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaGTaGUaGSaGWaGTaabaaaaabaaaaaaaabaaaaaaaabaabaaaaaaaGXaAfaCPaAfaCPaGYaAYaHbaMzaGYaGYaGYaIEaGYajcaMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaGnaGnaGnaGnaGnaGnaabaabaGjaHcaHaaGZaGjaHdaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaHearTaHfaFuaFtaFxaHnaFzaHnaFCaHqaHnaHnaFEaFDaHnaHnaHnaHnaHnaHnaHnaFHaFJaFIaFKaHvaHxaEjaFMaAQaFNaASaFOaAQaBsaBsaBsaBsaBsaBsaBsaFQaDNaHCaFUaFRaDPaFSaHGaFWaHHaDPbZQbYeaKBcXHcXHcXHcXIbWraabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaGTaHKaHIaHJaGTaabaaaaabaaaaaaaabaaaaaaaGXaHNaGXaHNaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaGXaGYaJOaMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadmoaAYdmoaaaaaaaaaaGnaHSaHTaHSaHRaHMaHUaGnaaaaaaaGjaHVaHXaHWaIaaHSaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIbaIcaIcaIeaIeaFXaLAaIhaIhaGqaLAaGsaIlaIiaIiaIlaGtaIlaIoaIoaIoaIoaIoaIoaImaIoaIoaInaIraIpaEjaGuavqaAQaAQaAQavqavqavqaydaGvaGwavqavqaGxaDNaIwaFUaGyaDPaGzaGRaGQaEQaDPcXIcXHaLYaKPcXHbYebZQbWvaabaabaaaaaaaaaaaadmoaBxdmoaaaaabaGTaIBaIAaICaGTaIFaIFaIFaIFaIFaHNaHNaHNaGXaIDaGYaHOaHPaMzaGYaMqaMqaMqaMqaMqaMqaMqaMqaMqaGXaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadmoaBxdmoaaaaaaaaaaGnaHSaHTaHSaHRaHMaHUaGnaaaaaaaGjaHVaHXaHWaIaaHSaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIbaIcaIcaIeaIeaFXaLAaIhaIhaGqaLAaGsaIlaIiaIiaIlaGtaIlaIoaIoaIoaIoaIoaIoaImaIoaIoaInaIraIpaEjaGuavqaAQaAQaAQavqavqavqaydaGvaGwavqavqaGxaDNaIwaFUaGyaDPaGzaGRaGQaEQaDPcXIcXHaLYaKPcXHbYebZQbWvaabaabaaaaaaaaaaaadmoaCLdmoaaaaabaGTaIBaIAaICaGTaIFaIFaIFaIFaIFaHNaHNaHNaGXaIDaGYaHOaHPaMzaGYaMqaMqaMqaMqaMqaMqaMqaMqaMqaGXaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaIIaIGaIIaaaaaaaabaGnaIHaILaHSaHSaIJaHSaGnaIIaIIaGjaGjaIMaIKaIaaHSaGnaGnaIIaIIaIIaGnaGnaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaIbaIPaGAaGCaGBaGDaLAaGFaGEaGGaLAaGHaIlaIWaIZaGJaGIaHgaJaaJdaLZaJfaJeaJhaJgaJjaJiaJkaFFaFGaEjaGKavqavqavqavqavqavqavqavqavqavqavqavqaGLaGOaGMaHhaGPaDPaHiaHjaJyaJBaDPcWGbYeaMbaMaaODaODaODaODaODaODaODaaaaaaaaaaHNaJCaHNaaaaIFaGTaGTaJDaJHaGTaJIaGYaGYaGYaMzaJJaGYaJMaGXaGYaGYaGYaJKaMzaGYaMqaNkaNnaNmaMqaNpaNoaNqaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJPaJSaJQaaaaJRaJVaJTaabaabaIIaHSaIIaaaaaaaabaGnaJXaJYaJZaJWaJUaKaaGnaKbaHSaKdaKcaKfaKeaKeaKeaKeaKeaKeaKeaKeaKgaGnaaaaKhaaaaaaaaaaaaaaaaaaaaaaaaaIbaKkaHkaKmaKnaHlaLAaHmaKraHoaLAaGHaIlaKtaHYaKvaGIaHgaKqaKsaKsaKsaKsaKsaJgaKwaJiaFyaFFaFGaEjaFMaLPaLPaLPaLPaLPaHpaKOaKOaKOaKOaKOaKOaKOaDNaDNaLVaDNaDPaDPaHsaDPaDPaDPaMhaMeaMjcYKaODaKQaKQaKQaKQaKQaODaaaaaaaaaaHNaKJaKMaaaaIFaKRaKTaKSaKWaGYaGYaGYaMzaGYaMzaKXaGYaGYaGXaGYaKVaKUaKXaIEaGYaMqaOKaOLaOLaMqaOMaOJaONaMqaMraMraMraMraabaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLaaLbaLaaLdaLeaLfaLeaLdaabaIIaLgaLhaaaaaaaGnaGnaGnaGnaGnaLkaLiaLlaLjaLnaLmaLmaLoaLraLraLqaLpaGnaHSaGnaGnaGnaLsaGnaaaaabaaaaaaaaaaaaaaaaaaaabaabaIbaLuaLtaLwaLvaLxaLAaKraLyaHtaLAaGHaIlaLCaLEaHwaHuaHzaHyaHAaLHaKsaLIaLIaJgaKsaJiaFyaFFaLJaEjaHBaLPaHFaHDaLNaLPaMwaAGaMIaMHaMLaMJaIdaHZaIkaIgaIyaIvaIUaITaNcaNbaIXaKObWrbWraNUaKOaODaKQaKQaKQaKQaKQaODaabaabaKOaHNaMfaMgaHNaIFaMiaGYaMkaGYaHbaGYaGXaGXaMmaGXaGXaMnaMzaMzaKXaMoaMlaGYaGXaGYaPOaMqaPPaPTaPSaPUaOKaPWaMqaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaLaaMpaLaaMsaLeaMtaLeaMsaGnaIIaMuaEAaIIaIIaGnaHSaHSaHSaHSaHSaHSaHSaLkaLsaGnaGnaGnaGnaGnaMxaGnaGnaHSaMyaGnaMvaLsaGnaGnaGnaaaaaaaaaaaaaaaaMAaMAaMAaMAaMAaMAaMAaMAaMAaLAaItaMCaIuaLAaGHaIlaIxaJbaINaJvaHgaMMaIQaIOaMPaMOaMRaMQaMSaJiaFyaFFaFGaEjaFMaLPaISaIRaLNaLPaKuaMVaMVaMVaMVaMVaMVaMVaLQaKxaLRaOiaOiaOiaLSaOiaPAaOuaOAaOzaOBaJqaODaKQaKQaKQaKQaKQaODaKOaKOaKOaGYaNfaNgaJIaMzaMoaKXaMkaGYaNhaGVaNlaIEaGYaGYaGYaGYaNiaGYaGYaMoaNjaGYaMnaPRaPQaQSaQQaQUaQTaQVaQYaQWaMqaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaCLaNtaCUaMsaDZaNyaEYaNwaNxaHSaNzaNCaNAaMyaNBaHSaGnaGnaGnaGnaGnaGnaGnaLsaGnaByafOaBTaGnaNEaNFaNHaHSaNBaGnaNAaNIaKeaKgaIIaaaaaaaaaaaaaaaaHLaNJaNMaNLaNOaNNaNPaMAaiWaLAaJraNQaIVaLAaJsaIlaJuaJtaJwaLTaHgaNWaJzaJxaKiaJAaKlaKjaKoaJiaFyaFFaFGaEjaFMaLPaOjaKpaLNaLPaLUaMVaMNaMNaMNaMVaMVaMVaMVaMVaMTaOoaMUaMUaOsaMVaSQaMVaMVaRRaMVaPvaRVaKQaKQaKQaKQaKQaRVaTbaTdaTcaXiaTeaOCaGYaMzaOFaGYaOEaOGaOGaOGaOGaOHaOGaOIaGYaGYaGYaGYaGYaGYaGYaGYaMzaRuaPOaMqaRSaRYaOLaOLaOLaRZaMqaJNaJLaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaHSaOSaHSaHSaHSaHSaHSaGnaOTaOOaOVaOUaOWaGnaLsaGnafOaOXaByaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaIIaaadmodmodmodmoaHQaNJaPeaPbaPfaPhaPiaPjaMAaLAaLAaLAaLAaLAaJsaIlaIlaIlaIlaIlaIlaKzaKAaIoaIoaIoaIoaIoaIoaIoaPraFFaPwaEjaFMaLPaOnaKpaLNaLPaKuaMNaMWaMWaMXaMNaMVaMVaMYaMVaNaaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaPLaPMaKOaGYaVJaMzaMzaMzaHPaHPaGXaGXaGXaMzaMzaMzaGXaPNaPKaGXaMzaMzaGXaMzaMzaGXaGXaRTaMqaTjaQRaTlaTkaTmaQRaTnaMqaKZaKYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaLaaMpaLaaMsaLeaMtaLeaMsaGnaIIaMuaEAaIIaIIaGnaHSaHSaHSaHSaHSaHSaHSaLkaLsaGnaGnaGnaGnaGnaMxaGnaGnaHSaMyaGnaMvaLsaGnaGnaGnaaaaaaaaaaaaaaaaMAaMAaMAaMAaMAaMAaMAaMAaMAaLAaItaMCaIuaLAaGHaIlaIxaJbaINaJvaHgaMMaIQaIOaMPaMOaMRaMQaMSaJiaFyaFFaFGaEjaFMaLPaISaIRaLNaLPaKuaMVaMVaMVaMVaMVaMVaMVaLQaKxaLRaOiaOiaOiaLSaOiaPAaOuaOAaOzaOBaJqaODaKQaKQaKQaKQaKQaODaKOaKOaKOaGYaNfaNgaJIaMzaMoaKXaMkaGYaNhaAYaNlaIEaGYaGYaGYaGYaNiaGYaGYaMoaNjaGYaMnaPRaPQaQSaQQaQUaQTaQVaQYaQWaMqaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaCUaNtaDZaMsaEYaNyaGVaNwaNxaHSaNzaNCaNAaMyaNBaHSaGnaGnaGnaGnaGnaGnaGnaLsaGnaByafOaBTaGnaNEaNFaNHaHSaNBaGnaNAaNIaKeaKgaIIaaaaaaaaaaaaaaaaHLaNJaNMaNLaNOaNNaNPaMAaiWaLAaJraNQaIVaLAaJsaIlaJuaJtaJwaLTaHgaNWaJzaJxaKiaJAaKlaKjaKoaJiaFyaFFaFGaEjaFMaLPaOjaKpaLNaLPaLUaMVaMNaMNaMNaMVaMVaMVaMVaMVaMTaOoaMUaMUaOsaMVaSQaMVaMVaRRaMVaPvaRVaKQaKQaKQaKQaKQaRVaTbaTdaTcaXiaTeaOCaGYaMzaOFaGYaOEaOGaOGaOGaOGaOHaOGaOIaGYaGYaGYaGYaGYaGYaGYaGYaMzaHQaPOaMqaRSaRYaOLaOLaOLaRZaMqaJNaJLaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaHSaOSaHSaHSaHSaHSaHSaGnaOTaOOaOVaOUaOWaGnaLsaGnafOaOXaByaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaIIaaadmodmodmodmoaRuaNJaPeaPbaPfaPhaPiaPjaMAaLAaLAaLAaLAaLAaJsaIlaIlaIlaIlaIlaIlaKzaKAaIoaIoaIoaIoaIoaIoaIoaPraFFaPwaEjaFMaLPaOnaKpaLNaLPaKuaMNaMWaMWaMXaMNaMVaMVaMYaMVaNaaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaPLaPMaKOaGYaVJaMzaMzaMzaHPaHPaGXaGXaGXaMzaMzaMzaGXaPNaPKaGXaMzaMzaGXaMzaMzaGXaGXaRTaMqaTjaQRaTlaTkaTmaQRaTnaMqaKZaKYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaByaabaBZaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaKuaMNaMWaNRaNSaMNaMVaMVaMVaMVaNTaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaQHaPMaKOaGYaVJaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaRWaMqaUgaQRaUiaUhaUiaQRaUjaMqaMzaMzaGXaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaoOaSbaMcaMdaMdaRaaMdaMdaMdaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaNVaMNaNYaNXaOeaMNaMVaMVaMVaMVaMTaRMaOpaOpaRGaMVaVLaVKaMVaMVaMVaPvaRVaKQaKQaKQaKQaKQaRVaVMaYwaVObfQaZzbafbafbafbafbbYaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRXaUYaUYaMqaMqaMqaMqaMqaMqaUfaQIaOFaJMaGXaabafOaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZPaSdaSdaMBaSfaMDaMEaSiaSjaQZaSaaSjaSeaScaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSgaSkaShaSmaSlaSJaSDaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaOqaWHaOyaOraOraPkaPBbhiaPCbgsbhhbhibhibhibhibhibhjaMVaMVaMVaMVaThaODaKQaKQaKQaKQaKQaKOaKOaKOaKOaHbaMzaMzaIEaGXaGXbBOaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaKXaUUaMkaGYaTiaGXaHOaHbaGYaGYaVTaVhaVUaVUaWZaGYaGYaGXaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTsaTraTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaPDbhkbhtbhpaPFaPEaQAbhzbitbisbiTbiubjkbjcbjXaYvbkKbkIaQEaOvaOwaKOaODaKQaKQaKQaKQaKQaKOaTXaUaaMzaGXaMzaLcaGYaGXaLcbBOaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaGYaXbaXaaXaaXaaXaaXaaXdaGYaGYaGYaXeaGYaGYaIFaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUlaUkaUnaUmaSdaOQaSdaSdaLdaUoaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaQFbuMaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaPGaPIaPIbJUaODaKQaKQaKQaKQaKQaKOaURaUaaMzaUTaGXaGYaGYaGXbJVbLCaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaXgaQLbazbazbazbazbazaYPaYPaYPaQDaYPaYPaYPaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUlaUkaUnaUmaSdaOQaSdaSdaLdaUoaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaQFbuMaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaPGaPIaPIbJUaODaKQaKQaKQaKQaKQaKOaURaUaaMzaUTaGXaGYaGYaGXbJVbLCaMzaGYaGYaGXaGYaGYaMzaMkaAYaGXaGYaGYaMzaUWaGYaMkaGYaXgaQLbazbazbazbazbazaYPaYPaYPaQDaYPaYPaYPaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaVnaUEaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaQGbuMaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSbxyaVFaVHaUSaOgaGXaPGaPIaPHaPJaKOaKOaKOaKOaKOaKOaKOaVNbLGaMzaMzaGXaGXaMzaMzbLHaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaRXaGYbazaXjaXoaXkaYxaYPaYAaYzaYCaYBaYGaYFaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVSaVXaVSaVSaVYaVZaVSaVSaVXaWaaVWaLdaToaWbaVcaWdaWcaWfaWeaWhaWgaTuaUuaVeaUqaWjaVeaVeaUuaTuaWkaWlaWiaWnaWmaWoaWqaWraWpaWtaVjaabaUEaWuaWsaWwaWvaWxaUEaabaSuaSzaSAaWzaWAaWyaWCaWBaSAaPiaRwaSBaSCaWEaWDaULaSCaWFaSCaULaWGaSLaSCaSMaRwaSNaFFaWJaEjaMFaLPaISaOhaLNaLPaRvbuUaUQaWKaVEaVEaVEaWLaOlaOkaOmaUSaWQaWPaOxaOtaPgaGXaRPaRQaRQaRIaGXaJMaGXaGYaQIaHPaLcaWUaWXaWWaWYaGXaNhaGYaQIbBOaGYaGXaaaaGXaGYaGYaYEbbIaYIbbIaYKaYJaYJaYJaYJaYJbamaYObapbanbarbaqbatbasbawaYPbaAbayaYCbaBbaCbaCaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaWaaVSaXmaXraXsaXtaXuaXvaXwaXxaXyaXzaXpaXnaSdaToaXqaVcaXBaXAaXFaXGaXFaXCaTuaXIaVeaXDaXHaXEaXHaXJaXLaXKaXMaXQaXQaXQaXQaXQaXQaXNaXSaVjaaaaUEaXOaWsaXPaWvaXRaUEaaaaSuaSzaSAaXTaXXaXVaXUaYaaSAaPiaRwaXWaXWaTCaXYaVuaTDaXZaTDaVuaYbaTIaTzaTzaRwaYcaIraYhaEjaMFaLPaLPaLPaLPaLPaPlaRJaPnaPmaPoaUQaUQaUQaUQaUQaUQaUSaPpaZVaPqaUSaOgaGXaGXaGXaGXaGXaGXaGYaGXaGYaHPaHPaGXaGXaGXaYnaGXaGXaGXaGXaGYbBOaWVaHNaabaHNaGYaYsbdHaYuaYybaDbaEbaubaubaubauaGXbaFaGXbazbazbazbazbazbaIbazbazbazbaybcgaXcbaMaXhaYRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9003,31 +9009,31 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehaVSaVXaVSaVSaVYaVZaVSaVSaVXbejbgeaLdbdnbeEaSdaSWaSWaSXaSWaSYaMsbgvbglaSfbgnbfcbgzbgzbgqbgrbgzbgubgzbgzbgzbgDbgzbgzbgwbgFbdqbgAbghbgBbgAbgCbgAbgAbgAbgAbgEbgMbgJbgzbgzbgKbfcbgQbgxbgSbgLbgObgNbgTbgPbgPbgPbgPbgPbgPbgPbgVbgUbhabhbbhcbhdbhebgWbgXbfdbdDbdDbhfbgZbhgbgZbhgaSZaTfaTaaWNaUNbhqaUSbhrbhlaYeaYdaZRaZRaWMbeFbfrbflbdTbhobhubhsbhsbhwbdTbhAaNKaTRbaLbbSbbSbhFbhHbhGbfMbhIbhJbhPbhQbhRbebbdXaTgbaubiabcpbihbibbhVbhTbhLaGXbjnbiibazbjrbazbewbggbggbazbazbazbjsbjsaYPaYPaYPaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYDbaWbaXbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbgyaSdaSdaSdaSdaSdaSdbgyaSdaUZaLdbgHbieaSdbgtbgjbhmbhmbhvaMsbivbglbifbgGbfcbijbipbiobiqbiqbixbiwbiwbiwbizbiybiybiAbiCbiBbiqbiqbiDbiybiFbiEbiGbiGbiIbiHbiKbiJbiJbiJbiLbfcbgQbgxbgSbgSbgSbgSbiMbgSbgSbgSbgSbgSbgSbiNbiUbiVbiWbiXbiObiZbiQbiPbiRbiVbiVbiVbjdbjebjebjebiSbhqbhqbhqbirbhxbhqaUSbjabjjaZRaZRbiYaZRaWTbjmbfrbjKbdTbjobjfbjqbjhbjgbdTbjtbcybjvbjwbjxbjybebbebbjzbebbebbebbjBbjlbjBbebbdXaGYbaubjubcpbcpbekbjEbcpbjFaGXaGXaGXaYPaYPaYPbcDbcDbcDbjDbjAbjIbcDbcDbcDbjpbjLaYRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYDbaWbcJbcKbcLbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbjQaLdaSdaOQaSdbidbgIbjTbjSaSdaOQaSdaSdaLdbjUbeEaSdbkcbjObhmbhmbhvaMsbkdbglaSfbgGbfcbgzbjZbjYbkgbkgbkabkibkbbkgbkebkgbkfbkgbkhbjPbkgbkgbkgbkgbkgbkjbkkbkgbklbkrbknbkmbgzbgzbkpbkobksbkqbkubktbkubkvbkwbkvbkvbkvbkvbkvbkvbkybkAbkzbkzbkzbkzbkBbkzbkCbkDbkzbkzbkEbkGbkFbkFbkFbkFbkFbkFbkFbkHbhqbhqaUSbkMbkNbkPbkObkOblrblsbjmbfrbltbdTbdTbdTbdTbdTbkLbdTbkQbcEbkWbkSbfHbkYbebbhMbkTbkUblcbkVbleblfblgbebbdXaQLbaubliblibcpbjNblkbcpbllbllbaubkXblabkZaYPbldblnbloboJblhboJblnbloblmaYPblqaYRaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYUbeAbeBbeCbeBbeDaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdbgyaSdaToaSfaSfaTpaSdbgyaSdbjVblybjWblFaSdbmobmoaSXbmoaSYaMsblJbglaSfaMsblKblKblGblMblMblMblMblMblMbkxblHblMblMblMblMblMblMblPblQblRblRblLblRblTblNblVblTblTblWblXblOblKblZblZblSblSblSbmbbmbbmbbmbbmbbmbbmbbmbbmcblUblUblYblUbmabmabmabmabmebmdbmabmcbmibmibmibmibmibmibmibmibmfbmfbmfaUSbcUbmkbmrbmrbmrbmrbmNbmMbmWbmqbnmbnlbmjbmhbmtbmsbdTbbWbmubmybmzbmybmybebbmAbmvbmwbmwbmwbmwbmBbmxbebbmCbmHbaublpbcpbljbjNblkbljbcpbmDbaubmEbmGbmFaYPblwbmJbmOblzblxblzbmJbmObcDbmgblIaYRaaaaaaaaaaaaaaaaaaaaaaabbEGbmnbmnbmnbEGaaaaaaaaaaaaaYDbaWbgobeCbeCbeCbgpbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdbgyaSdaToaSfaSfaTpaSdbgyaSdbjVblybjWblFaSdbmobmoaSXbmoaSYaMsblJbglaSfaMsblKblKblGblMblMblMblMblMblMbkxblHblMblMblMblMblMblMblPblQblRblRblLblRblTblNblVblTblTblWblXblOblKblZblZblSbmfbrqbmbbmbbmbbmbbmbbmbbmbbmbbmcblUblUblYblUbmabmabmabmabmebmdbmabmcbmibmibmibmibmibmibmibmibWHcDrcIZaUSbcUbmkbmrbmrbmrbmrbmNbmMbmWbmqbnmbnlbmjbmhbmtbmsbdTbbWbmubmybmzbmybmybebbmAbmvbmwbmwbmwbmwbmBbmxbebbmCbmHbaublpbcpbljbjNblkbljbcpbmDbaubmEbmGbmFaYPblwbmJbmOblzblxblzbmJbmObcDbmgblIaYRaaaaaaaaaaaaaaaaaaaaaaabbEGbmnbmnbmnbEGaaaaaaaaaaaaaYDbaWbgobeCbeCbeCbgpbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdblBaSfblEbmSbnabnibmVbndbnibnfbnebnibnibnkbnjboNboMbnnbnnbnnbnobnnbnpbnuaMsbnvbnwbnqblMbnybnrbnAbnBbnCbnDbnsbnFbnGbnHbnIbnJblMbnKbnLblRbnxbntbnzblTbnEbnQbnMblTbnSbnTbnNbnSbnSbnSbnObgSbnPbmbaaaaaaaaaaaaaaaaaaaaabmcbnUbnRbnWbnVbnYbnXboaaYfbocaCubohbmcaaaaaaaaaaaaaaaaaaaaabmibodbhqboeaUSbokbmlbmqbmqbmqbmqbmqboSboUbmqbmqbmqbogbofbofboibonbojbopbooborboqbosbebboubotboBboAboAboBbowbovbebbdXaGYbauboFboFbcpbjNblkbcpboGboGbaubauboybauaYPbmIblnbloboJboJboJblnblobmKaYPaYRaYRaaaaabaabaabaabaabbEGbEGbEGbmPbmLbmRbEGbEGaaaaaaaaabicbikbilbeCbeCbimbinbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdboLboPboLboLboLboLboLboLboPboLboLboQaSfboRbgGbwxaSfbpFaSfboTboXboYboVboWaMsbnwbnwboZblMbpabnDbnDbnDbnDbnDbnsbpdbnDbnDbnDbpeblMbnKbpfblRbpbbphbpiblTbpjbpcbpgblTbplbpkbpmbppbpnbnTbnObgSbnPbmbaaaaaaaaaaaabmcbmcbmcbmcbprbpobptbpqbpubpsbpwaYgbpzbpxbpBbmcbmcbmcbmcaaaaaaaaaaaabmibodbhqbpAbpybpHbpGbpJbpIbpHbpKbqhbpMbqjbqibqkbmqbpNbpLbofbpObpPbofbpRbpQbpTbpSbofbpWbpVbpUboBboAboAboBbpXbqabebbdXaTgbaublpbcpbljbjNblkbljbcpbcpbpYbqcbcpbqdaYPbmTbmpbqgboJboJboJbmpbqgbcDbmUaYQaabaabaabaaaaaaaaaaabbEGbnZbmZbozbolboEboCbEGaaaaYDbjCbjGbjCbjCbjCbjHbjCbjJbjCbjGbjCaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaLdaMsbgGbqqbqrbqrbqrbqrbqrbqrbqsbqrbqrbqraMsbnwbnKbqtblMbqubnDbnDbqvbqwbqxbqybqvbnDbnDbnDbqzblMbnKbnLblRbqAbqBbqCblTbqDbqEbqFblTbqGbqHbqIbqJbqKbnTbqLbqMbnPbmbbmbbqNbmcbmcbmcbqObqQbqPbqRbqSbqSbqTbqUbqSbqVaYibqWbqXbqYbqZbrbbrabmcbmcbmcbqNbmibmibodbhqbhqaUSbrfbrebqibrgbmqbrhbribmqbshbrHbqkbmqbogbofbofbrjbrlbrkbrnbrmbrpbrobofbcSbpVbrrboBboAboAbrsbrubrtbebbdXaGYbaubrwbrwbrxbjNblkbrybcpbcpbrzbcpbrAbrBaYPboHbpCboObpEboJbqebpZbqlbqfbgfaYRbEGbEGbEGbjRbjRbjRbEGbEGbrdbrcbrCbrvbrEbrDbEGaaabicbmXblubmYbmYblDbeCblCblDblAblvblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrqbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUlaMEbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbsQbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubdibmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbdPbsubsJbsLbsKbodbhqbhqbsNbmqbsZbmqbmqbmqbtnbtobmqbshbtrbqkbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbtwbtebaubaubaubaubrFblkbthbtibcpbtjbtbbtlbrGaYPbrIbmpbqgbrJbxBbsMbmpbqgbcDaYPbEFbsPbsObtabzObtcbzObtdbEGbEGbtgbtmbtkbtpbtpbEGbEGbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrqbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebhBbuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybhDbuAbuzbuEbuEbuBbhqbuCaUSbmqbuIbuNbqkbmqbuQbuRbmqbvbbuSbqkbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbvcbvgbvebtxbtqbuFbuDbuWbuVbuVbuVbuVbuVbuVbuVbuZbuYboJboJbrJboJbsMboJboJboJbuGbmmbuHbmmbmmbmmbmmbmmbmmbuTbEGbuXbvdbEGbwmbwkbwkboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMwbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUlaMEbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbsQbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubdibmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbdPbsubsJbsLbsKbodbhqbhqbsNbmqbsZbmqbmqbmqbtnbtobmqbshbtrbqkbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbtwbtebaubaubaubaubrFblkbthbtibcpbtjbtbbtlbrGaYPbrIbmpbqgbrJbxBbsMbmpbqgbcDaYPbEFbsPbsObtabzObtcbzObtdbEGbEGbtgbtmbtkbtpbtpbEGbEGbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMwbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebhBbuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybhDbuAbuzbuEbuEbuBbhqbuCaUSbmqbuIbuNbqkbmqbuQbuRbmqbvbbuSbqkbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbvcbvgbvebtxbtqbuFbuDbuWbuVbuVbuVbuVbuVbuVbuVbuZbuYboJboJbrJboJbsMboJboJboJbuGbmmbuHbmmbmmbmmbmmbmmbmmbuTbEGbuXbvdbEGbwmbwkbwkboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvibvjbvjbvjbvjbvjbvjbvjbvjbvjbvjbvfbvlaOQbvlaSfboRbqrbvmbrUbvnbvnbvnbvkbrUbvobqrbvqbvrbtIbvsbvsbvsbvsbvpbvsbvtbnDbvvbngbnhbnhbvubvxblMbvzbvBbvAbvDbvCbvFbvGbvHbvIbvHbvJbvJbvJbvJbvJbvKbvEbnObvLbvNbvMbvPbvObvRbhEbvTbvSbuobvUbvVbvXbvXbvXbvXbvWbvXbvZbwabwbbvYbvUbwdbwcbmcbkRbwgbwfbwibwhbwjbhqbhqbsNbmqbEabmqbmqbmqaZVbmqbmqbxAbxAbmqbmqbwlbofbofbwnbwobofbofbofbwqbwpbwrbebbqabrrboBboBboBboBbrubwsbebbAubwtbwtbwubwtbwzbwybwybwybwybwAbwybwybwBbljbvaboJboJboJbrJboJbsMboJboJboJbuGbmmbuHbmmbmmbxKbmmbxObmmbmmbmmbxXbxYbqnbjRbjRbjRbjRbqpbjCbjCbjCbjCbqobeCblCbqoblAbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWHbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbvwblFaPYbrUbwMbvnbvnbvnbvkbwMbrUbqrbvybwKbtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbrNbstbwNbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbycbxZaYPbjDbyZbyabrJboJbsMbyabzlbjDbEFbzpbAwbAjbAzbAybABbAAbACbAjbAjbADbsIbAEboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWHbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyebtIbvsbymbvsbynbyobvsbyqbypbyrblMbrNbstbwNbskblMbnKbxabxbbytbysbyubyvbywbxbbyybykbyxbylbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYPaYPaYQbAGaYQbAHaYQaYPaYPbEFbAIbuHbAJbAKbjRbjRbjRbEFbALbmmbmmbAMbjRbjRbjRbqnbjRbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNwbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbvwblFaPYbrUbwMbvnbvnbvnbvkbwMbrUbqrbvybwKbtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbrNbstbwNbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbycbxZaYPbjDbyZbyabrJboJbsMbyabzlbjDbEFbzpbAwbAjbAzbAybABbAAbACbAjbAjbADbsIbAEboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNwbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyebtIbvsbymbvsbynbyobvsbyqbypbyrblMbrNbstbwNbskblMbnKbxabxbbytbysbyubyvbywbxbbyybykbyxbylbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYPaYPaYQbAGaYQbAHaYQaYPaYPbEFbAIbuHbAJbAKbjRbjRbjRbEFbALbmmbmmbAMbjRbjRbjRbqnbjRbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbrNbstbwNbnDblMbnKbxabxbbzDbzBbzCbyvbzCbxbbyybyzbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbBsbzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAicVsbvhbvhbBtbBrbBNbBrbBPbBrbBUbBQbDkbBrbDubDtbElbDxcVUcVUbEmcVUbEBcVUbENbEHbFzbFwbGjbGhbjRbwDbwCbxzbjRbGobmmbmmbGIbGsbjRbGMbGNbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbrNbuabyAbBfblMbBhbBibxbbBjbBkbyvbzCbBlbxbbyybzGbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVdcebIsbIzbwtbwtbwtbwtbwtbwubwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbMhbKubRFbNWbomcbudckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCybCubzCbCvbCzbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbDybCAbDsbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbDbbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkaRAaRCaRBaRCaRCaRCaREaRHaRFaSFaROaSHbFsaSKaSIaTHaSVbwvbwvbwvcXfbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjcXibmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbDWbKHbvsbvsbvsbynbDYbymblQblQblQblQbDPbnKbnKbCsbnKbCrbCsbxbbDZbDRbDSbDTbyvbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLcXqbxlbHpbHobzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEhbEibEsbEkbEvbxvbEwbEnbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLaTKaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubteaTPaTQbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDcXncXibmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFqbFpbFjbFkbFrbFmbNsbyBbFubFtbBnboxbFybvQbEjbzLcYPbxlbwebFvbJabFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbGabBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbBJbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDcXocXibmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebEXbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbwXbxbbxbbxbbHbbxbbHcbAFbHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbBebFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDcYhcXibmmbmmbmmbmmcYmcYkcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbIHbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbJjbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbDcbBMbGdbDdbGfbGebGebLybDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbGbbKdbGkbKfbKqbKrbKibKibKibKjbEDcYpcYocYqcYqcYqcYrcYvcYscYwcYwcYwcYxbBKbAEboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObFxbKQbKPbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbGibGgbGibEpbIhbGqbJAbIjbJBbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDcYhbmmcYObjRcZkcYYcZlboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbLYbLXbKpbLZbLZbMabMbbLZbMcbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMdbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObLschhbJFbJCbJJbIqbJLbDebLvbLubHObLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbNfbFTbEIaZTbGrbNgbHXbHXbLmbNhbNEbNibNjbNHbNIbNJbNObNNbEAbMfbLRbMibEDbMjbNPbMtbIpbIpbNUbEDcZpbmmcZDbAKcZkbDvcZGcZEcZmbAKcZIcZHcZJbEGaaaaaaaaaaaabicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebIHbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbwXbxbbxbbxbbHbbxbbHcbAFbHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbBebFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDcYhcXibmmbmmbmmbmmcYmcYkcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbJjbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbKCbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbDcbBMbGdbDdbGfbGebGebLybDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbGbbKdbGkbKfbKqbKrbKibKibKibKjbEDcYpcYocYqcYqcYqcYrcYvcYscYwcYwcYwcYxbBKbAEboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKPbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObFxbMlbKQbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbGibGgbGibEpbIhbGqbJAbIjbJBbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDcYhbmmcYObjRcZkcYYcZlboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbLYbLXbKpbLZbLZbMabMbbLZbMcbCfbMebIBbNSbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMdbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObLschhbJFbJCbJJbIqbJLbDebLvbLubHObLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbNfbFTbEIaZTbGrbNgbHXbHXbLmbNhbNEbNibNjbNHbNIbNJbNObNNbEAbMfbLRbMibEDbMjbNPbMtbIpbIpbNUbEDcZpbmmcZDbAKcZkbDvcZGcZEcZmbAKcZIcZHcZJbEGaaaaaaaaaaaabicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbFAbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbNkbFObNlchhbNnbLwbNpbIqbNmbLxbNqbNobHObLAbNrbEobNDbNAbNGbNFbNLbNKbORbNMbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbNBbNEbPnbPbbPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDcZpbmmcYObjRcZkbmmcZGbmmcZmbjRcZnbmmcZKbEGaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObPPbHhbHhbHhbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebHibBnbBnbPYbDXbOwbOubQhbHqbJObQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObKNbPcbPebLtbPfbEpbPgbNybDebPhbHObLAbPmbEobPGbPFbQabPKbQAbNKbQCbQBbQEbQDbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbQMbIabRkbPbbPobRlbRhbPqbRmbEAbOvbOvbPdbEDbRpbRybRqbRzbIpbREbEDcZTcYmcYkcZVdaacYkdaldakbmmdambmmdandaqbEGaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbNSbRRbRTbRRbRRbRRbRRbPQbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbPXbRPbRPbRQbNYbRYbRXbRZbRVbQbbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQOchhbQQbQPbQQbEpbQSbQRbSsbSqbHObLAbNzbQTbQWbQUbQZbQYbRabLKbQCbRbbOVbRcbLKbWdbWdbWdbRebRdbEubEubEubEubGrbJobHXbHXbRfbSTbIabSWbRibRgbRrbRjbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDbEGdasbEFbEFbigdatdazdatbigaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbPQbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbPXbRPbRPbRQbNYbRYbRXbRZbRVbQbbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQOchhbQQbQPbQQbEpbQSbQRbSsbSqbHObLAbNzbQTbQWbQUbQZbQYbRabLKbQCbRbbOVbRcbLKbWdbWdbWdbRebRdbEubEubEubEubGrbJobHXbHXbRfbSTbIabSWbRibRgbRrbRjbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDbEGdasbEFbEFbigdatdazdatbigaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbNTbKzbPPbHhbHhbHhbKzbKzbJfbKAbQfbRobxbbTAbBnbTBbQdbTvbDXbRObBnbBobBnbPWbOwbTybTzbRVbQbbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObRsbQVbSobRtbSrbEpbIqbStbIqbEpbPvbPrbPxbOUbOUbSwbSybSxbOQbLKbNKbSzbSAbLKbLKbWdbSCbSBbSEbSDbWgbSFbSHbSGbGraZSbpDbSIbRUbRUbIabSJbUEbUFbIabSKbPqbUHbIabUKbUMbULbUObUNbZNbpvbsBbqbbRnbtscjTcjYcOCbKlbigbaNdaEbaObaGbaTbaQbaRbaHbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbOgbKzbPPbKzbKzbKzbKzbKzbJfbKAbQfbRWbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbQbbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObSMbSubSObSNbSPbSvcrAbSLcrAcrAbSRbSQbSUbSSbwFbXAbSXbRtbXAbThbXAbJRcuobJSbTZbTYbUabUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabWlbWnbLIbIabNVbNZbNXbWqbWqbPibOabLRctvbPkbPjcacdlDbGGdaSbigdaZdbedbddbkbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAcuHcuHcuHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbNRbWQbWRbKzbKzbKzbWQbKzbJfbKAbQfbTsbxbbWWbBnbzFbQdbBnbzJbLJbBnbBnbWUbDXbOwbTybWVbRVbTxbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbUhbPUbUjbUibUrbUkbUnbUebUmbUmbUpbUobUmbUmbUqbUmbUmbUsbUnbUmbUmbUGbNubNtbUwbUvbUBbUybZfbUDbXNbUIbUIbUIbUJbWgbLRbUPbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbPlbYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacdlDdbmcAUbigdbodbpbclbcIbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbYxbYwbYybYwbTubRSbUgbUgbUgbUgbUgbUCbYEbYDbQfbVpbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbWSbQbbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWbUWbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCbPDbZRbZUbZTbZXbZVbVobZWbYzbYjdbwdbvdbxbGGdbhbcHdbHbgbbgkbaTbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAcuHcuHcuHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbNRbTubWRbKzbKzbKzbTubKzbJfbKAbQfbTsbxbbWWbBnbzFbQdbBnbzJbLJbBnbBnbWUbDXbOwbTybWVbRVbTxbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbUhbPUbUjbUibUrbUkbUnbUebUmbUmbUpbUobUmbUmbUqbUmbUmbUsbUnbUmbUmbUGbNubNtbUwbUvbUBbUybZfbUDbXNbUIbUIbUIbUJbWgbLRbUPbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbPlbYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacdlDdbmcAUbigdbodbpbclbcIbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWQbUgbYwbUgbYybYxdcYdcYdcYdcYdcYbUCbYEbYDbQfbVpbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbWSbQbbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWbUWbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCbPDbZRbZUbZTbZXbZVbVobZWbYzbYjdbwdbvdbxbGGdbhbcHdbHbgbbgkbaTbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSibNvbFObWfbSubWkbWhbWobWmbWscaAbWubWtbWxbWwbXGbWubWabWybWabWybWabWybWabWzbWAcrAbTZbWBbWDbWCbWFbWEbXNbXsbXubXtbXvcbdcbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqbYAcbsbYBbYjdbObGGbGHbGHaYSaYSaYSaYSaYSaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQbXwcbVcbTcbUcbWcbYcbXbXxcbZcccccbccfccdcceccgccjcchccibXybXzcclccmbEnccnbFOccoccpccrbFObXBbQVbXCcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfbPEcdhcdgcdicbscdkbYjcdndfcbZZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwbNwcdFbTybTybYmbYncdIcdJcclcdObYobYpcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdNcdScclccmbEncdVcdUcdXbYqcdZcdYbFOchfbYrcaAbZjbYsbYsbXJbZhbZkbZnbZlcaBbZmbZpbZobZrbZqbZtbZsbZvbZubWAcuvchrbZwbZybZxbZAbZzbZBccQbXWbXQbZBcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMbGnceOceSbYjcaccLhbGpdbPdbPdbPdbZdbXdbXdcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9055,55 +9061,55 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJUcJScEWcEWcEWcEWcJYcEYcEYcEYcEYcKacEYcJVcJVcJVcJWcJXcKdcEYcJZcKgcKbcKbcKicKbctTcKbcKbcKecKfcKbcKbcKfcKfcKfcKbcKbcKbcKbcKkcKhcLKcKlcKtcKqcKxcKndcgcKncKncKncKnchWcKycKrczccKzcGKczdczecsLczfcsLcYiczgcuccTBcKOcyZcQkcQkcQkcQkcQkcQkcQkcQkcsLcKOchfczhczjcziczkchfczlchfchfchfchfchfctrbQXcepaaaaaaaaaaaaaaacepcKPcKQcKRcKWcIUcKYcKXcxNcJkcJmcJlcxNcJKcKZcLacBRaabaabcLbcLkcLjcLecLlcLgcLbbGGbGGcFccLhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalwalvalvalwalvalvaabamhaabayiaaaayiayicLicJncLmcLmcLmcLpcLocEYbTmcLrcGhcLtcLscLucEYcLycLwcKfcLGcwLcwMcxacLzcLAcLJcLCcLDcKbcLCcLEcLFcLGcLGcLHcKbcLLcVbcHJcLNcnycLTcLMdcicLOdcjcjRdcjcwocmRcLXcLWczncMacGKcGKcbvcsLcnVcsLcYicsLcuEcsLcsLctZcsLcsLcsLcKOctZczocsLcyJcsLcsLcBQcsLczqczpczrcyJczschfcztchfczuchfczvbQXcepaaaaaacepcepcepcepcJKcMgcJKcMlcJrcEHcJNcxNcxQcMocxQcxNcJKcJKcMkcBRaabaaacLbcMucMmcLecLecMncLbcMpbGGcFcbKlcMsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaabaabcLicLicMqcLicLicMrcMvcEYcEYcEYcEYcEYcEYcEYcEYcLicLwcKfcMtcMxcMycMycMycMycMycMCcMzcMDcLGcMAcLGcLGcMBcLGcMEcMGcMFcMHcLNcnycMLcHQcMPcLOdcBcHSdcEcLOdcGcMRcMNcAjczxcAlcAkcAncAmcMXcAmcApcAocArcAqcrecrecAscrecAtcsLcsLcsLcAucyJcyJcsLcBQcAvcAvcAwcAycAxcAzchfcAAcAvcACchfcADcsLcBPcepcepcepbQXcAEcepcJKcJKcJKcNmcJJcNocNncNqcNpcNscNrcxNcNtcNycNxcBRaaaaaacLbcNzcLecNucLecNvcLbbGGbGGcFccMsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcDrcNMaaacNFcDrcNMaaacNFcDrcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcLGcMBcNHcLGcLGcLGcNIcLGcNGcNGcLGcLGcLGcLGcNJcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcJMcKocKccAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcOlcOncOmcOpcOocxNcKscKVcKTcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcIZcNMaaacNFcIZcNMaaacNFcIZcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcOycLGcOzcOAcOBcOBcMAcLGcNGcOGcLGcLGcLGcLGcOHcOEcOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcepcKPcKQcKRcPmcLccNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcIZcNMaaacNFcIZcNMaabcNFcIZcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcPvcLGcLGcKjcLxcLfcLdcLfcLncLfcLBcLIcLCcPIcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcMwcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcIZcNMaabcNFcIZcNMaaacNFcIZcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMbhCcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcNwcBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcIZcNMaabcNFcIZcNMaaacNFcIZcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbbjicErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcNwcBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcNEaabaabaabcNEaabaaaaabcNEaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccNRcRCcRCcSScTdcKbcKbcMvcSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTfcTicTgcRXcTjcTecRXcRXcRXcRXcTkcPTcTlcThcSdcErcSdcSdcPZcEucSlcTncEJcTqcTpcTucTraabcTocTvcSwcTwcQZcNwcBQcELcEKcFpcEMchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgactrcFvciYbQXcFvcepcKPcKQcKRcTJcLccNocTKcTNcTMcTGcTGcTHcTIcTPcTOcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcFcbGHbGHbGHbGHbGHaabaabaabdoEdoEdoEdoEdoEdoEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNZcPwcPwcPxcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcPCcPwcPwcPwcPwcPwcPGcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcSdcSdcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcNwcBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcPHaabaaaaabcPHaabaaaaabcPHaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcGPcGRcGQcGTcGScGVcGUcGXcGWcGZcGYcHbcHacUtcTjcTecVxcVDcRXcRXcVFcPTcLScOFcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcNwcBPcHcctZctZcmJcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfctrbQXciYbUxcHfcepcJKcJKcJKcWicLUcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcQacNMaaacNFcQacNMaaacNFcQacNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcHhcUicWscWtcWucWucHkcWDcWCcWFaYtaZBcHkcWBcWHcWJcWIcWLcWKcWPcWMcWScMicUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcNwcBPcGIcsLcsLcHlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfctrcIccIbcIbcIbcIbcIbcIbcIbcIbcMjcXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcQacNMaabcNFcQacNMaaacNFcQacNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcHhcUicXycUicUicXEcRRcXGcXFcUwcIdcIecRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcNwcBQcIgdfMdfMcIhcIichfcIkcIjcImcIlcIocInchfcsLcIpcsLchfctrcIqciYbQXcIrcIsciYcIucItcepcMIcMQcMJcNacMIcMQcNbcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcQacNMaaacNFcQacNMaaacNFcQacNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcHhcVjcYHcVjcVjcVjcRRcYLcIvcIxcIwcIycYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYSbqmcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcNwcBQckKcExchfcyJcJqcyPcJscImcJucJtcJvcsLcJwcYjcIpcJxchfctrcIqciYbQXcpEbQXciYcJzcIrcepcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcQacNMaaacNFcQacNMaabcNFcQacNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBcJAcJDcJCcJFcJEcJHcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcJIcNXcNVdacdabcSUcZScZSdafbqmcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcNwcBQckKdaecsLcyJcJqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcJxchfctrcIqcGLbQXcKEcKFciYcKGbQXcepcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHdoEdoEaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFcQqcNMaaacNFcQqcNMaaacNFcQqcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcKJcKIcKKdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRcKLcNXcObdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWcOkcXcdbacSndbcdbbdbbcQZcNwcBPckKchfcBNdaXcJqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfctrcIqciYbQXciYciYciYbQXbQXcepdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdblcOqcOtcOrdarcKUdbqdbrcHhcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAcKLcNXcPgdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcNwcBPckKchfdbMdbMcJqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPctrcIqciYbQXbQXcMhciYbQXaqFcepdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchcPlcPEcPDcPWcPFdcndcwdbrcHhcWecPXcZMcQccSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcNwcBQckKdcAcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPdcPdcQdcWdawcNidcXcNkcNjcNjcNWcQVcQFcOaddbcOccQGcQVcOdcOfcOecOhcOgcOicQHddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcNwcBQcOjcYlcuccTBcOScOPcOVcOPcOXcsLcsLcsLcsLczfchfcPacPecPbcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPdcPcQUdarcRgcRwcRrcSvcStcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcNwcBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucGvcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPdcPcVvdardeucQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcNwcBPcBPckKcprdeScRjdeTchfcsLdfadeZdffcRkcRmcRlchfciYciYcRncepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPdcPcVAdardfwcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcNwcBPcsLcOjcSfcScdfgcsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcPcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcNwcBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdmodmodmodmodmocNwdgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQdhbbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcLGcMBcNHcLGcLGcLGcNIcLGcNGcNGcLGcLGcLGcLGcNJcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcJMcKocKccAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcOlcOncOmcOpcOocxNcKscKVcKTcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcNZcNMaaacNFcNZcNMaaacNFcNZcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcOycLGcOzcOAcOBcOBcMAcLGcNGcOGcLGcLGcLGcLGcOHcOEcOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcepcKPcKQcKRcPmcLccNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcNZcNMaaacNFcNZcNMaabcNFcNZcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcPvcLGcLGcKjcLxcLfcLdcLfcLncLfcLBcLIcLCcPIcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcPwcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcNZcNMaabcNFcNZcNMaaacNFcNZcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMbhCcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcPxcBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcNZcNMaabcNFcNZcNMaaacNFcNZcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbbjicErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcPxcBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcPCaabaabaabcPCaabaaaaabcPCaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccNRcRCcRCcSScTdcKbcKbcMvcSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTfcTicTgcRXcTjcTecRXcRXcRXcRXcTkcPTcTlcThcSdcErcSdcSdcPZcEucSlcTncEJcTqcTpcTucTraabcTocTvcSwcTwcQZcPxcBQcELcEKcFpcEMchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgactrcFvciYbQXcFvcepcKPcKQcKRcTJcLccNocTKcTNcTMcTGcTGcTHcTIcTPcTOcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcFcbGHbGHbGHbGHbGHaabaabaabdoEdoEdoEdoEdoEdoEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcPGcPHcPHcQacyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcQqcPHcPHcPHcPHcPHcRecTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcSdcSdcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcPxcBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcSkaabaaaaabcSkaabaaaaabcSkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcGPcGRcGQcGTcGScGVcGUcGXcGWcGZcGYcHbcHacUtcTjcTecVxcVDcRXcRXcVFcPTcLScOFcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcPxcBPcHcctZctZcmJcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfctrbQXciYbUxcHfcepcJKcJKcJKcWicLUcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcTQcNMaaacNFcTQcNMaaacNFcTQcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcHhcUicWscWtcWucWucHkcWDcWCcWFaYtaZBcHkcWBcWHcWJcWIcWLcWKcWPcWMcWScMicUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcPxcBPcGIcsLcsLcHlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfctrcIccIbcIbcIbcIbcIbcIbcIbcIbcMjcXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcTQcNMaabcNFcTQcNMaaacNFcTQcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcHhcUicXycUicUicXEcRRcXGcXFcUwcIdcIecRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcPxcBQcIgdfMdfMcIhcIichfcIkcIjcImcIlcIocInchfcsLcIpcsLchfctrcIqciYbQXcIrcIsciYcIucItcepcMIcMQcMJcNacMIcMQcNbcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcTQcNMaaacNFcTQcNMaaacNFcTQcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcHhcVjcYHcVjcVjcVjcRRcYLcIvcIxcIwcIycYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYSbqmcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcPxcBQckKcExchfcyJcJqcyPcJscImcJucJtcJvcsLcJwcYjcIpcJxchfctrcIqciYbQXcpEbQXciYcJzcIrcepcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcTQcNMaaacNFcTQcNMaabcNFcTQcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBcJAcJDcJCcJFcJEcJHcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcJIcNXcNVdacdabcSUcZScZSdafbqmcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcPxcBQckKdaecsLcyJcJqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcJxchfctrcIqcGLbQXcKEcKFciYcKGbQXcepcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHdoEdoEaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFcTRcNMaaacNFcTRcNMaaacNFcTRcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcKJcKIcKKdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRcKLcNXcObdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWcOkcXcdbacSndbcdbbdbbcQZcPxcBPckKchfcBNdaXcJqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfctrcIqciYbQXciYciYciYbQXbQXcepdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdblcOqcOtcOrdarcKUdbqdbrcHhcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAcKLcNXcPgdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcPxcBPckKchfdbMdbMcJqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPctrcIqciYbQXbQXcMhciYbQXaqFcepdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchcPlcPEcPDcPWcPFdcndcwdbrcHhcWecPXcZMcQccSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcPxcBQckKdcAcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPdcPdcQdcWdawcNidcXcNkcNjcNjcNWcQVcQFcOaddbcOccQGcQVcOdcOfcOecOhcOgcOicQHddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcPxcBQcOjcYlcuccTBcOScOPcOVcOPcOXcsLcsLcsLcsLczfchfcPacPecPbcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPdcPcQUdarcRgcRwcRrcSvcStcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcPxcBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucGvcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPdcPcVvdardeucQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcPxcBPcBPckKcprdeScRjdeTchfcsLdfadeZdffcRkcRmcRlchfciYciYcRncepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPdcPcVAdardfwcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcPxcBPcsLcOjcSfcScdfgcsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcPcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcPxcBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdmodmodmodmodmocPxdgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQcTSbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgwdhdbJMdardhfcVYdcPdcPcVZdarcSCcSDdhoafOcSEcSFcSFcSFcSFcSFcSIcSFcSFcSFcSFcSFcSMafOdhvcTscTmcSUdhsdaIdhzdhBdhAdhCdhxdhEdhDdhFcSddhHdhGdhJdhIdbIdmoaaaaabaabaaadhMdhLdhOdhNdhTdhSdhVdhUdgTdhYcsLcsLdhPcpsdhQcYicsLcsLcEGdhZdiadiadiadiadiadiadiadiadiadiadiadiadiadiadiediadiadiadiaczLcuQbPAcAUbGGdiccMscuQcuQcuQdbhcuQdfScaccuQdidbGGbGGbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVcQjdcPdcPcWadarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtcSUdaGcZSdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdmoaaaalwalwdiudhLdivdiwdildimdindiydixdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdizdiAdiAdiAdiAdiAdiAdiCdiBdiAdiAdiAdiAdiAdiAdiEdiDdiGdiFdiJdiIdiLdiLdiLdiLdiNdiMdiOdiLdiLdiLdiLdiQcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVcQjdcPdcPcWadarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtcSUdaGcZSdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdmoaaaalwalwdiudhLdivdiwdildimdindiydixdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdizdiAdiAdiAdiAdiAdiAdiCdiBdiAdiAdiAdiAdiAdiAdiEdiDcTTdiFdiJdiIdiLdiLdiLdiLdiNdiMdiOdiLdiLdiLdiLdiQcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKcWbdcPdcPcWcdarcTycTzdiPaabcTxafOdjqaaaaaaaaaaaadjqaaaaaadjqafOcTxaabdiRcTCcTAcSUdaGcSUaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdmoaaaalwaabdjddgSdjedjfdjwdjhdjidjxdjkdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjscWbdcPdcPcWddarcTtdibdjvaaacTDcTEaaaaaaaaaaaaaaadjyaaaaaaaaacUlcTFaaadibdibcTtcSUdaGcSUcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdmoaaaalwaabdjEdgSdjFdjfdjGdjVdjidjWdjJdjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdkadkbdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkccQjdcPdcPcWadarcUncTmdibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcSCcUocSUdjZcSUcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdmoaaaalwaaadjEdkjdkydkldkmdkndkodkEdkDdgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQdmoaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdkIdkHdkMdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUcTtdibaaacTxafOdjqaabaabdkzdkAdkBaabdkCaaaafOcTxaaadibcTtcSUcSUdaGcSUcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdmoaaaalwaaadjddgSdkJdkKdkLcOQdkWdkYdkXdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhdmoaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGdhbbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdmoaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQcReaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUcTtdibaaacTxafOdjqaabaabdkzdkAdkBaabdkCaaaafOcTxaaadibcTtcSUcSUdaGcSUcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdmoaaaalwaaadjddgSdkJdkKdkLcOQdkWdkYdkXdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhdmoaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGcTSbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdmoaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQcTUaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabalwcSUcSUcTtdibaaacTxafOaaadlEaabdlFdlGdlHaabaabdjqafOcTxaaadibcTtcSUcSUdaGcSUcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZaabdmoaaaayiaaadjdaaaaaaaaadlIdlmdlVdlXdlWdlmcsLdlMcsLcsLdlNdlOcXrdmcdlQcBPaaaaaaaaaaaaaaaaabaaabZZdlZdmbdlLbGGdgybGGbGGdlLdjobGGcuQcuQcuQcuQcuQbGGbGHaabaaaaaaaaaaabdlTdlTdmddlTdlTaabaabdhcaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmcSUdmecSUcSUcSUcSUcSkdmodmodmodmodmodmodmodmodmodmodmoaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdmsdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmcSUdmecSUcSUcSUcSUcTVdmodmodmodmodmodmodmodmodmodmodmoaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdmsdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaabcSUcTtdibdmjaaacTDcTEaaaaaaaaaaabaaaaaaaaaaaaaaacUlcTFaaadibdibcTtcSUdmkcQRdmvdaGdcqdmoaabaabaabaabaabaabaabdmoaabaabaabaabaabaabdjEaabaabaabdlYdlmdmydmAdmzdmEaabdmacBPcBQdmtcBQcBPcBPaaaaabaaaaaaaaaaaaaaaaabaabbZZbZZbZZbGHbGHbGHbGGcuQbGHdmubGHbGHdbgbPAcLhbKlcMsbGHaabaaaaaaaaaaabaaadlTdmGdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEcSUdmLcSUcSUcSUcSUcSUcSUaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaacTQaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKcSUdmPdmQdnjdnldnkcSQdmVdmWdmWdmXdmWdmWdmWcTRdmWdmWdmZdnadnbdnodmCaaaaaaaabdnddmodlmdnedlmcTSaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnqdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaacTTaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmbJNdnvdmCaaaaaaaabaabdmodnxdnIdnxdmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabcTTaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXcURcUHaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabcUJcUUcYXcSUcSUdnDcSUcSUcSUcSUdfocSUaabaabaabaabaabaabcTUbfubjbbhybkJdnGdnFdmCaaaaaaaaaaabdmoaaaaaaaaadmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnPbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaacTVaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUcURcVacVacVacVacVacVacVacVacVacVacVacVacVacUUcSUcSUcSUdnKdnScSUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTXdnTdnWdnVdobdoadofdoeaaaaaaaaaaabdmodmodmodmodmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdogbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaacSUcSUdnXcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaaaaaacNwdnZdnZdnZdnZdojdokdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabcUCcVkcVkcVkcVkcVHcTWcWxcXmcXmcXmcXmcYgaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdaGdaGcYydoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydoxdoAdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdavdoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaacTWaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEcSUdmLcSUcSUcSUcSUcSUcSUaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaacTXaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKcSUdmPdmQdnjdnldnkcSQdmVdmWdmWdmXdmWdmWdmWcUCdmWdmWdmZdnadnbdnodmCaaaaaaaabdnddmodlmdnedlmcVkaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnqdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaacVHaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmbJNdnvdmCaaaaaaaabaabdmodnxdnIdnxdmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabcVHaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXcURcUHaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabcUJcUUcYXcSUcSUdnDcSUcSUcSUcSUdfocSUaabaabaabaabaabaabcWxbfubjbbhybkJdnGdnFdmCaaaaaaaaaaabdmoaaaaaaaaadmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnPbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaacXmaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUcURcVacVacVacVacVacVacVacVacVacVacVacVacVacUUcSUcSUcSUdnKdnScSUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYgdnTdnWdnVdobdoadofdoeaaaaaaaaaaabdmodmodmodmodmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdogbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaacSUcSUdnXcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaaaaaacPxdnZdnZdnZdnZdojdokdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabcYydavdavdavdavdcrcTWdcudcxdcxdcxdcxdcyaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdaGdaGdczdoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydoxdoAdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdcFdoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaacTWaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdjZdaGdoLdoIdoMdozaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoNdoOdoCdoDdoQdoSdoRdoHdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaaaamWaaaaabaaaaabaabaabaaacTWaaaaabaaaaabaaaaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdoJdaGdcrdoudoudoVaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoWdoYdoXdoPdoZdpcdpadpgdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaabaabdjEaabdnZdphdpjdpidpndpkdpsdprdpbdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabcUCcVkcVkcVkcVkcVHcTWcWxcXmcXmcXmcXmdcuaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdoJdaGdcHdoudoudoVaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoWdoYdoXdoPdoZdpcdpadpgdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaabaabdjEaabdnZdphdpjdpidpndpkdpsdprdpbdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabcYydavdavdavdavdcrcTWdcudcxdcxdcxdcxdcIaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdpddpedpddpfdpudpwdpvdpydpxdpfdpfdpfdpfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaacTWaabdoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddpldpmdpddpfdpfdpzdpodpfdppdpqdpqdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayiaaaaabaaaaabaaaaabaaadcxaaaaabaaaaabaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpCdpEdpDdpFdpfdpIdpHdpJdpfdpKdpAdpAdpLdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTTaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpMdpOdpNdpPdpGdpRdpQdpSdpGdpUdpTdpWdpVdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabcUCcVkcVkcVkcVkdcydczdcycXmcXmcXmcXmdcuaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaadpddpZdqbdqadqddqcdqfdqedqhdqgdqjdqidqldqkdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaacTTaaadoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddqqdqodqsdpfdqxdqtdcpdpfdqCdqBdqEdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaaaaabaabaabaaaaaacTTaabaaaaaaaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqpdqFdqpdqmdqmdqGdqrdqmdqpdqHdqpdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaacTTaaaaaaaaaamWamWamWayiamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdisdqudqpdqvdqwdqIdqydqvdqpdqJdqAdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdcFaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddpldpmdpddpfdpfdpzdpodpfdppdpqdpqdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayiaaaaabaaaaabaaaaabaaadcRaaaaabaaaaabaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpCdpEdpDdpFdpfdpIdpHdpJdpfdpKdpAdpAdpLdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcVHaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpMdpOdpNdpPdpGdpRdpQdpSdpGdpUdpTdpWdpVdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabcYydavdavdavdavdcVddadcVdcxdcxdcxdcxdcIaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaadpddpZdqbdqadqddqcdqfdqedqhdqgdqjdqidqldqkdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaacVHaaadoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddqqdqodqsdpfdqxdqtdcpdpfdqCdqBdqEdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaaaaabaabaabaaaaaacVHaabaaaaaaaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqpdqFdqpdqmdqmdqGdqrdqmdqpdqHdqpdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaacVHaaaaaaaaaamWamWamWayiamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdisdqudqpdqvdqwdqIdqydqvdqpdqJdqAdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddcaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqndqudqpdqvdqwdqIdqydqvdqpdqJdqDdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqmdqmdqudqpdqMdqwdqNdqPdqOdqpdqJdqmdqmdqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdqmdqRdqpdqTdqwdqIdqydqvdqpdqUdqmaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index c12913c54cc..84182a32068 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -172,8 +172,8 @@
"dp" = (/obj/structure/flora/ausbushes/stalkybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control)
"dq" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control)
"dr" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_knightarena)
-"ds" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)"; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership)
-"dt" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
+"ds" = (/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding)
+"dt" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)"; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership)
"du" = (/turf/simulated/floor/holofloor{tag = "icon-carpet3-0 (EAST)"; icon_state = "carpet3-0"; dir = 4},/area/holodeck/source_theatre)
"dv" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor,/area/holodeck/source_knightarena)
"dw" = (/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_away"; name = "supply centcom"; width = 12},/turf/space,/area/space)
@@ -208,17 +208,17 @@
"dZ" = (/obj/structure/table/wood,/obj/item/paper_bin{pixel_y = 5},/obj/item/pen/multi,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/control)
"ea" = (/obj/machinery/computer/bsa_control/admin,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/centcom/control)
"eb" = (/obj/structure/chair/office/dark{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "carpet15-14"; tag = "icon-carpet (WEST)"},/area/centcom/control)
-"ec" = (/turf/unsimulated/floor{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/centcom/control)
+"ec" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
"ed" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "102"},/turf/unsimulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/centcom/control)
"ee" = (/obj/structure/table,/obj/item/card/id/centcom,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/item/door_remote/centcomm,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control)
-"ef" = (/turf/unsimulated/floor{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/centcom/control)
-"eg" = (/obj/machinery/bsa/full/admin/east,/turf/unsimulated/floor{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/centcom/control)
-"eh" = (/turf/unsimulated/floor{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/centcom/control)
+"ef" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)"; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership)
+"eg" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership)
+"eh" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (EAST)"; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership)
"ei" = (/turf/space,/area/centcom/control)
"ej" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space)
"ek" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space)
"el" = (/turf/unsimulated/wall{tag = "icon-iron11"; icon_state = "iron11"},/area/space)
-"em" = (/turf/unsimulated/floor{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/centcom/control)
+"em" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/assault_pod)
"en" = (/turf/simulated/floor/holofloor{tag = "icon-1 (NORTHEAST)"; icon_state = "1"; dir = 5},/area/holodeck/source_space)
"eo" = (/turf/simulated/floor/holofloor{tag = "icon-17 (NORTHEAST)"; icon_state = "17"; dir = 5},/area/holodeck/source_space)
"ep" = (/turf/simulated/floor/holofloor{tag = "icon-22 (NORTHEAST)"; icon_state = "22"; dir = 5},/area/holodeck/source_space)
@@ -234,7 +234,7 @@
"ez" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_boxingcourt)
"eA" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_boxingcourt)
"eB" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_boxingcourt)
-"eC" = (/turf/unsimulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/centcom/control)
+"eC" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/assault_pod)
"eD" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield)
"eE" = (/turf/simulated/floor/holofloor{tag = "icon-carpet4-0 (EAST)"; icon_state = "carpet4-0"; dir = 4},/area/holodeck/source_meetinghall)
"eF" = (/turf/simulated/floor/holofloor{tag = "icon-carpetsymbol (SOUTHEAST)"; icon_state = "carpetsymbol"; dir = 6},/area/holodeck/source_meetinghall)
@@ -250,7 +250,7 @@
"eP" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_boxingcourt)
"eQ" = (/turf/simulated/floor/holofloor,/area/holodeck/source_boxingcourt)
"eR" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_boxingcourt)
-"eS" = (/turf/unsimulated/floor{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/centcom/control)
+"eS" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
"eT" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/specops)
"eU" = (/obj/structure/table/wood,/obj/item/stack/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"eV" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/centcom/control)
@@ -391,7 +391,7 @@
"hA" = (/turf/unsimulated/wall{tag = "icon-iron13"; icon_state = "iron13"},/area/space)
"hB" = (/turf/unsimulated/wall{tag = "icon-iron9"; icon_state = "iron9"},/area/space)
"hC" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/ninja/holding)
-"hD" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/ninja/holding)
+"hD" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3"; icon_state = "diagonalWall3"; dir = 2},/area/shuttle/assault_pod)
"hE" = (/obj/effect/landmark{name = "Holding Facility"},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{icon_state = "engine"},/area/ninja/holding)
"hF" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/ninja/holding)
"hG" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership)
@@ -436,7 +436,7 @@
"it" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership)
"iu" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless,/area/syndicate_mothership)
"iv" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/assault_pod)
-"iw" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)"; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership)
+"iw" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/assault_pod)
"ix" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station)
"iy" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station)
"iz" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station)
@@ -447,7 +447,7 @@
"iE" = (/turf/space,/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/space)
"iF" = (/obj/machinery/door/airlock/centcom{aiControlDisabled = 1; name = "Assault Pod"; opacity = 1; req_one_access_txt = "150"},/turf/simulated/floor/plating,/area/shuttle/assault_pod)
"iG" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless,/area/syndicate_mothership)
-"iH" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership)
+"iH" = (/turf/unsimulated/floor/snow,/obj/structure/flora/bush,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership)
"iI" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless,/area/syndicate_mothership)
"iJ" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod)
"iK" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod)
@@ -484,7 +484,7 @@
"jp" = (/turf/simulated/floor/plasteel,/area/tdome/arena_source)
"jq" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/tdome/arena_source)
"jr" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/melee/energy/sword/saber/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source)
-"js" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (EAST)"; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership)
+"js" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership)
"jt" = (/obj/item/storage/fancy/crayons,/obj/machinery/light{dir = 1; on = 1},/obj/structure/table,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
"ju" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/syndicate_mothership)
"jv" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership)
@@ -638,9 +638,9 @@
"mn" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control)
"mo" = (/obj/structure/chair/stool,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control)
"mp" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
-"mq" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/assault_pod)
+"mq" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership)
"mr" = (/turf/unsimulated/wall,/area/trader_station/sol)
-"ms" = (/obj/machinery/teleport/hub/upgraded{admin_usage = 1},/turf/unsimulated/floor{tag = "icon-delivery"; icon_state = "delivery"},/area/admin)
+"ms" = (/turf/unsimulated/floor/snow,/obj/structure/flora/bush,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
"mt" = (/turf/space,/area/syndicate_mothership/elite_squad)
"mu" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad)
"mv" = (/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
@@ -745,14 +745,14 @@
"oq" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape)
"or" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape)
"os" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/grown/citrus/lemon,/obj/item/reagent_containers/food/snacks/grown/berries,/obj/item/reagent_containers/food/snacks/grown/banana,/obj/item/reagent_containers/food/snacks/grown/cherries,/obj/item/reagent_containers/food/snacks/grown/citrus/orange,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/mushroom/amanita,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin)
-"ot" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/assault_pod)
+"ot" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ou" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
-"ov" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
-"ow" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3"; icon_state = "diagonalWall3"; dir = 2},/area/shuttle/assault_pod)
-"ox" = (/turf/simulated/floor/pod,/turf/space,/obj/machinery/porta_turret/syndicate/pod,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/assault_pod)
-"oy" = (/turf/unsimulated/floor/snow,/obj/structure/flora/bush,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership)
-"oz" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership)
-"oA" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership)
+"ov" = (/obj/mecha/combat/marauder/seraph/loaded,/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"ow" = (/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
+"ox" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT3"; name = "gravpult"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"oy" = (/obj/effect/decal/warning_stripes/yellow/partial{dir = 8},/obj/effect/decal/warning_stripes/arrow{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"oz" = (/obj/mecha/combat/marauder/loaded,/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"oA" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT2"; name = "gravpult"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership)
"oC" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership)
"oD" = (/obj/docking_port/stationary{dir = 4; dwidth = 11; height = 18; id = "emergency_away"; name = "emergency centcom"; width = 29},/turf/space,/area/space)
@@ -764,7 +764,7 @@
"oJ" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/gun/projectile/automatic/pistol{name = "pistol"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
"oK" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/centcom/gamma)
"oL" = (/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/gamma)
-"oM" = (/obj/machinery/door/airlock/centcom{name = "Team Storage"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops)
+"oM" = (/obj/effect/decal/warning_stripes/northwest,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"oN" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/gun/projectile/shotgun/automatic/combat,/obj/item/gun/projectile/shotgun/automatic/combat,/obj/item/gun/projectile/shotgun/automatic/combat,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
"oO" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"oP" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/gun/energy/sniperrifle,/obj/item/gun/energy/sniperrifle,/obj/item/gun/energy/sniperrifle,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
@@ -775,7 +775,7 @@
"oU" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/centcom/gamma)
"oV" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/centcom/gamma)
"oW" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/gun/energy/gun/nuclear,/obj/item/gun/energy/gun/nuclear,/obj/item/gun/energy/gun/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
-"oX" = (/obj/machinery/door/airlock/centcom{name = "Prison"; opacity = 1; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
+"oX" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"oY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops)
"oZ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops)
"pa" = (/obj/structure/noticeboard{pixel_x = -32},/obj/item/paper/syndimemo,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
@@ -811,7 +811,7 @@
"pE" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"pF" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership)
"pG" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops)
-"pH" = (/obj/machinery/door/airlock/centcom{name = "Prison Cell"; opacity = 1; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops)
+"pH" = (/obj/machinery/bsa/full/admin/east,/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"pI" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac)
"pJ" = (/obj/structure/flora/ausbushes/stalkybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac)
"pK" = (/obj/structure/flora/ausbushes/pointybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac)
@@ -874,7 +874,7 @@
"qP" = (/obj/effect/decal/cleanable/blood,/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom)
"qQ" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "floorscorched2"},/area/centcom)
"qR" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{name = "plating"},/area/centcom)
-"qS" = (/turf/unsimulated/floor{icon_state = "floorgrime"},/area/centcom)
+"qS" = (/obj/effect/decal/warning_stripes/northeast,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"qT" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{name = "plating"},/area/centcom)
"qU" = (/turf/unsimulated/floor{icon_state = "panelscorched"},/area/centcom)
"qV" = (/turf/unsimulated/floor{name = "plating"},/area/centcom)
@@ -899,13 +899,13 @@
"ro" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/computer/mech_bay_power_console,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
"rp" = (/obj/mecha/combat/durand/loaded{operation_req_access = list(1)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/mech_bay_recharge_floor,/area/shuttle/gamma/space)
"rq" = (/obj/item/radio/intercom/specops{pixel_y = 25},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
-"rr" = (/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
+"rr" = (/obj/effect/decal/warning_stripes/southwest,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"rs" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Assault Armor Storage"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rt" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT"; name = "Assault Armor"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"ru" = (/obj/item/radio/intercom/specops{pixel_y = -28},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rv" = (/obj/machinery/door/poddoor{id_tag = "GRAVPULTS"; name = "Gravity Catapults"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rw" = (/obj/machinery/door/poddoor{id_tag = "GRAVPULTS"; name = "Gravity Catapults"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
-"rx" = (/obj/machinery/teleport/hub/upgraded{admin_usage = 1},/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
+"rx" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"ry" = (/obj/machinery/door/poddoor{id_tag = "CCTELE"; name = "Specops Teleporter"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rz" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rA" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -920,10 +920,27 @@
"rJ" = (/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "SPECOPS"; name = "Ready Room"; pixel_x = -6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "specopsoffice"; name = "Privacy Shutters"; pixel_x = 6; pixel_y = -6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = -6; pixel_y = -6; req_access_txt = "114"},/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops)
"rK" = (/turf/unsimulated/wall/splashscreen,/area/start)
"rL" = (/obj/structure/table/abductor,/obj/item/bonegel/alien,/obj/item/bonesetter/alien,/obj/item/FixOVein/alien,/obj/item/surgicaldrill/alien,/obj/item/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
-"rM" = (/turf/unsimulated/floor/snow,/obj/structure/flora/bush,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
+"rM" = (/obj/effect/decal/warning_stripes/southeast,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"rN" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac)
-"rO" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin)
-"rP" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin)
+"rO" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT1"; name = "gravpult"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rP" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT0"; name = "gravpult"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rQ" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Assault Armor South"; dir = 1; network = list("ERT","CentComm")},/obj/effect/decal/warning_stripes/yellow/partial{dir = 8},/obj/effect/decal/warning_stripes/arrow{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rR" = (/obj/machinery/door/airlock/centcom{name = "Team Storage"; opacity = 1; req_access_txt = "109"},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rS" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
+"rT" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rU" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rV" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"rW" = (/obj/machinery/door/airlock/centcom{name = "Prison"; opacity = 1; req_access_txt = "104"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rX" = (/obj/machinery/teleport/hub/upgraded{admin_usage = 1},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rY" = (/obj/effect/decal/warning_stripes/northwest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"rZ" = (/obj/effect/decal/warning_stripes/northeast,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"sa" = (/obj/effect/decal/warning_stripes/southwest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"sb" = (/obj/effect/decal/warning_stripes/southeast,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"sc" = (/obj/machinery/door/airlock/centcom{name = "Prison Cell"; opacity = 1; req_access_txt = "104"},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"sd" = (/obj/effect/decal/cleanable/dirt,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom)
+"se" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin)
+"sf" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin)
+"sg" = (/obj/machinery/teleport/hub/upgraded{admin_usage = 1},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"sq" = (/turf/unsimulated/wall,/area/centcom/control)
"sr" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"ss" = (/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
@@ -956,7 +973,6 @@
"sW" = (/obj/machinery/door/airlock/centcom{name = "Freezer"; opacity = 1; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control)
"sX" = (/turf/unsimulated/wall,/area/centcom/specops)
"sZ" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0; pixel_y = 10},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
-"ta" = (/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
"td" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"te" = (/obj/machinery/recharge_station/upgraded,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"tf" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/kitchen/rollingpin,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
@@ -964,18 +980,13 @@
"th" = (/obj/effect/landmark{name = "Marauder Exit"},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"ti" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"tj" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT3"; name = "Launch Bay #3"},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
-"tk" = (/turf/unsimulated/floor{icon_state = "warnplate"; dir = 8},/area/centcom/specops)
-"tl" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT3"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
-"tm" = (/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops)
"tn" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"to" = (/obj/structure/sign/poster/random{pixel_x = -32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control)
"tp" = (/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = -6},/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control)
"tq" = (/obj/machinery/vending/dinnerware{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"tr" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/condiment/enzyme,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"ts" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
-"tt" = (/obj/mecha/combat/marauder/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
"tv" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT2"; name = "Launch Bay #2"},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
-"tw" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT2"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
"tx" = (/obj/machinery/door/airlock/centcom{name = "Commander Quarters"; opacity = 1; req_access_txt = "114"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control)
"ty" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control)
"tA" = (/obj/machinery/computer/pod/deathsquad,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
@@ -987,7 +998,6 @@
"tG" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control)
"tH" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control)
"tI" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT1"; name = "Launch Bay #1"},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
-"tJ" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT1"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
"tK" = (/obj/structure/bed,/obj/item/bedsheet,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/control)
"tL" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/control)
"tM" = (/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/control)
@@ -997,8 +1007,6 @@
"tT" = (/turf/unsimulated/floor{icon_state = "green"; dir = 1},/area/centcom/control)
"tU" = (/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control)
"tV" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT0"; name = "Launch Bay #0"},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
-"tW" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
-"tX" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Assault Armor South"; dir = 1; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops)
"tZ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
"ub" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT"; name = "Assault Armor"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"uc" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control)
@@ -1029,12 +1037,8 @@
"uE" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control)
"uF" = (/obj/structure/table/reinforced,/obj/item/radio/intercom/specops,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"uG" = (/obj/item/radio/intercom/specops{pixel_y = 25},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
-"uH" = (/turf/unsimulated/floor{tag = "icon-warning"; icon_state = "warning"},/area/centcom/control)
"uI" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"uJ" = (/obj/machinery/door/poddoor{id_tag = "SPECOPS"; name = "Ready Room"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops)
-"uK" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
-"uL" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops)
-"uM" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control)
"uN" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access_txt = "113"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"uO" = (/obj/structure/table/reinforced,/obj/item/radio/intercom/specops,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"uP" = (/obj/structure/table/reinforced,/obj/effect/landmark{name = "nukecode"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -1081,8 +1085,6 @@
"vW" = (/obj/machinery/telecomms/bus/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control)
"vX" = (/obj/machinery/telecomms/hub/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
"wb" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops)
-"wc" = (/turf/unsimulated/floor{tag = "icon-warning (NORTHWEST)"; icon_state = "warning"; dir = 9},/area/centcom/specops)
-"wd" = (/turf/unsimulated/floor{dir = 5; icon_state = "warning"},/area/centcom/specops)
"we" = (/turf/space,/area/centcom/specops)
"wg" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops)
"wh" = (/obj/machinery/recharge_station/upgraded,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops)
@@ -1093,8 +1095,6 @@
"wm" = (/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/control)
"wn" = (/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/centcom/control)
"wr" = (/turf/unsimulated/wall/fakeglass,/area/centcom/specops)
-"ws" = (/turf/unsimulated/floor{tag = "icon-warning (SOUTHWEST)"; icon_state = "warning"; dir = 10},/area/centcom/specops)
-"wt" = (/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/specops)
"wu" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"wC" = (/turf/unsimulated/wall,/area/centcom/bathroom)
"wD" = (/obj/structure/toilet{dir = 4},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
@@ -1521,7 +1521,7 @@ ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapap
ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckiAckckckckckckckckckaNaNaNaNaNfffffffffffffffggWgdgdgdgdgdgdgdgdgdgdgXfHfHfHfHfHfgaNaNisaNaNaNaNaNitnAnxnxnxnBnqnxnxnxnxnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqfMeqgkeqbsergYgZhaerbsgJgJeIgLgLbshbhbhbhbhbbsgMeNeNeNgNbsgveQeQeQgwbD
ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfggWgdgdgdgdgdhcgdgdhcgdhdhehehehfhefgaNaNisaNaNaNaNaNitnCnxnxnxnEnDnxnFnGhOnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqgTbserererererbshhhhhihjhjbshkhkhkhkhkbshlhmhmhmhnbshohphphphqbD
ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfghrgdgdgdgdgehshtgehsgehuhvhvhvhwhvfgaNaNisaNaNaNaNaNitnHnxnInInxnJnxnKnMnLnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNhyhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhB
-ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfgfghChDhDhCfgfgfgfgfgfgfgfgfgfgfgfgfgaNaNisaNaNaNaNaNnqnHnxnInNnxnOnxnxnQnPnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfgfghCdsdshCfgfgfgfgfgfgfgfgfgfgfgfgfgaNaNisaNaNaNaNaNnqnHnxnInNnxnOnxnxnQnPnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfghEhFhFhFfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNnqnRnxnxnxnBnqnqnqnqnqnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZaPaPaPaPaPbZaPaPaPaPaPbZaPaPaPaPaPbZ
ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfghFhFhFhFfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNnqnHnxnxnxnSnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphHhIhJhKhLbshMhNhYhPhQbshRhShThUhVbD
ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfgfgfgfgfgfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNnUnTnxnxnxnxnVnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphWhWhXhWhWbshYhZhZhZhYbsiaiaiaiaiabD
@@ -1568,30 +1568,30 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababababababcvababababababababababababababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababaonjafnjafnjalabaonjafnjafnjalababababababacabnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababaoajoOajoOajalabaoajoOajoOajalabacababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbXbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaeabamakoOakoOakanagamakoOakoOakdsagagababaeabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaeababacaeababaonjnjafnjafnjaTpvoCnjafnjafnjnjnjnjdtababacababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbXbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaeabamakoOakoOakanagamakoOakoOakdtagagababaeabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaeababacaeababaonjnjafnjafnjaTpvoCnjafnjafnjnjnjnjecababacababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaeababababacaonjaZoOoOoOaZoOoOoOaZoOoOoOaZoOoOnjalabababaeabnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababababaeabababaonjoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOnjalacababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaeababababaeabaeaonjaTpvpvpvpvpvpvpvpvpvpvpvoCnjbbnjalabaeabacabnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaeacababagagagbcbcbcbcbababababababababaaXnjoOnjdtabacabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaeacababagagagbcbcbcbcbababababababababaaXnjoOnjecabacabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaiaNaNaNaNaNaNaNaiacababaeababagagamnjoOnjalabababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacaeabababaNaNaNaNaNaNaNaNaNdtabababacamnjnjqXnjbdnjiwagiHagiHagnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacaeabababaNaNaNaNaNaNaNaNaNecabababacamnjnjqXnjbdnjefagegagegagnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaNaNaNaNaNaNaNaNaNalabababaonjnjoHoIjtoOnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaNaNaNaNaNaNaNaNaNalaeabadaonjaLoOoOoOoOfZoQoRnjfYjMmgnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabacabababaiaNaNaNaNaNaNaNaiababababjsnjpaoOmfmfpcoOpdpepWpXpXganjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErHrErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaNaNaNaNaNiwagagagagiHamnjplmfpmjNmfoOmkppnjpXggnjnjghgjgigxgxhggxgxhxhGnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababaeabababaNaNaNaNaNpupvpvpvpvpvoCnjmhmfpwpxmfoOmkppnjnjnjnjnjgjgiiumqiviFivotiGhxnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacabaiaNaNaNaNaNaNaNaNaNpypzpApzpzpzpzpCoOJboOoOoOoOmkppnjnjnjnjnjgjiImqiviJiSiKivotiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabacabababaiaNaNaNaNaNaNaNaiababababehnjpaoOmfmfpcoOpdpepWpXpXganjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErHrErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaNaNaNaNaNefagagagagegamnjplmfpmjNmfoOmkppnjpXggnjnjghgjgigxgxhggxgxhxhGnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababaeabababaNaNaNaNaNpupvpvpvpvpvoCnjmhmfpwpxmfoOmkppnjnjnjnjnjgjgiiuemiviFiveCiGhxnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacabaiaNaNaNaNaNaNaNaNaNpypzpApzpzpzpzpCoOJboOoOoOoOmkppnjnjnjnjnjgjiIemiviJiSiKiveCiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNpFaVoBpvpvpvoCnjmiouououmhoOmkppoBpvpvpvpvpvpviviJiSiUiSiKiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaWaNaiababaXnjpRpSpTpSjOoOpUpViWiViViXiViViWiFiSiYjjjiiSiFiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqasaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaYabaNaNaNaNaNaNaNaNaNaNaNaNaNaNovabaonjqfqgqhqiqjoOoOoOoBpvpvpvpvpvpviviJiSjkiSiSiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaeabaNaNaNaNaNaNaNaNaNaNaNaNaNaNalabaonjnjppqtqrqunjqwoOnjnjnjnjnjgjiIowiviJiSiKivoxiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-rKrErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWcPbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaNaNaNanabababnjnjnjnjnjnjqDqDqEqFqGqHnjgjjvjuowivjwivoxjxjynjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaiabababbabaoyaXnjqLqMqMqMqMqMnjjzgjjvjJjJjKjJjJjyjznjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqasaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaYabaNaNaNaNaNaNaNaNaNaNaNaNaNaNeSabaonjqfqgqhqiqjoOoOoOoBpvpvpvpvpvpviviJiSjkiSiSiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaeabaNaNaNaNaNaNaNaNaNaNaNaNaNaNalabaonjnjppqtqrqunjqwoOnjnjnjnjnjgjiIhDiviJiSiKiviwiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+rKrErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWcPbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaNaNaNanabababnjnjnjnjnjnjqDqDqEqFqGqHnjgjjvjuhDivjwiviwjxjynjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaiabababbabaiHaXnjqLqMqMqMqMqMnjjzgjjvjJjJjKjJjJjyjznjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababacababaoqXqMqMqMqMqMmlnjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababadozoAamnjrerererererfnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababadjsmqamnjrerererererfnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababaonjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNrMaeababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmsaeababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNabaNaNaNaNaNabaNaNaNaNaNalabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNabaiaNaNaNaiabaNaNaNaNaNalabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
@@ -1624,38 +1624,38 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqsqsqsqsqsysEmnsMsNmnsEsEsOmosqsQsQsQsQsqsRsSsTsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsvsEsEsEsEsEsEsEsEsysysqsQsUsVsVsqsqsWsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsqaNaNaNsvsEsEsEsEsEsEsEsEsEsEsusQmpmpsQsQsQsQsZsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXoSrqtdtesXtarrrstdsqsqsqsqsqsEsEmnsMsCmnsEsEsEsEsEsQsQsQsQtfsQsQtgsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititjtktitititjtltmtntdtdrttdtdtdtdsqsrssstsqtosEmnsMtpmnsEsEsEsEsutqsQsQsQtrsQsQtssqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXtatttdtdsqswsssssxsEsEsEsEsEsEsEsEsEsEsqsusususususususqsqdWdXsqsqsqsqsqsqsqsqsqsqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititvtktitititvtwtmtntdtdrttdtdtdtdsqsqsqsqsqsqsqtxsqsqsqsqsEsEtysqcScRcUcTcWcVcXsudZdYebeasuecefefefefefegefefefeheiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtAsXtatttdtdsqtBtCtDsqtEtFtFtFtFtGsqsEsEtHsqdodedqdpdLdKdesufbfatLfcsuemeCeCeCeCeCeCeCeCeCeSeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititItktitititItJtmtntdtdrttdtdtdtdsqtKtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXtatttdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVtktitititVtWtXtntdrurttdtdtdrusXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXoSrqtdtesXotovrstdsqsqsqsqsqsEsEmnsMsCmnsEsEsEsEsEsQsQsQsQtfsQsQtgsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititjowtitititjoxoytntdtdrttdtdtdtdsqsrssstsqtosEmnsMtpmnsEsEsEsEsutqsQsQsQtrsQsQtssqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXotoztdtdsqswsssssxsEsEsEsEsEsEsEsEsEsEsqsusususususususqsqdWdXsqsqsqsqsqsqsqsqsqsqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititvowtitititvoAoytntdtdrttdtdtdtdsqsqsqsqsqsqsqtxsqsqsqsqsEsEtysqcScRcUcTcWcVcXsudZdYebeasuoMoXoXoXoXoXpHoXoXoXqSeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtAsXotoztdtdsqtBtCtDsqtEtFtFtFtFtGsqsEsEtHsqdodedqdpdLdKdesufbfatLfcsurrrxrxrxrxrxrxrxrxrxrMeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititIowtitititIrOoytntdtdrttdtdtdtdsqtKtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXotoztdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVowtitititVrPrQtntdrurttdtdtdrusXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmsXrwrvsXsXsXsXubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoEoEoEoEoFfmfofnfqfpfsfrfnfEfmufujujuhuiugujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogojoioioioiokohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGoNoJoWoPoGfmjHfFkdkdkdkdfFlZmdujujujujujujujujuqururururururussXfeujflsqtQtRtZsuutuuuvuwuxuyuzsutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpgpfpfpfphoGfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXoMsXsquEtRtSsuuFtRuGuHtRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipfpkpopfptfdoUoToToToToToToVfdujujujuIuIujujujuJuKuKuKuKuKuKuKuLuKuKuKuMtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGpjpfpfrloGfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXrFrGrFsXsXoXsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNsXrxujujujujujryujuXrzooonvavbujvcvdvdvdvdvesXuKsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNsXrAujsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXuKsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNsXrBujsXvkvkpqprujujujvyvyujujujvzvdrCrIrDbesXuKsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXvkvkvksXvIvJujujujujvLujsXvdrJmjeTvPsXuKsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXsXsXsXsXsXbfbfsXsXsXvSvTvUvVvdsXuKsqvWtRvXsutQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXaNaNaNaNwbwcwdwbwesXiDwgwhwiwjsXuKsqwkudwlsuwmudududududuetRucudududududwnsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvxsXsXaNaNaNaNwrwswtwrwesXsXsXsXsXsXsXoXsqsqsqsqsqsqsqsqsqsqsqsqwusqsqsqsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpgpfpfpfphoGfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXrRsXsquEtRtSsuuFtRuGrStRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipfpkpopfptfdoUoToToToToToToVfdujujujuIuIujujujuJrTrTrTrTrTrTrTrUrTrTrTrVtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGpjpfpfrloGfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXrFrGrFsXsXrWsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNsXrXujujujujujryujuXrzooonvavbujvcvdvdvdvdvesXrTsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNsXrAujsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXrTsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNsXrBujsXvkvkpqprujujujvyvyujujujvzvdrCrIrDbesXrTsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXvkvkvksXvIvJujujujujvLujsXvdrJmjeTvPsXrTsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXsXsXsXsXsXbfbfsXsXsXvSvTvUvVvdsXrTsqvWtRvXsutQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXaNaNaNaNwbrYrZwbwesXiDwgwhwiwjsXrTsqwkudwlsuwmudududududuetRucudududududwnsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvxsXsXaNaNaNaNwrsasbwrwesXsXsXsXsXsXsXrWsqsqsqsqsqsqsqsqsqsqsqsqwusqsqsqsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkvksXaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujwCwDwEwFwGwCwHwIwJwKwLwMwNwOwPwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpGsXaNaNaNaNaNaNaNaNaNaNaNsXujujpHujujwCwCwCwIwIwIwIwIwIwKxcxdxexdxfwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpGsXaNaNaNaNaNaNaNaNaNaNaNsXujujscujujwCwCwCwIwIwIwIwIwIwKxcxdxexdxfwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXaNaNaNaNaNaNaNaNaNaNbgsXsXsXsXujuSwCwDxlwIwIwIwIwIwIwKxmxnwNxoxfwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujwCwCwCwIxxwCwHwIwJwKxyxzxAxzxzwKwKwKwKwKwKwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbYbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXujujpHujujwCwDxIwIxxwCwCwCwKwKxJxzxKxzwLwPxzpJpIpLpKpNpMwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbYbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXujujscujujwCwDxIwIxxwCwCwCwKwKxJxzxKxzwLwPxzpJpIpLpKpNpMwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXujujwCwCwCwIwIwIwIwIxRwLxSxSxSxSwMxfxdpOwKxzxzxzxzxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujwCwDxWwIwIwIwIwIxRxmxXxYwNxXxYxfxdpPxzxZxZxZwNcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyaybycydyeaNazaNaNaNaAaNyaybycydyeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujpHujujwCwCwCyfyfyfyfyfwKxmxXxYwNxXxYxfxzpJxzwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyjyjyjykylaBylylylaBylyoyjyjyjyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujscujujwCwCwCyfyfyfyfyfwKxmxXxYwNxXxYxfxzpJxzwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyjyjyjykylaBylylylaBylyoyjyjyjyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXujujpQsXaNaNaNaNaNaNxdxmxXxYwNxXxYxfypxdwKyqwNwNyrcnytcnoDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyvyvywyxyyyNyAyByCyNyyyEyFyvyvyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujpYsXaNaNaNaNaNaNxdxmxXxYwNxXxYxfyGytyGwNwNwNyHxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyvyvyKyLyMyNyMyOyMyNyMyPyKyvyvyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujpHujujpQsXaNaNaNaNaNaNwKxyyQyQyQyRwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyFyvyTyMyNyNyNyNyNyNyNyMyTyvywyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujscujujpQsXaNaNaNaNaNaNwKxyyQyQyQyRwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyFyvyTyMyNyNyNyNyNyNyNyMyTyvywyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXaNaNaNwKwKwKwKxdxdwKwKxmwNxfxdpZwKwNwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySylyoyWyXyYyZyNzazbyNzcykylyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKzdzezfrNzezewKxmwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizhzizjzkyNzazbyNyyyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKzlzezmrNzezeznxmwNxfyGytyGwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizqzrzryZyNzazbyNyMyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
@@ -1687,12 +1687,12 @@ aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbW
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKytytytcraNaNaNaNaNaNaNaNaNaNcrytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWcObWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqJqKAwqJqNAwqJqOAwqQqPAwqJqNAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRqSAwqRqTAwqRqUAwqRqVAwqRqWAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRsdAwqRqTAwqRqUAwqRqVAwqRqWAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqYqZAwqYqZAwqYqZAwqYqZAwqYqZAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwrarararararbrararbrararararaAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwrararcrararararararararararaAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqYqZAwqYqZAwqYqZAwqYqZAwqYqZAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRqSAwrdqWAwqRqWAwrgqVAwqRqTAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRsdAwrdqWAwqRqWAwrgqVAwqRqTAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqJqKAwqJqNAwqJqNAwqJrhAwqJriAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
@@ -1729,7 +1729,7 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNDAGRGPFvFvFvGPGSDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKDKDAaNDAGTFvFvGPFvFvGUDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDuaNEMDxDyDyDzEIDKDKDAaNDAGVFvFvFvFvFvGWDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGXGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwrOHbHcHbrPDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGXGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwseHbHcHbsfDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjUjWjVjYjXkajZaNjUjWktkvkukajZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDAHeHfDADwDwDwDwDuaNEfDKDKDAaNaNEMDwHgHhHiDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkwkykxkxkxkAkzaNkwkDkxkxkxkAkzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHlHmHnDAHoFvFvHpDAHqHrHsHpDwGaDKDKDAaNaNaNHtHuHvHwHtaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkEkGkFkIkHkNkMaNkEkGkOkIkPkNkMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHAFvFvFvHBFvFvFvFvHCFvFvFvFvHCDKDKDKDAaNaNEMDwDwHDDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
@@ -1744,7 +1744,7 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkQkRkxkxkxkAkSaNkQkRkxkxkxkAkSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKlKDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVrLljlmllaNkUlikVrLljlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIADKDKDKIBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNlylnlAlzlFaNaNaNlylnlAlzlFaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfICDKDKDKIDEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIFIGIHmsIJDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIFIGIHsgIJDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDxDyDzDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm
index c7e5fb77b92..dc22811f616 100644
--- a/_maps/map_files/generic/z5.dmm
+++ b/_maps/map_files/generic/z5.dmm
@@ -279,7 +279,7 @@
"fE" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
"fF" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
"fG" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
-"fH" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
+"fH" = (/obj/machinery/conveyor/counterclockwise{dir = 10; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
"fI" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp)
"fJ" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp)
"fK" = (/obj/structure/ore_box,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/dangerous/explored)
@@ -307,7 +307,7 @@
"gg" = (/obj/machinery/mineral/stacking_machine{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
"gh" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
"gi" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
-"gj" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
+"gj" = (/obj/machinery/conveyor{dir = 10; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
"gk" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
"gl" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/dangerous/explored)
"gm" = (/turf/simulated/wall,/area/mine/laborcamp/security)
diff --git a/_maps/map_files/shuttles/cargo_base.dmm b/_maps/map_files/shuttles/cargo_base.dmm
index 55dc39181f5..2ab606b76d4 100644
--- a/_maps/map_files/shuttles/cargo_base.dmm
+++ b/_maps/map_files/shuttles/cargo_base.dmm
@@ -9,7 +9,7 @@
"i" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/supply)
"j" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/machinery/door_control{id = "QMLoaddoor2"; layer = 3; name = "Loading Doors"; pixel_x = 24; pixel_y = 8; req_access_txt = "0"},/obj/machinery/door_control{id = "QMLoaddoor"; layer = 3; name = "Loading Doors"; pixel_x = 24; pixel_y = -8; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/supply)
"k" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "31"},/obj/docking_port/mobile/supply{timid = 1},/turf/simulated/shuttle/floor,/area/shuttle/supply)
-"l" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/shuttle/plating,/area/shuttle/supply)
+"l" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/shuttle/plating,/area/shuttle/supply)
"m" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/supply)
"n" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall/interior{tag = "icon-swall_f10"; icon_state = "swall_f10"},/area/shuttle/supply)
"o" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor,/area/shuttle/supply)
@@ -38,3 +38,4 @@ mneoepq
rstttsu
vwxxxyv
"}
+
diff --git a/_maps/test_all_maps.dm b/_maps/test_all_maps.dm
index 5289988bf82..86c701cb4b0 100644
--- a/_maps/test_all_maps.dm
+++ b/_maps/test_all_maps.dm
@@ -2,15 +2,20 @@
#if !defined(USING_MAP_DATUM)
// Away missions
- #include "map_files\RandomZLevels\beach.dmm"
- #include "map_files\RandomZLevels\moonoutpost19.dmm"
- #include "map_files\RandomZLevels\undergroundoutpost45.dmm"
#include "map_files\RandomZLevels\academy.dmm"
+ #include "map_files\RandomZLevels\beach.dmm"
#include "map_files\RandomZLevels\blackmarketpackers.dmm"
+ #include "map_files\RandomZLevels\centcomAway.dmm"
+ #include "map_files\RandomZLevels\evil_santa.dmm"
+ #include "map_files\RandomZLevels\example.dmm"
+ #include "map_files\RandomZLevels\moonoutpost19.dmm"
+ #include "map_files\RandomZLevels\spacebattle.dmm"
#include "map_files\RandomZLevels\spacehotel.dmm"
#include "map_files\RandomZLevels\stationCollision.dmm"
+ #include "map_files\RandomZLevels\terrorspiders.dmm"
+ #include "map_files\RandomZLevels\undergroundoutpost45.dmm"
#include "map_files\RandomZLevels\wildwest.dmm"
- #include "map_files\RandomZLevels\evil_santa.dmm"
+
// Space Ruins
#include "map_files\RandomRuins\SpaceRuins\abandonedzoo.dmm"
diff --git a/code/LINDA/LINDA_fire.dm b/code/LINDA/LINDA_fire.dm
index df4e8b47f31..ada5e6a9e5f 100644
--- a/code/LINDA/LINDA_fire.dm
+++ b/code/LINDA/LINDA_fire.dm
@@ -42,7 +42,7 @@
//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile
/obj/effect/hotspot
anchored = 1
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
unacidable = 1//So you can't melt fire with acid.
icon = 'icons/effects/fire.dmi'
icon_state = "1"
diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm
index f1475bb2605..bb212b17138 100644
--- a/code/LINDA/LINDA_turf_tile.dm
+++ b/code/LINDA/LINDA_turf_tile.dm
@@ -250,7 +250,7 @@
var/atmos_overlay = get_atmos_overlay_by_name(atmos_overlay_type)
if(atmos_overlay)
overlays -= atmos_overlay
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
atmos_overlay = get_atmos_overlay_by_name(new_overlay_type)
if(atmos_overlay)
@@ -267,12 +267,12 @@
/turf/simulated/proc/tile_graphic()
if(air.toxins > MOLES_PLASMA_VISIBLE)
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
return "plasma"
var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in air.trace_gases
if(sleeping_agent && (sleeping_agent.moles > 1))
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
return "sleeping_agent"
return null
diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index cd6688d095f..6c34d3144b0 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -54,6 +54,8 @@
// LAVA_PROTECT used on the flags_2 variable for both SUIT and HEAD items, and stops lava damage. Must be present in both to stop lava damage.
#define LAVA_PROTECT_2 2048
+#define OVERLAY_QUEUED_2 4096
+
//Reagent flags
#define REAGENT_NOREACT 1
diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index 3ad2900bfa1..7d0a4ab1504 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -27,6 +27,7 @@
#define GAS_PIPE_VISIBLE_LAYER 2.47
#define GAS_FILTER_LAYER 2.48
#define GAS_PUMP_LAYER 2.49
+#define CONVEYOR_LAYER 2.495
#define LOW_OBJ_LAYER 2.5
#define LOW_SIGIL_LAYER 2.52
#define SIGIL_LAYER 2.54
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 4612c8cdce3..1f0768ba9b0 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -373,4 +373,13 @@
#define RETURN_TO_LOBBY 2
//Melting Temperatures for various specific objects
-#define GIRDER_MELTING_TEMP 5000
\ No newline at end of file
+#define GIRDER_MELTING_TEMP 5000
+
+// Area selection defines
+#define AREASELECT_CORNERA "corner A"
+#define AREASELECT_CORNERB "corner B"
+
+//https://secure.byond.com/docs/ref/info.html#/atom/var/mouse_opacity
+#define MOUSE_OPACITY_TRANSPARENT 0
+#define MOUSE_OPACITY_ICON 1
+#define MOUSE_OPACITY_OPAQUE 2
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 056bc25be5d..580cb85d696 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -132,6 +132,18 @@
#define EMOTE_VISUAL 1 //A mob emote is visual
#define EMOTE_SOUND 2 //A mob emote is sound
+#define STATUS_UPDATE_HEALTH 1
+#define STATUS_UPDATE_STAT 2
+#define STATUS_UPDATE_CANMOVE 4
+#define STATUS_UPDATE_STAMINA 8
+#define STATUS_UPDATE_BLIND 16
+#define STATUS_UPDATE_BLURRY 32
+#define STATUS_UPDATE_NEARSIGHTED 64
+#define STATUS_UPDATE_DRUGGY 128
+
+#define STATUS_UPDATE_NONE 0
+#define STATUS_UPDATE_ALL (~0)
+
//Human sub-species
#define isshadowling(A) (is_species(A, /datum/species/shadow/ling))
#define isshadowlinglesser(A) (is_species(A, /datum/species/shadow/ling/lesser))
diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm
index 3e81a67b1b2..0d20a3edb74 100644
--- a/code/__DEFINES/reagents.dm
+++ b/code/__DEFINES/reagents.dm
@@ -1,3 +1,6 @@
#define SOLID 1
#define LIQUID 2
-#define GAS 3
\ No newline at end of file
+#define GAS 3
+
+#define REAGENT_OVERDOSE_EFFECT 1
+#define REAGENT_OVERDOSE_FLAGS 2
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index f258d0e097d..b85677ff777 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -14,6 +14,10 @@
//prevents distinguishing identical timers with the wait variable
#define TIMER_NO_HASH_WAIT 16
+//Loops the timer repeatedly until qdeleted
+//In most cases you want a subsystem instead
+#define TIMER_LOOP 32
+
#define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something
#define TIMER_ID_NULL -1
@@ -120,3 +124,22 @@
#define RUNLEVEL_POSTGAME 8
#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME)
+
+#define COMPILE_OVERLAYS(A)\
+ if (TRUE) {\
+ var/list/ad = A.add_overlays;\
+ var/list/rm = A.remove_overlays;\
+ var/list/po = A.priority_overlays;\
+ if(LAZYLEN(rm)){\
+ A.overlays -= rm;\
+ rm.Cut();\
+ }\
+ if(LAZYLEN(ad)){\
+ A.overlays |= ad;\
+ ad.Cut();\
+ }\
+ if(LAZYLEN(po)){\
+ A.overlays |= po;\
+ }\
+ A.flags_2 &= ~OVERLAY_QUEUED_2;\
+}
\ No newline at end of file
diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index 8e1b8516172..c30817ed5aa 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -185,4 +185,4 @@
return "[key_name(src)] ([mob.x],[mob.y],[mob.z])"
//this is only used here (for now)
-#undef RUST_G
\ No newline at end of file
+#undef RUST_G
diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm
index 071c1afa202..e5c5cc68b49 100644
--- a/code/__HELPERS/lists.dm
+++ b/code/__HELPERS/lists.dm
@@ -9,6 +9,35 @@
* Misc
*/
+ // binary search sorted insert
+// IN: Object to be inserted
+// LIST: List to insert object into
+// TYPECONT: The typepath of the contents of the list
+// COMPARE: The variable on the objects to compare
+#define BINARY_INSERT(IN, LIST, TYPECONT, COMPARE) \
+ var/__BIN_CTTL = length(LIST);\
+ if(!__BIN_CTTL) {\
+ LIST += IN;\
+ } else {\
+ var/__BIN_LEFT = 1;\
+ var/__BIN_RIGHT = __BIN_CTTL;\
+ var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
+ var/##TYPECONT/__BIN_ITEM;\
+ while(__BIN_LEFT < __BIN_RIGHT) {\
+ __BIN_ITEM = LIST[__BIN_MID];\
+ if(__BIN_ITEM.##COMPARE <= IN.##COMPARE) {\
+ __BIN_LEFT = __BIN_MID + 1;\
+ } else {\
+ __BIN_RIGHT = __BIN_MID;\
+ };\
+ __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
+ };\
+ __BIN_ITEM = LIST[__BIN_MID];\
+ __BIN_MID = __BIN_ITEM.##COMPARE > IN.##COMPARE ? __BIN_MID : __BIN_MID + 1;\
+ LIST.Insert(__BIN_MID, IN);\
+ }
+
+
//Returns a list in plain english as a string
/proc/english_list(var/list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
var/total = input.len
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 3d495964cb0..4ebced1c973 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -255,8 +255,8 @@ This is always put in the attack log.
add_attack_logs(user, M, what_done, custom_level)
return
- var/user_str = key_name_log(user)
- var/target_str = key_name_log(target)
+ var/user_str = key_name_log(user) + COORD(user)
+ var/target_str = key_name_log(target) + COORD(target)
if(istype(user))
user.create_attack_log("Attacked [target_str]: [what_done]")
@@ -265,7 +265,6 @@ This is always put in the attack log.
log_attack(user_str, target_str, what_done)
var/loglevel = ATKLOG_MOST
-
if(!isnull(custom_level))
loglevel = custom_level
else if(istype(target))
@@ -503,4 +502,4 @@ This is always put in the attack log.
var/list/viewrangelist = splittext(view, "x")
viewX = text2num(viewrangelist[1])
viewY = text2num(viewrangelist[2])
- return list(viewX, viewY)
\ No newline at end of file
+ return list(viewX, viewY)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 1080a4f628d..e01a1fd9895 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1785,28 +1785,99 @@ var/mob/dview/dview_mob = new
for(var/type in types)
var/typename = "[type]"
var/static/list/TYPES_SHORTCUTS = list(
+ //longest paths comes first - otherwise they get shadowed by the more generic ones
/obj/effect/decal/cleanable = "CLEANABLE",
- /obj/item/radio/headset = "HEADSET",
- /obj/item/clothing/head/helmet/space = "SPESSHELMET",
- /obj/item/book/manual = "MANUAL",
- /obj/item/reagent_containers/food/drinks = "DRINK", //longest paths comes first
- /obj/item/reagent_containers/food = "FOOD",
- /obj/item/reagent_containers = "REAGENT_CONTAINERS",
- /obj/item = "WEAPON",
- /obj/machinery/atmospherics = "ATMOS_MECH",
- /obj/machinery/portable_atmospherics = "PORT_ATMOS",
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
- /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
- /obj/item/organ = "ORGAN",
- /obj/item = "ITEM",
- /obj/machinery = "MACHINERY",
/obj/effect = "EFFECT",
+ /obj/item/ammo_casing = "AMMO",
+ /obj/item/book/manual = "MANUAL",
+ /obj/item/borg/upgrade = "BORG_UPGRADE",
+ /obj/item/cartridge = "PDA_CART",
+ /obj/item/clothing/head/helmet/space = "SPESSHELMET",
+ /obj/item/clothing/head = "HEAD",
+ /obj/item/clothing/under = "UNIFORM",
+ /obj/item/clothing/shoes = "SHOES",
+ /obj/item/clothing/suit = "SUIT",
+ /obj/item/clothing/gloves = "GLOVES",
+ /obj/item/clothing/mask/cigarette = "CIGARRETE", // oof
+ /obj/item/clothing/mask = "MASK",
+ /obj/item/clothing/glasses = "GLASSES",
+ /obj/item/clothing = "CLOTHING",
+ /obj/item/grenade/clusterbuster = "CLUSTERBUSTER",
+ /obj/item/grenade = "GRENADE",
+ /obj/item/gun = "GUN",
+ /obj/item/implant = "IMPLANT",
+ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
+ /obj/item/mecha_parts/mecha_equipment/weapon = "MECHA_WEAPON",
+ /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
+ /obj/item/melee = "MELEE",
+ /obj/item/mmi = "MMI",
+ /obj/item/nullrod = "NULLROD",
+ /obj/item/organ/external = "EXT_ORG",
+ /obj/item/organ/internal/cyberimp = "CYBERIMP",
+ /obj/item/organ/internal = "INT_ORG",
+ /obj/item/organ = "ORGAN",
+ /obj/item/pda = "PDA",
+ /obj/item/projectile = "PROJ",
+ /obj/item/radio/headset = "HEADSET",
+ /obj/item/reagent_containers/glass/beaker = "BEAKER",
+ /obj/item/reagent_containers/glass/bottle = "BOTTLE",
+ /obj/item/reagent_containers/food/pill/patch = "PATCH",
+ /obj/item/reagent_containers/food/pill = "PILL",
+ /obj/item/reagent_containers/food/drinks = "DRINK",
+ /obj/item/reagent_containers/food = "FOOD",
+ /obj/item/reagent_containers/syringe = "SYRINGE",
+ /obj/item/reagent_containers = "REAGENT_CONTAINERS",
+ /obj/item/robot_parts = "ROBOT_PARTS",
+ /obj/item/seeds = "SEED",
+ /obj/item/slime_extract = "SLIME_CORE",
+ /obj/item/spacepod_equipment/weaponry = "POD_WEAPON",
+ /obj/item/spacepod_equipment = "POD_EQUIP",
+ /obj/item/stack/sheet/mineral = "MINERAL",
+ /obj/item/stack/sheet = "SHEET",
+ /obj/item/stack/tile = "TILE",
+ /obj/item/stack = "STACK",
+ /obj/item/stock_parts/cell = "POWERCELL",
+ /obj/item/stock_parts = "STOCK_PARTS",
+ /obj/item/storage/firstaid = "FIRSTAID",
+ /obj/item/storage = "STORAGE",
+ /obj/item/tank = "GAS_TANK",
+ /obj/item/toy/crayon = "CRAYON",
+ /obj/item/toy = "TOY",
+ /obj/item = "ITEM",
+ /obj/machinery/atmospherics = "ATMOS_MACH",
+ /obj/machinery/computer = "CONSOLE",
+ /obj/machinery/door/airlock = "AIRLOCK",
+ /obj/machinery/door = "DOOR",
+ /obj/machinery/kitchen_machine = "KITCHEN",
+ /obj/machinery/portable_atmospherics/canister = "CANISTER",
+ /obj/machinery/portable_atmospherics = "PORT_ATMOS",
+ /obj/machinery/power = "POWER",
+ /obj/machinery/telecomms = "TCOMMS",
+ /obj/machinery = "MACHINERY",
+ /obj/mecha = "MECHA",
+ /obj/structure/closet/crate = "CRATE",
+ /obj/structure/closet = "CLOSET",
+ /obj/structure/statue = "STATUE",
+ /obj/structure/chair = "CHAIR", // oh no
+ /obj/structure/stool/bed = "BED",
+ /obj/structure/stool = "STOOL",
+ /obj/structure/table = "TABLE",
+ /obj/structure = "STRUCTURE",
+ /obj/vehicle = "VEHICLE",
/obj = "O",
/datum = "D",
- /turf/simulated/floor = "FLOOR",
- /turf/simulated/wall = "WALL",
+ /turf/simulated/floor = "SIM_FLOOR",
+ /turf/simulated/wall = "SIM_WALL",
+ /turf/unsimulated/floor = "UNSIM_FLOOR",
+ /turf/unsimulated/wall = "UNSIM_WALL",
/turf = "T",
+ /mob/living/carbon/alien = "XENO",
+ /mob/living/carbon/human = "HUMAN",
/mob/living/carbon = "CARBON",
+ /mob/living/silicon/robot = "CYBORG",
+ /mob/living/silicon/ai = "AI",
+ /mob/living/silicon = "SILICON",
+ /mob/living/simple_animal/bot = "BOT",
/mob/living/simple_animal = "SIMPLE",
/mob/living = "LIVING",
/mob = "M"
diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index b2521527a98..0b51e52d3ea 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -11,7 +11,8 @@
*/
/mob/living/silicon/ai/DblClickOn(var/atom/A, params)
if(client.click_intercept)
- client.click_intercept.InterceptClickOn(src, params, A)
+ // Not doing a click intercept here, because otherwise we double-tap with the `ClickOn` proc.
+ // But we return here since we don't want to do regular dblclick handling
return
if(control_disabled || stat) return
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 9679935bdaa..006f350873b 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -392,7 +392,7 @@
icon = 'icons/mob/screen_full.dmi'
icon_state = "passage0"
plane = CLICKCATCHER_PLANE
- mouse_opacity = 2
+ mouse_opacity = MOUSE_OPACITY_OPAQUE
screen_loc = "CENTER-7,CENTER-7"
/obj/screen/click_catcher/Click(location, control, params)
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 803901ae668..a187dfe3648 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -89,7 +89,7 @@
icon_state = "default"
name = "Alert"
desc = "Something seems to have gone wrong with this alert, so report this bug please"
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds
var/severity = 0
var/alerttooltipstyle = ""
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index a44f5d2e5a8..673a49ffd22 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -54,7 +54,7 @@
icon_state = "default"
screen_loc = "CENTER-7,CENTER-7"
layer = FULLSCREEN_LAYER
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/severity = 0
/obj/screen/fullscreen/Destroy()
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index b61cb69e0e4..7c38ee1072a 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -26,7 +26,7 @@
/obj/screen/text
icon = null
icon_state = null
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
screen_loc = "CENTER-7,CENTER-7"
maptext_height = 480
maptext_width = 480
@@ -275,8 +275,38 @@
/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()
+ ..()
+ add_overlays()
+
+/obj/screen/inventory/MouseExited()
+ ..()
+ cut_overlay(object_overlays)
+ object_overlays.Cut()
+
+/obj/screen/inventory/proc/add_overlays()
+ var/mob/user = hud.mymob
+
+ if(hud && user && slot_id)
+ var/obj/item/holding = user.get_active_hand()
+
+ if(!holding || user.get_item_by_slot(slot_id))
+ return
+
+ var/image/item_overlay = image(holding)
+ item_overlay.alpha = 92
+
+ if(!user.can_equip(holding, slot_id, disable_warning = TRUE))
+ item_overlay.color = "#ff0000"
+ else
+ item_overlay.color = "#00ff00"
+
+ object_overlays += item_overlay
+ add_overlay(object_overlays)
+
/obj/screen/inventory/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else
// We don't even know if it's a middle click
@@ -379,7 +409,7 @@
icon = 'icons/mob/guardian.dmi'
icon_state = "base"
screen_loc = ui_health
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/screen/healthdoll
name = "health doll"
diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm
index d04abfe5a87..797384b8336 100644
--- a/code/_onclick/observer.dm
+++ b/code/_onclick/observer.dm
@@ -1,6 +1,7 @@
/mob/dead/observer/DblClickOn(var/atom/A, var/params)
if(client.click_intercept)
- client.click_intercept.InterceptClickOn(src, params, A)
+ // Not doing a click intercept here, because otherwise we double-tap with the `ClickOn` proc.
+ // But we return here since we don't want to do regular dblclick handling
return
if(can_reenter_corpse && mind && mind.current)
diff --git a/code/controllers/Processes/npcai.dm b/code/controllers/Processes/npcai.dm
index 1f8d2a34e9e..a93c6e881de 100644
--- a/code/controllers/Processes/npcai.dm
+++ b/code/controllers/Processes/npcai.dm
@@ -2,7 +2,6 @@ var/global/datum/controller/process/npcai/npcai_master
/datum/controller/process/npcai
var/current_cycle
- var/saved_voice = 0
/datum/controller/process/npcai/setup()
name = "npc ai"
@@ -36,25 +35,6 @@ var/global/datum/controller/process/npcai/npcai_master
catchBadType(M)
simple_animal_list -= M
- if(ticker.current_state == GAME_STATE_FINISHED && !saved_voice)
- var/mob/living/carbon/human/interactive/M = safepick(snpc_list)
- if(M)
- M.saveVoice()
- saved_voice = 1
-
- for(last_object in snpc_list)
- var/mob/living/carbon/human/interactive/M = last_object
- if(istype(M) && !QDELETED(M))
- try
- if(!M.alternateProcessing || M.forceProcess)
- M.doProcess()
- catch(var/exception/e)
- catchException(e, M)
- SCHECK
- else
- catchBadType(M)
- snpc_list -= M
-
current_cycle++
diff --git a/code/controllers/Processes/npcpool.dm b/code/controllers/Processes/npcpool.dm
deleted file mode 100644
index 945938852b4..00000000000
--- a/code/controllers/Processes/npcpool.dm
+++ /dev/null
@@ -1,119 +0,0 @@
-var/global/datum/controller/process/npcpool/npc_master
-
-/datum/controller/process/npcpool
- var/list/canBeUsed = list()
- var/list/canBeUsed_non = list()
- var/list/needsDelegate = list()
- var/list/needsAssistant = list()
- var/list/needsHelp_non = list()
- var/list/botPool_l = list() //list of all npcs using the pool
- var/list/botPool_l_non = list() //list of all non SNPC mobs using the pool
-
-/datum/controller/process/npcpool/setup()
- name = "npc pool"
- schedule_interval = 100
- start_delay = 17
- log_startup_progress("NPC pool ticker starting up.")
-
-/datum/controller/process/npcpool/copyStateFrom(var/datum/controller/process/npcpool/target)
- canBeUsed = target.canBeUsed
- canBeUsed_non = target.canBeUsed_non
- needsDelegate = target.needsDelegate
- needsAssistant = target.needsAssistant
- needsHelp_non = target.needsHelp_non
- botPool_l = target.botPool_l
- botPool_l_non = target.botPool_l_non
-
-
-DECLARE_GLOBAL_CONTROLLER(npcpool, npc_master)
-
-/datum/controller/process/npcpool/proc/insertBot(toInsert)
- if(istype(toInsert, /mob/living/carbon/human/interactive))
- botPool_l |= toInsert
-
-/datum/controller/process/npcpool/proc/removeBot(toRemove)
- botPool_l -= toRemove
-
-/datum/controller/process/npcpool/statProcess()
- ..()
- stat(null, "T [botPool_l.len + botPool_l_non.len] | D [needsDelegate.len] | A [needsAssistant.len + needsHelp_non.len] | U [canBeUsed.len + canBeUsed_non.len]")
-
-/datum/controller/process/npcpool/doWork()
- //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.
-
- listclearnulls(canBeUsed)
-
- //SNPC handling
- for(var/mob/living/carbon/human/interactive/check in botPool_l)
- if(!check)
- botPool_l -= check
- continue
- var/checkInRange = view(SNPC_MAX_RANGE_FIND, check)
- if(!(locate(check.TARGET) in checkInRange))
- needsDelegate |= check
-
- else if(check.IsDeadOrIncap(0))
- needsDelegate |= check
-
- else if(check.doing & SNPC_FIGHTING)
- needsAssistant |= check
-
- else
- canBeUsed |= check
- SCHECK
-
- if(needsDelegate.len)
- needsDelegate -= pick(needsDelegate) // cheapo way to make sure stuff doesn't pingpong around in the pool forever. delegation runs seperately to each loop so it will work much smoother
-
- for(var/mob/living/carbon/human/interactive/check in needsDelegate)
- if(!check)
- needsDelegate -= check
- continue
- if(canBeUsed.len)
- var/mob/living/carbon/human/interactive/candidate = pick(canBeUsed)
- var/facCount = 0
- var/helpProb = 0
- for(var/C in check.faction)
- for(var/D in candidate.faction)
- if(D == C)
- helpProb = min(100, helpProb + 25)
- facCount++
- if(facCount == 1 && helpProb > 0)
- helpProb = 100
- if(prob(helpProb))
- if(candidate.takeDelegate(check))
- needsDelegate -= check
- canBeUsed -= candidate
- candidate.change_eye_color(255, 0, 0)
- SCHECK
-
- if(needsAssistant.len)
- needsAssistant -= pick(needsAssistant)
-
- for(var/mob/living/carbon/human/interactive/check in needsAssistant)
- if(!check)
- needsAssistant -= check
- continue
- if(canBeUsed.len)
- var/mob/living/carbon/human/interactive/candidate = pick(canBeUsed)
- var/facCount = 0
- var/helpProb = 0
- for(var/C in check.faction)
- for(var/D in candidate.faction)
- if(D == C)
- helpProb = min(100, helpProb + 25)
- facCount++
- if(facCount == 1 && helpProb > 0)
- helpProb = 100
- if(prob(helpProb))
- if(candidate.takeDelegate(check, 0))
- needsAssistant -= check
- canBeUsed -= candidate
- candidate.change_eye_color(255, 255, 0)
- SCHECK
diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm
index 16193241ca8..986467fc74a 100644
--- a/code/controllers/subsystem/air.dm
+++ b/code/controllers/subsystem/air.dm
@@ -363,19 +363,19 @@ SUBSYSTEM_DEF(air)
plmaster.icon = 'icons/effects/tile_effects.dmi'
plmaster.icon_state = "plasma"
plmaster.layer = FLY_LAYER
- plmaster.mouse_opacity = 0
+ plmaster.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
slmaster = new /obj/effect/overlay()
slmaster.icon = 'icons/effects/tile_effects.dmi'
slmaster.icon_state = "sleeping_agent"
slmaster.layer = FLY_LAYER
- slmaster.mouse_opacity = 0
+ slmaster.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
icemaster = new /obj/effect/overlay()
icemaster.icon = 'icons/turf/overlays.dmi'
icemaster.icon_state = "snowfloor"
icemaster.layer = TURF_LAYER + 0.1
- icemaster.mouse_opacity = 0
+ icemaster.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
#undef SSAIR_PIPENETS
#undef SSAIR_ATMOSMACHINERY
diff --git a/code/controllers/subsystem/npcai.dm b/code/controllers/subsystem/npcai.dm
new file mode 100644
index 00000000000..f8fa3a5aa0f
--- /dev/null
+++ b/code/controllers/subsystem/npcai.dm
@@ -0,0 +1,24 @@
+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
new file mode 100644
index 00000000000..b06d33f6f32
--- /dev/null
+++ b/code/controllers/subsystem/npcpool.dm
@@ -0,0 +1,127 @@
+#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
+
+ var/list/canBeUsed = list()
+ var/list/needsDelegate = list()
+ var/list/needsAssistant = list()
+
+ var/list/processing = list()
+ var/list/currentrun = list()
+ var/stage
+
+/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
+
+/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(stage == PROCESSING_NPCS)
+ while(cachecurrentrun.len)
+ var/mob/living/carbon/human/interactive/thing = cachecurrentrun[cachecurrentrun.len]
+ --cachecurrentrun.len
+
+ thing.InteractiveProcess()
+
+ 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
diff --git a/code/controllers/subsystem/overlays.dm b/code/controllers/subsystem/overlays.dm
new file mode 100644
index 00000000000..c35f1adee65
--- /dev/null
+++ b/code/controllers/subsystem/overlays.dm
@@ -0,0 +1,212 @@
+SUBSYSTEM_DEF(overlays)
+ name = "Overlay"
+ flags = SS_TICKER
+ wait = 1
+ priority = FIRE_PRIORITY_OVERLAYS
+ init_order = INIT_ORDER_OVERLAY
+
+ var/list/queue
+ var/list/stats
+ var/list/overlay_icon_state_caches
+ var/list/overlay_icon_cache
+
+/datum/controller/subsystem/overlays/PreInit()
+ overlay_icon_state_caches = list()
+ overlay_icon_cache = list()
+ queue = list()
+ stats = list()
+
+/datum/controller/subsystem/overlays/Initialize()
+ initialized = TRUE
+ fire(mc_check = FALSE)
+ return ..()
+
+
+/datum/controller/subsystem/overlays/stat_entry()
+ ..("Ov:[length(queue)]")
+
+/datum/controller/subsystem/overlays/Recover()
+ overlay_icon_state_caches = SSoverlays.overlay_icon_state_caches
+ overlay_icon_cache = SSoverlays.overlay_icon_cache
+ queue = SSoverlays.queue
+
+
+/datum/controller/subsystem/overlays/fire(resumed = FALSE, mc_check = TRUE)
+ var/list/queue = src.queue
+ var/static/count = 0
+ if(count)
+ var/c = count
+ count = 0 //so if we runtime on the Cut, we don't try again.
+ queue.Cut(1, c + 1)
+
+ for(var/thing in queue)
+ count++
+ if(thing)
+ var/atom/A = thing
+ COMPILE_OVERLAYS(A)
+ if(mc_check)
+ if(MC_TICK_CHECK)
+ break
+ else
+ CHECK_TICK
+
+ if(count)
+ queue.Cut(1, count + 1)
+ count = 0
+
+/proc/iconstate2appearance(icon, iconstate)
+ var/static/image/stringbro = new()
+ var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
+ var/list/cached_icon = icon_states_cache[icon]
+ if(cached_icon)
+ var/cached_appearance = cached_icon["[iconstate]"]
+ if(cached_appearance)
+ return cached_appearance
+ stringbro.icon = icon
+ stringbro.icon_state = iconstate
+ if(!cached_icon) //not using the macro to save an associated lookup
+ cached_icon = list()
+ icon_states_cache[icon] = cached_icon
+ var/cached_appearance = stringbro.appearance
+ cached_icon["[iconstate]"] = cached_appearance
+ return cached_appearance
+
+/proc/icon2appearance(icon)
+ var/static/image/iconbro = new()
+ var/list/icon_cache = SSoverlays.overlay_icon_cache
+ . = icon_cache[icon]
+ if(!.)
+ iconbro.icon = icon
+ . = iconbro.appearance
+ icon_cache[icon] = .
+
+/atom/proc/build_appearance_list(old_overlays)
+ var/static/image/appearance_bro = new()
+ var/list/new_overlays = list()
+ if(!islist(old_overlays))
+ old_overlays = list(old_overlays)
+ for(var/overlay in old_overlays)
+ if(!overlay)
+ continue
+ if(istext(overlay))
+ new_overlays += iconstate2appearance(icon, overlay)
+ else if(isicon(overlay))
+ new_overlays += icon2appearance(overlay)
+ else
+ if(isloc(overlay))
+ var/atom/A = overlay
+ if(A.flags_2 & OVERLAY_QUEUED_2)
+ COMPILE_OVERLAYS(A)
+ appearance_bro.appearance = overlay //this works for images and atoms too!
+ if(!ispath(overlay))
+ var/image/I = overlay
+ appearance_bro.dir = I.dir
+ new_overlays += appearance_bro.appearance
+ return new_overlays
+
+#define NOT_QUEUED_ALREADY (!(flags_2 & OVERLAY_QUEUED_2))
+#define QUEUE_FOR_COMPILE flags_2 |= OVERLAY_QUEUED_2; SSoverlays.queue += src;
+/atom/proc/cut_overlays(priority = FALSE)
+ LAZYINITLIST(priority_overlays)
+ LAZYINITLIST(remove_overlays)
+ LAZYINITLIST(add_overlays)
+ remove_overlays = overlays.Copy()
+ add_overlays.Cut()
+
+ if(priority)
+ priority_overlays.Cut()
+
+ //If not already queued for work and there are overlays to remove
+ if(NOT_QUEUED_ALREADY && remove_overlays.len)
+ QUEUE_FOR_COMPILE
+
+/atom/proc/cut_overlay(list/overlays, priority)
+ if(!overlays)
+ return
+ overlays = build_appearance_list(overlays)
+ LAZYINITLIST(add_overlays) //always initialized after this point
+ LAZYINITLIST(priority_overlays)
+ LAZYINITLIST(remove_overlays)
+ var/a_len = add_overlays.len
+ var/r_len = remove_overlays.len
+ var/p_len = priority_overlays.len
+ remove_overlays += overlays
+ add_overlays -= overlays
+
+ if(priority)
+ var/list/cached_priority = priority_overlays
+ LAZYREMOVE(cached_priority, overlays)
+
+ var/fa_len = add_overlays.len
+ var/fr_len = remove_overlays.len
+ var/fp_len = priority_overlays.len
+
+ //If not already queued and there is work to be done
+ if(NOT_QUEUED_ALREADY && (fa_len != a_len || fr_len != r_len || fp_len != p_len))
+ QUEUE_FOR_COMPILE
+
+/atom/proc/add_overlay(list/overlays, priority = FALSE)
+ if(!overlays)
+ return
+
+ overlays = build_appearance_list(overlays)
+
+ LAZYINITLIST(add_overlays) //always initialized after this point
+ LAZYINITLIST(priority_overlays)
+ var/a_len = add_overlays.len
+ var/p_len = priority_overlays.len
+
+ if(priority)
+ priority_overlays += overlays //or in the image. Can we use [image] = image?
+ var/fp_len = priority_overlays.len
+ if(NOT_QUEUED_ALREADY && fp_len != p_len)
+ QUEUE_FOR_COMPILE
+ else
+ add_overlays += overlays
+ var/fa_len = add_overlays.len
+ if(NOT_QUEUED_ALREADY && fa_len != a_len)
+ QUEUE_FOR_COMPILE
+
+/atom/proc/copy_overlays(atom/other, cut_old) //copys our_overlays from another atom
+ if(!other)
+ if(cut_old)
+ cut_overlays()
+ return
+
+ var/list/cached_other = other.overlays.Copy()
+ if(cached_other)
+ if(cut_old || !LAZYLEN(overlays))
+ remove_overlays = overlays
+ add_overlays = cached_other
+ if(NOT_QUEUED_ALREADY)
+ QUEUE_FOR_COMPILE
+ else if(cut_old)
+ cut_overlays()
+
+#undef NOT_QUEUED_ALREADY
+#undef QUEUE_FOR_COMPILE
+
+//TODO: Better solution for these?
+/image/proc/add_overlay(x)
+ overlays |= x
+
+/image/proc/cut_overlay(x)
+ overlays -= x
+
+/image/proc/cut_overlays(x)
+ overlays.Cut()
+
+/image/proc/copy_overlays(atom/other, cut_old)
+ if(!other)
+ if(cut_old)
+ cut_overlays()
+ return
+
+ var/list/cached_other = other.overlays.Copy()
+ if(cached_other)
+ if(cut_old || !overlays.len)
+ overlays = cached_other
+ else
+ overlays |= cached_other
+ else if(cut_old)
+ cut_overlays()
diff --git a/code/controllers/subsystem/tickets.dm b/code/controllers/subsystem/tickets.dm
index a3fd41b50eb..41eef735cda 100644
--- a/code/controllers/subsystem/tickets.dm
+++ b/code/controllers/subsystem/tickets.dm
@@ -35,7 +35,7 @@ SUBSYSTEM_DEF(tickets)
message_adminTicket("Tickets [report] have been open for over [ADMIN_TICKET_TIMEOUT / 600] minutes. Changing status to stale.")
/datum/controller/subsystem/tickets/stat_entry()
- ..("Tickets: [allTickets.len]")
+ ..("Tickets: [LAZYLEN(allTickets)]")
/datum/controller/subsystem/tickets/proc/checkStaleness()
var/stales = list()
diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm
index 21fea2ee419..e2539ebdf06 100644
--- a/code/controllers/subsystem/timer.dm
+++ b/code/controllers/subsystem/timer.dm
@@ -1,5 +1,5 @@
#define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth)
-#define BUCKET_POS(timer) ((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) % BUCKET_LEN) + 1)
+#define BUCKET_POS(timer) ((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) % BUCKET_LEN)||BUCKET_LEN)
#define TIMER_MAX (world.time + TICKS2DS(min(BUCKET_LEN-(SStimer.practical_offset-DS2TICKS(world.time - SStimer.head_offset))-1, BUCKET_LEN-1)))
#define TIMER_ID_MAX (2**24) //max float with integer precision
@@ -71,6 +71,7 @@ SUBSYSTEM_DEF(timer)
for(var/I in second_queue)
log_world(get_timer_debug_string(I))
+ var/cut_start_index = 1
var/next_clienttime_timer_index = 0
var/len = length(clienttime_timers)
@@ -90,11 +91,17 @@ SUBSYSTEM_DEF(timer)
ctime_timer.spent = REALTIMEOFDAY
callBack.InvokeAsync()
- qdel(ctime_timer)
+
+ if(ctime_timer.flags & TIMER_LOOP)
+ ctime_timer.spent = 0
+ clienttime_timers.Insert(ctime_timer, 1)
+ cut_start_index++
+ else
+ qdel(ctime_timer)
if(next_clienttime_timer_index)
- clienttime_timers.Cut(1,next_clienttime_timer_index+1)
+ clienttime_timers.Cut(cut_start_index,next_clienttime_timer_index+1)
if(MC_TICK_CHECK)
return
@@ -197,8 +204,22 @@ SUBSYSTEM_DEF(timer)
bucket_count -= length(spent)
- for(var/spent_timer in spent)
- qdel(spent_timer)
+ for(var/i in spent)
+ var/datum/timedevent/qtimer = i
+ if(QDELETED(qtimer))
+ bucket_count++
+ continue
+ if(!(qtimer.flags & TIMER_LOOP))
+ qdel(qtimer)
+ else
+ bucket_count++
+ qtimer.spent = 0
+ qtimer.bucketEject()
+ if(qtimer.flags & TIMER_CLIENT_TIME)
+ qtimer.timeToRun = REALTIMEOFDAY + qtimer.wait
+ else
+ qtimer.timeToRun = world.time + qtimer.wait
+ qtimer.bucketJoin()
spent.len = 0
@@ -294,6 +315,7 @@ SUBSYSTEM_DEF(timer)
var/id
var/datum/callback/callBack
var/timeToRun
+ var/wait
var/hash
var/list/flags
var/spent = 0 //time we ran the timer.
@@ -302,14 +324,19 @@ SUBSYSTEM_DEF(timer)
var/datum/timedevent/next
var/datum/timedevent/prev
-/datum/timedevent/New(datum/callback/callBack, timeToRun, flags, hash)
+/datum/timedevent/New(datum/callback/callBack, wait, flags, hash)
var/static/nextid = 1
id = TIMER_ID_NULL
src.callBack = callBack
- src.timeToRun = timeToRun
+ src.wait = wait
src.flags = flags
src.hash = hash
+ if(flags & TIMER_CLIENT_TIME)
+ timeToRun = REALTIMEOFDAY + wait
+ else
+ timeToRun = world.time + wait
+
if(flags & TIMER_UNIQUE)
SStimer.hashes[hash] = src
@@ -321,68 +348,15 @@ SUBSYSTEM_DEF(timer)
nextid++
SStimer.timer_id_dict[id] = src
- name = "Timer: [id] (\ref[src]), TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])"
+ name = "Timer: [id] (\ref[src]), TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT", "TIMER_LOOP")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])"
if((timeToRun < world.time || timeToRun < SStimer.head_offset) && !(flags & TIMER_CLIENT_TIME))
CRASH("Invalid timer state: Timer created that would require a backtrack to run (addtimer would never let this happen): [SStimer.get_timer_debug_string(src)]")
- if(callBack.object != GLOBAL_PROC)
+ if(callBack.object != GLOBAL_PROC && !QDESTROYING(callBack.object))
LAZYADD(callBack.object.active_timers, src)
-
- var/list/L
-
- if(flags & TIMER_CLIENT_TIME)
- L = SStimer.clienttime_timers
- else if(timeToRun >= TIMER_MAX)
- L = SStimer.second_queue
-
-
- if(L)
- //binary search sorted insert
- var/cttl = length(L)
- if(cttl)
- var/left = 1
- var/right = cttl
- var/mid = (left+right) >> 1 //rounded divide by two for hedgehogs
-
- var/datum/timedevent/item
- while(left < right)
- item = L[mid]
- if(item.timeToRun <= timeToRun)
- left = mid+1
- else
- right = mid
- mid = (left+right) >> 1
-
- item = L[mid]
- mid = item.timeToRun > timeToRun ? mid : mid+1
- L.Insert(mid, src)
-
- else
- L += src
- return
-
- //get the list of buckets
- var/list/bucket_list = SStimer.bucket_list
-
- //calculate our place in the bucket list
- var/bucket_pos = BUCKET_POS(src)
-
- //get the bucket for our tick
- var/datum/timedevent/bucket_head = bucket_list[bucket_pos]
- SStimer.bucket_count++
- //empty bucket, we will just add ourselves
- if(!bucket_head)
- bucket_list[bucket_pos] = src
- return
- //other wise, lets do a simplified linked list add.
- if(!bucket_head.prev)
- bucket_head.prev = bucket_head
- next = bucket_head
- prev = bucket_head.prev
- next.prev = src
- prev.next = src
+ bucketJoin()
/datum/timedevent/Destroy()
..()
@@ -406,31 +380,7 @@ SUBSYSTEM_DEF(timer)
if(!spent)
spent = world.time
- var/bucketpos = BUCKET_POS(src)
- var/datum/timedevent/buckethead
- var/list/bucket_list = SStimer.bucket_list
- if(bucketpos > 0)
- buckethead = bucket_list[bucketpos]
-
- if(buckethead == src)
- bucket_list[bucketpos] = next
- SStimer.bucket_count--
- else if(timeToRun < TIMER_MAX || next || prev)
- SStimer.bucket_count--
- else
- var/l = length(SStimer.second_queue)
- SStimer.second_queue -= src
- if(l == length(SStimer.second_queue))
- SStimer.bucket_count--
-
- if(prev == next && next)
- next.prev = null
- prev.next = null
- else
- if(prev)
- prev.next = next
- if(next)
- next.prev = prev
+ bucketEject()
else
if(prev && prev.next == src)
prev.next = next
@@ -440,6 +390,66 @@ SUBSYSTEM_DEF(timer)
prev = null
return QDEL_HINT_IWILLGC
+/datum/timedevent/proc/bucketEject()
+ var/bucketpos = BUCKET_POS(src)
+ var/list/bucket_list = SStimer.bucket_list
+ var/list/second_queue = SStimer.second_queue
+ var/datum/timedevent/buckethead
+ if(bucketpos > 0)
+ buckethead = bucket_list[bucketpos]
+ if(buckethead == src)
+ bucket_list[bucketpos] = next
+ SStimer.bucket_count--
+ else if(timeToRun < TIMER_MAX || next || prev)
+ SStimer.bucket_count--
+ else
+ var/l = length(second_queue)
+ second_queue -= src
+ if(l == length(second_queue))
+ SStimer.bucket_count--
+ if(prev != next)
+ prev.next = next
+ next.prev = prev
+ else
+ if(prev)
+ prev.next = null
+ if(next)
+ next.prev = null
+ prev = next = null
+
+/datum/timedevent/proc/bucketJoin()
+ var/list/L
+
+ if(flags & TIMER_CLIENT_TIME)
+ L = SStimer.clienttime_timers
+ else if(timeToRun >= TIMER_MAX)
+ L = SStimer.second_queue
+
+ if(L)
+ BINARY_INSERT(src, L, datum/timedevent, timeToRun)
+ return
+
+ //get the list of buckets
+ var/list/bucket_list = SStimer.bucket_list
+
+ //calculate our place in the bucket list
+ var/bucket_pos = BUCKET_POS(src)
+
+ //get the bucket for our tick
+ var/datum/timedevent/bucket_head = bucket_list[bucket_pos]
+ SStimer.bucket_count++
+ //empty bucket, we will just add ourselves
+ if(!bucket_head)
+ bucket_list[bucket_pos] = src
+ return
+ //other wise, lets do a simplified linked list add.
+ if(!bucket_head.prev)
+ bucket_head.prev = bucket_head
+ next = bucket_head
+ prev = bucket_head.prev
+ next.prev = src
+ prev.next = src
+
/datum/timedevent/proc/getcallingtype()
. = "ERROR"
if(callBack.object == GLOBAL_PROC)
@@ -452,13 +462,12 @@ SUBSYSTEM_DEF(timer)
CRASH("addtimer called without a callback")
if(wait < 0)
- stack_trace("addtimer called with a negative wait. Converting to 0")
+ stack_trace("addtimer called with a negative wait. Converting to [world.tick_lag]")
- //alot of things add short timers on themselves in their destroy, we ignore those cases
- if(wait >= 1 && callback && callback.object && callback.object != GLOBAL_PROC && QDELETED(callback.object))
- stack_trace("addtimer called with a callback assigned to a qdeleted object")
+ if(callback.object != GLOBAL_PROC && QDELETED(callback.object) && !QDESTROYING(callback.object))
+ stack_trace("addtimer called with a callback assigned to a qdeleted object. In the future such timers will not be supported and may refuse to run or run with a 0 wait")
- wait = max(wait, 0)
+ wait = max(CEILING(wait, world.tick_lag), world.tick_lag)
if(wait >= INFINITY)
CRASH("Attempted to create timer with INFINITY delay")
@@ -468,9 +477,9 @@ SUBSYSTEM_DEF(timer)
if(flags & TIMER_UNIQUE)
var/list/hashlist
if(flags & TIMER_NO_HASH_WAIT)
- hashlist = list(callback.object, "([callback.object.UID()])", callback.delegate, flags & TIMER_CLIENT_TIME)
+ hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, flags & TIMER_CLIENT_TIME)
else
- hashlist = list(callback.object, "([callback.object.UID()])", callback.delegate, wait, flags & TIMER_CLIENT_TIME)
+ hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, wait, flags & TIMER_CLIENT_TIME)
hashlist += callback.arguments
hash = hashlist.Join("|||||||")
@@ -486,13 +495,10 @@ SUBSYSTEM_DEF(timer)
if(hash_timer.flags & TIMER_STOPPABLE)
. = hash_timer.id
return
+ else if(flags & TIMER_OVERRIDE)
+ stack_trace("TIMER_OVERRIDE used without TIMER_UNIQUE")
-
- var/timeToRun = world.time + wait
- if(flags & TIMER_CLIENT_TIME)
- timeToRun = REALTIMEOFDAY + wait
-
- var/datum/timedevent/timer = new(callback, timeToRun, flags, hash)
+ var/datum/timedevent/timer = new(callback, wait, flags, hash)
return timer.id
/proc/deltimer(id)
@@ -515,4 +521,4 @@ SUBSYSTEM_DEF(timer)
#undef BUCKET_LEN
#undef BUCKET_POS
#undef TIMER_MAX
-#undef TIMER_ID_MAX
+#undef TIMER_ID_MAX
\ No newline at end of file
diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm
index 944fbb15ebf..88c4f9f4ea9 100644
--- a/code/controllers/verbs.dm
+++ b/code/controllers/verbs.dm
@@ -85,7 +85,7 @@
debug_variables(SSmobs)
feedback_add_details("admin_verb","DMob")
if("NPC AI")
- debug_variables(npcai_master)
+ debug_variables(SSnpcai)
feedback_add_details("admin_verb","DNPCAI")
if("Shuttle")
debug_variables(SSshuttle)
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index bb1cef167d6..e3a3ca6033a 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -111,7 +111,7 @@
X.pixel_y = Pixel_y
/obj/effect/ebeam
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = 1
var/datum/beam/owner
diff --git a/code/datums/click_intercept.dm b/code/datums/click_intercept.dm
new file mode 100644
index 00000000000..d3e9bccbda0
--- /dev/null
+++ b/code/datums/click_intercept.dm
@@ -0,0 +1,31 @@
+/datum/click_intercept
+ var/client/holder = null
+ var/list/obj/screen/buttons = list()
+
+/datum/click_intercept/New(client/C)
+ create_buttons()
+ enter(C)
+ return ..()
+
+/datum/click_intercept/Destroy()
+ holder.screen -= buttons
+ holder.click_intercept = null
+ holder.show_popup_menus = TRUE
+ holder = null
+ QDEL_LIST(buttons)
+ return ..()
+
+/datum/click_intercept/proc/enter(client/C)
+ holder = C
+ holder.click_intercept = src
+ holder.show_popup_menus = FALSE
+ holder.screen += buttons
+
+/datum/click_intercept/proc/quit()
+ qdel(src)
+
+/datum/click_intercept/proc/create_buttons()
+ return
+
+/datum/click_intercept/proc/InterceptClickOn(user,params,atom/object)
+ return
\ No newline at end of file
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 31c791f5127..656c12fa9d8 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -31,7 +31,7 @@
/datum/proc/vv_get_var(var_name)
switch(var_name)
- if("attack_log")
+ if("attack_log", "debug_log")
return debug_variable(var_name, vars[var_name], 0, src, sanitize = FALSE)
if("vars")
return debug_variable(var_name, list(), 0, src)
diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm
index 4f1672346ed..9d7faff6af3 100644
--- a/code/datums/diseases/beesease.dm
+++ b/code/datums/diseases/beesease.dm
@@ -24,7 +24,6 @@
to_chat(affected_mob, "Your stomach stings painfully.")
if(prob(20))
affected_mob.adjustToxLoss(2)
- affected_mob.updatehealth()
if(4)
if(prob(10))
affected_mob.visible_message("[affected_mob] buzzes.", \
@@ -37,4 +36,4 @@
new /mob/living/simple_animal/hostile/poison/bees(affected_mob.loc)
//if(5)
//Plus if you die, you explode into bees
- return
\ No newline at end of file
+ return
diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm
index bb95e4aa733..cacd229c429 100644
--- a/code/datums/diseases/brainrot.dm
+++ b/code/datums/diseases/brainrot.dm
@@ -25,7 +25,6 @@
to_chat(affected_mob, "You don't feel like yourself.")
if(prob(5))
affected_mob.adjustBrainLoss(1)
- affected_mob.updatehealth()
if(3)
if(prob(2))
affected_mob.emote("stare")
@@ -33,7 +32,6 @@
affected_mob.emote("drool")
if(prob(10) && affected_mob.getBrainLoss()<=98)//shouldn't retard you to death now
affected_mob.adjustBrainLoss(2)
- affected_mob.updatehealth()
if(prob(2))
to_chat(affected_mob, "Your try to remember something important...but can't.")
@@ -44,7 +42,6 @@
affected_mob.emote("drool")
if(prob(15) && affected_mob.getBrainLoss()<=98) //shouldn't retard you to death now
affected_mob.adjustBrainLoss(3)
- affected_mob.updatehealth()
if(prob(2))
to_chat(affected_mob, "Strange buzzing fills your head, removing all thoughts.")
if(prob(3))
diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm
index 7c5cde5b330..b0238b6418a 100644
--- a/code/datums/diseases/dna_spread.dm
+++ b/code/datums/diseases/dna_spread.dm
@@ -41,7 +41,6 @@
to_chat(affected_mob, "Your stomach hurts.")
if(prob(20))
affected_mob.adjustToxLoss(2)
- affected_mob.updatehealth()
if(4)
if(!transformed && !carrier)
//Save original dna for when the disease is cured.
@@ -69,4 +68,4 @@
affected_mob.domutcheck()
to_chat(affected_mob, "You feel more like yourself.")
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm
index 4a1a929101e..dc68cc3c7d2 100644
--- a/code/datums/diseases/flu.dm
+++ b/code/datums/diseases/flu.dm
@@ -31,7 +31,6 @@
to_chat(affected_mob, "Your stomach hurts.")
if(prob(20))
affected_mob.adjustToxLoss(1)
- affected_mob.updatehealth()
if(3)
if(affected_mob.lying && prob(15))
@@ -50,5 +49,4 @@
to_chat(affected_mob, "Your stomach hurts.")
if(prob(20))
affected_mob.adjustToxLoss(1)
- affected_mob.updatehealth()
return
diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm
index 8ba67750c06..371f38238a1 100644
--- a/code/datums/diseases/gbs.dm
+++ b/code/datums/diseases/gbs.dm
@@ -18,7 +18,6 @@
if(2)
if(prob(45))
affected_mob.adjustToxLoss(5)
- affected_mob.updatehealth()
if(prob(1))
affected_mob.emote("sneeze")
if(3)
@@ -32,7 +31,6 @@
if(prob(10))
affected_mob.emote("cough")
affected_mob.adjustToxLoss(5)
- affected_mob.updatehealth()
if(5)
to_chat(affected_mob, "Your body feels as if it's trying to rip itself open...")
if(prob(50))
@@ -50,4 +48,4 @@
cure_chance = 10
agent = "gibbis"
spread_flags = NON_CONTAGIOUS
- disease_flags = CURABLE
\ No newline at end of file
+ disease_flags = CURABLE
diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm
index fc26f005340..1ba2270008b 100644
--- a/code/datums/diseases/rhumba_beat.dm
+++ b/code/datums/diseases/rhumba_beat.dm
@@ -19,7 +19,6 @@
if(2)
if(prob(45))
affected_mob.adjustToxLoss(5)
- affected_mob.updatehealth()
if(prob(1))
to_chat(affected_mob, "You feel strange...")
if(3)
@@ -35,8 +34,7 @@
to_chat(affected_mob, "You feel a burning beat inside...")
if(prob(20))
affected_mob.adjustToxLoss(5)
- affected_mob.updatehealth()
if(5)
to_chat(affected_mob, "Your body is unable to contain the Rhumba Beat...")
if(prob(50))
- affected_mob.gib()
\ No newline at end of file
+ affected_mob.gib()
diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm
index a98a65cb1a2..b8684072c3f 100644
--- a/code/datums/holocall.dm
+++ b/code/datums/holocall.dm
@@ -29,7 +29,7 @@
for(var/I in callees)
var/obj/machinery/hologram/holopad/H = I
- if(!QDELETED(H) && !(H.stat & NOPOWER))
+ if(!QDELETED(H) && !(H.stat & NOPOWER) && H.anchored)
dialed_holopads += H
var/area/area = get_area(H)
LAZYADD(H.holo_calls, src)
@@ -159,7 +159,7 @@
/datum/holocall/proc/Check()
for(var/I in dialed_holopads)
var/obj/machinery/hologram/holopad/H = I
- if((H.stat & NOPOWER))
+ if((H.stat & NOPOWER) || !H.anchored)
ConnectionFailure(H)
if(QDELETED(src))
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index a10a539830e..3dc7e713361 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -47,7 +47,7 @@
var/role_alt_title
var/datum/job/assigned_job
- var/list/kills=list()
+ var/list/kills = list()
var/list/datum/objective/objectives = list()
var/list/datum/objective/special_verbs = list()
@@ -78,9 +78,8 @@
//zealot_master is a reference to the mob that converted them into a zealot (for ease of investigation and such)
var/mob/living/carbon/human/zealot_master = null
-/datum/mind/New(var/key)
- src.key = key
-
+/datum/mind/New(new_key)
+ key = new_key
/datum/mind/Destroy()
ticker.minds -= src
@@ -122,19 +121,15 @@
/datum/mind/proc/wipe_memory()
memory = null
-/datum/mind/proc/show_memory(mob/recipient, window=1)
+/datum/mind/proc/show_memory(mob/recipient, window = 1)
if(!recipient)
recipient = current
var/output = "[current.real_name]'s Memories:
"
output += memory
if(objectives.len)
- output += "
Objectives:"
-
- var/obj_count = 1
- for(var/datum/objective/objective in objectives)
- output += "Objective #[obj_count]: [objective.explanation_text]"
- obj_count++
+ output += "
Objectives:
"
+ output += gen_objective_text()
if(job_objectives.len)
output += "
Job Objectives:"
@@ -145,17 +140,213 @@
obj_count++
output += "
"
if(window)
- recipient << browse(output,"window=memory")
+ recipient << browse(output, "window=memory")
else
to_chat(recipient, "[output]")
+/datum/mind/proc/gen_objective_text(admin = FALSE)
+ . = ""
+ var/obj_count = 1
+ for(var/datum/objective/objective in objectives)
+ . += "Objective #[obj_count]: [objective.explanation_text]"
+ if(admin)
+ . += " Edit " // Edit
+ . += "Delete " // Delete
+
+ . += "" // Mark Completed
+ . += "Toggle Completion"
+ . += ""
+ . += "
"
+ obj_count++
+
+/datum/mind/proc/_memory_edit_header(gamemode, list/alt)
+ . = gamemode
+ if(ticker.mode.config_tag == gamemode || (LAZYLEN(alt) && (ticker.mode.config_tag in alt)))
+ . = uppertext(.)
+ . = "[.]: "
+
+/datum/mind/proc/_memory_edit_role_enabled(role)
+ . = "|Disabled in Prefs"
+ if(current && current.client && (role in current.client.prefs.be_special))
+ . = "|Enabled in Prefs"
+
+/datum/mind/proc/memory_edit_implant(mob/living/carbon/human/H)
+ if(ismindshielded(H))
+ . = "Mindshield Implant:Remove|Implanted"
+ else
+ . = "Mindshield Implant:No Implant|Implant [H.p_them()]!"
+
+
+/datum/mind/proc/memory_edit_revolution(mob/living/carbon/human/H)
+ . = _memory_edit_header("revolution")
+ if(ismindshielded(H))
+ . += "NO|headrev|rev"
+ else if(src in ticker.mode.head_revolutionaries)
+ . += "no|HEADREV|rev"
+ . += "
Flash: give"
+
+ var/list/L = current.get_contents()
+ var/obj/item/flash/flash = locate() in L
+ if(flash)
+ if(!flash.broken)
+ . += "|take."
+ else
+ . += "|take|repair."
+ else
+ . += "."
+
+ . += " Reequip (gives traitor uplink)."
+ if(objectives.len==0)
+ . += "
Objectives are empty! Set to kill all heads."
+ else if(src in ticker.mode.revolutionaries)
+ . += "no|headrev|REV"
+ else
+ . += "NO|headrev|rev"
+
+ . += _memory_edit_role_enabled(ROLE_REV)
+
+/datum/mind/proc/memory_edit_cult(mob/living/carbon/human/H)
+ . = _memory_edit_header("cult")
+ if(ismindshielded(H))
+ . += "NO|cultist"
+ else if(src in ticker.mode.cult)
+ . += "no|CULTIST"
+ . += "
Give tome|equip."
+ else
+ . += "NO|cultist"
+
+ . += _memory_edit_role_enabled(ROLE_CULTIST)
+
+/datum/mind/proc/memory_edit_wizard(mob/living/carbon/human/H)
+ . = _memory_edit_header("wizard")
+ if(src in ticker.mode.wizards)
+ . += "WIZARD|no"
+ . += "
To lair, undress, dress up, let choose name."
+ if(objectives.len==0)
+ . += "
Objectives are empty! Randomize!"
+ else
+ . += "wizard|NO"
+
+ . += _memory_edit_role_enabled(ROLE_WIZARD)
+
+/datum/mind/proc/memory_edit_changeling(mob/living/carbon/human/H)
+ . = _memory_edit_header("changeling", list("traitorchan"))
+ if(src in ticker.mode.changelings)
+ . += "CHANGELING|no"
+ if(objectives.len==0)
+ . += "
Objectives are empty! Randomize!"
+ if(changeling && changeling.absorbed_dna.len && (current.real_name != changeling.absorbed_dna[1]))
+ . += "
Transform to initial appearance."
+ else
+ . += "changeling|NO"
+
+ . += _memory_edit_role_enabled(ROLE_CHANGELING)
+
+/datum/mind/proc/memory_edit_vampire(mob/living/carbon/human/H)
+ . = _memory_edit_header("vampire", list("traitorvamp"))
+ if(src in ticker.mode.vampires)
+ . += "VAMPIRE|no"
+ if(objectives.len==0)
+ . += "
Objectives are empty! Randomize!"
+ else
+ . += "vampire|NO"
+
+ . += _memory_edit_role_enabled(ROLE_VAMPIRE)
+ /** Enthralled ***/
+ . += "
enthralled: "
+ if(src in ticker.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)
+ . += "OPERATIVE|no"
+ . += "
To shuttle, undress, dress up."
+ var/code
+ for(var/obj/machinery/nuclearbomb/bombue in machines)
+ if(length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN")
+ code = bombue.r_code
+ break
+ if(code)
+ . += " Code is [code]. tell the code."
+ else
+ . += "operative|NO"
+
+ . += _memory_edit_role_enabled(ROLE_OPERATIVE)
+
+/datum/mind/proc/memory_edit_shadowling(mob/living/carbon/human/H)
+ . = _memory_edit_header("shadowling")
+ if(src in ticker.mode.shadows)
+ . += "SHADOWLING|thrall|no"
+ else if(src in ticker.mode.shadowling_thralls)
+ . += "Shadowling|THRALL|no"
+ else
+ . += "shadowling|thrall|NO"
+
+ . += _memory_edit_role_enabled(ROLE_SHADOWLING)
+
+/datum/mind/proc/memory_edit_abductor(mob/living/carbon/human/H)
+ . = _memory_edit_header("abductor")
+ if(src in ticker.mode.abductors)
+ . += "ABDUCTOR|no"
+ . += "|undress|equip"
+ else
+ . += "abductor|NO"
+
+ . += _memory_edit_role_enabled(ROLE_ABDUCTOR)
+
+/datum/mind/proc/memory_edit_traitor()
+ . = _memory_edit_header("traitor", list("traitorchan", "traitorvamp"))
+ if(src in ticker.mode.traitors)
+ . += "TRAITOR|no"
+ if(objectives.len==0)
+ . += "
Objectives are empty! Randomize!"
+ else
+ . += "traitor|NO"
+
+ . += _memory_edit_role_enabled(ROLE_TRAITOR)
+
+/datum/mind/proc/memory_edit_silicon()
+ . = "Silicon: "
+ var/mob/living/silicon/robot/robot = current
+ if(istype(robot) && robot.emagged)
+ . += "
Cyborg: Is emagged! Unemag!
0th law: [robot.laws.zeroth_law]"
+ var/mob/living/silicon/ai/ai = current
+ if(istype(ai) && ai.connected_robots.len)
+ var/n_e_robots = 0
+ for(var/mob/living/silicon/robot/R in ai.connected_robots)
+ if(R.emagged)
+ n_e_robots++
+ . += "
[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag"
+
+/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)))
+ . = "Uplink: give"
+ var/obj/item/uplink/hidden/suplink = find_syndicate_uplink()
+ var/crystals
+ if(suplink)
+ crystals = suplink.uses
+ if(suplink)
+ . += "|take"
+ if(usr.client.holder.rights & (R_SERVER|R_EVENT))
+ . += ", [crystals] crystals"
+ else
+ . += ", [crystals] crystals"
+ . += "." //hiel grammar
+ // ^ 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)
alert("Not before round-start!", "Alert")
return
- var/out = "[name][(current&&(current.real_name!=name))?" (as [current.real_name])":""]
"
- out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]
"
+ var/out = "[name][(current && (current.real_name != name))?" (as [current.real_name])" : ""]
"
+ out += "Mind currently owned by key: [key] [active ? "(synced)" : "(not synced)"]
"
out += "Assigned role: [assigned_role]. Edit
"
out += "Factions and special roles:
"
@@ -169,284 +360,60 @@
"nuclear",
"traitor", // "traitorchan",
)
- var/text = ""
var/mob/living/carbon/human/H = current
if(ishuman(current))
/** Impanted**/
- if(ismindshielded(H))
- text = "Mindshield Implant:Remove|Implanted"
- else
- text = "Mindshield Implant:No Implant|Implant [H.p_them()]!"
- sections["implant"] = text
+ sections["implant"] = memory_edit_implant(H)
/** REVOLUTION ***/
- text = "revolution"
- if(ticker.mode.config_tag=="revolution")
- text += uppertext(text)
- text = "[text]: "
- if(ismindshielded(H))
- text += "NO|headrev|rev"
- else if(src in ticker.mode.head_revolutionaries)
- text += "no|HEADREV|rev"
- text += "
Flash: give"
-
- var/list/L = current.get_contents()
- var/obj/item/flash/flash = locate() in L
- if(flash)
- if(!flash.broken)
- text += "|take."
- else
- text += "|take|repair."
- else
- text += "."
-
- text += " Reequip (gives traitor uplink)."
- if(objectives.len==0)
- text += "
Objectives are empty! Set to kill all heads."
- else if(src in ticker.mode.revolutionaries)
- text += "no|headrev|REV"
- else
- text += "NO|headrev|rev"
-
- if(current && current.client && (ROLE_REV in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["revolution"] = text
-
+ sections["revolution"] = memory_edit_revolution(H)
/** CULT ***/
- text = "cult"
- if(ticker.mode.config_tag=="cult")
- text = uppertext(text)
- text = "[text]: "
- if(ismindshielded(H))
- text += "NO|cultist"
- else if(src in ticker.mode.cult)
- text += "no|CULTIST"
- text += "
Give tome|equip."
-/*
- if(objectives.len==0)
- text += "
Objectives are empty! Set to sacrifice and escape or summon."
-*/
- else
- text += "NO|cultist"
-
-
- if(current && current.client && (ROLE_CULTIST in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["cult"] = text
-
+ sections["cult"] = memory_edit_cult(H)
/** WIZARD ***/
- text = "wizard"
- if(ticker.mode.config_tag=="wizard")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.wizards)
- text += "WIZARD|no"
- text += "
To lair, undress, dress up, let choose name."
- if(objectives.len==0)
- text += "
Objectives are empty! Randomize!"
- else
- text += "wizard|NO"
-
- if(current && current.client && (ROLE_WIZARD in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["wizard"] = text
-
+ sections["wizard"] = memory_edit_wizard(H)
/** CHANGELING ***/
- text = "changeling"
- if(ticker.mode.config_tag=="changeling" || ticker.mode.config_tag=="traitorchan")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.changelings)
- text += "CHANGELING|no"
- if(objectives.len==0)
- text += "
Objectives are empty! Randomize!"
- if( changeling && changeling.absorbed_dna.len && (current.real_name != changeling.absorbed_dna[1]) )
- text += "
Transform to initial appearance."
- else
- text += "changeling|NO"
-
- if(current && current.client && (ROLE_CHANGELING in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["changeling"] = text
-
+ sections["changeling"] = memory_edit_changeling(H)
/** VAMPIRE ***/
- text = "vampire"
- if(ticker.mode.config_tag=="vampire" || ticker.mode.config_tag=="traitorvamp")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.vampires)
- text += "VAMPIRE|no"
- if(objectives.len==0)
- text += "
Objectives are empty! Randomize!"
- else
- text += "vampire|NO"
-
- if(current && current.client && (ROLE_VAMPIRE in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
- /** Enthralled ***/
- text += "
enthralled: "
- if(src in ticker.mode.vampire_enthralled)
- text += "THRALL|no"
- else
- text += "thrall|NO"
-
- sections["vampire"] = text
-
-
+ sections["vampire"] = memory_edit_vampire(H)
/** NUCLEAR ***/
- text = "nuclear"
- if(ticker.mode.config_tag=="nuclear")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.syndicates)
- text += "OPERATIVE|no"
- text += "
To shuttle, undress, dress up."
- var/code
- for(var/obj/machinery/nuclearbomb/bombue in machines)
- if(length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN")
- code = bombue.r_code
- break
- if(code)
- text += " Code is [code]. tell the code."
- else
- text += "operative|NO"
-
- if(current && current.client && (ROLE_OPERATIVE in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["nuclear"] = text
-
+ sections["nuclear"] = memory_edit_nuclear(H)
/** SHADOWLING **/
- text = "shadowling"
- if(ticker.mode.config_tag == "shadowling")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.shadows)
- text += "SHADOWLING|thrall|no"
- else if(src in ticker.mode.shadowling_thralls)
- text += "Shadowling|THRALL|no"
- else
- text += "shadowling|thrall|NO"
-
- if(current && current.client && (ROLE_SHADOWLING in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["shadowling"] = text
-
+ sections["shadowling"] = memory_edit_shadowling(H)
/** Abductors **/
-
- text = "abductor"
- if(ticker.mode.config_tag == "abductor")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.abductors)
- text += "ABDUCTOR|no"
- text += "|undress|equip"
- else
- text += "abductor|NO"
-
- if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
-
- sections["Abductor"] = text
-
+ sections["abductor"] = memory_edit_abductor(H)
/** TRAITOR ***/
- text = "traitor"
- if(ticker.mode.config_tag=="traitor" || ticker.mode.config_tag=="traitorchan" || ticker.mode.config_tag=="traitorvamp")
- text = uppertext(text)
- text = "[text]: "
- if(src in ticker.mode.traitors)
- text += "TRAITOR|no"
- if(objectives.len==0)
- text += "
Objectives are empty! Randomize!"
- else
- text += "traitor|NO"
-
- if(current && current.client && (ROLE_TRAITOR in current.client.prefs.be_special))
- text += "|Enabled in Prefs"
- else
- text += "|Disabled in Prefs"
-
- sections["traitor"] = text
-
+ sections["traitor"] = memory_edit_traitor()
/** SILICON ***/
-
if(issilicon(current))
- text = "silicon"
- var/mob/living/silicon/robot/robot = current
- if(istype(robot) && robot.emagged)
- text += "
Cyborg: Is emagged! Unemag!
0th law: [robot.laws.zeroth_law]"
- var/mob/living/silicon/ai/ai = current
- if(istype(ai) && ai.connected_robots.len)
- var/n_e_robots = 0
- for(var/mob/living/silicon/robot/R in ai.connected_robots)
- if(R.emagged)
- n_e_robots++
- text += "
[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag"
-
+ sections["silicon"] = memory_edit_silicon()
+ /*
+ 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(sections["traitor"])
- out += sections["traitor"]+"
"
+ out += sections["traitor"] + "
"
if(sections["changeling"])
- out += sections["changeling"]+"
"
+ out += sections["changeling"] + "
"
sections -= "traitor"
sections -= "changeling"
-
- if(ticker.mode.config_tag == "traitorvamp")
+ // Elif technically unnecessary but it makes the following else look better
+ else if(ticker.mode.config_tag == "traitorvamp")
if(sections["traitor"])
- out += sections["traitor"]+"
"
+ out += sections["traitor"] + "
"
if(sections["vampire"])
- out += sections["vampire"]+"
"
+ out += sections["vampire"] + "
"
sections -= "traitor"
sections -= "vampire"
else
if(sections[ticker.mode.config_tag])
- out += sections[ticker.mode.config_tag]+"
"
+ out += sections[ticker.mode.config_tag] + "
"
sections -= ticker.mode.config_tag
+
for(var/i in sections)
if(sections[i])
- out += sections[i]+"
"
-
-
- if(((src in ticker.mode.head_revolutionaries) || \
- (src in ticker.mode.traitors) || \
- (src in ticker.mode.syndicates)) && \
- ishuman(current) )
-
- text = "Uplink: give"
- var/obj/item/uplink/hidden/suplink = find_syndicate_uplink()
- var/crystals
- if(suplink)
- crystals = suplink.uses
- if(suplink)
- text += "|take"
- if(usr.client.holder.rights & (R_SERVER|R_EVENT))
- text += ", [crystals] crystals"
- else
- text += ", [crystals] crystals"
- text += "." //hiel grammar
- out += text
+ out += sections[i] + "
"
+ out += memory_edit_uplink()
out += "
"
out += "Memory:
"
@@ -456,14 +423,9 @@
if(objectives.len == 0)
out += "EMPTY
"
else
- var/obj_count = 1
- for(var/datum/objective/objective in objectives)
- out += "[obj_count]: [objective.explanation_text] Edit Delete Toggle Completion
"
- obj_count++
+ out += gen_objective_text(admin = TRUE)
out += "Add objective
"
-
out += "Announce objectives
"
-
usr << browse(out, "window=edit_memory[src];size=400x500")
/datum/mind/Topic(href, href_list)
@@ -1284,12 +1246,9 @@
return A
/datum/mind/proc/announce_objectives()
- var/obj_count = 1
to_chat(current, "Your current objectives:")
- for(var/objective in objectives)
- var/datum/objective/O = objective
- to_chat(current, "Objective #[obj_count]: [O.explanation_text]")
- obj_count++
+ for(var/line in splittext(gen_objective_text(), "
"))
+ to_chat(current, line)
/datum/mind/proc/find_syndicate_uplink()
var/list/L = current.get_contents()
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index 842e162517c..8c172f3592f 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -90,7 +90,7 @@
for(var/path in backpack_contents)
var/number = backpack_contents[path]
for(var/i in 1 to number)
- H.equip_to_slot_or_del(new path(H), slot_in_backpack)
+ H.equip_or_collect(new path(H), slot_in_backpack)
for(var/path in cybernetic_implants)
var/obj/item/organ/internal/O = new path(H)
diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm
index 13c127e81e2..28c0b427ee2 100644
--- a/code/defines/procs/statistics.dm
+++ b/code/defines/procs/statistics.dm
@@ -65,12 +65,12 @@
lakey = sanitizeSQL(H.lastattacker:key)
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
var/coord = "[H.x], [H.y], [H.z]"
-// to_chat(world, "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])")
+// to_chat(world, "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.getBrainLoss()], [H.getOxyLoss()])")
establish_db_connection()
if(!dbcon.IsConnected())
log_game("SQL ERROR during death reporting. Failed to connect.")
else
- var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()], '[coord]')")
+ var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.getBrainLoss()], [H.getOxyLoss()], '[coord]')")
if(!query.Execute())
var/err = query.ErrorMsg()
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
@@ -105,7 +105,7 @@
if(!dbcon.IsConnected())
log_game("SQL ERROR during death reporting. Failed to connect.")
else
- var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()], '[coord]')")
+ var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.getBrainLoss()], [H.getOxyLoss()], '[coord]')")
if(!query.Execute())
var/err = query.ErrorMsg()
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index 5ac50b5a8dc..068fe991a9d 100644
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -27,7 +27,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "unknown"
layer = AREA_LAYER
luminosity = 0
- mouse_opacity = 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.
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 39064d1cf3b..a9bdb68c0ad 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -132,14 +132,14 @@
if(!fire)
fire = 1 //used for firedoor checks
updateicon()
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
air_doors_close()
/area/proc/fire_reset()
if(fire)
fire = 0 //used for firedoor checks
updateicon()
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
air_doors_open()
return
@@ -165,7 +165,7 @@
/area/proc/set_fire_alarm_effect()
fire = 1
updateicon()
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/area/proc/readyalert()
if(!eject)
@@ -181,12 +181,12 @@
if(!party)
party = 1
updateicon()
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/area/proc/partyreset()
if(party)
party = 0
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
updateicon()
/area/proc/updateicon()
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 805e6b8834f..47f28d0ae5b 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -44,6 +44,10 @@
var/initialized = FALSE
+ var/list/priority_overlays //overlays that should remain on top and not normally removed when using cut_overlay functions, like c4.
+ var/list/remove_overlays // a very temporary list of overlays to remove
+ var/list/add_overlays // a very temporary list of overlays to add
+
/atom/New(loc, ...)
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
_preloader.load(src)
@@ -83,6 +87,9 @@
if(opacity && isturf(loc))
var/turf/T = loc
T.has_opaque_atom = TRUE // No need to recalculate it in this case, it's guranteed to be on afterwards anyways.
+
+ if(loc)
+ loc.InitializedOn(src) // Used for poolcontroller / pool to improve performance greatly. However it also open up path to other usage of observer pattern on turfs.
ComponentInitialize()
@@ -97,6 +104,8 @@
/atom/proc/ComponentInitialize()
return
+/atom/proc/InitializedOn(atom/A) // Proc for when something is initialized on a atom - Optional to call. Useful for observer pattern etc.
+ return
/atom/proc/onCentcom()
var/turf/T = get_turf(src)
@@ -137,6 +146,8 @@
QDEL_NULL(reagents)
invisibility = 101
+ LAZYCLEARLIST(overlays)
+ LAZYCLEARLIST(priority_overlays)
return ..()
//Hook for running code when a dir change occurs
diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm
index d448419b72d..b346a3fecd9 100644
--- a/code/game/dna/genes/disabilities.dm
+++ b/code/game/dna/genes/disabilities.dm
@@ -159,6 +159,14 @@
/datum/dna/gene/disability/nearsighted/New()
block=GLASSESBLOCK
+/datum/dna/gene/disability/nearsighted/activate(mob/living/M, connected, flags)
+ . = ..()
+ M.update_nearsighted_effects()
+
+/datum/dna/gene/disability/nearsighted/deactivate(mob/living/M, connected, flags)
+ . = ..()
+ M.update_nearsighted_effects()
+
/datum/dna/gene/disability/lisp
name = "Lisp"
desc = "I wonder wath thith doeth."
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 2e75d15a77d..417f079a4f6 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -265,7 +265,7 @@
affecting = H.bodyparts_by_name[name]
if(!istype(affecting, /obj/item/organ/external))
continue
- affecting.heal_damage(4, 0)
+ affecting.heal_damage(4, 0, updating_health = FALSE)
H.UpdateDamageIcon()
H.updatehealth()
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index bae37c04c2c..e3b1d082623 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -97,7 +97,10 @@
loc.visible_message("The corpse of [H.name] suddenly rises!")
/mob/living/simple_animal/hostile/blob/blobspore/death(gibbed)
- ..()
+ // Only execute the below if we successfuly died
+ . = ..()
+ if(!.)
+ return FALSE
// On death, create a small smoke of harmful gas (s-Acid)
var/datum/effect_system/smoke_spread/chem/S = new
var/turf/location = get_turf(src)
@@ -178,5 +181,8 @@
return
/mob/living/simple_animal/hostile/blob/blobbernaut/death(gibbed)
- ..()
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
flick("blobbernaut_death", src)
diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/game/gamemodes/changeling/changeling_power.dm
index da5c31fc092..387e7ce9d61 100644
--- a/code/game/gamemodes/changeling/changeling_power.dm
+++ b/code/game/gamemodes/changeling/changeling_power.dm
@@ -87,7 +87,7 @@
if(!D)
return
- H.set_species(D.species.type)
+ H.set_species(D.species.type, retain_damage = TRUE)
H.dna = D.Clone()
H.real_name = D.real_name
domutcheck(H, null, MUTCHK_FORCED) //Ensures species that get powers by the species proc handle_dna keep them
diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/game/gamemodes/changeling/powers/fakedeath.dm
index a166fd74502..abd03c7efd7 100644
--- a/code/game/gamemodes/changeling/powers/fakedeath.dm
+++ b/code/game/gamemodes/changeling/powers/fakedeath.dm
@@ -15,6 +15,7 @@
user.emote("deathgasp")
user.timeofdeath = world.time
user.status_flags |= FAKEDEATH //play dead
+ user.update_stat("fakedeath sting")
user.update_canmove()
addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME)
diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm
index 8ab09fc781c..6dbd4badc30 100644
--- a/code/game/gamemodes/changeling/powers/fleshmend.dm
+++ b/code/game/gamemodes/changeling/powers/fleshmend.dm
@@ -46,8 +46,8 @@
for(var/i in 1 to healing_ticks)
if(user)
var/healpertick = -(total_healing / healing_ticks)
- user.heal_overall_damage((-healpertick/recent_uses), (-healpertick/recent_uses))
- user.adjustOxyLoss(healpertick/recent_uses)
+ user.heal_overall_damage((-healpertick/recent_uses), (-healpertick/recent_uses), updating_health = FALSE)
+ user.adjustOxyLoss(healpertick/recent_uses, FALSE)
user.blood_volume = min(user.blood_volume + 30, BLOOD_VOLUME_NORMAL)
user.updatehealth()
else
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index 3e03d49dc49..fa6a1a93405 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -6,22 +6,22 @@
//Revive from regenerative stasis
/obj/effect/proc_holder/changeling/revive/sting_action(var/mob/living/carbon/user)
- user.setToxLoss(0)
- user.setOxyLoss(0)
- user.setCloneLoss(0)
- user.setBrainLoss(0)
- user.SetParalysis(0)
- user.SetStunned(0)
- user.SetWeakened(0)
+ user.setToxLoss(0, FALSE)
+ user.setOxyLoss(0, FALSE)
+ user.setCloneLoss(0, FALSE)
+ user.setBrainLoss(0, FALSE)
+ user.SetParalysis(0, FALSE)
+ user.SetStunned(0, FALSE)
+ user.SetWeakened(0, FALSE)
user.radiation = 0
- user.SetEyeBlind(0)
- user.SetEyeBlurry(0)
+ user.SetEyeBlind(0, FALSE)
+ user.SetEyeBlurry(0, FALSE)
user.SetEarDamage(0)
user.SetEarDeaf(0)
- user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss())
- user.CureBlind()
+ user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss(), updating_health = FALSE)
+ user.CureBlind(FALSE)
user.CureDeaf()
- user.CureNearsighted()
+ user.CureNearsighted(FALSE)
user.reagents.clear_reagents()
user.germ_level = 0
user.timeofdeath = 0
@@ -52,7 +52,9 @@
IO.rejuvenate()
IO.trace_chemicals.Cut()
H.remove_all_embedded_objects()
- H.updatehealth()
+ user.updatehealth()
+ user.update_blind_effects()
+ user.update_blurry_effects()
to_chat(user, "We have regenerated.")
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 84941f4d7a7..63e0626f481 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -210,9 +210,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
if(L.health != L.maxHealth)
new /obj/effect/temp_visual/heal(get_turf(src), "#960000")
if(ishuman(L))
- L.adjustBruteLoss(-1)
- L.adjustFireLoss(-1)
- L.updatehealth()
+ L.heal_overall_damage(1, 1)
if(istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct))
var/mob/living/simple_animal/M = L
if(M.health < M.maxHealth)
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 7790d5b8885..f1409e1e53d 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -487,7 +487,7 @@ var/list/teleport_runes = list()
icon_state = "rune_large"
pixel_x = -32 //So the big ol' 96x96 sprite shows up right
pixel_y = -32
- mouse_opacity = 1 //we're huge and easy to click
+ mouse_opacity = MOUSE_OPACITY_ICON //we're huge and easy to click
scribe_delay = 450 //how long the rune takes to create
scribe_damage = 40.1 //how much damage you take doing it
var/used
@@ -1031,7 +1031,7 @@ var/list/teleport_runes = list()
N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals"
N.color = "red"
N.health = 20
- N.mouse_opacity = 0
+ N.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
new_human.key = ghost_to_spawn.key
ticker.mode.add_cultist(new_human.mind, 0)
summoned_guys |= new_human
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index a05fdef243d..1941c0c323f 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -256,7 +256,7 @@ var/round_start_time = 0
cinematic.icon = 'icons/effects/station_explosion.dmi'
cinematic.icon_state = "station_intact"
cinematic.layer = 21
- cinematic.mouse_opacity = 0
+ cinematic.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
cinematic.screen_loc = "1,0"
var/obj/structure/stool/bed/temp_buckle = new(src)
diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm
index 45998cd4b30..a0ccbad7ab6 100644
--- a/code/game/gamemodes/miniantags/borer/borer.dm
+++ b/code/game/gamemodes/miniantags/borer/borer.dm
@@ -42,7 +42,7 @@
to_chat(src, "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).")
to_chat(B.host, "You feel the captive mind of [src] begin to resist your control.")
- var/delay = (rand(350,450) + B.host.brainloss)
+ var/delay = (rand(350,450) + B.host.getBrainLoss())
addtimer(CALLBACK(src, .proc/return_control, B), delay)
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index 6b976ad7f05..a3a029005d5 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -424,7 +424,7 @@
anchored = 1
unacidable = 1
light_range = 1
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
var/health = 30
light_color = LIGHT_COLOR_CYAN
var/lon_range = 1
diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm
index 9465d479f02..449e5f5ae3a 100644
--- a/code/game/gamemodes/miniantags/guardian/guardian.dm
+++ b/code/game/gamemodes/miniantags/guardian/guardian.dm
@@ -90,7 +90,10 @@
snapback()
/mob/living/simple_animal/hostile/guardian/death(gibbed)
- ..()
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
to_chat(summoner, "Your [name] died somehow!")
summoner.death()
diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm
index 693dbffbabb..94c39d12442 100644
--- a/code/game/gamemodes/miniantags/morph/morph.dm
+++ b/code/game/gamemodes/miniantags/morph/morph.dm
@@ -124,16 +124,19 @@
morph_time = world.time + MORPH_COOLDOWN
/mob/living/simple_animal/hostile/morph/death(gibbed)
- if(morphed)
- visible_message("[src] twists and dissolves into a pile of green flesh!", \
- "Your skin ruptures! Your flesh breaks apart! No disguise can ward off de--")
- restore()
- if(gibbed)
+ . = ..()
+ if(stat == DEAD && gibbed)
for(var/atom/movable/AM in src)
AM.forceMove(loc)
if(prob(90))
step(AM, pick(alldirs))
- ..(gibbed)
+ // Only execute the below if we successfully died
+ if(!.)
+ return FALSE
+ if(morphed)
+ visible_message("[src] twists and dissolves into a pile of green flesh!", \
+ "Your skin ruptures! Your flesh breaks apart! No disguise can ward off de--")
+ restore()
/mob/living/simple_animal/hostile/morph/Aggro() // automated only
..()
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index 953e6e91762..7d8953b8b84 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -161,15 +161,18 @@
/mob/living/simple_animal/revenant/dust()
- death()
+ . = death()
/mob/living/simple_animal/revenant/gib()
- death()
+ . = death()
/mob/living/simple_animal/revenant/death()
- ..()
if(!revealed)
- return
+ return FALSE
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
ghost_darkness_images -= ghostimage
updateallghostimages()
@@ -190,7 +193,6 @@
R.client_to_revive = src.client //If the essence reforms, the old revenant is put back in the body
ghostize()
qdel(src)
- return
/mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params)
if(istype(W, /obj/item/nullrod))
diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm
index 6b5705cfa7f..d6f14e546e5 100644
--- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm
+++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm
@@ -96,10 +96,15 @@
desc = "A repulsive pile of guts and gore."
/mob/living/simple_animal/slaughter/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
for(var/mob/living/M in consumed_mobs)
- M.forceMove(get_turf(src))
- ..()
+ release_consumed(M)
+/mob/living/simple_animal/slaughter/proc/release_consumed(mob/living/M)
+ M.forceMove(get_turf(src))
/mob/living/simple_animal/slaughter/phasein()
. = ..()
@@ -297,13 +302,12 @@
deathmessage = "fades out, as all of its friends are released from its prison of hugs."
loot = list(/mob/living/simple_animal/pet/cat/kitten{name = "Laughter"})
-/mob/living/simple_animal/slaughter/laughter/death(gibbed)
- for(var/mob/living/M in consumed_mobs)
- if(M.revive())
- M.grab_ghost(force = TRUE)
- playsound(get_turf(src), feast_sound, 50, 1, -1)
- to_chat(M, "You leave the [src]'s warm embrace, and feel ready to take on the world.")
- ..()
+/mob/living/simple_animal/slaughter/laughter/release_consumed(mob/living/M)
+ if(M.revive())
+ M.grab_ghost(force = TRUE)
+ playsound(get_turf(src), feast_sound, 50, 1, -1)
+ to_chat(M, "You leave the [src]'s warm embrace, and feel ready to take on the world.")
+ ..(M)
//Objectives and helpers.
@@ -345,4 +349,4 @@
..()
/datum/objective/demonFluff/check_completion()
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index 43234e0c443..89c5f159108 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -493,18 +493,19 @@
metabolization_rate = 100 //lel
/datum/reagent/shadowling_blindness_smoke/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(!is_shadow_or_thrall(M))
to_chat(M, "You breathe in the black smoke, and your eyes burn horribly!")
- M.EyeBlind(5)
+ update_flags |= M.EyeBlind(5, FALSE)
if(prob(25))
M.visible_message("[M] claws at [M.p_their()] eyes!")
M.Stun(3)
else
to_chat(M, "You breathe in the black smoke, and you feel revitalized!")
- M.heal_organ_damage(2,2)
- M.adjustOxyLoss(-2)
- M.adjustToxLoss(-2)
- ..()
+ update_flags |= M.heal_organ_damage(2, 2, updating_health = FALSE)
+ update_flags |= M.adjustOxyLoss(-2, FALSE)
+ update_flags |= M.adjustToxLoss(-2, FALSE)
+ return ..() | update_flags
/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech
name = "Sonic Screech"
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 798a01f2bda..295220d0077 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -264,9 +264,6 @@
maim_clone(H)
H.Paralyse(4)
- //Here let's calculate their health so the pod doesn't immediately eject them!!!
- H.updatehealth()
-
if(grab_ghost_when == CLONER_FRESH_CLONE)
clonemind.transfer_to(H)
H.ckey = R.ckey
@@ -555,7 +552,7 @@
qdel(i)
missing_organs.Cut()
- H.setCloneLoss(CLONE_INITIAL_DAMAGE)
+ H.setCloneLoss(CLONE_INITIAL_DAMAGE, FALSE)
H.setBrainLoss(BRAIN_INITIAL_DAMAGE)
for(var/o in H.internal_organs)
@@ -578,6 +575,7 @@
missing_organs += I
organs_number = LAZYLEN(missing_organs)
+ H.updatehealth()
/obj/machinery/clonepod/proc/check_brine()
// Clones are in a pickled bath of mild chemicals, keeping
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index 44672d12461..22a376968d0 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -64,21 +64,19 @@
return 1
if(href_list["fix"])
- src.active = 1
- while(src.occupant.health < 100)
- src.occupant.adjustOxyLoss(-1)
- src.occupant.adjustFireLoss(-1)
- src.occupant.adjustToxLoss(-1)
- src.occupant.adjustBruteLoss(-1)
- src.occupant.updatehealth()
- if(src.occupant.health >= 0 && src.occupant.stat == 2)
- src.occupant.stat = 0
- src.occupant.lying = 0
- dead_mob_list -= src.occupant
- living_mob_list += src.occupant
+ active = 1
+ while(occupant.health < 100)
+ occupant.adjustOxyLoss(-1, FALSE)
+ occupant.adjustFireLoss(-1, FALSE)
+ occupant.adjustToxLoss(-1, FALSE)
+ occupant.adjustBruteLoss(-1, FALSE)
+ occupant.updatehealth()
+ if(occupant.health >= 0 && occupant.stat == DEAD)
+ occupant.update_revive()
+ occupant.lying = 0
sleep(10)
- src.active = 0
- src.add_fingerprint(usr)
+ active = 0
+ add_fingerprint(usr)
if(href_list["wireless"])
var/wireless = text2num(href_list["wireless"])
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 30ccb23b467..c72cfe1dbda 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -296,6 +296,15 @@
/obj/item/circuitboard/white_ship
name = "circuit Board (White Ship)"
build_path = /obj/machinery/computer/shuttle/white_ship
+/obj/item/circuitboard/shuttle/syndicate
+ name = "circuit board (Syndicate Shuttle)"
+ build_path = /obj/machinery/computer/shuttle/syndicate
+/obj/item/circuitboard/shuttle/syndicate/recall
+ name = "circuit board (Syndicate Shuttle Recall Terminal)"
+ build_path = /obj/machinery/computer/shuttle/syndicate/recall
+/obj/item/circuitboard/shuttle/syndicate/drop_pod
+ name = "circuit board (Syndicate Drop Pod)"
+ build_path = /obj/machinery/computer/shuttle/syndicate/drop_pod
/obj/item/circuitboard/HolodeckControl
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index a332e7df7c8..92e06641204 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -217,7 +217,7 @@
// Check if camera is accessible when jumping
/obj/machinery/computer/security/proc/can_access_camera(var/obj/machinery/camera/C, var/mob/M)
- if(CanUseTopic(M, default_state) != STATUS_INTERACTIVE || M.incapacitated() || M.blinded)
+ if(CanUseTopic(M, default_state) != STATUS_INTERACTIVE || M.incapacitated() || !M.has_vision())
return 0
if(isrobot(M))
@@ -361,4 +361,4 @@
icon_screen = "engie_cams"
light_color = "#FAC54B"
network = list("Power Alarms","Atmosphere Alarms","Fire Alarms")
- circuit = /obj/item/circuitboard/camera/engineering
\ No newline at end of file
+ circuit = /obj/item/circuitboard/camera/engineering
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index e4bdd652998..90ce57e880f 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -385,7 +385,7 @@
occupant.adjustToxLoss(max(-efficiency, (-20*(efficiency ** 2)) / occupant.getToxLoss()))
var/heal_brute = occupant.getBruteLoss() ? min(efficiency, 20*(efficiency**2) / occupant.getBruteLoss()) : 0
var/heal_fire = occupant.getFireLoss() ? min(efficiency, 20*(efficiency**2) / occupant.getFireLoss()) : 0
- occupant.heal_organ_damage(heal_brute,heal_fire)
+ occupant.heal_organ_damage(heal_brute, heal_fire)
if(beaker && next_trans == 0)
var/proportion = 10 * min(1/beaker.volume, 1)
// Yes, this means you can get more bang for your buck with a beaker of SF vs a patch
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index a076fcec8fd..0831293ad29 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -313,15 +313,14 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/update_icon(state=0, override=0)
if(operating && !override)
return
+ icon_state = density ? "closed" : "open"
switch(state)
if(0)
if(density)
state = AIRLOCK_CLOSED
else
state = AIRLOCK_OPEN
- icon_state = ""
if(AIRLOCK_OPEN, AIRLOCK_CLOSED)
- icon_state = ""
if(AIRLOCK_DENY, AIRLOCK_OPENING, AIRLOCK_CLOSING, AIRLOCK_EMAG)
icon_state = "nonexistenticonstate" //MADNESS
set_airlock_overlays(state)
@@ -670,12 +669,12 @@ About the new airlock wires panel:
return FALSE
//For the tools being used on the door. Since you don't want to call the attack_hand method if you're using hands. That would be silly
-//Also it's a bit inconsistent that when you access the panel you headbutt it. But not while crowbarring
+//Also it's a bit inconsistent that when you access the panel you headbutt it. But not while crowbarring
//Try to interact with the panel. If the user can't it'll try activating the door
/obj/machinery/door/airlock/proc/interact_with_panel(mob/user)
if(shock_user(user, 100))
return
-
+
if(panel_open)
if(security_level)
to_chat(user, "Wires are protected!")
@@ -1325,7 +1324,7 @@ About the new airlock wires panel:
user.visible_message("[user] removes [note] from [src].", "You remove [note] from [src].")
playsound(src, 'sound/items/poster_ripped.ogg', 50, 1)
else return FALSE
- else
+ else
user.visible_message("[user] cuts down [note] from [src].", "You remove [note] from [src].")
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1)
note.forceMove(get_turf(user))
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 405182d8874..4af2bc60f66 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -55,6 +55,7 @@ var/list/holopads = list()
var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging
var/obj/effect/overlay/holoray/ray
var/ringing = FALSE
+ var/dialling_input = FALSE //The user is currently selecting where to send their call
/obj/machinery/hologram/holopad/New()
..()
@@ -133,6 +134,8 @@ var/list/holopads = list()
/obj/machinery/hologram/holopad/interact(mob/living/carbon/human/user) //Carn: hologram requests.
if(!istype(user))
return
+ if(!anchored)
+ return
var/dat
if(temp)
@@ -191,7 +194,9 @@ var/list/holopads = list()
else if(href_list["Holocall"])
if(outgoing_call)
return
-
+ if(dialling_input)
+ to_chat(usr, "Finish dialling first!")
+ return
temp = "You must stand on the holopad to make a call!
"
temp += "Main Menu"
if(usr.loc == loc)
@@ -201,9 +206,9 @@ var/list/holopads = list()
if(A)
LAZYADD(callnames[A], I)
callnames -= get_area(src)
-
+ dialling_input = TRUE
var/result = input(usr, "Choose an area to call", "Holocall") as null|anything in callnames
-
+ dialling_input = FALSE
if(QDELETED(usr) || !result || outgoing_call)
return
@@ -250,7 +255,7 @@ var/list/holopads = list()
/obj/machinery/hologram/holopad/process()
for(var/I in masters)
var/mob/living/master = I
- if((stat & NOPOWER) || !validate_user(master))
+ if((stat & NOPOWER) || !validate_user(master) || !anchored)
clear_holo(master)
if(outgoing_call)
@@ -348,7 +353,7 @@ var/list/holopads = list()
hologram.alpha = 100
hologram.Impersonation = user
- hologram.mouse_opacity = 0//So you can't click on it.
+ hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it.
hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them.
hologram.anchored = 1//So space wind cannot drag it.
hologram.name = "[user.name] (hologram)"//If someone decides to right click.
@@ -481,7 +486,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
layer = FLY_LAYER
density = FALSE
anchored = TRUE
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
pixel_x = -32
pixel_y = -32
alpha = 100
diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm
index 3d7f6a52e70..4fff66a43e7 100644
--- a/code/game/machinery/poolcontroller.dm
+++ b/code/game/machinery/poolcontroller.dm
@@ -11,18 +11,21 @@
icon_state = "airlock_control_standby"
anchored = 1 //this is what I get for assuming /obj/machinery has anchored set to 1 by default
var/list/linkedturfs = list() //List contains all of the linked pool turfs to this controller, assignment happens on New()
+ var/mobinpool = list() //List contains all of the mob in the pool, to prevent looping through the entire area to find mobs inside..
+ var/decalinpool = list() // List containing all of the cleanable decals in pool
var/linked_area = null
var/temperature = NORMAL //The temperature of the pool, starts off on normal, which has no effects.
var/temperaturecolor = "" //used for nanoUI fancyness
var/srange = 5 //The range of the search for pool turfs, change this for bigger or smaller pools.
var/list/linkedmist = list() //Used to keep track of created mist
- var/deep_water = 0 //set to 1 to drown even standing people
+ var/deep_water = FALSE //set to 1 to drown even standing people
/obj/machinery/poolcontroller/New() //This proc automatically happens on world start
if(!linked_area)
for(var/turf/simulated/floor/beach/water/W in range(srange,src)) //Search for /turf/simulated/floor/beach/water in the range of var/srange
linkedturfs += W //Add found pool turfs to the central list.
+ W.linkedcontroller = src // And add the linked controller to itself.
..() //Changed to call parent as per MarkvA's recommendation
/obj/machinery/poolcontroller/emag_act(user as mob) //Emag_act, this is called when it is hit with a cryptographic sequencer.
@@ -48,21 +51,24 @@
ui_interact(user)
/obj/machinery/poolcontroller/process()
- updatePool() //Call the mob affecting/decal cleaning proc
+ processMob() //Call the mob affecting proc
+ cleanPool() //Call the decal cleaning proc
-/obj/machinery/poolcontroller/proc/updatePool()
- for(var/turf/T in linkedturfs) //Check for pool-turfs linked to the controller.
- for(var/mob/M in T) //Check for mobs in the linked pool-turfs.
- handleTemp(M) //handles pool temp effects on the swimmers
+/obj/machinery/poolcontroller/proc/processMob()
+ for(var/M in mobinpool) //They're already typecasted when entering the turf
+ // Following two are sanity check. If the mob is no longer in the pool for whatever reason (Looking at you teleport), remove them
+ if(!istype(get_turf(M), /turf/simulated/floor/beach/water) && !istype(get_turf(M), /turf/unsimulated/beach/water)) // Water component when?
+ mobinpool -= M
+ continue
+ handleTemp(M) //handles pool temp effects on the swimmers
+ if(ishuman(M)) //Only human types will drown, to keep things simple for non-human mobs that live in the water
+ handleDrowning(M)
- if(ishuman(M)) //Make sure they are human before typecasting.
- var/mob/living/carbon/human/drownee = M //Typecast them as human.
- handleDrowning(drownee) //Only human types will drown, to keep things simple for non-human mobs that live in the water
-
- for(var/obj/effect/decal/cleanable/decal in T) //Cleans up cleanable decals like blood and such
+/obj/machinery/poolcontroller/proc/cleanPool()
+ for(var/obj/effect/decal/cleanable/decal in decalinpool) //Cleans up cleanable decals like blood and such
+ if(!QDELETED(decal))
animate(decal, alpha = 10, time = 20)
- spawn(25)
- qdel(decal)
+ QDEL_IN(decal, 25)
/obj/machinery/poolcontroller/proc/handleTemp(var/mob/M)
if(!M || isAIEye(M) || issilicon(M) || isobserver(M) || M.stat == DEAD)
@@ -187,29 +193,17 @@
/obj/machinery/poolcontroller/seacontroller
invisibility = 101
unacidable = 1
-
name = "Sea Controller"
desc = "A controller for the underwater portion of the sea. Players shouldn't see this."
- deep_water = 1 //deep sea is deep water
+ deep_water = TRUE //deep sea is deep water
-/obj/machinery/poolcontroller/seacontroller/New()
+/obj/machinery/poolcontroller/seacontroller/Initialize()
linked_area = get_area(src)
+ for(var/turf/unsimulated/beach/water/W in linked_area)
+ linkedturfs += W //Add found pool turfs to the central list.
+ W.linkedcontroller = src // And add the linked controller to itself.
..()
-/obj/machinery/poolcontroller/seacontroller/updatePool()
- for(var/turf/T in linked_area)
- for(var/mob/M in T)
- handleTemp(M) //handles pool temp effects on the swimmers
-
- if(ishuman(M)) //Make sure they are human before typecasting.
- var/mob/living/carbon/human/drownee = M //Typecast them as human.
- handleDrowning(drownee) //Only human types will drown, to keep things simple for non-human mobs that live in the water
-
- for(var/obj/effect/decal/cleanable/decal in T)
- animate(decal, alpha = 10, time = 20)
- spawn(25)
- qdel(decal)
-
#undef FRIGID
#undef COOL
#undef NORMAL
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 8c061800020..019d9a2319e 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -8,7 +8,7 @@
idle_power_usage = 4
active_power_usage = 250
var/obj/item/charging = null
- var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/modular_computer, /obj/item/rcs)
+ var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/modular_computer, /obj/item/rcs, /obj/item/bodyanalyzer)
var/icon_state_off = "rechargeroff"
var/icon_state_charged = "recharger2"
var/icon_state_charging = "recharger1"
@@ -115,6 +115,13 @@
if(R.rcell.give(R.rcell.chargerate))
use_power(200)
using_power = 1
+
+ if(istype(charging, /obj/item/bodyanalyzer))
+ var/obj/item/bodyanalyzer/B = charging
+ if(B.power_supply)
+ if(B.power_supply.give(B.power_supply.chargerate))
+ use_power(200)
+ using_power = 1
update_icon(using_power)
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 7e3bafbdc39..f0e23d6c7d4 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -158,9 +158,7 @@
var/mob/living/silicon/robot/R = occupant
restock_modules()
if(repairs)
- R.adjustBruteLoss(-(repairs))
- R.adjustFireLoss(-(repairs))
- R.updatehealth()
+ R.heal_overall_damage(repairs, repairs)
if(R.cell)
R.cell.charge = min(R.cell.charge + recharge_speed, R.cell.maxcharge)
else if(istype(occupant, /mob/living/carbon/human))
@@ -168,8 +166,7 @@
if(H.get_int_organ(/obj/item/organ/internal/cell) && H.nutrition < 450)
H.nutrition = min(H.nutrition+recharge_speed_nutrition, 450)
if(repairs)
- H.heal_overall_damage(repairs, repairs, 0, 1)
- H.updatehealth()
+ H.heal_overall_damage(repairs, repairs, TRUE, 0, 1)
/obj/machinery/recharge_station/proc/go_out()
if(!occupant)
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 5e99a954650..7078ba83561 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -62,7 +62,6 @@
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
H.emote("scream") // It is painful
H.adjustBruteLoss(max(0, 80 - H.getBruteLoss())) // Hurt the human, don't try to kill them though.
- H.handle_regular_hud_updates() // Make sure they see the pain.
// Sleep for a couple of ticks to allow the human to see the pain
sleep(5)
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index 9e3369f1af9..a8e854467a2 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -228,7 +228,6 @@
return
if(M.health > 0)
M.adjustOxyLoss(-1)
- M.updatehealth()
M.AdjustStunned(-4)
M.AdjustWeakened(-4)
M.AdjustStunned(-4)
@@ -520,4 +519,3 @@
for(var/reagent in processed_reagents)
reagents.add_reagent(reagent,amount)
chassis.use_power(energy_drain)
-
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index f39dedcc772..546bb6ae269 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -94,7 +94,6 @@
if(target)
target.Paralyse(10)
- target.updatehealth()
/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm
index 7706f3120f0..ca327fe6ef7 100644
--- a/code/game/mecha/equipment/tools/work_tools.dm
+++ b/code/game/mecha/equipment/tools/work_tools.dm
@@ -56,7 +56,6 @@
if(!M)
return
M.adjustOxyLoss(round(dam_force/2))
- M.updatehealth()
target.visible_message("[chassis] squeezes [target].", \
"[chassis] squeezes [target].",\
"You hear something crack.")
@@ -451,4 +450,3 @@
//NC.mergeConnectedNetworksOnTurf()
last_piece = NC
return 1
-
diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
index c25119900f0..aef1999ff69 100644
--- a/code/game/objects/effects/decals/Cleanable/misc.dm
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -62,8 +62,8 @@
color = "#EBEBEB"
/obj/effect/decal/cleanable/flour/foam/Initialize()
- . = ..()
- QDEL_IN(src, 15 SECONDS)
+ . = ..()
+ QDEL_IN(src, 15 SECONDS)
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
@@ -77,8 +77,8 @@
icon_state = "greenglow"
/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
- . = ..()
- QDEL_IN(src, 2 MINUTES)
+ . = ..()
+ QDEL_IN(src, 2 MINUTES)
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
@@ -201,4 +201,3 @@
icon_state = "confetti1"
random_icon_states = list("confetti1", "confetti2", "confetti3")
anchored = TRUE
-
diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm
index 7fb397297d7..d71e7631565 100644
--- a/code/game/objects/effects/effect_system/effect_system.dm
+++ b/code/game/objects/effects/effect_system/effect_system.dm
@@ -7,7 +7,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
/obj/effect/particle_effect
name = "particle effect"
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
unacidable = 1//So effects are not targeted by alien acid.
pass_flags = PASSTABLE | PASSGRILLE
diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm
index 5ad00157a02..1080f975135 100644
--- a/code/game/objects/effects/effect_system/effects_explosion.dm
+++ b/code/game/objects/effects/effect_system/effects_explosion.dm
@@ -27,7 +27,7 @@
icon_state = "explosion"
opacity = 1
anchored = 1
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
pixel_x = -32
pixel_y = -32
diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm
index 30358870814..3ea1fc0c3d6 100644
--- a/code/game/objects/effects/misc.dm
+++ b/code/game/objects/effects/misc.dm
@@ -32,7 +32,7 @@
anchored = 1
layer = 99
plane = HUD_PLANE
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
unacidable = 1//Just to be sure.
/obj/effect/beam
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index 830d12cfd12..312826d3ddb 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -58,7 +58,7 @@
anchored = 1
density = 1
layer = 5
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/overlay/wall_rot/New()
..()
diff --git a/code/game/objects/effects/spawners/windowspawner.dm b/code/game/objects/effects/spawners/windowspawner.dm
index e6e2aaa1a21..1034d31eb45 100644
--- a/code/game/objects/effects/spawners/windowspawner.dm
+++ b/code/game/objects/effects/spawners/windowspawner.dm
@@ -42,3 +42,8 @@
name = "reinforced window spawner"
icon_state = "rwindow_spawner"
windowtospawn = /obj/structure/window/reinforced
+
+/obj/effect/spawner/window/reinforced/plasma
+ name = "reinforced plasma window spawner"
+ icon_state = "pwindow_spawner"
+ windowtospawn = /obj/structure/window/plasmareinforced
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index 03e8ea8fcd9..8b9314e9a6f 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -134,7 +134,7 @@
name = mimiced_atom.name
appearance = mimiced_atom.appearance
setDir(mimiced_atom.dir)
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/temp_visual/decoy/fading/New(loc, atom/mimiced_atom)
..()
diff --git a/code/game/objects/effects/temporary_visuals/temporary_visual.dm b/code/game/objects/effects/temporary_visuals/temporary_visual.dm
index c9c88861ae2..bb6cca92644 100644
--- a/code/game/objects/effects/temporary_visuals/temporary_visual.dm
+++ b/code/game/objects/effects/temporary_visuals/temporary_visual.dm
@@ -2,7 +2,7 @@
/obj/effect/temp_visual
anchored = 1
layer = ABOVE_MOB_LAYER
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/duration = 10
var/randomdir = TRUE
diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm
index 2188337ba77..3c26a850a9a 100644
--- a/code/game/objects/empulse.dm
+++ b/code/game/objects/empulse.dm
@@ -1,12 +1,12 @@
-/proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
+/proc/empulse(turf/epicenter, heavy_range, light_range, log=0, cause = null)
if(!epicenter) return
if(!istype(epicenter, /turf))
epicenter = get_turf(epicenter.loc)
if(log)
- message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [ADMIN_COORDJMP(epicenter)]")
- log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [COORD(epicenter)]")
+ message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])": ] [ADMIN_COORDJMP(epicenter)]")
+ log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ] [COORD(epicenter)]")
if(heavy_range > 1)
new/obj/effect/temp_visual/emp/pulse(epicenter)
diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm
index 8adb61dec93..48ebad7ea5d 100644
--- a/code/game/objects/explosion.dm
+++ b/code/game/objects/explosion.dm
@@ -1,6 +1,6 @@
//TODO: Flash range does nothing currently
-/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1)
+/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1, cause = null)
src = null //so we don't abort once src is deleted
epicenter = get_turf(epicenter)
@@ -25,8 +25,8 @@
var/list/cached_exp_block = list()
if(adminlog)
- message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (JMP)")
- log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
+ message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ] [ADMIN_COORDJMP(epicenter)] ")
+ log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ] [COORD(epicenter)] ")
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
// Stereo users will also hear the direction of the explosion!
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 03b4f4adfaa..6957f70d2b2 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -232,7 +232,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
if(affecting && affecting.receive_damage(0, 5)) // 5 burn damage
H.UpdateDamageIcon()
- H.updatehealth()
return
else
extinguish()
@@ -554,4 +553,4 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
return TRUE
/obj/item/attack_hulk(mob/living/carbon/human/user)
- return FALSE
\ No newline at end of file
+ return FALSE
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index 737abd10bb1..44a84ded883 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -90,7 +90,6 @@
to_chat(AI, "Your core files are being wiped!")
while(AI && AI.stat != DEAD)
AI.adjustOxyLoss(2)
- AI.updatehealth()
sleep(10)
flush = 0
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 2a398363c7f..98e217d25fa 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -632,3 +632,253 @@ REAGENT SCANNER
if(T.cores > 1)
user.show_message("Anomalous slime core amount detected", 1)
user.show_message("Growth progress: [T.amount_grown]/10", 1)
+
+/obj/item/bodyanalyzer
+ name = "handheld body analyzer"
+ icon = 'icons/obj/device.dmi'
+ icon_state = "bodyanalyzer_0"
+ item_state = "healthanalyser"
+ desc = "A handheld scanner capable of deep-scanning an entire body."
+ slot_flags = SLOT_BELT
+ throwforce = 3
+ w_class = WEIGHT_CLASS_TINY
+ throw_speed = 5
+ throw_range = 10
+ origin_tech = "magnets=6;biotech=6"
+ var/obj/item/stock_parts/cell/power_supply
+ var/cell_type = /obj/item/stock_parts/cell/upgraded
+ var/ready = TRUE // Ready to scan
+ var/time_to_use = 0 // How much time remaining before next scan is available.
+ var/usecharge = 750
+
+/obj/item/bodyanalyzer/advanced
+ cell_type = /obj/item/stock_parts/cell/upgraded/plus
+
+/obj/item/bodyanalyzer/New()
+ ..()
+ power_supply = new cell_type(src)
+ power_supply.give(power_supply.maxcharge)
+ update_icon()
+
+/obj/item/bodyanalyzer/proc/setReady()
+ ready = TRUE
+ playsound(src, 'sound/machines/defib_saftyOn.ogg', 50, 0)
+ update_icon()
+
+/obj/item/bodyanalyzer/update_icon(printing = FALSE)
+ overlays.Cut()
+ var/percent = power_supply.percent()
+ if(ready)
+ icon_state = "bodyanalyzer_1"
+ else
+ icon_state = "bodyanalyzer_2"
+
+ var/overlayid = round(percent / 10)
+ overlayid = "bodyanalyzer_charge[overlayid]"
+ overlays += icon(icon, overlayid)
+
+ if(printing)
+ overlays += icon(icon, "bodyanalyzer_printing")
+
+/obj/item/bodyanalyzer/attack(mob/living/M, mob/living/carbon/human/user)
+ if(user.incapacitated() || !user.Adjacent(M))
+ return
+
+ if(!ready)
+ to_chat(user, "The scanner beeps angrily at you! It's currently recharging - [round((time_to_use - world.time) * 0.1)] seconds remaining.")
+ playsound(user.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
+ return
+
+ if(power_supply.charge >= usecharge)
+ mobScan(M, user)
+ else
+ to_chat(user, "The scanner beeps angrily at you! It's out of charge!")
+ playsound(user.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
+
+/obj/item/bodyanalyzer/proc/mobScan(mob/living/M, mob/user)
+ if(ishuman(M))
+ var/report = generate_printing_text(M, user)
+ user.visible_message("[user] begins scanning [M] with [src].", "You begin scanning [M].")
+ if(do_after(user, 100, target = M))
+ var/obj/item/paper/printout = new
+ printout.info = report
+ printout.name = "Scan report - [M.name]"
+ playsound(user.loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
+ user.put_in_hands(printout)
+ time_to_use = world.time + 600
+ power_supply.use(usecharge)
+ ready = FALSE
+ update_icon(TRUE)
+ addtimer(CALLBACK(src, /obj/item/bodyanalyzer/.proc/setReady), 600)
+ addtimer(CALLBACK(src, /obj/item/bodyanalyzer/.proc/update_icon), 20)
+
+ else if(iscorgi(M) && M.stat == DEAD)
+ to_chat(user, "You wonder if [M.p_they()] was a good dog. [src] tells you they were the best...") // :'(
+ playsound(loc, 'sound/machines/ping.ogg', 50, 0)
+ ready = FALSE
+ addtimer(CALLBACK(src, /obj/item/bodyanalyzer/.proc/setReady), 600)
+ time_to_use = world.time + 600
+ else
+ to_chat(user, "Scanning error detected. Invalid specimen.")
+
+//Unashamedly ripped from adv_med.dm
+/obj/item/bodyanalyzer/proc/generate_printing_text(mob/living/M, mob/user)
+ var/dat = ""
+ var/mob/living/carbon/human/target = M
+
+ dat = "Target Statistics:
"
+ var/t1
+ switch(target.stat) // obvious, see what their status is
+ if(CONSCIOUS)
+ t1 = "Conscious"
+ if(UNCONSCIOUS)
+ t1 = "Unconscious"
+ else
+ t1 = "*dead*"
+ dat += "[target.health > 50 ? "" : ""]\tHealth %: [target.health], ([t1])
"
+
+ var/found_disease = FALSE
+ for(var/thing in target.viruses)
+ var/datum/disease/D = thing
+ if(D.visibility_flags) //If any visibility flags are on.
+ continue
+ found_disease = TRUE
+ break
+ if(found_disease)
+ dat += "Disease detected in target.
"
+
+ var/extra_font = null
+ extra_font = (target.getBruteLoss() < 60 ? "" : "")
+ dat += "[extra_font]\t-Brute Damage %: [target.getBruteLoss()]
"
+
+ extra_font = (target.getOxyLoss() < 60 ? "" : "")
+ dat += "[extra_font]\t-Respiratory Damage %: [target.getOxyLoss()]
"
+
+ extra_font = (target.getToxLoss() < 60 ? "" : "")
+ dat += "[extra_font]\t-Toxin Content %: [target.getToxLoss()]
"
+
+ extra_font = (target.getFireLoss() < 60 ? "" : "")
+ dat += "[extra_font]\t-Burn Severity %: [target.getFireLoss()]
"
+
+ extra_font = (target.radiation < 10 ?"" : "")
+ dat += "[extra_font]\tRadiation Level %: [target.radiation]
"
+
+ extra_font = (target.getCloneLoss() < 1 ?"" : "")
+ dat += "[extra_font]\tGenetic Tissue Damage %: [target.getCloneLoss()]
"
+
+ extra_font = (target.getBrainLoss() < 1 ?"" : "")
+ dat += "[extra_font]\tApprox. Brain Damage %: [target.getBrainLoss()]
"
+
+ dat += "Paralysis Summary %: [target.paralysis] ([round(target.paralysis / 4)] seconds left!)
"
+ dat += "Body Temperature: [target.bodytemperature-T0C]°C ([target.bodytemperature*1.8-459.67]°F)
"
+
+ dat += "
"
+
+ if(target.has_brain_worms())
+ dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
"
+
+ var/blood_percent = round((target.blood_volume / BLOOD_VOLUME_NORMAL))
+ blood_percent *= 100
+
+ extra_font = (target.blood_volume > 448 ? "" : "")
+ dat += "[extra_font]\tBlood Level %: [blood_percent] ([target.blood_volume] units)
"
+
+ if(target.reagents)
+ dat += "Epinephrine units: [target.reagents.get_reagent_amount("Epinephrine")] units
"
+ dat += "Ether: [target.reagents.get_reagent_amount("ether")] units
"
+
+ extra_font = (target.reagents.get_reagent_amount("silver_sulfadiazine") < 30 ? "" : "")
+ dat += "[extra_font]\tSilver Sulfadiazine: [target.reagents.get_reagent_amount("silver_sulfadiazine")]
"
+
+ extra_font = (target.reagents.get_reagent_amount("styptic_powder") < 30 ? "" : "")
+ dat += "[extra_font]\tStyptic Powder: [target.reagents.get_reagent_amount("styptic_powder")] units
"
+
+ extra_font = (target.reagents.get_reagent_amount("salbutamol") < 30 ? "" : "")
+ dat += "[extra_font]\tSalbutamol: [target.reagents.get_reagent_amount("salbutamol")] units
"
+
+ dat += "
"
+ dat += ""
+ dat += "| Organ | "
+ dat += "Burn Damage | "
+ dat += "Brute Damage | "
+ dat += "Other Wounds | "
+ dat += "
"
+
+ for(var/obj/item/organ/external/e in target.bodyparts)
+ dat += ""
+ var/AN = ""
+ var/open = ""
+ var/infected = ""
+ var/robot = ""
+ var/imp = ""
+ var/bled = ""
+ var/splint = ""
+ var/internal_bleeding = ""
+ var/lung_ruptured = ""
+ if(e.internal_bleeding)
+ internal_bleeding = "
Internal bleeding"
+ if(istype(e, /obj/item/organ/external/chest) && target.is_lung_ruptured())
+ lung_ruptured = "Lung ruptured:"
+ if(e.status & ORGAN_SPLINTED)
+ splint = "Splinted:"
+ if(e.status & ORGAN_BROKEN)
+ AN = "[e.broken_description]:"
+ if(e.is_robotic())
+ robot = "Robotic:"
+ if(e.open)
+ open = "Open:"
+ switch(e.germ_level)
+ if(INFECTION_LEVEL_ONE to INFECTION_LEVEL_ONE + 200)
+ infected = "Mild Infection:"
+ if(INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300)
+ infected = "Mild Infection+:"
+ if(INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400)
+ infected = "Mild Infection++:"
+ if(INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200)
+ infected = "Acute Infection:"
+ if(INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
+ infected = "Acute Infection+:"
+ if(INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 400)
+ infected = "Acute Infection++:"
+ if(INFECTION_LEVEL_THREE to INFINITY)
+ infected = "Septic:"
+
+ var/unknown_body = 0
+ for(var/I in e.embedded_objects)
+ unknown_body++
+
+ if(unknown_body || e.hidden)
+ imp += "Unknown body present:"
+ if(!AN && !open && !infected & !imp)
+ AN = "None:"
+ dat += "[e.name] | [e.burn_dam] | [e.brute_dam] | [robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured] | "
+ dat += "
"
+ for(var/obj/item/organ/internal/i in target.internal_organs)
+ var/mech = i.desc
+ var/infection = "None"
+ switch(i.germ_level)
+ if(1 to INFECTION_LEVEL_ONE + 200)
+ infection = "Mild Infection:"
+ if(INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300)
+ infection = "Mild Infection+:"
+ if(INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400)
+ infection = "Mild Infection++:"
+ if(INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200)
+ infection = "Acute Infection:"
+ if(INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
+ infection = "Acute Infection+:"
+ if(INFECTION_LEVEL_TWO + 300 to INFINITY)
+ infection = "Acute Infection++:"
+
+ dat += ""
+ dat += "| [i.name] | N/A | [i.damage] | [infection]:[mech] | | "
+ dat += "
"
+ dat += "
"
+ if(target.disabilities & BLIND)
+ dat += "Cataracts detected.
"
+ if(target.disabilities & COLOURBLIND)
+ dat += "Photoreceptor abnormalities detected.
"
+ if(target.disabilities & NEARSIGHTED)
+ dat += "Retinal misalignment detected.
"
+
+ return dat
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 08e6ada170e..2c0f3cb1e70 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -302,14 +302,12 @@
if(cyborg.health < cyborg.maxHealth)
if(cyborg.health < 0)
- repair_amount = -2.5
+ repair_amount = 2.5
powercost = 30
else
- repair_amount = -1
+ repair_amount = 1
powercost = 10
- cyborg.adjustBruteLoss(repair_amount)
- cyborg.adjustFireLoss(repair_amount)
- cyborg.updatehealth()
+ cyborg.heal_overall_damage(repair_amount, repair_amount)
cyborg.cell.use(powercost)
else
cyborg.cell.use(5)
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index 300e08c5ef5..2a4a5a3fab1 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -94,9 +94,7 @@
hp -= Proj.damage
if(hp <= 0)
- for(var/mob/O in oviewers())
- if((O.client && !( O.blinded )))
- to_chat(O, "[src] breaks into tiny pieces and collapses!")
+ visible_message("[src] breaks into tiny pieces and collapses!")
qdel(src)
// Create a temporary object to represent the damage
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 45059d3e80b..0bdc88c5b52 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -73,7 +73,6 @@
else
M.heal_organ_damage(heal_brute, heal_burn)
- M.updatehealth()
user.visible_message("[user] applies [src] on [M].", \
"You apply [src] on [M].")
use(1)
diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm
index ec5ba4ef684..aaaa0dbc579 100644
--- a/code/game/objects/items/stacks/nanopaste.dm
+++ b/code/game/objects/items/stacks/nanopaste.dm
@@ -15,9 +15,7 @@
if(istype(M,/mob/living/silicon/robot)) //Repairing cyborgs
var/mob/living/silicon/robot/R = M
if(R.getBruteLoss() || R.getFireLoss() )
- R.adjustBruteLoss(-15)
- R.adjustFireLoss(-15)
- R.updatehealth()
+ R.heal_overall_damage(15, 15)
use(1)
user.visible_message("\The [user] applied some [src] at [R]'s damaged areas.",\
"You apply some [src] at [R]'s damaged areas.")
@@ -31,7 +29,6 @@
if(S && S.is_robotic())
if(S.get_damage())
S.heal_damage(15, 15, robo_repair = 1)
- H.updatehealth()
use(1)
user.visible_message("\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"][S.name] with \the [src].",\
"You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.name].")
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index c37c1cce2c8..a1ae9b5485b 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -332,7 +332,6 @@
"[user] has touched [H.name] with [src]!")
H.adjustStaminaLoss(50)
H.Weaken(5)
- H.updatehealth() //forces health update before next life tick
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
H.emote("gasp")
if(!H.undergoing_cardiac_arrest() && (prob(10) || defib.combat)) // Your heart explodes.
@@ -479,7 +478,6 @@
"[user] has touched [H.name] with [src]!")
H.adjustStaminaLoss(50)
H.Weaken(5)
- H.updatehealth() //forces health update before next life tick
if(!H.undergoing_cardiac_arrest() && prob(10)) // Your heart explodes.
H.set_heartattack(TRUE)
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index edf7e0fc32b..26639543426 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -60,7 +60,7 @@
if(nadeassembly)
nadeassembly.attack_self(user)
return
- var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num
+ var/newtime = input(usr, "Please set the timer.", "Timer", det_time) as num
if(user.is_in_active_hand(src))
newtime = Clamp(newtime, 10, 60000)
det_time = newtime
@@ -231,3 +231,38 @@
CB.prime()
..()
+
+/obj/item/grenade/plastic/x4/thermite
+ name = "T4"
+ desc = "A wall breaching charge, containing fuel, metal oxide and metal powder mixed in just the right way. One hell of a combination. Effective against walls, ineffective against airlocks..."
+ det_time = 2
+ icon_state = "t4breach0"
+ item_state = "t4breach"
+
+/obj/item/grenade/plastic/x4/thermite/prime()
+ var/turf/location
+ if(target)
+ if(!QDELETED(target))
+ location = get_turf(target)
+ target.overlays -= image_overlay
+ else
+ location = get_turf(src)
+ if(location)
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(8,0, location, aim_dir)
+ if(target && target.density)
+ var/turf/T = get_step(location, aim_dir)
+ for(var/turf/simulated/wall/W in range(1, location))
+ W.thermitemelt(speed = 30)
+ addtimer(CALLBACK(null, .proc/explosion, T, 0, 0, 2), 3)
+ addtimer(CALLBACK(smoke, /datum/effect_system/smoke_spread/.proc/start), 3)
+ else
+ addtimer(CALLBACK(null, .proc/explosion, T, 0, 0, 2), 3)
+ addtimer(CALLBACK(smoke, /datum/effect_system/smoke_spread/.proc/start), 3)
+
+
+ if(isliving(target))
+ var/mob/living/M = target
+ M.adjust_fire_stacks(2)
+ M.IgniteMob()
+ qdel(src)
diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm
index 94e97ea7c20..ac8c7d04a95 100644
--- a/code/game/objects/items/weapons/lighters.dm
+++ b/code/game/objects/items/weapons/lighters.dm
@@ -56,7 +56,6 @@
var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand")
if(affecting.receive_damage( 0, 5 )) //INFERNO
H.UpdateDamageIcon()
- H.updatehealth()
user.visible_message("After a few attempts, [user] manages to light the [src], [user.p_they()] however burn[user.p_s()] [user.p_their()] finger in the process.")
set_light(2)
@@ -184,6 +183,7 @@
attack_verb = list("burnt","singed")
processing_objects.Add(src)
update_icon()
+ return TRUE
/obj/item/match/proc/matchburnout()
if(lit)
@@ -197,6 +197,7 @@
desc = "A match. This one has seen better days."
attack_verb = list("flicked")
processing_objects.Remove(src)
+ return TRUE
/obj/item/match/dropped(mob/user)
matchburnout()
diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm
index 0f771fee03d..88de9de1b11 100644
--- a/code/game/objects/items/weapons/shards.dm
+++ b/code/game/objects/items/weapons/shards.dm
@@ -50,7 +50,6 @@
to_chat(H, "[src] cuts into your hand!")
if(affecting.receive_damage(force*0.5))
H.UpdateDamageIcon()
- H.updatehealth()
/obj/item/shard/attackby(obj/item/I, mob/user, params)
if(iswelder(I))
@@ -87,7 +86,6 @@
H.Weaken(3)
if(affecting.receive_damage(5, 0))
H.UpdateDamageIcon()
- H.updatehealth()
..()
/obj/item/shard/plasma
@@ -126,4 +124,4 @@
to_chat(usr, "You add the newly-formed plasma glass to the stack. It now contains [NG.amount] sheets.")
qdel(src)
else
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 65524fec445..5ba58e2f313 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -246,6 +246,15 @@
new /obj/item/grenade/flashbang(src)
update_icon()
+/obj/item/storage/belt/security/response_team_gamma/New()
+ ..()
+ new /obj/item/melee/baton/loaded(src)
+ new /obj/item/reagent_containers/spray/pepper(src)
+ new /obj/item/flash(src)
+ new /obj/item/grenade/flashbang(src)
+ new /obj/item/grenade/flashbang(src)
+ update_icon()
+
/obj/item/storage/belt/soulstone
name = "soul stone belt"
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
index d4482c55f14..d461700695d 100644
--- a/code/game/objects/items/weapons/storage/lockbox.dm
+++ b/code/game/objects/items/weapons/storage/lockbox.dm
@@ -123,3 +123,13 @@
new /obj/item/clothing/accessory/medal/conduct(src)
new /obj/item/clothing/accessory/medal/conduct(src)
new /obj/item/clothing/accessory/medal/gold/captain(src)
+
+/obj/item/storage/lockbox/t4
+ name = "lockbox (T4)"
+ desc = "Contains three T4 breaching charges."
+ req_access = list(access_cent_specops)
+
+/obj/item/storage/lockbox/t4/New()
+ ..()
+ for(var/i = 0, i < 3, i++)
+ new /obj/item/grenade/plastic/x4/thermite(src)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index f24b60c62d0..4defb3b4aae 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -166,7 +166,7 @@
if(display_contents_with_number)
for(var/datum/numbered_display/ND in display_contents)
- ND.sample_object.mouse_opacity = 2
+ ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE
ND.sample_object.screen_loc = "[cx]:16,[cy]:16"
ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]"
ND.sample_object.layer = 20
@@ -177,7 +177,7 @@
cy--
else
for(var/obj/O in contents)
- O.mouse_opacity = 2 //This is here so storage items that spawn with contents correctly have the "click around item to equip"
+ O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
O.screen_loc = "[cx]:16,[cy]:16"
O.maptext = ""
O.layer = 20
@@ -309,7 +309,7 @@
src.orient2hud(usr)
if(usr.s_active)
usr.s_active.show_to(usr)
- W.mouse_opacity = 2 //So you can click on the area around the item to equip it, instead of having to pixel hunt
+ W.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt
update_icon()
return 1
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 31cc7a1faf2..a24beced667 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -14,6 +14,7 @@
var/status = 0
var/obj/item/stock_parts/cell/high/bcell = null
var/hitcost = 1000
+ var/throw_hit_chance = 35
/obj/item/melee/baton/suicide_act(mob/user)
user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide.")
@@ -28,6 +29,11 @@
QDEL_NULL(bcell)
return ..()
+/obj/item/melee/baton/throw_impact(atom/hit_atom)
+ ..()
+ if(status && prob(throw_hit_chance))
+ baton_stun(hit_atom)
+
/obj/item/melee/baton/loaded/New() //this one starts with a cell pre-installed.
..()
bcell = new(src)
@@ -138,15 +144,17 @@
if(H.check_shields(0, "[user]'s [name]", src, MELEE_ATTACK)) //No message; check_shields() handles that
playsound(L, 'sound/weapons/Genhit.ogg', 50, 1)
return
- user.lastattacked = L
- L.lastattacker = user
L.Stun(stunforce)
L.Weaken(stunforce)
L.apply_effect(STUTTER, stunforce)
- L.visible_message("[user] has stunned [L] with [src]!", \
- "[user] has stunned you with [src]!")
+ if(user)
+ user.lastattacked = L
+ L.lastattacker = user
+ L.visible_message("[user] has stunned [L] with [src]!", \
+ "[user] has stunned you with [src]!")
+ add_attack_logs(user, L, "stunned")
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
if(isrobot(loc))
@@ -160,8 +168,6 @@
var/mob/living/carbon/human/H = L
H.forcesay(hit_appends)
- add_attack_logs(user, L, "Stunned with [src]")
-
/obj/item/melee/baton/emp_act(severity)
if(bcell)
deductcharge(1000 / severity)
@@ -193,6 +199,7 @@
throwforce = 5
stunforce = 5
hitcost = 2000
+ throw_hit_chance = 10
slot_flags = SLOT_BACK
var/obj/item/assembly/igniter/sparkler = null
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index 64a5c95f5c0..364fd49847b 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -315,7 +315,7 @@
desc = "A frozen shell of ice containing nanofrost that freezes the surrounding area after activation."
icon = 'icons/effects/effects.dmi'
icon_state = "frozen_smoke_capsule"
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
pass_flags = PASSTABLE
/obj/effect/nanofrost_container/proc/Smoke()
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 00860477833..f74a3b542ca 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -147,7 +147,6 @@
H.adjustBruteLoss(damage)
H.UpdateDamageIcon()
- H.updatehealth()
return
/obj/structure/proc/can_touch(var/mob/user)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 646adc30551..b5f715d165f 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -60,9 +60,7 @@
if(allowed(user))
locked = !locked
playsound(loc, 'sound/machines/click.ogg', 15, 1, -3)
- for(var/mob/O in viewers(user, 3))
- if((O.client && !( O.blinded )))
- to_chat(O, "The locker has been [locked ? null : "un"]locked by [user].")
+ visible_message("The locker has been [locked ? null : "un"]locked by [user].")
update_icon()
else
to_chat(user, "Access Denied")
@@ -93,12 +91,11 @@
/obj/structure/closet/secure_closet/emag_act(mob/user)
if(!broken)
- broken = 1
- locked = 0
- desc = "It appears to be broken."
+ broken = TRUE
+ locked = FALSE
icon_state = icon_off
flick(icon_broken, src)
- to_chat(user, "You unlock \the [src].")
+ to_chat(user, "You break the lock on \the [src].")
/obj/structure/closet/secure_closet/attack_hand(mob/user)
add_fingerprint(user)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index b3530156d91..26b3e53362e 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -270,9 +270,7 @@
return
if(src.allowed(user))
src.locked = !src.locked
- for(var/mob/O in viewers(user, 3))
- if((O.client && !( O.blinded )))
- to_chat(O, "The crate has been [locked ? null : "un"]locked by [user].")
+ visible_message("The crate has been [locked ? null : "un"]locked by [user].")
update_icon()
else
to_chat(user, "Access Denied")
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index e015f349c1d..6b8f5544428 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -18,7 +18,7 @@
var/grille_type
var/broken_type = /obj/structure/grille/broken
var/shockcooldown = 0
- var/my_shockcooldown = 50
+ var/my_shockcooldown = 1 SECONDS
/obj/structure/grille/fence/
var/width = 3
diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm
index 03182f69547..7fa0357cfaf 100644
--- a/code/game/objects/structures/lamarr_cage.dm
+++ b/code/game/objects/structures/lamarr_cage.dm
@@ -69,10 +69,7 @@
if(src.destroyed)
return
else
- to_chat(usr, text("You kick the lab cage."))
- for(var/mob/O in oviewers())
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] kicks the lab cage.", usr))
+ user.visible_message("[user] kicks the lab cage.", "You kick the lab cage.")
src.health -= 2
healthcheck()
return
@@ -82,4 +79,4 @@
new /obj/item/clothing/mask/facehugger/lamarr(src.loc)
occupied = 0
update_icon()
- return
\ No newline at end of file
+ return
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 60ca03ad0f7..968fcef2fd5 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -207,9 +207,7 @@
return
O.forceMove(loc)
if(user != O)
- for(var/mob/B in viewers(user, 3))
- if((B.client && !( B.blinded )))
- to_chat(B, text("[] stuffs [] into []!", user, O, src))
+ user.visible_message("[user] stuffs [O] into [src]!")
return
/obj/structure/m_tray/Destroy()
@@ -440,9 +438,7 @@
return
O.forceMove(loc)
if(user != O)
- for(var/mob/B in viewers(user, 3))
- if((B.client && !( B.blinded )))
- to_chat(B, text("[] stuffs [] into []!", user, O, src))
+ user.visible_message("[user] stuffs [O] into [src]!")
//Foreach goto(99)
return
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 31bfadee7d7..751ade6081f 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -278,7 +278,7 @@
icon_state = "mist"
layer = MOB_LAYER + 1
anchored = 1
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/machinery/shower/attack_hand(mob/M as mob)
on = !on
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
deleted file mode 100644
index d7aa9e88504..00000000000
--- a/code/game/response_team.dm
+++ /dev/null
@@ -1,777 +0,0 @@
-// ERTs
-
-#define ERT_TYPE_AMBER 1
-#define ERT_TYPE_RED 2
-#define ERT_TYPE_GAMMA 3
-
-/datum/game_mode
- var/list/datum/mind/ert = list()
-
-var/list/response_team_members = list()
-var/responseteam_age = 21 // Minimum account age to play as an ERT member
-var/datum/response_team/active_team = null
-var/send_emergency_team = 0
-var/ert_request_answered = 0
-
-/client/proc/response_team()
- set name = "Dispatch CentComm Response Team"
- set category = "Event"
- set desc = "Send an CentComm response team to the station."
-
- if(!check_rights(R_EVENT))
- return
-
- if(!ticker)
- to_chat(usr, "The game hasn't started yet!")
- return
-
- if(ticker.current_state == 1)
- to_chat(usr, "The round hasn't started yet!")
- return
-
- if(send_emergency_team)
- to_chat(usr, "Central Command has already dispatched an emergency response team!")
- return
-
- var/datum/nano_module/ert_manager/E = new()
- E.ui_interact(usr)
-
-
-/mob/dead/observer/proc/JoinResponseTeam()
- if(!send_emergency_team)
- to_chat(src, "No emergency response team is currently being sent.")
- return 0
-
- if(jobban_isbanned(src, ROLE_ERT))
- to_chat(src, "You are jobbanned from the emergency reponse team!")
- return 0
-
- var/player_age_check = check_client_age(client, responseteam_age)
- if(player_age_check && config.use_age_restriction_for_antags)
- to_chat(src, "This role is not yet available to you. You need to wait another [player_age_check] days.")
- return 0
-
- if(cannotPossess(src))
- to_chat(src, "Upon using the antagHUD you forfeited the ability to join the round.")
- return 0
-
- if(response_team_members.len > 6)
- to_chat(src, "The emergency response team is already full!")
- return 0
-
- return 1
-
-/proc/trigger_armed_response_team(var/datum/response_team/response_team_type, commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots)
- response_team_members = list()
- active_team = response_team_type
- active_team.setSlots(commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots)
-
- send_emergency_team = 1
- var/list/ert_candidates = pollCandidates("Join the Emergency Response Team?",, responseteam_age, 600, 1, role_playtime_requirements[ROLE_ERT])
- if(!ert_candidates.len)
- active_team.cannot_send_team()
- send_emergency_team = 0
- return 0
-
- // Respawnable players get first dibs
- for(var/mob/dead/observer/M in ert_candidates)
- if(jobban_isbanned(M, ROLE_TRAITOR) || jobban_isbanned(M, "Security Officer") || jobban_isbanned(M, "Captain") || jobban_isbanned(M, "Cyborg"))
- continue
- if((M in respawnable_list) && M.JoinResponseTeam())
- response_team_members |= M
- // If there's still open slots, non-respawnable players can fill them
- for(var/mob/dead/observer/M in (ert_candidates - respawnable_list))
- if(M.JoinResponseTeam())
- response_team_members |= M
-
- if(!response_team_members.len)
- active_team.cannot_send_team()
- send_emergency_team = 0
- return 0
-
- var/index = 1
- var/ert_spawn_seconds = 120
- spawn(ert_spawn_seconds * 10) // to account for spawn() using deciseconds
- var/list/unspawnable_ert = list()
- for(var/mob/M in response_team_members)
- if(M)
- unspawnable_ert |= M
- if(unspawnable_ert.len)
- message_admins("ERT SPAWN: The following ERT members could not be spawned within [ert_spawn_seconds] seconds:")
- for(var/mob/M in unspawnable_ert)
- message_admins("- Unspawned ERT: [ADMIN_FULLMONTY(M)]")
- for(var/mob/M in response_team_members)
- if(index > emergencyresponseteamspawn.len)
- index = 1
-
- if(!M || !M.client)
- continue
- var/client/C = M.client
- var/mob/living/new_commando = C.create_response_team(emergencyresponseteamspawn[index])
- if(!M || !new_commando)
- continue
- new_commando.mind.key = M.key
- new_commando.key = M.key
- new_commando.update_icons()
- index++
-
- send_emergency_team = 0
- active_team.announce_team()
- return 1
-
-/client/proc/create_response_team(var/turf/spawn_location)
- var/class = 0
- while(!class)
- class = input(src, "Which loadout would you like to choose?") in active_team.get_slot_list()
- if(!active_team.check_slot_available(class)) // Because the prompt does not update automatically when a slot gets filled.
- class = 0
-
- if(class == "Cyborg")
- active_team.reduceCyborgSlots()
- var/cyborg_unlock = active_team.getCyborgUnlock()
- var/mob/living/silicon/robot/ert/R = new /mob/living/silicon/robot/ert(spawn_location, cyborg_unlock)
- return R
-
- var/mob/living/carbon/human/M = new(null)
- var/obj/item/organ/external/head/head_organ = M.get_organ("head")
-
- var/new_gender = alert(src, "Please select your gender.", "ERT Character Generation", "Male", "Female")
-
- if(new_gender)
- if(new_gender == "Male")
- M.change_gender(MALE)
- else
- M.change_gender(FEMALE)
-
- M.set_species(/datum/species/human, TRUE)
- M.dna.ready_dna(M)
- M.reagents.add_reagent("mutadone", 1) //No fat/blind/colourblind/epileptic/whatever ERT.
- M.overeatduration = 0
-
- var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde
- var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
- var/skin_tone = rand(-120, 20) // A range of skin colors
-
- head_organ.facial_colour = hair_c
- head_organ.sec_facial_colour = hair_c
- head_organ.hair_colour = hair_c
- head_organ.sec_hair_colour = hair_c
- M.change_eye_color(eye_c)
- M.s_tone = skin_tone
- head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species.name)
- head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species.name)
-
- M.rename_character(null, "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(last_names)]")
- M.age = rand(23,35)
- M.regenerate_icons()
- M.update_body()
- M.update_dna()
-
- //Creates mind stuff.
- M.mind = new
- M.mind.current = M
- M.mind.original = M
- M.mind.assigned_role = SPECIAL_ROLE_ERT
- M.mind.special_role = SPECIAL_ROLE_ERT
- if(!(M.mind in ticker.minds))
- ticker.minds += M.mind //Adds them to regular mind list.
- ticker.mode.ert += M.mind
- M.forceMove(spawn_location)
-
- job_master.CreateMoneyAccount(M, class, null)
-
- active_team.equip_officer(class, M)
-
- return M
-
-
-/datum/response_team
- var/command_slots = 1
- var/engineer_slots = 3
- var/medical_slots = 3
- var/security_slots = 3
- var/janitor_slots = 0
- var/paranormal_slots = 0
- var/cyborg_slots = 0
-
- var/command_outfit
- var/engineering_outfit
- var/medical_outfit
- var/security_outfit
- var/janitor_outfit
- var/paranormal_outfit
- var/cyborg_unlock = 0
-
-/datum/response_team/proc/setSlots(com, sec, med, eng, jan, par, cyb)
- command_slots = com == null ? command_slots : com
- security_slots = sec == null ? security_slots : sec
- medical_slots = med == null ? medical_slots : med
- engineer_slots = eng == null ? engineer_slots : eng
- janitor_slots = jan == null ? janitor_slots : jan
- paranormal_slots = par == null ? paranormal_slots : par
- cyborg_slots = cyb == null ? cyborg_slots : cyb
-
-/datum/response_team/proc/reduceCyborgSlots()
- cyborg_slots--
-
-/datum/response_team/proc/getCyborgUnlock()
- return cyborg_unlock
-
-/datum/response_team/proc/get_slot_list()
- var/list/slots_available = list()
- if(command_slots)
- slots_available |= "Commander"
- if(security_slots)
- slots_available |= "Security"
- if(engineer_slots)
- slots_available |= "Engineer"
- if(medical_slots)
- slots_available |= "Medic"
- if(janitor_slots)
- slots_available |= "Janitor"
- if(paranormal_slots)
- slots_available |= "Paranormal"
- if(cyborg_slots)
- slots_available |= "Cyborg"
- return slots_available
-
-/datum/response_team/proc/check_slot_available(var/slot)
- switch(slot)
- if("Commander")
- return command_slots
- if("Security")
- return security_slots
- if("Engineer")
- return engineer_slots
- if("Medic")
- return medical_slots
- if("Janitor")
- return janitor_slots
- if("Paranormal")
- return paranormal_slots
- if("Cyborg")
- return cyborg_slots
- return 0
-
-/datum/response_team/proc/equip_officer(var/officer_type, var/mob/living/carbon/human/M)
- switch(officer_type)
- if("Engineer")
- engineer_slots -= 1
- M.equipOutfit(engineering_outfit)
- M.job = "ERT Engineering"
-
- if("Security")
- security_slots -= 1
- M.equipOutfit(security_outfit)
- M.job = "ERT Security"
-
- if("Medic")
- medical_slots -= 1
- M.equipOutfit(medical_outfit)
- M.job = "ERT Medical"
-
- if("Janitor")
- janitor_slots -= 1
- M.equipOutfit(janitor_outfit)
- M.job = "ERT Janitor"
-
- if("Paranormal")
- paranormal_slots -= 1
- M.equipOutfit(paranormal_outfit)
- M.job = "ERT Paranormal"
-
- if("Commander")
- command_slots = 0
-
- // Override name and age for the commander
- M.rename_character(null, "[pick("Lieutenant", "Captain", "Major")] [pick(last_names)]")
- M.age = rand(35,45)
-
- M.equipOutfit(command_outfit)
- M.job = "ERT Commander"
-
-/datum/response_team/proc/cannot_send_team()
- event_announcement.Announce("[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time.", "ERT Unavailable")
-
-/datum/response_team/proc/announce_team()
- event_announcement.Announce("Attention, [station_name()]. We are sending a team of highly trained assistants to aid(?) you. Standby.", "ERT En-Route")
-
-// -- AMBER TEAM --
-
-/datum/response_team/amber
- engineering_outfit = /datum/outfit/job/centcom/response_team/engineer/amber
- security_outfit = /datum/outfit/job/centcom/response_team/security/amber
- medical_outfit = /datum/outfit/job/centcom/response_team/medic/amber
- command_outfit = /datum/outfit/job/centcom/response_team/commander/amber
- janitor_outfit = /datum/outfit/job/centcom/response_team/janitorial/amber
- paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/amber
-
-/datum/response_team/amber/announce_team()
- event_announcement.Announce("Attention, [station_name()]. We are sending a code AMBER light Emergency Response Team. Standby.", "ERT En-Route")
-
-// -- RED TEAM --
-
-/datum/response_team/red
- engineering_outfit = /datum/outfit/job/centcom/response_team/engineer/red
- security_outfit = /datum/outfit/job/centcom/response_team/security/red
- medical_outfit = /datum/outfit/job/centcom/response_team/medic/red
- command_outfit = /datum/outfit/job/centcom/response_team/commander/red
- janitor_outfit = /datum/outfit/job/centcom/response_team/janitorial/red
- paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/red
-
-/datum/response_team/red/announce_team()
- event_announcement.Announce("Attention, [station_name()]. We are sending a code RED Emergency Response Team. Standby.", "ERT En-Route")
-
-// -- GAMMA TEAM --
-
-/datum/response_team/gamma
- engineering_outfit = /datum/outfit/job/centcom/response_team/engineer/gamma
- security_outfit = /datum/outfit/job/centcom/response_team/security/gamma
- medical_outfit = /datum/outfit/job/centcom/response_team/medic/gamma
- command_outfit = /datum/outfit/job/centcom/response_team/commander/gamma
- janitor_outfit = /datum/outfit/job/centcom/response_team/janitorial/gamma
- paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/gamma
- cyborg_unlock = 1
-
-/datum/response_team/gamma/announce_team()
- event_announcement.Announce("Attention, [station_name()]. We are sending a code GAMMA elite Emergency Response Team. Standby.", "ERT En-Route")
-
-/datum/outfit/job/centcom/response_team
- name = "Response team"
- var/rt_assignment = "Emergency Response Team Member"
- var/rt_job = "This is a bug"
- allow_backbag_choice = FALSE
- allow_loadout = FALSE
- pda = /obj/item/pda/heads/ert
- id = /obj/item/card/id/ert
- l_ear = /obj/item/radio/headset/ert/alt
-
- implants = list(/obj/item/implant/mindshield)
-
-/datum/outfit/job/centcom/response_team/pre_equip()
- . = ..()
- backpack_contents.Insert(1, /obj/item/storage/box/responseteam)
- backpack_contents[/obj/item/storage/box/responseteam] = 1
-
-/datum/outfit/job/centcom/response_team/imprint_idcard(mob/living/carbon/human/H)
- var/obj/item/card/id/W = H.wear_id
- if(!istype(W))
- return
- W.assignment = rt_assignment
- W.rank = W.assignment
- W.age = H.age
- W.sex = capitalize(H.gender)
- W.registered_name = H.real_name
- W.name = "[H.real_name]'s ID Card ([rt_job])"
- W.access = get_centcom_access(W.assignment)
- W.photo = get_id_photo(H)
- if(H.mind && H.mind.initial_account && H.mind.initial_account.account_number)
- W.associated_account_number = H.mind.initial_account.account_number
-
-/datum/outfit/job/centcom/response_team/imprint_pda(mob/living/carbon/human/H)
- var/obj/item/pda/PDA = H.wear_pda
- if(istype(PDA))
- PDA.owner = H.real_name
- PDA.ownjob = rt_assignment
- PDA.ownrank = rt_assignment
- PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
-
-/datum/outfit/job/centcom/response_team/commander
- name = "RT Commander"
- rt_assignment = "Emergency Response Team Leader"
- rt_job = "Emergency Response Team Leader"
-
- uniform = /obj/item/clothing/under/rank/centcom_officer
- back = /obj/item/storage/backpack/ert/commander
-
- id = /obj/item/card/id/ert/commander
-
- l_pocket = /obj/item/pinpointer
- r_pocket = /obj/item/melee/classic_baton/telescopic
-
-/datum/outfit/job/centcom/response_team/commander/amber
- name = "RT Commander (Amber)"
- shoes = /obj/item/clothing/shoes/combat
- gloves = /obj/item/clothing/gloves/color/black
- suit = /obj/item/clothing/suit/armor/vest/ert/command
- glasses = /obj/item/clothing/glasses/sunglasses
-
- belt = /obj/item/gun/energy/gun
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/ert/command = 1,
- /obj/item/clothing/mask/gas/sechailer = 1,
- /obj/item/restraints/handcuffs = 1,
- /obj/item/storage/lockbox/mindshield = 1
- )
-
-/datum/outfit/job/centcom/response_team/commander/red
- name = "RT Commander (Red)"
- shoes = /obj/item/clothing/shoes/combat
- gloves = /obj/item/clothing/gloves/combat
- suit = /obj/item/clothing/suit/space/hardsuit/ert/commander
- glasses = /obj/item/clothing/glasses/sunglasses
- cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/chest/nutriment
- )
- belt = /obj/item/gun/energy/gun/nuclear
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/commander = 1,
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
- /obj/item/gun/energy/ionrifle/carbine = 1,
- /obj/item/restraints/handcuffs = 1,
- /obj/item/clothing/shoes/magboots = 1,
- /obj/item/storage/lockbox/mindshield = 1
- )
-
-/datum/outfit/job/centcom/response_team/commander/gamma
- name = "RT Commander (Gamma)"
- shoes = /obj/item/clothing/shoes/magboots/advance
- gloves = /obj/item/clothing/gloves/combat
- suit = /obj/item/clothing/suit/space/hardsuit/ert/commander
- glasses = /obj/item/clothing/glasses/hud/security/night
-
- belt = /obj/item/gun/energy/gun/nuclear
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/commander = 1,
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
- /obj/item/restraints/handcuffs = 1,
- /obj/item/storage/lockbox/mindshield = 1,
- /obj/item/gun/energy/pulse/pistol = 1
- )
-
-/datum/outfit/job/centcom/response_team/security
- name = "RT Security"
- rt_job = "Emergency Response Team Officer"
- uniform = /obj/item/clothing/under/rank/security
- back = /obj/item/storage/backpack/ert/security
- belt = /obj/item/storage/belt/security/response_team
- pda = /obj/item/pda/heads/ert/security
- id = /obj/item/card/id/ert/security
- var/has_grenades = FALSE
-
-/datum/outfit/job/centcom/response_team/security/amber
- name = "RT Security (Amber)"
- shoes = /obj/item/clothing/shoes/combat
- gloves = /obj/item/clothing/gloves/color/black
- suit = /obj/item/clothing/suit/armor/vest/ert/security
- suit_store = /obj/item/gun/energy/gun/advtaser
- glasses = /obj/item/clothing/glasses/hud/security/sunglasses
-
- r_hand = /obj/item/gun/energy/laser
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/ert/security = 1,
- /obj/item/clothing/mask/gas/sechailer = 1,
- /obj/item/storage/box/zipties = 1,
- /obj/item/storage/box/teargas = 1,
- /obj/item/flashlight/seclite = 1
- )
-
-/datum/outfit/job/centcom/response_team/security/red
- name = "RT Security (Red)"
- has_grenades = TRUE
-
- shoes = /obj/item/clothing/shoes/combat
- gloves = /obj/item/clothing/gloves/color/black
- suit = /obj/item/clothing/suit/space/hardsuit/ert/security
- suit_store = /obj/item/gun/energy/gun/blueshield
- glasses = /obj/item/clothing/glasses/hud/security/sunglasses
- cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/arm/flash,
- /obj/item/organ/internal/cyberimp/chest/nutriment
- )
- r_hand = /obj/item/gun/projectile/automatic/lasercarbine
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1,
- /obj/item/clothing/mask/gas/sechailer = 1,
- /obj/item/clothing/shoes/magboots = 1,
- /obj/item/storage/box/handcuffs = 1,
- /obj/item/storage/box/teargas = 1,
- /obj/item/grenade/flashbang = 1,
- /obj/item/ammo_box/magazine/laser = 2
- )
-
-/datum/outfit/job/centcom/response_team/security/gamma
- name = "RT Security (Gamma)"
- has_grenades = TRUE
- shoes = /obj/item/clothing/shoes/magboots/advance
- gloves = /obj/item/clothing/gloves/combat
- suit = /obj/item/clothing/suit/space/hardsuit/ert/security
- suit_store = /obj/item/gun/energy/gun/nuclear
- glasses = /obj/item/clothing/glasses/hud/security/night
-
- r_hand = /obj/item/gun/energy/pulse/carbine
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1,
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
- /obj/item/storage/box/handcuffs = 1,
- /obj/item/gun/energy/ionrifle/carbine = 1
- )
-
-/datum/outfit/job/centcom/response_team/engineer
- name = "RT Engineer"
- rt_job = "Emergency Response Team Engineer"
- back = /obj/item/storage/backpack/ert/engineer
- uniform = /obj/item/clothing/under/rank/engineer
-
- belt = /obj/item/storage/belt/utility/full/multitool
- pda = /obj/item/pda/heads/ert/engineering
- id = /obj/item/card/id/ert/engineering
-
-/datum/outfit/job/centcom/response_team/engineer/amber
- name = "RT Engineer (Amber)"
- shoes = /obj/item/clothing/shoes/magboots
- gloves = /obj/item/clothing/gloves/color/yellow
- suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer
- suit_store = /obj/item/tank/emergency_oxygen/engi
- glasses = /obj/item/clothing/glasses/meson
-
- l_pocket = /obj/item/gun/energy/gun/mini
- r_pocket = /obj/item/melee/classic_baton/telescopic
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer = 1,
- /obj/item/clothing/mask/gas = 1,
- /obj/item/t_scanner = 1,
- /obj/item/stack/sheet/glass/fifty = 1,
- /obj/item/stack/sheet/metal/fifty = 1
- )
-
-/datum/outfit/job/centcom/response_team/engineer/red
- name = "RT Engineer (Red)"
- shoes = /obj/item/clothing/shoes/magboots/advance
- gloves = /obj/item/clothing/gloves/color/yellow
- belt = /obj/item/storage/belt/utility/chief/full
- suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer
- suit_store = /obj/item/tank/emergency_oxygen/engi
- glasses = /obj/item/clothing/glasses/meson
- cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/eyes/shield,
- /obj/item/organ/internal/cyberimp/chest/nutriment
- )
- l_pocket = /obj/item/t_scanner/extended_range
- r_pocket = /obj/item/melee/classic_baton/telescopic
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer = 1,
- /obj/item/clothing/mask/gas = 1,
- /obj/item/rcd/preloaded = 1,
- /obj/item/rcd_ammo = 3,
- /obj/item/gun/energy/gun = 1
- )
-
-/datum/outfit/job/centcom/response_team/engineer/gamma
- name = "RT Engineer (Gamma)"
- shoes = /obj/item/clothing/shoes/magboots/advance
- gloves = /obj/item/clothing/gloves/color/yellow
- suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer
- suit_store = /obj/item/tank/emergency_oxygen/double/full
- glasses = /obj/item/clothing/glasses/meson/night
-
- l_pocket = /obj/item/t_scanner/extended_range
- r_pocket = /obj/item/melee/classic_baton/telescopic
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer = 1,
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
- /obj/item/rcd/combat = 1,
- /obj/item/rcd_ammo/large = 3,
- /obj/item/gun/energy/pulse/pistol = 1
- )
-
-/datum/outfit/job/centcom/response_team/medic
- name = "RT Medic"
- rt_job = "Emergency Response Team Medic"
- uniform = /obj/item/clothing/under/rank/medical
- back = /obj/item/storage/backpack/ert/medical
- pda = /obj/item/pda/heads/ert/medical
- id = /obj/item/card/id/ert/medic
-
-/datum/outfit/job/centcom/response_team/medic/amber
- name = "RT Medic (Amber)"
-
- shoes = /obj/item/clothing/shoes/white
- gloves = /obj/item/clothing/gloves/color/latex
- suit = /obj/item/clothing/suit/armor/vest/ert/medical
- suit_store = /obj/item/gun/energy/gun/mini
- glasses = /obj/item/clothing/glasses/hud/health
-
- belt = /obj/item/storage/belt/medical/surgery/loaded
-
- l_pocket = /obj/item/reagent_containers/hypospray/safety/ert
- r_pocket = /obj/item/melee/classic_baton/telescopic
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/ert/medical = 1,
- /obj/item/clothing/mask/surgical = 1,
- /obj/item/storage/firstaid/adv = 1,
- /obj/item/storage/firstaid/regular = 1,
- /obj/item/storage/box/autoinjectors = 1,
- /obj/item/roller = 1,
- /obj/item/storage/pill_bottle/ert = 1
- )
-
-/datum/outfit/job/centcom/response_team/medic/red
- name = "RT Medic (Red)"
- shoes = /obj/item/clothing/shoes/white
- gloves = /obj/item/clothing/gloves/color/latex/nitrile
- suit = /obj/item/clothing/suit/space/hardsuit/ert/medical
- glasses = /obj/item/clothing/glasses/hud/health/health_advanced
- suit_store = /obj/item/gun/energy/gun
- cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/arm/surgery,
- /obj/item/organ/internal/cyberimp/chest/nutriment
- )
- belt = /obj/item/defibrillator/compact/loaded
-
- l_pocket = /obj/item/reagent_containers/hypospray/safety/ert
- r_pocket = /obj/item/melee/classic_baton/telescopic
-
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/medical = 1,
- /obj/item/clothing/mask/surgical = 1,
- /obj/item/storage/firstaid/toxin = 1,
- /obj/item/storage/firstaid/brute = 1,
- /obj/item/storage/firstaid/fire = 1,
- /obj/item/storage/box/autoinjectors = 1,
- /obj/item/roller = 1,
- /obj/item/clothing/shoes/magboots = 1
- )
-
-/datum/outfit/job/centcom/response_team/medic/gamma
- name = "RT Medic (Gamma)"
- shoes = /obj/item/clothing/shoes/magboots/advance
- gloves = /obj/item/clothing/gloves/combat
- suit = /obj/item/clothing/suit/space/hardsuit/ert/medical
- glasses = /obj/item/clothing/glasses/hud/health/night
- cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/arm/surgery
- )
-
- belt = /obj/item/defibrillator/compact/loaded
-
- l_pocket = /obj/item/reagent_containers/hypospray/combat/nanites
-
- r_hand = /obj/item/gun/medbeam
- backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/medical = 1,
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
- /obj/item/storage/firstaid/surgery = 1,
- /obj/item/gun/energy/pulse/pistol = 1
- )
-
-/datum/outfit/job/centcom/response_team/paranormal
- name = "RT Paranormal"
- rt_job = "Emergency Response Team Inquisitor"
- uniform = /obj/item/clothing/under/rank/chaplain
- back = /obj/item/storage/backpack/ert/security
- gloves = /obj/item/clothing/gloves/color/black
- shoes = /obj/item/clothing/shoes/combat
- l_ear = /obj/item/radio/headset/ert/alt
- glasses = /obj/item/clothing/glasses/hud/security/sunglasses
- belt = /obj/item/storage/belt/security/response_team
- id = /obj/item/card/id/centcom
- pda = /obj/item/pda/centcom
- backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
- /obj/item/storage/box/zipties = 1,
- /obj/item/flashlight = 1)
-
-/datum/outfit/job/centcom/response_team/paranormal/amber
- name = "RT Paranormal (Amber)"
- suit = /obj/item/clothing/suit/armor/vest/ert/security
- suit_store = /obj/item/gun/energy/gun/advtaser
- r_pocket = /obj/item/nullrod
-
-/datum/outfit/job/centcom/response_team/paranormal/red
- name = "RT Paranormal (Red)"
- suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
- suit_store = /obj/item/gun/energy/gun/nuclear
- r_pocket = /obj/item/nullrod
-
-/datum/outfit/job/centcom/response_team/paranormal/gamma
- name = "RT Paranormal (Gamma)"
- suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
- suit_store = /obj/item/gun/energy/gun/nuclear
- r_pocket = /obj/item/gun/energy/pulse/pistol
- l_pocket = /obj/item/grenade/clusterbuster/holy
- shoes = /obj/item/clothing/shoes/magboots/advance
-
-/datum/outfit/job/centcom/response_team/janitorial
- name = "RT Janitor"
- rt_job = "Emergency Response Team Janitor"
- uniform = /obj/item/clothing/under/color/purple
- back = /obj/item/storage/backpack/ert/janitor
- belt = /obj/item/storage/belt/janitor/full
- gloves = /obj/item/clothing/gloves/color/yellow
- shoes = /obj/item/clothing/shoes/galoshes
- l_ear = /obj/item/radio/headset/ert/alt
- id = /obj/item/card/id/centcom
- pda = /obj/item/pda/centcom
- l_pocket = /obj/item/melee/classic_baton/telescopic
- backpack_contents = list(
- /obj/item/grenade/chem_grenade/antiweed = 2,
- /obj/item/reagent_containers/spray/cleaner = 1,
- /obj/item/storage/bag/trash = 1,
- /obj/item/storage/box/lights/mixed = 1,
- /obj/item/holosign_creator = 1,
- /obj/item/flashlight = 1)
-
-/datum/outfit/job/centcom/response_team/janitorial/amber
- name = "RT Janitor (Amber)"
- suit = /obj/item/clothing/suit/armor/vest/ert/janitor
- head = /obj/item/clothing/head/helmet/ert/janitor
- glasses = /obj/item/clothing/glasses/sunglasses
-
- r_hand = /obj/item/gun/energy/disabler
-
-/datum/outfit/job/centcom/response_team/janitorial/red
- name = "RT Janitor (Red)"
- suit = /obj/item/clothing/suit/space/hardsuit/ert/janitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
- glasses = /obj/item/clothing/glasses/hud/security/sunglasses
- cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/chest/nutriment
- )
- r_pocket = /obj/item/scythe/tele
- l_pocket = /obj/item/gun/energy/gun/mini
-
-/datum/outfit/job/centcom/response_team/janitorial/gamma
- name = "RT Janitor (Gamma)"
- suit = /obj/item/clothing/suit/space/hardsuit/ert/janitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
- glasses = /obj/item/clothing/glasses/hud/security/sunglasses
- gloves = /obj/item/clothing/gloves/combat
- suit_store = /obj/item/gun/energy/pulse/pistol
- l_pocket = /obj/item/grenade/clusterbuster/cleaner
- r_pocket = /obj/item/grenade/clusterbuster/antiweed
- shoes = /obj/item/clothing/shoes/magboots/advance
-
-/obj/item/radio/centcom
- name = "centcomm bounced radio"
- frequency = ERT_FREQ
- icon_state = "radio"
-
-/obj/item/storage/box/responseteam/
- name = "boxed survival kit"
-
-/obj/item/storage/box/responseteam/New()
- ..()
- contents = list()
- sleep(1)
- new /obj/item/clothing/mask/breath( src )
- new /obj/item/tank/emergency_oxygen/engi( src )
- new /obj/item/flashlight/flare( src )
- new /obj/item/kitchen/knife/combat( src )
- new /obj/item/radio/centcom( src )
- new /obj/item/reagent_containers/food/pill/salicylic( src )
- new /obj/item/reagent_containers/food/pill/patch/synthflesh( src )
- return
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index d26a24b39a2..42d241404b1 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -180,6 +180,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
var/turf/simulated/floor/plating/P = pry_tile(CB, user, TRUE)
if(!istype(P))
return
+ update_icon()
P.attackby(T, user, params)
/turf/simulated/floor/proc/pry_tile(obj/item/C, mob/user, silent = FALSE)
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index 0121daf3ee4..1eb86650e4d 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -82,7 +82,6 @@
// NEEDS TO BE UPDATED
/turf/simulated/floor/basalt //By your powers combined, I am captain planet
name = "volcanic floor"
- icon = 'icons/turf/floors.dmi'
icon_state = "basalt0"
oxygen = 14
nitrogen = 23
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index de42f454202..6cfea0cb8f6 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -48,10 +48,11 @@
icon = 'icons/misc/beach2.dmi'
icon_state = "sandwater"
-/turf/simulated/floor/beach/water
+/turf/simulated/floor/beach/water // TODO - Refactor water so they share the same parent type - Or alternatively component something like that
name = "water"
icon_state = "water"
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ var/obj/machinery/poolcontroller/linkedcontroller = null
/turf/simulated/floor/beach/water/pry_tile(obj/item/C, mob/user, silent = FALSE)
return //cannot pry off tiles of water
@@ -61,6 +62,26 @@
..()
overlays += image("icon"='icons/misc/beach.dmi',"icon_state"="water5","layer"=MOB_LAYER+0.1)
+/turf/simulated/floor/beach/water/Entered(atom/movable/AM, atom/OldLoc)
+ . = ..()
+ if(!linkedcontroller)
+ return
+ if(ismob(AM))
+ linkedcontroller.mobinpool += AM
+
+/turf/simulated/floor/beach/water/Exited(atom/movable/AM, atom/newloc)
+ . = ..()
+ if(!linkedcontroller)
+ return
+ if(ismob(AM))
+ linkedcontroller.mobinpool -= AM
+
+/turf/simulated/floor/beach/water/InitializedOn(atom/A)
+ if(!linkedcontroller)
+ return
+ if(istype(A, /obj/effect/decal/cleanable)) // Better a typecheck than looping through thousands of turfs everyday
+ linkedcontroller.decalinpool += A
+
/turf/simulated/floor/noslip
name = "high-traction floor"
icon_state = "noslip"
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index bd1ff075aca..7f71cf981bd 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -1,6 +1,7 @@
/turf/simulated/floor/plating
name = "plating"
icon_state = "plating"
+ icon = 'icons/turf/floors/plating.dmi'
intact = 0
floor_tile = null
broken_states = list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5")
@@ -14,12 +15,17 @@
/turf/simulated/floor/plating/New()
..()
icon_plating = icon_state
+ if(icon == 'icons/turf/floors/plating.dmi')
+ smooth = SMOOTH_MORE
+ canSmoothWith = list(/turf/simulated/floor/plating, /turf/space)
+ update_icon()
/turf/simulated/floor/plating/update_icon()
if(!..())
return
if(!broken && !burnt)
icon_state = icon_plating //Because asteroids are 'platings' too.
+ underlays += image(icon, icon_state)
/turf/simulated/floor/plating/attackby(obj/item/C, mob/user, params)
if(..())
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index a24e6f2953f..c22c7530505 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -200,7 +200,10 @@
for(var/i=0, iThe thermite starts melting through the wall.")
+ if(user)
+ to_chat(user, "The thermite starts melting through the wall.")
- spawn(100)
+ spawn(wait)
if(O) qdel(O)
return
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 012d270005a..2e60537ce6f 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -226,6 +226,8 @@
for(var/obj/structure/cable/C in contents)
qdel(C)
+ smooth_icon(src)
+
/turf/simulated/AfterChange(ignore_air, keep_cabling = FALSE)
..()
RemoveLattice()
@@ -477,4 +479,4 @@
SSair.add_to_active(T0,1)
/turf/AllowDrop()
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/game/turfs/unsimulated/beach.dm b/code/game/turfs/unsimulated/beach.dm
index e3fad855558..b7c76359c46 100644
--- a/code/game/turfs/unsimulated/beach.dm
+++ b/code/game/turfs/unsimulated/beach.dm
@@ -2,7 +2,7 @@
name = "Beach"
icon = 'icons/misc/beach.dmi'
var/water_overlay_image = null
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/turf/unsimulated/beach/New()
..()
@@ -12,7 +12,7 @@
/turf/unsimulated/beach/sand
name = "Sand"
icon_state = "desert"
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
/turf/unsimulated/beach/sand/New() //adds some aesthetic randomness to the beach sand
icon_state = pick("desert", "desert0", "desert1", "desert2", "desert3", "desert4")
@@ -35,6 +35,27 @@
name = "Shallow Water"
icon_state = "seashallow"
water_overlay_image = "water_shallow"
+ var/obj/machinery/poolcontroller/linkedcontroller = null
+
+/turf/unsimulated/beach/water/Entered(atom/movable/AM, atom/OldLoc)
+ . = ..()
+ if(!linkedcontroller)
+ return
+ if(ismob(AM))
+ linkedcontroller.mobinpool += AM
+
+/turf/unsimulated/beach/water/Exited(atom/movable/AM, atom/newloc)
+ . = ..()
+ if(!linkedcontroller)
+ return
+ if(ismob(AM))
+ linkedcontroller.mobinpool -= AM
+
+/turf/unsimulated/beach/water/InitializedOn(atom/A)
+ if(!linkedcontroller)
+ return
+ if(istype(A, /obj/effect/decal/cleanable)) // Better a typecheck than looping through thousands of turfs everyday
+ linkedcontroller.decalinpool += A
/turf/unsimulated/beach/water/dense //for boundary "walls"
density = 1
@@ -101,4 +122,4 @@
density = 1
opacity = 1
explosion_block = 2
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index 59f50797cf1..06b168da042 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -24,24 +24,24 @@
//Do dmgamt damage divided by the number of damage types applied.
if(damagetype & BRUTELOSS)
- adjustBruteLoss(dmgamt / damage_mod)
+ adjustBruteLoss(dmgamt / damage_mod, FALSE)
if(damagetype & FIRELOSS)
- adjustFireLoss(dmgamt / damage_mod)
+ adjustFireLoss(dmgamt / damage_mod, FALSE)
if(damagetype & TOXLOSS)
- adjustToxLoss(dmgamt / damage_mod)
+ adjustToxLoss(dmgamt / damage_mod, FALSE)
if(damagetype & OXYLOSS)
- adjustOxyLoss(dmgamt / damage_mod)
+ adjustOxyLoss(dmgamt / damage_mod, FALSE)
// Failing that...
if(!(damagetype & BRUTELOSS) && !(damagetype & FIRELOSS) && !(damagetype & TOXLOSS) && !(damagetype & OXYLOSS))
if(NO_BREATHE in dna.species.species_traits)
// the ultimate fallback
- take_overall_damage(max(dmgamt - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0), 0)
+ take_overall_damage(max(dmgamt - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0), 0, updating_health = FALSE)
else
- adjustOxyLoss(max(dmgamt - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
+ adjustOxyLoss(max(dmgamt - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0), FALSE)
var/obj/item/organ/external/affected = get_organ("head")
if(affected)
@@ -87,8 +87,6 @@
to_chat(viewers(src), "[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide.")
do_suicide(0)
- updatehealth()
-
/mob/living/carbon/brain/verb/suicide()
set hidden = 1
@@ -132,7 +130,6 @@
to_chat(viewers(src), "[src] is powering down. It looks like [p_theyre()] trying to commit suicide.")
//put em at -175
adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
- updatehealth()
/mob/living/silicon/robot/verb/suicide()
set hidden = 1
@@ -152,7 +149,6 @@
to_chat(viewers(src), "[src] is powering down. It looks like [p_theyre()] trying to commit suicide.")
//put em at -175
adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
- updatehealth()
/mob/living/silicon/pai/verb/suicide()
set category = "pAI Commands"
@@ -189,7 +185,6 @@
to_chat(viewers(src), "[src] is thrashing wildly! It looks like [p_theyre()] trying to commit suicide.")
//put em at -175
adjustOxyLoss(max(175 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
- updatehealth()
/mob/living/carbon/slime/verb/suicide()
@@ -206,9 +201,9 @@
if(confirm == "Yes")
suiciding = 1
- setOxyLoss(100)
- adjustBruteLoss(100 - getBruteLoss())
- setToxLoss(100)
- setCloneLoss(100)
+ setOxyLoss(100, FALSE)
+ adjustBruteLoss(100 - getBruteLoss(), FALSE)
+ setToxLoss(100, FALSE)
+ setCloneLoss(100, FALSE)
updatehealth()
diff --git a/code/game/world.dm b/code/game/world.dm
index 949172f0d89..bb5df66be53 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -122,9 +122,8 @@ var/world_topic_spam_protect_time = world.timeofday
if(key_valid)
if(ticker && ticker.mode)
s["real_mode"] = ticker.mode.name
-
- s["security_level"] = get_security_level()
- s["ticker_state"] = ticker.current_state
+ s["security_level"] = get_security_level()
+ s["ticker_state"] = ticker.current_state
if(SSshuttle && SSshuttle.emergency)
// Shuttle status, see /__DEFINES/stat.dm
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index d76b73ae10c..bbff1eb2c2e 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -212,7 +212,6 @@ var/list/admin_verbs_proccall = list(
)
var/list/admin_verbs_snpc = list(
/client/proc/resetSNPC,
- /client/proc/toggleSNPC,
/client/proc/customiseSNPC,
/client/proc/hide_snpc_verbs
)
diff --git a/code/modules/admin/buildmode.dm b/code/modules/admin/buildmode.dm
deleted file mode 100644
index b04b9d2b96a..00000000000
--- a/code/modules/admin/buildmode.dm
+++ /dev/null
@@ -1,656 +0,0 @@
-#define BASIC_BUILDMODE 1
-#define ADV_BUILDMODE 2
-#define VAR_BUILDMODE 3
-#define THROW_BUILDMODE 4
-#define AREA_BUILDMODE 5
-#define COPY_BUILDMODE 6
-#define AREAEDIT_BUILDMODE 7
-#define FILL_BUILDMODE 8
-#define LINK_BUILDMODE 9
-#define BOOM_BUILDMODE 10
-#define SAVE_BUILDMODE 11
-#define NUM_BUILDMODES 11
-
-/obj/screen/buildmode
- icon = 'icons/misc/buildmode.dmi'
- var/datum/click_intercept/buildmode/bd
- layer = HUD_LAYER_BUILDMODE
-
-/obj/screen/buildmode/New(bld)
- ..()
- bd = bld
-
-/obj/screen/buildmode/mode
- name = "Toggle Mode"
- icon_state = "buildmode1"
- screen_loc = "NORTH,WEST"
-
-/obj/screen/buildmode/mode/Click(location, control, params)
- var/list/pa = params2list(params)
-
- if(pa.Find("left"))
- bd.toggle_modes()
- else if(pa.Find("right"))
- bd.change_settings(usr)
- update_icon()
- return 1
-
-/obj/screen/buildmode/mode/update_icon()
- icon_state = "buildmode[bd.mode]"
- return
-
-/obj/screen/buildmode/help
- icon_state = "buildhelp"
- screen_loc = "NORTH,WEST+1"
- name = "Buildmode Help"
-
-/obj/screen/buildmode/help/Click()
- bd.show_help(usr)
- return 1
-
-/obj/screen/buildmode/bdir
- icon_state = "build"
- screen_loc = "NORTH,WEST+2"
- name = "Change Dir"
-
-/obj/screen/buildmode/bdir/update_icon()
- dir = bd.build_dir
- return
-
-/obj/screen/buildmode/bdir/Click()
- bd.change_dir()
- update_icon()
- return 1
-
-/obj/screen/buildmode/quit
- icon_state = "buildquit"
- screen_loc = "NORTH,WEST+3"
- name = "Quit Buildmode"
-
-/obj/screen/buildmode/quit/Click()
- bd.quit()
- return 1
-
-/obj/screen/buildmode/dir/Click()
- bd.change_dir()
- update_icon()
- return 1
-
-/obj/effect/buildmode_reticule
- var/image/I
- var/client/cl
- anchored = TRUE
-
-/obj/effect/buildmode_reticule/New(var/turf/t, var/client/c)
- loc = t
- I = image('icons/mob/blob.dmi', t, "marker",19.0,2) // Sprite reuse wooo
- if(c)
- cl = c
- cl.images += I
- else
- log_runtime(EXCEPTION("Buildmode reticule created without a client!"), src)
-
-/obj/effect/buildmode_reticule/proc/deselect()
- qdel(src)
-
-/obj/effect/buildmode_reticule/Destroy()
- cl.images -= I
- cl = null
- qdel(I)
- return ..()
-
-/obj/effect/buildmode_line
- var/image/I
- var/client/cl
-
-/obj/effect/buildmode_line/New(var/client/c, var/atom/atom_a, var/atom/atom_b, var/linename)
- name = linename
- loc = get_turf(atom_a)
- I = image('icons/misc/mark.dmi', src, "line", 19.0)
- var/x_offset = ((atom_b.x * 32) + atom_b.pixel_x) - ((atom_a.x * 32) + atom_a.pixel_x)
- var/y_offset = ((atom_b.y * 32) + atom_b.pixel_y) - ((atom_a.y * 32) + atom_a.pixel_y)
-
- var/matrix/M = matrix()
- M.Translate(0, 16)
- M.Scale(1, sqrt((x_offset * x_offset) + (y_offset * y_offset)) / 32)
- M.Turn(90 - Atan2(x_offset, y_offset)) // So... You pass coords in order x,y to this version of atan2. It should be called acsc2.
- M.Translate(atom_a.pixel_x, atom_a.pixel_y)
-
- transform = M
- cl = c
- cl.images += I
-
-/obj/effect/buildmode_line/Destroy()
- if(I)
- if(istype(cl))
- cl.images -= I
- cl = null
- QDEL_NULL(I)
- return ..()
-
-/datum/click_intercept
- var/client/holder = null
- var/list/obj/screen/buttons = list()
-
-/datum/click_intercept/New(client/c)
- create_buttons()
- holder = c
- holder.click_intercept = src
- holder.show_popup_menus = 0
- holder.screen += buttons
-
-/datum/click_intercept/Destroy()
- QDEL_LIST(buttons)
- return ..()
-
-
-/datum/click_intercept/proc/create_buttons()
- return
-
-/datum/click_intercept/proc/InterceptClickOn(user,params,atom/object)
- return
-
-/datum/click_intercept/proc/quit()
- holder.screen -= buttons
- holder.click_intercept = null
- holder.show_popup_menus = 1
- qdel(src)
-
-
-
-/datum/click_intercept/buildmode
- var/mode = BASIC_BUILDMODE
- var/build_dir = SOUTH
- var/atom/movable/throw_atom = null
- var/obj/effect/buildmode_reticule/cornerA = null
- var/obj/effect/buildmode_reticule/cornerB = null
- var/generator_path = null
- var/varholder = "name"
- var/valueholder = "derp"
- var/objholder = /obj/structure/closet
- var/area/storedarea = null
- var/image/areaimage
- var/atom/movable/stored = null
- var/list/link_lines = list()
- var/obj/link_obj
- var/valid_links = 0
- //Explosion mode
- var/devastation = -1
- var/heavy = -1
- var/light = -1
- var/flash = -1
- var/flames = -1
- // Saving mode
- var/use_json = TRUE
-
-/datum/click_intercept/buildmode/New(client/c)
- ..()
- areaimage = image('icons/turf/areas.dmi',null,"yellow")
- holder.images += areaimage
-
-/datum/click_intercept/buildmode/Destroy()
- stored = null
- Reset()
- areaimage.loc = null
- qdel(areaimage)
- return ..()
-
-/datum/click_intercept/buildmode/create_buttons()
- buttons += new /obj/screen/buildmode/mode(src)
- buttons += new /obj/screen/buildmode/help(src)
- buttons += new /obj/screen/buildmode/bdir(src)
- buttons += new /obj/screen/buildmode/quit(src)
-
-/datum/click_intercept/buildmode/proc/toggle_modes()
- mode = (mode % NUM_BUILDMODES) +1
- Reset()
- return
-
-/datum/click_intercept/buildmode/proc/show_help(mob/user)
- switch(mode)
- if(BASIC_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button = Construct / Upgrade")
- to_chat(user, "Right Mouse Button = Deconstruct / Delete / Downgrade")
- to_chat(user, "Left Mouse Button + ctrl = R-Window")
- to_chat(user, "Left Mouse Button + alt = Airlock")
- to_chat(user, "")
- to_chat(user, "Use the button in the upper left corner to")
- to_chat(user, "change the direction of built objects.")
- to_chat(user, "***********************************************************")
- if(ADV_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Right Mouse Button on buildmode button = Set object type")
- to_chat(user, "Left Mouse Button on turf/obj = Place objects")
- to_chat(user, "Right Mouse Button = Delete objects")
- to_chat(user, "")
- to_chat(user, "Use the button in the upper left corner to")
- to_chat(user, "change the direction of built objects.")
- to_chat(user, "***********************************************************")
- if(VAR_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Right Mouse Button on buildmode button = Select var(type) & value")
- to_chat(user, "Left Mouse Button on turf/obj/mob = Set var(type) & value")
- to_chat(user, "Right Mouse Button on turf/obj/mob = Reset var's value")
- to_chat(user, "***********************************************************")
- if(THROW_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on turf/obj/mob = Select")
- to_chat(user, "Right Mouse Button on turf/obj/mob = Throw")
- to_chat(user, "***********************************************************")
- if(AREA_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on turf/obj/mob = Select corner")
- to_chat(user, "Right Mouse Button on buildmode button = Select generator")
- to_chat(user, "***********************************************************")
- if(COPY_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target")
- to_chat(user, "Right Mouse Button on obj/mob = Select target to copy")
- to_chat(user, "***********************************************************")
- if(AREAEDIT_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on obj/turf/mob = Paint area")
- to_chat(user, "Right Mouse Button on obj/turf/mob = Select area to paint")
- to_chat(user, "Right Mouse Button on buildmode button = Create new area")
- to_chat(user, "***********************************************************")
- if(FILL_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on turf/obj/mob = Select corner")
- to_chat(user, "Left Mouse Button + Alt on turf/obj/mob = Delete region")
- to_chat(user, "Right Mouse Button on buildmode button = Select object type")
- to_chat(user, "***********************************************************")
- if(LINK_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on obj = Select button to link")
- to_chat(user, "Right Mouse Button on obj = Link/unlink to selected button")
- to_chat(user, "***********************************************************")
- if(BOOM_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Mouse Button on obj = Kaboom")
- to_chat(user, "***********************************************************")
- if(SAVE_BUILDMODE)
- to_chat(user, "***********************************************************")
- to_chat(user, "Left Mouse Button on turf/obj/mob = Select corner")
- to_chat(user, "***********************************************************")
-
-
-
-
-/datum/click_intercept/buildmode/proc/change_settings(mob/user)
- switch(mode)
- if(BASIC_BUILDMODE)
-
- return 1
- if(ADV_BUILDMODE)
- var/target_path = input(user,"Enter typepath:" ,"Typepath","/obj/structure/closet")
- objholder = text2path(target_path)
- if(!ispath(objholder))
- objholder = pick_closest_path(target_path)
- if(!objholder || ispath(objholder, /area))
- objholder = /obj/structure/closet
- alert("That path is not allowed.")
- else
- if(ispath(objholder,/mob) && !check_rights(R_DEBUG,0))
- objholder = /obj/structure/closet
- if(VAR_BUILDMODE)
- var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
-
- varholder = input(user,"Enter variable name:" ,"Name", "name")
- if(varholder in locked && !check_rights(R_DEBUG,0))
-
- return 1
- var/thetype = input(user,"Select variable type:" ,"Type") in list("text","number","mob-reference","obj-reference","turf-reference")
- if(!thetype) return 1
- switch(thetype)
- if("text")
- valueholder = input(user,"Enter variable value:" ,"Value", "value") as text
- if("number")
- valueholder = input(user,"Enter variable value:" ,"Value", 123) as num
- if("mob-reference")
- valueholder = input(user,"Enter variable value:" ,"Value") as mob in mob_list
- if("obj-reference")
- valueholder = input(user,"Enter variable value:" ,"Value") as obj in world
- if("turf-reference")
- valueholder = input(user,"Enter variable value:" ,"Value") as turf in world
- if(AREA_BUILDMODE)
- var/list/gen_paths = subtypesof(/datum/mapGenerator)
-
- var/type = input(user,"Select Generator Type","Type") as null|anything in gen_paths
- if(!type) return
-
- generator_path = type
- cornerA = null
- cornerB = null
- if(AREAEDIT_BUILDMODE)
- var/target_path = input(user,"Enter typepath:", "Typepath", "/area")
- var/areatype = text2path(target_path)
- if(ispath(areatype,/area))
- var/areaname = input(user,"Enter area name:", "Area name", "Area")
- if(!areaname || !length(areaname))
- return
- storedarea = new areatype
- storedarea.power_equip = 0
- storedarea.power_light = 0
- storedarea.power_environ = 0
- storedarea.always_unpowered = 0
- storedarea.name = areaname
- areaimage.loc = storedarea
- if(FILL_BUILDMODE)
- var/target_path = input(user,"Enter typepath:" ,"Typepath","/obj/structure/closet")
- objholder = text2path(target_path)
- if(!ispath(objholder))
- objholder = pick_closest_path(target_path)
- if(!objholder || ispath(objholder, /area))
- objholder = /obj/structure/closet
- return
- else
- if(ispath(objholder,/mob) && !check_rights(R_DEBUG,0))
- objholder = /obj/structure/closet
- deselect_region()
- if(BOOM_BUILDMODE)
- devastation = input("Range of total devastation. -1 to none", text("Input")) as num|null
- if(devastation == null) devastation = -1
- heavy = input("Range of heavy impact. -1 to none", text("Input")) as num|null
- if(heavy == null) heavy = -1
- light = input("Range of light impact. -1 to none", text("Input")) as num|null
- if(light == null) light = -1
- flash = input("Range of flash. -1 to none", text("Input")) as num|null
- if(flash == null) flash = -1
- flames = input("Range of flames. -1 to none", text("Input")) as num|null
- if(flames == null) flames = -1
-
- if(SAVE_BUILDMODE)
- use_json = (alert("Would you like to use json (Default is \"Yes\")?",,"Yes","No") == "Yes")
-
-/datum/click_intercept/buildmode/proc/change_dir()
- switch(build_dir)
- if(NORTH)
- build_dir = EAST
- if(EAST)
- build_dir = SOUTH
- if(SOUTH)
- build_dir = WEST
- if(WEST)
- build_dir = NORTHWEST
- if(NORTHWEST)
- build_dir = NORTH
- return 1
-
-/datum/click_intercept/buildmode/proc/deselect_region()
- QDEL_NULL(cornerA)
- QDEL_NULL(cornerB)
-
-/datum/click_intercept/buildmode/proc/Reset()//Reset temporary variables
- deselect_region()
- if(mode == AREAEDIT_BUILDMODE)
- areaimage.loc = storedarea
- else
- areaimage.loc = null
- for(var/obj/effect/buildmode_line/L in link_lines)
- qdel(L)
- link_lines -= L
-
-/datum/click_intercept/buildmode/proc/select_tile(var/turf/T)
- return new /obj/effect/buildmode_reticule(T, holder)
-
-/proc/togglebuildmode(mob/M as mob in player_list)
- set name = "Toggle Build Mode"
- set category = "Event"
-
- if(M.client)
- if(istype(M.client.click_intercept,/datum/click_intercept/buildmode))
- var/datum/click_intercept/buildmode/B = M.client.click_intercept
- B.quit()
- log_admin("[key_name(usr)] has left build mode.")
- else
- new/datum/click_intercept/buildmode(M.client)
- message_admins("[key_name_admin(usr)] has entered build mode.")
- log_admin("[key_name(usr)] has entered build mode.")
-
-/datum/click_intercept/buildmode/InterceptClickOn(user,params,atom/object) //Click Intercept
- var/list/pa = params2list(params)
- var/right_click = pa.Find("right")
- var/left_click = pa.Find("left")
- var/alt_click = pa.Find("alt")
- var/ctrl_click = pa.Find("ctrl")
-
- . = 1
- switch(mode)
- if(BASIC_BUILDMODE)
- if(istype(object,/turf) && left_click && !alt_click && !ctrl_click)
- var/turf/T = object
- if(istype(object,/turf/space))
- T.ChangeTurf(/turf/simulated/floor/plasteel)
- else if(istype(object,/turf/simulated/floor))
- T.ChangeTurf(/turf/simulated/wall)
- else if(istype(object,/turf/simulated/wall))
- T.ChangeTurf(/turf/simulated/wall/r_wall)
- log_admin("Build Mode: [key_name(user)] built [T] at ([T.x],[T.y],[T.z])")
- return
- else if(right_click)
- log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
- if(istype(object,/turf/simulated/wall))
- var/turf/T = object
- T.ChangeTurf(/turf/simulated/floor/plasteel)
- else if(istype(object,/turf/simulated/floor))
- var/turf/T = object
- T.ChangeTurf(/turf/space)
- else if(istype(object,/turf/simulated/wall/r_wall))
- var/turf/T = object
- T.ChangeTurf(/turf/simulated/wall)
- else if(istype(object,/obj))
- qdel(object)
- return
- else if(istype(object,/turf) && alt_click && left_click)
- log_admin("Build Mode: [key_name(user)] built an airlock at ([object.x],[object.y],[object.z])")
- new/obj/machinery/door/airlock(get_turf(object))
- else if(istype(object,/turf) && ctrl_click && left_click)
- var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object))
- WIN.setDir(build_dir)
- log_admin("Build Mode: [key_name(user)] built a window at ([object.x],[object.y],[object.z])")
-
- if(ADV_BUILDMODE)
- if(left_click)
- if(ispath(objholder,/turf))
- var/turf/T = get_turf(object)
- log_admin("Build Mode: [key_name(user)] modified [T] ([T.x],[T.y],[T.z]) to [objholder]")
- T.ChangeTurf(objholder)
- else if(!isnull(objholder))
- var/obj/A = new objholder (get_turf(object))
- A.setDir(build_dir)
- log_admin("Build Mode: [key_name(user)] modified [A]'s ([A.x],[A.y],[A.z]) dir to [build_dir]")
- else
- to_chat(user, "Select object type first.")
- else if(right_click)
- if(isobj(object))
- log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
- qdel(object)
-
- if(VAR_BUILDMODE)
- if(left_click) //I cant believe this shit actually compiles.
- if(object.vars.Find(varholder))
- log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
- object.vars[varholder] = valueholder
- else
- to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'")
- if(right_click)
- if(object.vars.Find(varholder))
- log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
- object.vars[varholder] = initial(object.vars[varholder])
- else
- to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'")
-
- if(THROW_BUILDMODE)
- if(left_click)
- if(isturf(object))
- return
- throw_atom = object
- if(right_click)
- if(throw_atom)
- throw_atom.throw_at(object, 10, 1,user)
- log_admin("Build Mode: [key_name(user)] threw [throw_atom] at [object] ([object.x],[object.y],[object.z])")
- if(AREA_BUILDMODE)
- if(!cornerA)
- cornerA = select_tile(get_turf(object))
- return
- if(cornerA && !cornerB)
- cornerB = select_tile(get_turf(object))
- if(left_click) //rectangular
- if(cornerA && cornerB)
- if(!generator_path)
- to_chat(user, "Select generator type first.")
- else
- var/datum/mapGenerator/G = new generator_path
- G.defineRegion(cornerA.loc,cornerB.loc,1)
- G.generate()
- deselect_region()
- return
-
- //Something wrong - Reset
- deselect_region()
- if(COPY_BUILDMODE)
- if(left_click)
- var/turf/T = get_turf(object)
- if(stored)
- DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T)
- else if(right_click)
- if(ismovableatom(object)) // No copying turfs for now.
- to_chat(user, "[object] set as template.")
- stored = object
- if(AREAEDIT_BUILDMODE)
- if(left_click)
- if(!storedarea)
- return
- var/turf/T = get_turf(object)
- if(get_area(T) != storedarea)
- storedarea.contents.Add(T)
- else if(right_click)
- var/turf/T = get_turf(object)
- storedarea = get_area(T)
- areaimage.loc = storedarea
- if(FILL_BUILDMODE)
- if(!cornerA)
- cornerA = select_tile(get_turf(object))
- return
- if(cornerA && !cornerB)
- cornerB = select_tile(get_turf(object))
- if(left_click) //rectangular
- if(cornerA && cornerB)
- if(alt_click)
- empty_region(block(get_turf(cornerA),get_turf(cornerB)))
- deselect_region()
- else
- if(!objholder)
- to_chat(user, "Select object type first.")
- else
- for(var/turf/T in block(get_turf(cornerA),get_turf(cornerB)))
- if(ispath(objholder,/turf))
- T.ChangeTurf(objholder)
- else
- var/obj/A = new objholder(T)
- A.setDir(build_dir)
- deselect_region()
- return
-
- //Something wrong - Reset
- deselect_region()
- if(LINK_BUILDMODE)
- if(left_click && istype(object, /obj/machinery))
- link_obj = object
- if(right_click && istype(object, /obj/machinery))
- if(istype(link_obj, /obj/machinery/door_control) && istype(object, /obj/machinery/door/airlock))
- var/obj/machinery/door_control/M = link_obj
- var/obj/machinery/door/airlock/P = object
- if(!M.id || M.id == "")
- M.id = input(holder, "Please select an ID for the button", "Buildmode", "")
- if(!M.id || M.id == "")
- goto(line_jump)
- if(P.id_tag == M.id && (P in range(M.range, M)) && P.id_tag && P.id_tag != "")
- P.id_tag = null
- to_chat(holder, "[P] unlinked.")
- goto(line_jump)
- if(!M.normaldoorcontrol)
- if(link_lines.len && alert(holder, "Warning: This will disable links to connected pod doors. Continue?", "Buildmode", "Yes", "No") == "No")
- goto(line_jump)
- M.normaldoorcontrol = 1
- if(P.id_tag && alert(holder, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
- goto(line_jump)
- P.id_tag = M.id
- if(istype(link_obj, /obj/machinery/door_control) && istype(object, /obj/machinery/door/poddoor))
- var/obj/machinery/door_control/M = link_obj
- var/obj/machinery/door/poddoor/P = object
- if(!M.id || M.id == "")
- M.id = input(holder, "Please select an ID for the button", "Buildmode", "")
- if(!M.id || M.id == "")
- goto(line_jump)
- if(P.id_tag == M.id && P.id_tag && P.id_tag != "")
- P.id_tag = null
- to_chat(holder, "[P] unlinked.")
- goto(line_jump)
- if(M.normaldoorcontrol)
- if(link_lines.len && alert(holder, "Warning: This will disable links to connected airlocks. Continue?", "Buildmode", "Yes", "No") == "No")
- goto(line_jump)
- M.normaldoorcontrol = 0
- if(!M.id || M.id == "")
- M.id = input(holder, "Please select an ID for the button", "Buildmode", "")
- if(!M.id || M.id == "")
- goto(line_jump)
- if(P.id_tag && P.id_tag != 1 && alert(holder, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
- goto(line_jump)
- P.id_tag = M.id
-
- line_jump // For the goto
- valid_links = 0
- for(var/obj/effect/buildmode_line/L in link_lines)
- qdel(L)
- link_lines -= L
-
- if(istype(link_obj, /obj/machinery/door_control))
- var/obj/machinery/door_control/M = link_obj
- for(var/obj/machinery/door/airlock/P in range(M.range,M))
- if(P.id_tag == M.id)
- var/obj/effect/buildmode_line/L = new(holder, M, P, "[M.name] to [P.name]")
- L.color = M.normaldoorcontrol ? "#339933" : "#993333"
- if(M.normaldoorcontrol)
- valid_links = 1
- link_lines += L
- var/obj/effect/buildmode_line/L2 = new(holder, P, M, "[M.name] to [P.name]") // Yes, reversed one so that you can see it from both sides.
- L2.color = L.color
- link_lines += L2
- for(var/obj/machinery/door/poddoor/P in airlocks)
- if(P.id_tag == M.id)
- var/obj/effect/buildmode_line/L = new(holder, M, P, "[M.name] to [P.name]")
- L.color = M.normaldoorcontrol ? "#993333" : "#339933"
- if(M.normaldoorcontrol)
- valid_links = 0
- link_lines += L
- var/obj/effect/buildmode_line/L2 = new(holder, P, M, "[M.name] to [P.name]") // Yes, reversed one so that you can see it from both sides.
- L2.color = L.color
- link_lines += L2
- if(BOOM_BUILDMODE)
- explosion(object, devastation, heavy, light, flash, null, TRUE, flames)
- if(SAVE_BUILDMODE)
- if(!cornerA)
- cornerA = select_tile(get_turf(object))
- return
- if(!cornerB)
- cornerB = select_tile(get_turf(object))
- if(left_click)
- if(cornerA && cornerB)
- var/turf/A = get_turf(cornerA)
- var/turf/B = get_turf(cornerB)
- deselect_region() // So we don't read our own reticules
- var/map_name = input(holder, "Please select a name for your map", "Buildmode", "")
- if(map_name == "")
- return
- var/map_flags = 0
- if(use_json)
- map_flags = 32 // Magic number defined in `writer.dm` that I can't use directly
- // because #defines are for some reason our coding standard
- var/our_map = maploader.save_map(A,B,map_name,map_flags)
- holder << ftp(our_map) // send the map they've made! Or are stealing, whatever
- to_chat(holder, "Map saving complete! [our_map]")
- return
-
- deselect_region()
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 6495c8fabfd..31600856238 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2066,7 +2066,7 @@
var/input = input(src.owner, "Please enter a reason for denying [key_name(H)]'s ERT request.","Outgoing message from CentComm", "")
if(!input) return
- ert_request_answered = 1
+ ert_request_answered = TRUE
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
log_admin("[src.owner] denied [key_name(H)]'s ERT request with the message [input].")
to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Your ERT request has been denied for the following reasons: [input]. Message ends.\"")
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm
index c1e28a48f8d..d899fda5b56 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/verbs/modifyvariables.dm
@@ -516,6 +516,24 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height",
log_admin("[key_name(src)] modified [original_name]'s [objectvar]: [original_var]=[new_var]")
message_admins("[key_name_admin(src)] modified [original_name]'s varlist [objectvar]: [original_var]=[new_var]")
+/proc/vv_varname_lockcheck(param_var_name)
+ if(param_var_name in VVlocked)
+ if(!check_rights(R_DEBUG))
+ return FALSE
+ if(param_var_name in VVckey_edit)
+ if(!check_rights(R_EVENT | R_DEBUG))
+ return FALSE
+ if(param_var_name in VVicon_edit_lock)
+ if(!check_rights(R_EVENT | R_DEBUG))
+ return FALSE
+ if(param_var_name in VVpixelmovement)
+ if(!check_rights(R_DEBUG))
+ return FALSE
+ var/prompt = alert(usr, "Editing this var may irreparably break tile gliding for the rest of the round. THIS CAN'T BE UNDONE", "DANGER", "ABORT ", "Continue", " ABORT")
+ if(prompt != "Continue")
+ return FALSE
+ return TRUE
+
/client/proc/modify_variables(atom/O, param_var_name = null, autodetect_class = 0)
if(!check_rights(R_VAREDIT))
return
@@ -544,25 +562,11 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height",
if(!O.can_vv_get(variable))
return
+ if(!vv_varname_lockcheck(variable))
+ return
+
var_value = O.vars[variable]
- if(variable in VVlocked)
- if(!check_rights(R_DEBUG))
- return
- if(variable in VVckey_edit)
- if(!check_rights(R_EVENT | R_DEBUG))
- return
- if(variable in VVicon_edit_lock)
- if(!check_rights(R_EVENT | R_DEBUG))
- return
- if(variable in VVpixelmovement)
- if(!check_rights(R_DEBUG))
- return
- var/prompt = alert(src, "Editing this var may irreparably break tile gliding for the rest of the round. THIS CAN'T BE UNDONE", "DANGER", "ABORT ", "Continue", " ABORT")
- if(prompt != "Continue")
- return
-
-
var/default = vv_get_class(var_value)
if(isnull(default))
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 5d6aa7490e2..011e46e7990 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -54,7 +54,6 @@
H.Stun(3)
if(affecting)
affecting.receive_damage(1, 0)
- H.updatehealth()
else if(ismouse(target))
var/mob/living/simple_animal/mouse/M = target
visible_message("SPLAT!")
diff --git a/code/modules/awaymissions/mission_code/beach.dm b/code/modules/awaymissions/mission_code/beach.dm
index 4d2384ceb67..2da10ecbd98 100644
--- a/code/modules/awaymissions/mission_code/beach.dm
+++ b/code/modules/awaymissions/mission_code/beach.dm
@@ -3,7 +3,7 @@
icon = 'icons/effects/effects.dmi'
icon_state = "extinguish"
opacity = 0
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
density = 0
anchored = 1
invisibility = 101
diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index 9ebd1d88b6b..90d27fbf7ed 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -262,8 +262,9 @@
return list()
/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/death(gibbed)
- if(!on_alert)
+ // putting this up here so we don't say anything after deathgasp
+ if(can_die() && !on_alert)
say("How could you betray the Syndicate?")
for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in living_mob_list)
W.on_alert = TRUE
- ..(gibbed)
+ return ..(gibbed)
diff --git a/code/modules/buildmode/README.md b/code/modules/buildmode/README.md
new file mode 100644
index 00000000000..37ce2ce6b1b
--- /dev/null
+++ b/code/modules/buildmode/README.md
@@ -0,0 +1,297 @@
+# Buildmode
+
+## Code layout
+
+### Buildmode
+
+Manager for buildmode modes. Contains logic to manage switching between each mode, and presenting a suitable user interface.
+
+### Effects
+
+Special graphics used by buildmode modes for user interface purposes.
+
+### Buildmode Mode
+
+Implementer of buildmode behaviors.
+
+Existing varieties:
+
++ Basic
+
+ **Description**:
+
+ Allows creation of simple structures consisting of floors, walls, windows, and airlocks.
+
+ **Controls**:
+
+ + *Left click a turf*:
+
+ "Upgrades" the turf based on the following rules below:
+
+ + Space -> Tiled floor
+ + Simulated floor -> Regular wall
+ + Wall -> Reinforced wall
+
+ + *Right click a turf*:
+
+ "Downgrades" the turf based on the following rules below:
+
+ + Reinforced wall -> Regular wall
+ + Wall -> Tiled floor
+ + Simulated floor -> Space
+
+ + *Right click an object*:
+
+ Deletes the clicked object.
+
+ + *Alt+Left click a location*:
+
+ Places an airlock at the clicked location.
+
+ + *Ctrl+Left click a location*:
+
+ Places a window at the clicked location.
+
++ Advanced
+
+ **Description**:
+
+ Creates an instance of a configurable atom path where you click.
+
+ **Controls**:
+
+ + *Right click on the mode selector*:
+
+ Choose a path to spawn.
+
+ + *Alt+Left click a turf, object, or mob*:
+
+ Select the type of the object clicked.
+
+ + *Left click a location* (requires chosen path):
+
+ Place an instance of the chosen path at the location.
+
+ + *Right click an object*:
+
+ Delete the object.
+
++ Fill
+
+ **Description**:
+
+ Creates an instance of an atom path on every tile in a chosen region.
+
+ With a special control input, instead deletes everything within the region.
+
+ **Controls**:
+
+ + *Right click on the mode selector*:
+
+ Choose a path to spawn.
+
+ + *Left click on a region* (requires chosen path):
+
+ Fill the region with the chosen path.
+
+ + *Alt+Left click on a region*:
+
+ Deletes everything within the region.
+
+ + *Right click during region selection*:
+
+ Cancel region selection.
+
++ Atmos
+
+ **Description**:
+
+ Fills a region with configurable atmos. By default, ignores unsimulated turfs, but is able to "overwrite" the atmos of unsimulated turfs with a special control input.
+
+ By default, fills a region with a breathable, standard atmosphere.
+
+ **Controls**:
+
+ + *Right click on the mode selector icon*:
+
+ Set the following traits:
+
+ + Total Pressure
+ + Temperature
+ + Partial Pressure Ratio (PPR) Oxygen
+ + PPR Nitrogen
+ + PPR Plasma
+ + PPR CO2
+ + PPR N2O
+
+ + *Left click a region*:
+
+ Fill the region with the configured atmos.
+
+ + *Control+Left click a region*:
+
+ As with the regular left click, but also "overwrites" the base atmos of any unsimulated turfs in the region - such as space turfs.
+
+ + *Right click during region selection*:
+
+ Cancel region selection.
+
++ Copy
+
+ **Description**:
+
+ Take an existing object in the world, and place duplicates with identical attributes where you click.
+
+ May not always work nicely - "deep" variables such as lists or datums may malfunction.
+
+ **Controls**:
+
+ + *Right click an existing object*:
+
+ Select the clicked object as a template.
+
+ + *Left click a location* (Requires a selected object as template):
+
+ Place a duplicate of the template at the clicked location.
+
++ Link
+
+ **Description**:
+
+ Form links between door control buttons and either airlocks or pod bay doors.
+
+ The selected button will be highlighted, and visible lines will be drawn between the doors it is linked to and itself.
+
+ **Controls**:
+
+ + *Left click a door control button*:
+
+ Makes the button active, and show what doors it is linked to.
+
+ + *Right click an airlock* (requires active button):
+
+ Links the airlock to the active button. Will remove all links from the button first, if the button is linked to pod bay doors.
+
+ + *Right click a pod bay door* (requires active button):
+
+ Links the pod bay door to the active button. Will remove all links from the button first, if the button is linked to regular airlocks.
+
++ Area Edit
+
+ **Description**:
+
+ Modifies and creates areas.
+
+ The active area will be highlighted in yellow.
+
+ **Controls**:
+
+ + *Right click the mode selector*:
+
+ Create a new area, and make it active.
+
+ + *Right click an existing area*:
+
+ Make the clicked area active.
+
+ + *Left click a turf*:
+
+ When an area is active, adds the turf to the active area.
+
++ Var Edit
+
+ **Description**:
+
+ Allows for setting and resetting variables of objects with a click.
+
+ If the object does not have the var, will do nothing and print a warning message.
+
+ **Controls**:
+
+ + *Right click the mode selector*:
+
+ Choose which variable to set, and what to set it to.
+
+ + *Left click an atom*:
+
+ Change the clicked atom's variables as configured.
+
+ + *Right click an atom*:
+
+ Reset the targeted variable to its original value in the code.
+
++ Map Generator
+
+ **Description**:
+
+ Fills rectangular regions with algorithmically generated content. Right click during region selection to cancel.
+
+ See the `procedural_mapping` module for the generators themselves.
+
+ **Controls**:
+
+ + *Right-click on the mode selector*:
+
+ Select a map generator from all the generators present in the codebase.
+
+ + *Left click two corners of an area*:
+
+ Use the generator to populate the region.
+
+ + *Right click during region selection*:
+
+ Cancel region selection.
+
++ Save
+
+ **Description**:
+
+ Captures a rectangular region in a `.dmm` format, which can be loaded back later using the "Place Map Template" debug verb.
+
+ Keep in mind this feature is somewhat experimental, and may not always work.
+
+ **Controls**:
+
+ + *Right click on the mode selector*:
+
+ Configure whether to save in either JSON mode or not.
+
+ + *Left click two corners of an area*:
+
+ Save the region to a `.dmm` file. You will be prompted for where to save this - a copy will be saved in the `_maps/quicksave` folder.
+
+ + *Right click during region selection*:
+
+ Cancel region selection.
+
++ Throwing
+
+ **Description**:
+
+ Select an object with left click, and right click to throw it towards where you clicked.
+
+ **Controls**:
+
+ + *Left click on a movable atom*:
+
+ Select the atom for throwing.
+
+ + *Right click on a location*:
+
+ Throw the selected atom towards that location.
+
++ Boom
+
+ **Description**:
+
+ Make explosions where you click.
+
+ **Controls**:
+
+ + *Right click the mode selector*:
+
+ Configure the explosion size.
+
+ + *Left click a location*:
+
+ Cause an explosion where you clicked.
\ No newline at end of file
diff --git a/code/modules/buildmode/bm_mode.dm b/code/modules/buildmode/bm_mode.dm
new file mode 100644
index 00000000000..de4c09a192d
--- /dev/null
+++ b/code/modules/buildmode/bm_mode.dm
@@ -0,0 +1,87 @@
+/datum/buildmode_mode
+ var/key = "oops"
+
+ var/datum/click_intercept/buildmode/BM
+
+ var/use_corner_selection = FALSE
+ var/processing_selection = FALSE
+ var/list/preview
+ var/turf/cornerA
+ var/turf/cornerB
+
+/datum/buildmode_mode/New(datum/click_intercept/buildmode/newBM)
+ BM = newBM
+ preview = list()
+ return ..()
+
+/datum/buildmode_mode/Destroy()
+ Reset()
+ return ..()
+
+/datum/buildmode_mode/proc/enter_mode(datum/click_intercept/buildmode/BM)
+ return
+
+/datum/buildmode_mode/proc/exit_mode(datum/click_intercept/buildmode/BM)
+ return
+
+/datum/buildmode_mode/proc/get_button_iconstate()
+ return "buildmode_[key]"
+
+/datum/buildmode_mode/proc/show_help(mob/user)
+ CRASH("No help defined, yell at a coder")
+ to_chat(user, "There is no help defined for this mode, this is a bug.")
+
+/datum/buildmode_mode/proc/change_settings(mob/user)
+ to_chat(user, "There is no configuration available for this mode")
+
+/datum/buildmode_mode/proc/Reset()
+ deselect_region()
+
+/datum/buildmode_mode/proc/select_tile(turf/T, corner_to_select)
+ var/overlaystate
+ BM.holder.images -= preview
+ switch(corner_to_select)
+ if(AREASELECT_CORNERA)
+ overlaystate = "greenOverlay"
+ if(AREASELECT_CORNERB)
+ overlaystate = "blueOverlay"
+ preview += image('icons/turf/overlays.dmi', T, overlaystate)
+ BM.holder.images += preview
+ return T
+
+/datum/buildmode_mode/proc/highlight_region(region)
+ BM.holder.images -= preview
+ for(var/t in region)
+ preview += image('icons/turf/overlays.dmi', T, "redOverlay")
+ BM.holder.images += preview
+
+/datum/buildmode_mode/proc/deselect_region()
+ BM.holder.images -= preview
+ QDEL_LIST(preview)
+ cornerA = null
+ cornerB = null
+
+/datum/buildmode_mode/proc/handle_click(user, params, object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ if(use_corner_selection)
+ if(left_click)
+ if(!cornerA)
+ cornerA = select_tile(get_turf(object), AREASELECT_CORNERA)
+ return
+ else if(!cornerB)
+ cornerB = select_tile(get_turf(object), AREASELECT_CORNERB)
+ to_chat(user, "Region selected, if you're happy with your selection left click again, otherwise right click.")
+ return
+ if(processing_selection)
+ return
+ processing_selection = TRUE
+ handle_selected_region(user, params)
+ processing_selection = FALSE
+ deselect_region()
+ else if(cornerA || cornerB)
+ to_chat(user, "Region selection canceled!")
+ deselect_region()
+
+/datum/buildmode_mode/proc/handle_selected_region(mob/user, params)
+ return
\ No newline at end of file
diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm
new file mode 100644
index 00000000000..934eba8117c
--- /dev/null
+++ b/code/modules/buildmode/buildmode.dm
@@ -0,0 +1,127 @@
+#define BM_SWITCHSTATE_NONE 0
+#define BM_SWITCHSTATE_MODE 1
+#define BM_SWITCHSTATE_DIR 2
+
+/datum/click_intercept/buildmode
+ var/build_dir = SOUTH
+ var/datum/buildmode_mode/mode
+
+ // SECTION UI
+
+ // Switching management
+ var/switch_state = BM_SWITCHSTATE_NONE
+ var/switch_width = 5
+ // modeswitch UI
+ var/obj/screen/buildmode/mode/modebutton
+ var/list/modeswitch_buttons = list()
+ // dirswitch UI
+ var/obj/screen/buildmode/bdir/dirbutton
+ var/list/dirswitch_buttons = list()
+
+/datum/click_intercept/buildmode/New()
+ mode = new /datum/buildmode_mode/basic(src)
+ . = ..()
+ mode.enter_mode(src)
+
+/datum/click_intercept/buildmode/Destroy()
+ close_switchstates()
+ QDEL_NULL(mode)
+ QDEL_LIST(modeswitch_buttons)
+ QDEL_LIST(dirswitch_buttons)
+ return ..()
+
+/datum/click_intercept/buildmode/create_buttons()
+ // keep a reference so we can update it upon mode switch
+ modebutton = new /obj/screen/buildmode/mode(src)
+ buttons += modebutton
+ buttons += new /obj/screen/buildmode/help(src)
+ // keep a reference so we can update it upon dir switch
+ dirbutton = new /obj/screen/buildmode/bdir(src)
+ buttons += dirbutton
+ buttons += new /obj/screen/buildmode/quit(src)
+ // build the list of modeswitching buttons
+ build_options_grid(subtypesof(/datum/buildmode_mode), modeswitch_buttons, /obj/screen/buildmode/modeswitch)
+ build_options_grid(list(SOUTH,EAST,WEST,NORTH,NORTHWEST), dirswitch_buttons, /obj/screen/buildmode/dirswitch)
+
+/datum/click_intercept/buildmode/proc/build_options_grid(list/elements, list/buttonslist, buttontype)
+ var/pos_idx = 0
+ for(var/thing in elements)
+ var/x = pos_idx % switch_width
+ var/y = FLOOR(pos_idx / switch_width, 1)
+ var/obj/screen/buildmode/B = new buttontype(src, thing)
+ // extra .5 for a nice offset look
+ B.screen_loc = "NORTH-[(1 + 0.5 + y*1.5)],WEST+[0.5 + x*1.5]"
+ buttonslist += B
+ pos_idx++
+
+/datum/click_intercept/buildmode/proc/close_switchstates()
+ switch(switch_state)
+ if(BM_SWITCHSTATE_MODE)
+ close_modeswitch()
+ if(BM_SWITCHSTATE_DIR)
+ close_dirswitch()
+
+/datum/click_intercept/buildmode/proc/toggle_modeswitch()
+ if(switch_state == BM_SWITCHSTATE_MODE)
+ close_modeswitch()
+ else
+ close_switchstates()
+ open_modeswitch()
+
+/datum/click_intercept/buildmode/proc/open_modeswitch()
+ switch_state = BM_SWITCHSTATE_MODE
+ holder.screen += modeswitch_buttons
+
+/datum/click_intercept/buildmode/proc/close_modeswitch()
+ switch_state = BM_SWITCHSTATE_NONE
+ holder.screen -= modeswitch_buttons
+
+/datum/click_intercept/buildmode/proc/toggle_dirswitch()
+ if(switch_state == BM_SWITCHSTATE_DIR)
+ close_dirswitch()
+ else
+ close_switchstates()
+ open_dirswitch()
+
+/datum/click_intercept/buildmode/proc/open_dirswitch()
+ switch_state = BM_SWITCHSTATE_DIR
+ holder.screen += dirswitch_buttons
+
+/datum/click_intercept/buildmode/proc/close_dirswitch()
+ switch_state = BM_SWITCHSTATE_NONE
+ holder.screen -= dirswitch_buttons
+
+/datum/click_intercept/buildmode/proc/change_mode(newmode)
+ mode.exit_mode(src)
+ QDEL_NULL(mode)
+ close_switchstates()
+ mode = new newmode(src)
+ mode.enter_mode(src)
+ modebutton.update_icon()
+
+/datum/click_intercept/buildmode/proc/change_dir(newdir)
+ build_dir = newdir
+ close_dirswitch()
+ dirbutton.update_icon()
+ return TRUE
+
+/datum/click_intercept/buildmode/InterceptClickOn(user, params, atom/object)
+ mode.handle_click(user, params, object)
+
+/proc/togglebuildmode(mob/M in player_list)
+ set name = "Toggle Build Mode"
+ set category = "Event"
+
+ if(M.client)
+ if(istype(M.client.click_intercept, /datum/click_intercept/buildmode))
+ var/datum/click_intercept/buildmode/B = M.client.click_intercept
+ B.quit()
+ log_admin("[key_name(usr)] has left build mode.")
+ else
+ new/datum/click_intercept/buildmode(M.client)
+ message_admins("[key_name_admin(usr)] has entered build mode.")
+ log_admin("[key_name(usr)] has entered build mode.")
+
+#undef BM_SWITCHSTATE_NONE
+#undef BM_SWITCHSTATE_MODE
+#undef BM_SWITCHSTATE_DIR
\ No newline at end of file
diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm
new file mode 100644
index 00000000000..c07be97a9eb
--- /dev/null
+++ b/code/modules/buildmode/buttons.dm
@@ -0,0 +1,88 @@
+/obj/screen/buildmode
+ icon = 'icons/misc/buildmode.dmi'
+ var/datum/click_intercept/buildmode/bd
+ layer = HUD_LAYER_BUILDMODE
+
+/obj/screen/buildmode/New(bld)
+ bd = bld
+ return ..()
+
+/obj/screen/buildmode/Destroy()
+ bd = null
+ return ..()
+
+/obj/screen/buildmode/mode
+ name = "Toggle Mode"
+ icon_state = "buildmode_basic"
+ screen_loc = "NORTH,WEST"
+
+/obj/screen/buildmode/mode/Click(location, control, params)
+ var/list/pa = params2list(params)
+
+ if(pa.Find("left"))
+ bd.toggle_modeswitch()
+ else if(pa.Find("right"))
+ bd.mode.change_settings(usr)
+ update_icon()
+ return TRUE
+
+/obj/screen/buildmode/mode/update_icon()
+ icon_state = bd.mode.get_button_iconstate()
+
+/obj/screen/buildmode/help
+ icon_state = "buildhelp"
+ screen_loc = "NORTH,WEST+1"
+ name = "Buildmode Help"
+
+/obj/screen/buildmode/help/Click()
+ bd.mode.show_help(usr)
+ return TRUE
+
+/obj/screen/buildmode/bdir
+ icon_state = "build"
+ screen_loc = "NORTH,WEST+2"
+ name = "Change Dir"
+
+/obj/screen/buildmode/bdir/update_icon()
+ dir = bd.build_dir
+
+/obj/screen/buildmode/bdir/Click()
+ bd.toggle_dirswitch()
+ update_icon()
+ return TRUE
+
+// used to switch between modes
+/obj/screen/buildmode/modeswitch
+ var/datum/buildmode_mode/modetype
+
+/obj/screen/buildmode/modeswitch/New(bld, mt)
+ modetype = mt
+ icon_state = "buildmode_[initial(modetype.key)]"
+ name = initial(modetype.key)
+ return ..(bld)
+
+/obj/screen/buildmode/modeswitch/Click()
+ bd.change_mode(modetype)
+ return TRUE
+
+// used to switch between dirs
+/obj/screen/buildmode/dirswitch
+ icon_state = "build"
+
+/obj/screen/buildmode/dirswitch/New(bld, newdir)
+ dir = newdir
+ name = dir2text(dir)
+ return ..(bld)
+
+/obj/screen/buildmode/dirswitch/Click()
+ bd.change_dir(dir)
+ return TRUE
+
+/obj/screen/buildmode/quit
+ icon_state = "buildquit"
+ screen_loc = "NORTH,WEST+3"
+ name = "Quit Buildmode"
+
+/obj/screen/buildmode/quit/Click()
+ bd.quit()
+ return TRUE
\ No newline at end of file
diff --git a/code/modules/buildmode/effects/line.dm b/code/modules/buildmode/effects/line.dm
new file mode 100644
index 00000000000..4b59e8a673c
--- /dev/null
+++ b/code/modules/buildmode/effects/line.dm
@@ -0,0 +1,28 @@
+/obj/effect/buildmode_line
+ var/image/I
+ var/client/cl
+
+/obj/effect/buildmode_line/New(client/C, atom/atom_a, atom/atom_b, linename)
+ name = linename
+ loc = get_turf(atom_a)
+ I = image('icons/misc/mark.dmi', src, "line", 19.0)
+ var/x_offset = ((atom_b.x * 32) + atom_b.pixel_x) - ((atom_a.x * 32) + atom_a.pixel_x)
+ var/y_offset = ((atom_b.y * 32) + atom_b.pixel_y) - ((atom_a.y * 32) + atom_a.pixel_y)
+
+ var/matrix/mat = matrix()
+ mat.Translate(0, 16)
+ mat.Scale(1, sqrt((x_offset * x_offset) + (y_offset * y_offset)) / 32)
+ mat.Turn(90 - Atan2(x_offset, y_offset)) // So... You pass coords in order x,y to this version of atan2. It should be called acsc2.
+ mat.Translate(atom_a.pixel_x, atom_a.pixel_y)
+
+ transform = mat
+ cl = C
+ cl.images += I
+
+/obj/effect/buildmode_line/Destroy()
+ if(I)
+ if(istype(cl))
+ cl.images -= I
+ cl = null
+ QDEL_NULL(I)
+ return ..()
\ No newline at end of file
diff --git a/code/modules/buildmode/submodes/advanced.dm b/code/modules/buildmode/submodes/advanced.dm
new file mode 100644
index 00000000000..fadd46753bb
--- /dev/null
+++ b/code/modules/buildmode/submodes/advanced.dm
@@ -0,0 +1,59 @@
+/datum/buildmode_mode/advanced
+ key = "advanced"
+ var/objholder = null
+
+// FIXME: add logic which adds a button displaying the icon
+// of the currently selected path
+
+/datum/buildmode_mode/advanced/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Right Mouse Button on buildmode button = Set object type")
+ to_chat(user, "Left Mouse Button + alt on turf/obj = Copy object type")
+ to_chat(user, "Left Mouse Button on turf/obj = Place objects")
+ to_chat(user, "Right Mouse Button = Delete objects")
+ to_chat(user, "")
+ to_chat(user, "Use the button in the upper left corner to")
+ to_chat(user, "change the direction of built objects.")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/advanced/change_settings(mob/user)
+ var/target_path = input(user,"Enter typepath:" ,"Typepath","/obj/structure/closet")
+ objholder = text2path(target_path)
+ if(!ispath(objholder))
+ objholder = pick_closest_path(target_path)
+ if(!objholder)
+ alert("No path was selected")
+ return
+ else if(ispath(objholder, /area))
+ objholder = null
+ alert("That path is not allowed.")
+ return
+
+/datum/buildmode_mode/advanced/handle_click(user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+ var/alt_click = pa.Find("alt")
+
+ if(left_click && alt_click)
+ if (isturf(object) || isobj(object) || ismob(object))
+ objholder = object.type
+ to_chat(user, "[initial(object.name)] ([object.type]) selected.")
+ else
+ to_chat(user, "[initial(object.name)] is not a turf, object, or mob! Please select again.")
+ else if(left_click)
+ if(ispath(objholder,/turf))
+ var/turf/T = get_turf(object)
+ log_admin("Build Mode: [key_name(user)] modified [T] ([T.x],[T.y],[T.z]) to [objholder]")
+ T.ChangeTurf(objholder)
+ else if(!isnull(objholder))
+ var/obj/A = new objholder (get_turf(object))
+ A.setDir(BM.build_dir)
+ log_admin("Build Mode: [key_name(user)] modified [A]'s ([A.x],[A.y],[A.z]) dir to [BM.build_dir]")
+ else
+ to_chat(user, "Select object type first.")
+ else if(right_click)
+ if(isobj(object))
+ log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
+ qdel(object)
+
\ No newline at end of file
diff --git a/code/modules/buildmode/submodes/area_edit.dm b/code/modules/buildmode/submodes/area_edit.dm
new file mode 100644
index 00000000000..d60950d294f
--- /dev/null
+++ b/code/modules/buildmode/submodes/area_edit.dm
@@ -0,0 +1,59 @@
+/datum/buildmode_mode/area_edit
+ key = "areaedit"
+ var/area/storedarea
+ var/image/areaimage
+
+/datum/buildmode_mode/area_edit/New()
+ areaimage = image('icons/turf/areas.dmi', null, "yellow")
+ ..()
+
+/datum/buildmode_mode/area_edit/enter_mode(datum/click_intercept/buildmode/BM)
+ BM.holder.images += areaimage
+
+/datum/buildmode_mode/area_edit/exit_mode(datum/click_intercept/buildmode/BM)
+ areaimage.loc = null // de-color the area
+ BM.holder.images -= areaimage
+ return ..()
+
+/datum/buildmode_mode/area_edit/Destroy()
+ QDEL_NULL(areaimage)
+ return ..()
+
+/datum/buildmode_mode/area_edit/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on obj/turf/mob = Paint area")
+ to_chat(user, "Right Mouse Button on obj/turf/mob = Select area to paint")
+ to_chat(user, "Right Mouse Button on buildmode button = Create new area")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/area_edit/change_settings(mob/user)
+ var/target_path = input(user,"Enter typepath:", "Typepath", "/area")
+ var/areatype = text2path(target_path)
+ if(ispath(areatype,/area))
+ var/areaname = input(user,"Enter area name:", "Area name", "Area")
+ if(!areaname || !length(areaname))
+ return
+ storedarea = new areatype
+ storedarea.power_equip = 0
+ storedarea.power_light = 0
+ storedarea.power_environ = 0
+ storedarea.always_unpowered = 0
+ storedarea.name = areaname
+ areaimage.loc = storedarea // color our area
+
+/datum/buildmode_mode/area_edit/handle_click(user, params, object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+
+ if(left_click)
+ if(!storedarea)
+ to_chat(user, "Configure or select the area you want to paint first!")
+ return
+ var/turf/T = get_turf(object)
+ if(get_area(T) != storedarea)
+ storedarea.contents.Add(T)
+ else if(right_click)
+ var/turf/T = get_turf(object)
+ storedarea = get_area(T)
+ areaimage.loc = storedarea // color our area
diff --git a/code/modules/buildmode/submodes/atmos.dm b/code/modules/buildmode/submodes/atmos.dm
new file mode 100644
index 00000000000..f12fdb1eb1a
--- /dev/null
+++ b/code/modules/buildmode/submodes/atmos.dm
@@ -0,0 +1,72 @@
+/datum/buildmode_mode/atmos
+ key = "atmos"
+
+ use_corner_selection = TRUE
+ var/pressure = ONE_ATMOSPHERE
+ var/temperature = T20C
+ var/oxygen = O2STANDARD
+ var/nitrogen = N2STANDARD
+ var/plasma = 0
+ var/cdiox = 0
+ var/nitrox = 0
+
+
+/datum/buildmode_mode/atmos/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on turf = Select corner")
+ to_chat(user, "Left Mouse Button + Ctrl on turf = Set 'base atmos conditions' for unsimulated turfs in region")
+ to_chat(user, "Right Mouse Button on buildmode button = Adjust target atmos")
+ to_chat(user, "Notice: Starts out with standard breathable/liveable defaults")
+ to_chat(user, "***********************************************************")
+
+// FIXME this is a little tedious, something where you don't have to fill in each field would be cooler
+// maybe some kind of stat panel thing?
+/datum/buildmode_mode/atmos/change_settings(mob/user)
+ pressure = input(user, "Atmospheric Pressure", "Input", ONE_ATMOSPHERE) as num|null
+ temperature = input(user, "Temperature", "Input", T20C) as num|null
+ oxygen = input(user, "Oxygen ratio", "Input", O2STANDARD) as num|null
+ nitrogen = input(user, "Nitrogen ratio", "Input", N2STANDARD) as num|null
+ plasma = input(user, "Plasma ratio", "Input", 0) as num|null
+ cdiox = input(user, "CO2 ratio", "Input", 0) as num|null
+ nitrox = input(user, "N2O ratio", "Input", 0) as num|null
+
+/datum/buildmode_mode/atmos/proc/ppratio_to_moles(ppratio)
+ // ideal gas equation: Pressure * Volume = Moles * r * Temperature
+ // air datum fields are in moles, we have partial pressure ratios
+ // Moles = (Pressure * Volume) / (r * Temperature)
+ return ((ppratio * pressure) * CELL_VOLUME) / (temperature * R_IDEAL_GAS_EQUATION)
+
+/datum/buildmode_mode/atmos/handle_selected_region(mob/user, params)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/ctrl_click = pa.Find("ctrl")
+ if(left_click) //rectangular
+ for(var/turf/T in block(cornerA,cornerB))
+ if(istype(T, /turf/simulated))
+ // fill the turf with the appropriate gasses
+ // this feels slightly icky
+ var/turf/simulated/S = T
+ if(S.air)
+ S.air.temperature = temperature
+ S.air.oxygen = ppratio_to_moles(oxygen)
+ S.air.nitrogen = ppratio_to_moles(nitrogen)
+ S.air.toxins = ppratio_to_moles(plasma)
+ S.air.carbon_dioxide = ppratio_to_moles(cdiox)
+ S.air.trace_gases.Cut()
+ if(nitrox)
+ var/datum/gas/TG = new /datum/gas/sleeping_agent
+ TG.moles = ppratio_to_moles(nitrox)
+ S.air.trace_gases += TG
+ S.update_visuals()
+ S.air_update_turf()
+ else if(ctrl_click) // overwrite "default" unsimulated air
+ T.temperature = temperature
+ T.oxygen = ppratio_to_moles(oxygen)
+ T.nitrogen = ppratio_to_moles(nitrogen)
+ T.toxins = ppratio_to_moles(plasma)
+ T.carbon_dioxide = ppratio_to_moles(cdiox)
+ // no interface for trace gases on unsim turfs
+ T.air_update_turf()
+
+ // admin log
+ log_admin("Build Mode: [key_name(user)] changed the atmos of region [COORD(cornerA)] to [COORD(cornerB)]. T: [temperature], P: [pressure], Ox: [oxygen]%, N2: [nitrogen]%, Plsma: [plasma]%, CO2: [cdiox]%, N2O: [nitrox]%. [ctrl_click ? "Overwrote base unsimulated turf gases." : ""]")
\ No newline at end of file
diff --git a/code/modules/buildmode/submodes/basic.dm b/code/modules/buildmode/submodes/basic.dm
new file mode 100644
index 00000000000..1ca36920c64
--- /dev/null
+++ b/code/modules/buildmode/submodes/basic.dm
@@ -0,0 +1,50 @@
+/datum/buildmode_mode/basic
+ key = "basic"
+
+/datum/buildmode_mode/basic/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button = Construct / Upgrade")
+ to_chat(user, "Right Mouse Button = Deconstruct / Delete / Downgrade")
+ to_chat(user, "Left Mouse Button + ctrl = R-Window")
+ to_chat(user, "Left Mouse Button + alt = Airlock")
+ to_chat(user, "")
+ to_chat(user, "Use the button in the upper left corner to")
+ to_chat(user, "change the direction of built objects.")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/basic/handle_click(user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+ var/ctrl_click = pa.Find("ctrl")
+ var/alt_click = pa.Find("alt")
+
+ if(istype(object,/turf) && left_click && !alt_click && !ctrl_click)
+ var/turf/T = object
+ if(istype(object,/turf/space))
+ T.ChangeTurf(/turf/simulated/floor/plasteel)
+ else if(istype(object,/turf/simulated/floor))
+ T.ChangeTurf(/turf/simulated/wall)
+ else if(istype(object,/turf/simulated/wall))
+ T.ChangeTurf(/turf/simulated/wall/r_wall)
+ log_admin("Build Mode: [key_name(user)] built [T] at ([T.x],[T.y],[T.z])")
+ else if(right_click)
+ log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
+ if(istype(object,/turf/simulated/wall))
+ var/turf/T = object
+ T.ChangeTurf(/turf/simulated/floor/plasteel)
+ else if(istype(object,/turf/simulated/floor))
+ var/turf/T = object
+ T.ChangeTurf(/turf/space)
+ else if(istype(object,/turf/simulated/wall/r_wall))
+ var/turf/T = object
+ T.ChangeTurf(/turf/simulated/wall)
+ else if(istype(object,/obj))
+ qdel(object)
+ else if(istype(object,/turf) && alt_click && left_click)
+ log_admin("Build Mode: [key_name(user)] built an airlock at ([object.x],[object.y],[object.z])")
+ new/obj/machinery/door/airlock(get_turf(object))
+ else if(istype(object,/turf) && ctrl_click && left_click)
+ var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object))
+ WIN.setDir(BM.build_dir)
+ log_admin("Build Mode: [key_name(user)] built a window at ([object.x],[object.y],[object.z])")
diff --git a/code/modules/buildmode/submodes/boom.dm b/code/modules/buildmode/submodes/boom.dm
new file mode 100644
index 00000000000..271e5c01bc5
--- /dev/null
+++ b/code/modules/buildmode/submodes/boom.dm
@@ -0,0 +1,32 @@
+/datum/buildmode_mode/boom
+ key = "boom"
+
+ var/devastation = -1
+ var/heavy = -1
+ var/light = -1
+ var/flash = -1
+ var/flames = -1
+
+/datum/buildmode_mode/boom/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Mouse Button on obj = Kaboom")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/boom/change_settings(mob/user)
+ devastation = input("Range of total devastation. -1 to none", text("Input")) as num|null
+ if(devastation == null) devastation = -1
+ heavy = input("Range of heavy impact. -1 to none", text("Input")) as num|null
+ if(heavy == null) heavy = -1
+ light = input("Range of light impact. -1 to none", text("Input")) as num|null
+ if(light == null) light = -1
+ flash = input("Range of flash. -1 to none", text("Input")) as num|null
+ if(flash == null) flash = -1
+ flames = input("Range of flames. -1 to none", text("Input")) as num|null
+ if(flames == null) flames = -1
+
+/datum/buildmode_mode/boom/handle_click(user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+
+ if(left_click)
+ explosion(object, devastation, heavy, light, flash, null, TRUE, flames)
diff --git a/code/modules/buildmode/submodes/copy.dm b/code/modules/buildmode/submodes/copy.dm
new file mode 100644
index 00000000000..48cbb2c3cf0
--- /dev/null
+++ b/code/modules/buildmode/submodes/copy.dm
@@ -0,0 +1,27 @@
+/datum/buildmode_mode/copy
+ key = "copy"
+ var/atom/movable/stored = null
+
+/datum/buildmode_mode/copy/exit_mode()
+ stored = null
+ return ..()
+
+/datum/buildmode_mode/copy/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target")
+ to_chat(user, "Right Mouse Button on obj/mob = Select target to copy")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/copy/handle_click(user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+
+ if(left_click)
+ var/turf/T = get_turf(object)
+ if(stored)
+ DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T)
+ else if(right_click)
+ if(ismovableatom(object)) // No copying turfs for now.
+ to_chat(user, "[object] set as template.")
+ stored = object
diff --git a/code/modules/buildmode/submodes/fill.dm b/code/modules/buildmode/submodes/fill.dm
new file mode 100644
index 00000000000..b143b2c9b90
--- /dev/null
+++ b/code/modules/buildmode/submodes/fill.dm
@@ -0,0 +1,49 @@
+/datum/buildmode_mode/fill
+ key = "fill"
+
+ use_corner_selection = TRUE
+ var/objholder = null
+
+/datum/buildmode_mode/fill/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on turf/obj/mob = Select corner")
+ to_chat(user, "Left Mouse Button + Alt on turf/obj/mob = Delete region")
+ to_chat(user, "Right Mouse Button on buildmode button = Select object type")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/fill/change_settings(mob/user)
+ var/target_path = input(user,"Enter typepath:" ,"Typepath","/obj/structure/closet")
+ objholder = text2path(target_path)
+ if(!ispath(objholder))
+ objholder = pick_closest_path(target_path)
+ if(!objholder)
+ alert("No path has been selected.")
+ return
+ else if(ispath(objholder, /area))
+ objholder = null
+ alert("Area paths are not supported for this mode, use the area edit mode instead.")
+ return
+ deselect_region()
+
+/datum/buildmode_mode/fill/handle_click(mob/user, params, obj/object)
+ if(isnull(objholder))
+ to_chat(user, "Select an object type first.")
+ deselect_region()
+ return
+ ..()
+
+/datum/buildmode_mode/fill/handle_selected_region(mob/user, params)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/alt_click = pa.Find("alt")
+
+ if(left_click) //rectangular
+ if(alt_click)
+ empty_region(block(cornerA,cornerB))
+ else
+ for(var/turf/T in block(cornerA,cornerB))
+ if(ispath(objholder,/turf))
+ T.ChangeTurf(objholder)
+ else
+ var/obj/A = new objholder(T)
+ A.setDir(BM.build_dir)
\ No newline at end of file
diff --git a/code/modules/buildmode/submodes/link.dm b/code/modules/buildmode/submodes/link.dm
new file mode 100644
index 00000000000..153b5a7698e
--- /dev/null
+++ b/code/modules/buildmode/submodes/link.dm
@@ -0,0 +1,94 @@
+/datum/buildmode_mode/link
+ key = "link"
+
+ var/list/link_lines = list()
+ var/obj/link_obj
+
+
+/datum/buildmode_mode/link/proc/clear_lines()
+ QDEL_LIST(link_lines)
+
+/datum/buildmode_mode/link/proc/form_connection(atom/source, atom/dest, valid)
+ var/obj/effect/buildmode_line/L = new(BM.holder, source, dest, "[source.name] to [dest.name]")
+ L.color = valid ? "#339933" : "#993333"
+ link_lines += L
+ var/obj/effect/buildmode_line/L2 = new(BM.holder, dest, source, "[dest.name] to [source.name]") // Yes, reversed one so that you can see it source both sides.
+ L2.color = L.color
+ link_lines += L2
+
+/datum/buildmode_mode/link/Destroy()
+ clear_lines()
+ link_obj = null
+ return ..()
+
+/datum/buildmode_mode/link/Reset()
+ clear_lines()
+ link_obj = null
+ ..()
+
+/datum/buildmode_mode/link/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on obj = Select button to link")
+ to_chat(user, "Right Mouse Button on obj = Link/unlink to selected button")
+ to_chat(user, "***********************************************************")
+
+// FIXME: this probably would work better with something component-based
+/datum/buildmode_mode/link/handle_click(mob/user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+ if(left_click && istype(object, /obj/machinery))
+ link_obj = object
+ if(right_click && istype(object, /obj/machinery))
+ if(istype(link_obj, /obj/machinery/door_control) && istype(object, /obj/machinery/door/airlock))
+ var/obj/machinery/door_control/M = link_obj
+ var/obj/machinery/door/airlock/P = object
+ if(!M.id || M.id == "")
+ M.id = input(user, "Please select an ID for the button", "Buildmode", "")
+ if(!M.id || M.id == "")
+ goto(line_jump)
+ if(P.id_tag == M.id && (P in range(M.range, M)) && P.id_tag && P.id_tag != "")
+ P.id_tag = null
+ to_chat(user, "[P] unlinked.")
+ goto(line_jump)
+ if(!M.normaldoorcontrol)
+ if(link_lines.len && alert(user, "Warning: This will disable links to connected pod doors. Continue?", "Buildmode", "Yes", "No") == "No")
+ goto(line_jump)
+ M.normaldoorcontrol = 1
+ if(P.id_tag && alert(user, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
+ goto(line_jump)
+ P.id_tag = M.id
+ if(istype(link_obj, /obj/machinery/door_control) && istype(object, /obj/machinery/door/poddoor))
+ var/obj/machinery/door_control/M = link_obj
+ var/obj/machinery/door/poddoor/P = object
+ if(!M.id || M.id == "")
+ M.id = input(user, "Please select an ID for the button", "Buildmode", "")
+ if(!M.id || M.id == "")
+ goto(line_jump)
+ if(P.id_tag == M.id && P.id_tag && P.id_tag != "")
+ P.id_tag = null
+ to_chat(user, "[P] unlinked.")
+ goto(line_jump)
+ if(M.normaldoorcontrol)
+ if(link_lines.len && alert(user, "Warning: This will disable links to connected airlocks. Continue?", "Buildmode", "Yes", "No") == "No")
+ goto(line_jump)
+ M.normaldoorcontrol = 0
+ if(!M.id || M.id == "")
+ M.id = input(user, "Please select an ID for the button", "Buildmode", "")
+ if(!M.id || M.id == "")
+ goto(line_jump)
+ if(P.id_tag && P.id_tag != 1 && alert(user, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
+ goto(line_jump)
+ P.id_tag = M.id
+
+ line_jump // For the goto
+ clear_lines()
+
+ if(istype(link_obj, /obj/machinery/door_control))
+ var/obj/machinery/door_control/M = link_obj
+ for(var/obj/machinery/door/airlock/P in range(M.range,M))
+ if(P.id_tag == M.id)
+ form_connection(M, P, M.normaldoorcontrol)
+ for(var/obj/machinery/door/poddoor/P in airlocks)
+ if(P.id_tag == M.id)
+ form_connection(M, P, !M.normaldoorcontrol)
diff --git a/code/modules/buildmode/submodes/mapgen.dm b/code/modules/buildmode/submodes/mapgen.dm
new file mode 100644
index 00000000000..22be429c2ce
--- /dev/null
+++ b/code/modules/buildmode/submodes/mapgen.dm
@@ -0,0 +1,40 @@
+/datum/buildmode_mode/mapgen
+ key = "mapgen"
+
+ use_corner_selection = TRUE
+ var/generator_path
+
+/datum/buildmode_mode/mapgen/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on turf/obj/mob = Select corner")
+ to_chat(user, "Right Mouse Button on buildmode button = Select generator")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/mapgen/change_settings(mob/user)
+ var/list/gen_paths = subtypesof(/datum/mapGenerator)
+
+ var/type = input(user,"Select Generator Type","Type") as null|anything in gen_paths
+ if(!type) return
+
+ generator_path = type
+ deselect_region()
+
+/datum/buildmode_mode/mapgen/handle_click(mob/user, params, obj/object)
+ if(isnull(generator_path))
+ to_chat(user, "Select generator type first.")
+ deselect_region()
+ return
+ ..()
+
+/datum/buildmode_mode/mapgen/handle_selected_region(mob/user, params)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+
+ if(left_click) //rectangular
+ if(cornerA && cornerB)
+ var/datum/mapGenerator/G = new generator_path
+ G.defineRegion(cornerA, cornerB, 1)
+ highlight_region(G.map)
+ var/confirm = alert("Are you sure you want run the map generator?", "Run generator", "Yes", "No")
+ if(confirm == "Yes")
+ G.generate()
\ No newline at end of file
diff --git a/code/modules/buildmode/submodes/save.dm b/code/modules/buildmode/submodes/save.dm
new file mode 100644
index 00000000000..43a1f9af174
--- /dev/null
+++ b/code/modules/buildmode/submodes/save.dm
@@ -0,0 +1,28 @@
+/datum/buildmode_mode/save
+ key = "save"
+
+ use_corner_selection = TRUE
+ var/use_json = TRUE
+
+/datum/buildmode_mode/save/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on turf/obj/mob = Select corner")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/save/change_settings(mob/user)
+ use_json = (alert("Would you like to use json (Default is \"Yes\")?",,"Yes","No") == "Yes")
+
+/datum/buildmode_mode/save/handle_selected_region(mob/user, params)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ if(left_click)
+ var/map_name = input(user, "Please select a name for your map", "Buildmode", "")
+ if(map_name == "")
+ return
+ var/map_flags = 0
+ if(use_json)
+ map_flags = 32 // Magic number defined in `writer.dm` that I can't use directly
+ // because #defines are for some reason our coding standard
+ var/our_map = maploader.save_map(cornerA, cornerB, map_name, map_flags)
+ user << ftp(our_map) // send the map they've made! Or are stealing, whatever
+ to_chat(user, "Map saving complete! [our_map]")
diff --git a/code/modules/buildmode/submodes/sdql.dm b/code/modules/buildmode/submodes/sdql.dm
new file mode 100644
index 00000000000..104b7bd7af6
--- /dev/null
+++ b/code/modules/buildmode/submodes/sdql.dm
@@ -0,0 +1,12 @@
+// SKELETON CODE, not yet functional
+
+/datum/buildmode_mode/sdql
+ key = "sdql"
+
+ var/sdql_command = "SELECT /turf IN"
+
+/datum/buildmode_mode/sdql/show_help(mob/user)
+
+/datum/buildmode_mode/sdql/change_settings(mob/user)
+
+/datum/buildmode_mode/sdql/handle_click(mob/user, params, obj/object)
diff --git a/code/modules/buildmode/submodes/throwing.dm b/code/modules/buildmode/submodes/throwing.dm
new file mode 100644
index 00000000000..24470a680b5
--- /dev/null
+++ b/code/modules/buildmode/submodes/throwing.dm
@@ -0,0 +1,25 @@
+/datum/buildmode_mode/throwing
+ key = "throw"
+
+ var/atom/movable/throw_atom = null
+
+/datum/buildmode_mode/throwing/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Left Mouse Button on turf/obj/mob = Select")
+ to_chat(user, "Right Mouse Button on turf/obj/mob = Throw")
+ to_chat(user, "***********************************************************")
+
+/datum/buildmode_mode/throwing/handle_click(user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+
+ if(left_click)
+ if(isturf(object))
+ return
+ throw_atom = object
+ to_chat(user, "Selected object '[throw_atom]'")
+ if(right_click)
+ if(throw_atom)
+ throw_atom.throw_at(object, 10, 1, user)
+ log_admin("Build Mode: [key_name(user)] threw [throw_atom] at [object] ([object.x],[object.y],[object.z])")
diff --git a/code/modules/buildmode/submodes/variable_edit.dm b/code/modules/buildmode/submodes/variable_edit.dm
new file mode 100644
index 00000000000..ebf0035bccf
--- /dev/null
+++ b/code/modules/buildmode/submodes/variable_edit.dm
@@ -0,0 +1,55 @@
+/datum/buildmode_mode/varedit
+ key = "edit"
+ // Varedit mode
+ var/varholder = "name"
+ var/valueholder = "value"
+
+/datum/buildmode_mode/varedit/show_help(mob/user)
+ to_chat(user, "***********************************************************")
+ to_chat(user, "Right Mouse Button on buildmode button = Select var(type) & value")
+ to_chat(user, "Left Mouse Button on turf/obj/mob = Set var(type) & value")
+ to_chat(user, "Right Mouse Button on turf/obj/mob = Reset var's value")
+ to_chat(user, "***********************************************************")
+
+// FIXME: This needs to use a standard var-editing interface instead of
+// doing its own thing here
+/datum/buildmode_mode/varedit/change_settings(mob/user)
+ var/temp_varname = input(user,"Enter variable name:", "Name", "name")
+ if(!vv_varname_lockcheck(temp_varname))
+ return
+
+ var/temp_value = user.client.vv_get_value()
+ if(isnull(temp_value["class"]))
+ Reset()
+ to_chat(user, "Variable unset.")
+ return
+ // we assign this once all user input is done, since things could get wonky otherwise
+ varholder = temp_varname
+ valueholder = temp_value["value"]
+
+/datum/buildmode_mode/varedit/handle_click(user, params, obj/object)
+ var/list/pa = params2list(params)
+ var/left_click = pa.Find("left")
+ var/right_click = pa.Find("right")
+
+ if(isnull(varholder))
+ to_chat(user, "Choose a variable to modify first.")
+ return
+ if(left_click)
+ if(object.vars.Find(varholder))
+ if(!object.vv_edit_var(varholder, valueholder))
+ to_chat(user, "Your edit was rejected by [object].")
+ return
+ log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
+ else
+ to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'")
+ if(right_click)
+ if(object.vars.Find(varholder))
+ var/reset_value = initial(object.vars[varholder])
+ if(!object.vv_edit_var(varholder, reset_value))
+ to_chat(user, "Your edit was rejected by [object].")
+ return
+ log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [reset_value]")
+ else
+ to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'")
+
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 50872791f59..bc6f7259ebc 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -385,18 +385,12 @@ BLIND // can't see anything
/obj/item/clothing/shoes/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/match) && src.loc == user)
var/obj/item/match/M = I
- if(!M.lit) // Match isn't lit, but isn't burnt.
- M.lit = 1
- M.icon_state = "match_lit"
- processing_objects.Add(M)
- M.update_icon()
+ if(M.matchignite()) // Match isn't lit, but isn't burnt.
user.visible_message("[user] strikes a [M] on the bottom of [src], lighting it.","You strike the [M] on the bottom of [src] to light it.")
playsound(user.loc, 'sound/goonstation/misc/matchstick_light.ogg', 50, 1)
- else if(M.lit == 1) // Match is lit, not extinguished.
- M.dropped()
+ else
user.visible_message("[user] crushes the [M] into the bottom of [src], extinguishing it.","You crush the [M] into the bottom of [src], extinguishing it.")
- else // Match has been previously lit and extinguished.
- to_chat(user, "The [M] has already been extinguished.")
+ M.dropped()
return
if(istype(I, /obj/item/wirecutters))
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index c3595288213..cbe1b1c1e62 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -238,6 +238,12 @@ obj/item/clothing/head/blob
desc = "An in-atmosphere helmet worn by security members of the Nanotrasen Emergency Response Team. Has red highlights."
icon_state = "erthelmet_sec"
+/obj/item/clothing/head/helmet/ert/security/paranormal
+ name = "paranormal emergency response team helmet"
+ desc = "An in-atmosphere helmet worn by paranormal members of the Nanotrasen Emergency Response Team. Has crusader sigils."
+ icon_state = "knight_templar"
+ item_state = "knight_templar"
+
//Engineer
/obj/item/clothing/head/helmet/ert/engineer
name = "emergency response team engineer helmet"
diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm
index afefbbc93cc..b47856fb38c 100644
--- a/code/modules/clothing/masks/breath.dm
+++ b/code/modules/clothing/masks/breath.dm
@@ -24,6 +24,12 @@
/obj/item/clothing/mask/breath/attack_self(var/mob/user)
adjustmask(user)
+/obj/item/clothing/mask/breath/AltClick(mob/user)
+ ..()
+ if( (!in_range(src, user)) || user.stat || user.restrained() )
+ return
+ adjustmask(user)
+
/obj/item/clothing/mask/breath/medical
desc = "A close-fitting sterile mask that can be connected to an air supply."
name = "medical mask"
@@ -41,3 +47,9 @@
permeability_coefficient = 0.01
species_restricted = list("Vox")
actions_types = list()
+
+/obj/item/clothing/mask/breath/vox/attack_self(var/mob/user)
+ return
+
+/obj/item/clothing/mask/breath/vox/AltClick(mob/user)
+ return
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 6348f32aa11..3be698eee1e 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -183,7 +183,7 @@
anchored = 1
invisibility = 101
opacity = 0
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/mob/holder = null
/obj/effect/chronos_cam/relaymove(var/mob/user, direction)
diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm
index 2597b3cdde7..2fbf38a7e07 100644
--- a/code/modules/clothing/spacesuits/ert.dm
+++ b/code/modules/clothing/spacesuits/ert.dm
@@ -40,7 +40,7 @@
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/crowbar, \
/obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/multitool, \
/obj/item/radio, /obj/item/analyzer, /obj/item/gun/energy/laser, /obj/item/gun/energy/pulse, \
- /obj/item/gun/energy/gun/advtaser, /obj/item/melee/baton, /obj/item/gun/energy/gun, /obj/item/gun/projectile/automatic/lasercarbine, /obj/item/gun/energy/gun/blueshield)
+ /obj/item/gun/energy/gun/advtaser, /obj/item/melee/baton, /obj/item/gun/energy/gun, /obj/item/gun/projectile/automatic/lasercarbine, /obj/item/gun/energy/gun/blueshield, /obj/item/gun/energy/immolator/multi)
strip_delay = 130
species_fit = list("Drask", "Vox")
sprite_sheets = list(
@@ -56,12 +56,25 @@
item_state = "helm-command"
item_color = "ert_commander"
+/obj/item/clothing/head/helmet/space/hardsuit/ert/commander/gamma
+ name = "elite emergency response team commander helmet"
+ max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
+ icon_state = "hardsuit0-gammacommander"
+ item_color = "gammacommander"
+ species_fit = null
+
/obj/item/clothing/suit/space/hardsuit/ert/commander
name = "emergency response team commander suit"
desc = "A suit worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_commander"
item_state = "suit-command"
+/obj/item/clothing/suit/space/hardsuit/ert/commander/gamma
+ name = "elite emergency response team commander suit"
+ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ icon_state = "ert_gcommander"
+ species_fit = null
+
//Security
/obj/item/clothing/head/helmet/space/hardsuit/ert/security
name = "emergency response team security helmet"
@@ -70,12 +83,25 @@
item_state = "syndicate-helm-black-red"
item_color = "ert_security"
+/obj/item/clothing/head/helmet/space/hardsuit/ert/security/gamma
+ name = "elite emergency response team security helmet"
+ max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
+ icon_state = "hardsuit0-gammasecurity"
+ item_color = "gammasecurity"
+ species_fit = null
+
/obj/item/clothing/suit/space/hardsuit/ert/security
name = "emergency response team security suit"
desc = "A suit worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_security"
item_state = "syndicate-black-red"
+/obj/item/clothing/suit/space/hardsuit/ert/security/gamma
+ name = "elite emergency response team security suit"
+ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ icon_state = "ert_gsecurity"
+ species_fit = null
+
//Engineer
/obj/item/clothing/head/helmet/space/hardsuit/ert/engineer
name = "emergency response team engineer helmet"
@@ -84,12 +110,26 @@
item_state = "helm-orange"
item_color = "ert_engineer"
+//Engineer
+/obj/item/clothing/head/helmet/space/hardsuit/ert/engineer/gamma
+ name = "elite emergency response team engineer helmet"
+ max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
+ icon_state = "hardsuit0-gammaengineer"
+ item_color = "gammaengineer"
+ species_fit = null
+
/obj/item/clothing/suit/space/hardsuit/ert/engineer
name = "emergency response team engineer suit"
desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_engineer"
item_state = "suit-orange"
+/obj/item/clothing/suit/space/hardsuit/ert/engineer/gamma
+ name = "elite emergency response team engineer suit"
+ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ icon_state = "ert_gengineer"
+ species_fit = null
+
//Medical
/obj/item/clothing/head/helmet/space/hardsuit/ert/medical
name = "emergency response team medical helmet"
@@ -97,11 +137,24 @@
icon_state = "hardsuit0-ert_medical"
item_color = "ert_medical"
+/obj/item/clothing/head/helmet/space/hardsuit/ert/medical/gamma
+ name = "elite emergency response team medical helmet"
+ max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
+ icon_state = "hardsuit0-gammamedical"
+ item_color = "gammamedical"
+ species_fit = null
+
/obj/item/clothing/suit/space/hardsuit/ert/medical
name = "emergency response team medical suit"
desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
icon_state = "ert_medical"
+/obj/item/clothing/suit/space/hardsuit/ert/medical/gamma
+ name = "elite emergency response team medical suit"
+ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ icon_state = "ert_gmedical"
+ species_fit = null
+
//Janitor
/obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
name = "emergency response team janitor helmet"
@@ -109,11 +162,24 @@
icon_state = "hardsuit0-ert_janitor"
item_color = "ert_janitor"
+/obj/item/clothing/head/helmet/space/hardsuit/ert/janitor/gamma
+ name = "elite emergency response team janitor helmet"
+ max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
+ icon_state = "hardsuit0-gammajanitor"
+ item_color = "gammajanitor"
+ species_fit = null
+
/obj/item/clothing/suit/space/hardsuit/ert/janitor
name = "emergency response team janitor suit"
desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_janitor"
+/obj/item/clothing/suit/space/hardsuit/ert/janitor/gamma
+ name = "elite emergency response team janitor suit"
+ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ icon_state = "ert_gjanitor"
+ species_fit = null
+
//Paranormal
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
name = "paranormal response unit helmet"
diff --git a/code/modules/clothing/spacesuits/rig/suits/ert.dm b/code/modules/clothing/spacesuits/rig/suits/ert_suits.dm
similarity index 100%
rename from code/modules/clothing/spacesuits/rig/suits/ert.dm
rename to code/modules/clothing/spacesuits/rig/suits/ert_suits.dm
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index bda11216a06..bc8ded8a233 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -295,7 +295,7 @@
return 0
if(prob(hit_reaction_chance))
var/mob/living/carbon/human/H = owner
- owner.visible_message("The reactive teleport system flings [H] clear of [attack_text], shutting itself off in the process!")
+ owner.visible_message("The reactive teleport system flings [H] clear of [attack_text]!")
var/list/turfs = new/list()
for(var/turf/T in orange(tele_range, H))
if(istype(T, /turf/space))
@@ -440,6 +440,13 @@
name = "emergency response team security armor"
desc = "A set of armor worn by security members of the Nanotrasen Emergency Response Team. Has red highlights."
icon_state = "ertarmor_sec"
+
+
+/obj/item/clothing/suit/armor/vest/ert/security/paranormal
+ name = "emergency response team paranormal armor"
+ desc = "A set of armor worn by paranormal members of the Nanotrasen Emergency Response Team. Has crusader sigils."
+ icon_state = "knight_templar"
+ item_state = "knight_templar"
//Engineer
/obj/item/clothing/suit/armor/vest/ert/engineer
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index c4ce1055324..caa13863937 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -135,6 +135,27 @@
/obj/item/claymore/fluff/hit_reaction()
return 0
+/obj/item/fluff/rsik_katana //Xydonus: Rsik Ugsharki
+ name = "ceremonial katana"
+ desc = "A shimmering ceremonial golden katana, for the most discerning class of ninja. Looks expensive, and fragile."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "rsik_katana"
+ item_state = "rsik_katana"
+ lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
+ force = 5
+ sharp = 0
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+ throwforce = 5
+ w_class = WEIGHT_CLASS_NORMAL
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced")
+ hitsound = 'sound/weapons/bladeslice.ogg'
+
+/obj/item/fluff/rsik_katana/suicide_act(mob/user)
+ user.visible_message("[user] tries to stab [src] into [user.p_their()] stomach! Except [src] shatters! [user.p_they(TRUE)] look[user.p_s()] as if [user.p_they()] might die from the shame.")
+ return(BRUTELOSS)
+
/obj/item/crowbar/fluff/zelda_creedy_1 // Zomgponies: Griffin Rowley
name = "Zelda's Crowbar"
desc = "A pink crow bar that has an engraving that reads, 'To Zelda. Love always, Dawn'"
@@ -1484,3 +1505,4 @@
item_state = "Xann_necklace"
item_color = "Xann_necklace"
slot_flags = SLOT_TIE
+
diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm
index 1ecc62e5b5f..29baf834bb5 100644
--- a/code/modules/events/anomaly_bluespace.dm
+++ b/code/modules/events/anomaly_bluespace.dm
@@ -59,7 +59,7 @@
blueeffect.icon = 'icons/effects/effects.dmi'
blueeffect.icon_state = "shieldsparkles"
blueeffect.layer = 17
- blueeffect.mouse_opacity = 0
+ blueeffect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
M.client.screen += blueeffect
sleep(20)
M.client.screen -= blueeffect
diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm
index cfa0d24d98e..f926f8b6aea 100644
--- a/code/modules/events/sentience.dm
+++ b/code/modules/events/sentience.dm
@@ -13,12 +13,12 @@
if(!(L in player_list) && !L.mind && (L.sentience_type == sentience_type))
potential += L
+ if(!candidates.len || !potential.len) //if there are no players or simple animals to choose from, then end
+ return FALSE
+
var/mob/living/simple_animal/SA = pick(potential)
var/mob/SG = pick(candidates)
- if(!SA || !SG) //if you can't find either a simple animal or a player, end
- return FALSE
-
var/sentience_report = "[command_name()] Medium-Priority Update"
var/data = pick("scans from our long-range sensors", "our sophisticated probabilistic models", "our omnipotence", "the communications traffic on your station", "energy emissions we detected", "\[REDACTED\]", "Steve")
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 176b6679604..55e87f575b0 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -411,7 +411,7 @@
anchored = TRUE
density = FALSE
layer = SPACEVINE_LAYER
- mouse_opacity = 2 //Clicking anywhere on the turf is good enough
+ mouse_opacity = MOUSE_OPACITY_OPAQUE //Clicking anywhere on the turf is good enough
pass_flags = PASSTABLE | PASSGRILLE
max_integrity = 50
var/energy = 0
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 74a0baf8cd5..2f0032d619f 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -301,7 +301,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
if(bubblegum.Adjacent(target) && !charged)
charged = TRUE
target.Weaken(4)
- target.staminaloss += 40
+ target.adjustStaminaLoss(40)
step_away(target, bubblegum)
shake_camera(target, 4, 3)
target.visible_message("[target] jumps backwards, falling on the ground!","[bubblegum] slams into you!")
@@ -637,7 +637,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
if(weapon_name)
my_target.playsound_local(my_target, weap.hitsound, 1)
my_target.show_message("[src.name] has attacked [my_target] with [weapon_name]!", 1)
- my_target.staminaloss += 30
+ my_target.adjustStaminaLoss(30)
if(prob(20))
my_target.AdjustEyeBlurry(3)
if(prob(33))
@@ -646,7 +646,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
else
my_target.playsound_local(my_target, pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg'), 25, 1, -1)
my_target.show_message("[src.name] has punched [my_target]!", 1)
- my_target.staminaloss += 30
+ my_target.adjustStaminaLoss(30)
if(prob(33))
if(!locate(/obj/effect/overlay) in my_target.loc)
fake_blood(my_target)
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index 70027028344..b0ac9d20d6c 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -73,7 +73,7 @@
bitesize = 4
var/top = 1 //Do we have a top?
var/obj/item/toptype
- var/add_overlays = 1 //Do we stack?
+ var/snack_overlays = 1 //Do we stack?
// var/offsetstuff = 1 //Do we offset the overlays?
var/sandwich_limit = 40
var/fullycustom = 0
@@ -87,7 +87,7 @@
icon_state = "personal_pizza"
baseicon = "personal_pizza"
basename = "personal pizza"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/pasta
@@ -96,7 +96,7 @@
icon_state = "pasta_bot"
baseicon = "pasta_bot"
basename = "pasta"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/bread
@@ -105,7 +105,7 @@
icon_state = "breadcustom"
baseicon = "breadcustom"
basename = "bread"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/pie
@@ -114,7 +114,7 @@
icon_state = "piecustom"
baseicon = "piecustom"
basename = "pie"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/cake
@@ -123,7 +123,7 @@
icon_state = "cakecustom"
baseicon = "cakecustom"
basename = "cake"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/jelly
@@ -132,7 +132,7 @@
icon_state = "jellycustom"
baseicon = "jellycustom"
basename = "jelly"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/donkpocket
@@ -141,7 +141,7 @@
icon_state = "donkcustom"
baseicon = "donkcustom"
basename = "donk pocket"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/kebab
@@ -150,7 +150,7 @@
icon_state = "kababcustom"
baseicon = "kababcustom"
basename = "kebab"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/salad
@@ -159,7 +159,7 @@
icon_state = "saladcustom"
baseicon = "saladcustom"
basename = "salad"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/cook/waffles
@@ -168,7 +168,7 @@
icon_state = "wafflecustom"
baseicon = "wafflecustom"
basename = "waffles"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/cookie
@@ -177,7 +177,7 @@
icon_state = "cookiecustom"
baseicon = "cookiecustom"
basename = "cookie"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/cotton
@@ -186,7 +186,7 @@
icon_state = "cottoncandycustom"
baseicon = "cottoncandycustom"
basename = "flavored cotton candy"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/gummybear
@@ -195,7 +195,7 @@
icon_state = "gummybearcustom"
baseicon = "gummybearcustom"
basename = "flavored giant gummy bear"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/gummyworm
@@ -204,7 +204,7 @@
icon_state = "gummywormcustom"
baseicon = "gummywormcustom"
basename = "flavored giant gummy worm"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/jellybean
@@ -213,7 +213,7 @@
icon_state = "jellybeancustom"
baseicon = "jellybeancustom"
basename = "flavored giant jelly bean"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/jawbreaker
@@ -222,7 +222,7 @@
icon_state = "jawbreakercustom"
baseicon = "jawbreakercustom"
basename = "flavored jawbreaker"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/candycane
@@ -231,7 +231,7 @@
icon_state = "candycanecustom"
baseicon = "candycanecustom"
basename = "flavored candy cane"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/gum
@@ -240,7 +240,7 @@
icon_state = "gumcustom"
baseicon = "gumcustom"
basename = "flavored gum"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/donut
@@ -249,7 +249,7 @@
icon_state = "donutcustom"
baseicon = "donutcustom"
basename = "filled donut"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/bar
@@ -258,7 +258,7 @@
icon_state = "barcustom"
baseicon = "barcustom"
basename = "flavored chocolate bar"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/sucker
@@ -267,7 +267,7 @@
icon_state = "suckercustom"
baseicon = "suckercustom"
basename = "flavored sucker"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/cash
@@ -276,7 +276,7 @@
icon_state = "cashcustom"
baseicon = "cashcustom"
basename = "flavored cash"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/candy/coin
@@ -285,7 +285,7 @@
icon_state = "coincustom"
baseicon = "coincustom"
basename = "flavored coin"
- add_overlays = 0
+ snack_overlays = 0
top = 0
/obj/item/reagent_containers/food/snacks/customizable/fullycustom // In the event you fuckers find something I forgot to add a customizable food for.
@@ -294,7 +294,7 @@
icon_state = "fullycustom"
baseicon = "fullycustom"
basename = "on a plate"
- add_overlays = 0
+ snack_overlays = 0
top = 0
sandwich_limit = 20
fullycustom = 1
@@ -305,7 +305,7 @@
icon_state = "soup"
baseicon = "soup"
basename = "soup"
- add_overlays = 0
+ snack_overlays = 0
trash = /obj/item/trash/bowl
top = 0
@@ -355,7 +355,7 @@
I.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
else
I.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
- if(add_overlays)
+ if(snack_overlays)
I.pixel_x = pick(list(-1,0,1))
I.pixel_y = (i*2)+1
overlays += I
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 4803405520a..d9b6c6694a7 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -45,15 +45,15 @@
to_chat(user, "None of [src] left, oh no!")
M.unEquip(src) //so icons update :[
qdel(src)
- return 0
+ return FALSE
if(iscarbon(M))
var/mob/living/carbon/C = M
if(C.eat(src, user))
bitecount++
On_Consume(C, user)
- return 1
- return 0
+ return TRUE
+ return FALSE
/obj/item/reagent_containers/food/snacks/afterattack(obj/target, mob/user, proximity)
return
@@ -115,70 +115,7 @@
TrashItem = trash
TrashItem.forceMove(loc)
qdel(src)
- return 1
-
- if((slices_num <= 0 || !slices_num) || !slice_path)
- return 0
-
- var/inaccurate = 0
- if( \
- istype(W, /obj/item/kitchen/knife) || \
- istype(W, /obj/item/scalpel) \
- )
- else if( \
- istype(W, /obj/item/circular_saw) || \
- istype(W, /obj/item/melee/energy/sword/saber) && W:active || \
- istype(W, /obj/item/melee/energy/blade) || \
- istype(W, /obj/item/shovel) || \
- istype(W, /obj/item/hatchet) \
- )
- inaccurate = 1
- else if(W.w_class <= WEIGHT_CLASS_SMALL && istype(src,/obj/item/reagent_containers/food/snacks/sliceable))
- var/newweight = GetTotalContentsWeight() + W.GetTotalContentsWeight() + W.w_class
- if(newweight > MAX_WEIGHT_CLASS)
- // Nope, no bluespace slice food
- to_chat(user, "You cannot fit [W] in [src]!")
- return 1
- if(!iscarbon(user))
- return 1
- to_chat(user, "You slip [W] inside [src].")
- user.unEquip(W)
- if((user.client && user.s_active != src))
- user.client.screen -= W
- W.dropped(user)
- total_w_class += W.w_class
- add_fingerprint(user)
- contents += W
- return
- else
- return 1
- if( \
- !isturf(loc) || \
- !(locate(/obj/structure/table) in loc) && \
- !(locate(/obj/machinery/optable) in loc) && \
- !(locate(/obj/item/storage/bag/tray) in loc) \
- )
- to_chat(user, "You cannot slice [src] here! You need a table or at least a tray to do it.")
- return 1
- var/slices_lost = 0
- if(!inaccurate)
- user.visible_message( \
- "[user] slices [src]!", \
- "You slice [src]!" \
- )
- else
- user.visible_message( \
- "[user] crudely slices [src] with [W]!", \
- "You crudely slice [src] with your [W]!" \
- )
- slices_lost = rand(1,min(1,round(slices_num/2)))
- var/reagents_per_slice = reagents.total_volume/slices_num
- for(var/i=1 to (slices_num-slices_lost))
- var/obj/slice = new slice_path (loc)
- reagents.trans_to(slice,reagents_per_slice)
- qdel(src)
-
- return
+ return TRUE
/obj/item/reagent_containers/food/snacks/proc/generate_trash(atom/location)
if(trash)
@@ -228,7 +165,60 @@
N.adjustBruteLoss(-1)
N.adjustFireLoss(-1)
+/obj/item/reagent_containers/food/snacks/sliceable/examine(mob/user)
+ . = ..()
+ to_chat(user, "Alt-click to put something small inside.")
+/obj/item/reagent_containers/food/snacks/sliceable/AltClick(mob/user)
+ var/obj/item/I = user.get_active_hand()
+ if(!I)
+ return
+ if(I.w_class > WEIGHT_CLASS_SMALL)
+ to_chat(user, "You cannot fit [I] in [src]!")
+ return
+ var/newweight = GetTotalContentsWeight() + I.GetTotalContentsWeight() + I.w_class
+ if(newweight > MAX_WEIGHT_CLASS)
+ // Nope, no bluespace slice food
+ to_chat(user, "You cannot fit [I] in [src]!")
+ return
+ if(!iscarbon(user))
+ return
+ if(!user.drop_item())
+ to_chat(user, "You cannot slip [I] inside [src]!")
+ return
+ to_chat(user, "You slip [I] inside [src].")
+ total_w_class += I.w_class
+ add_fingerprint(user)
+ I.forceMove(src)
+
+/obj/item/reagent_containers/food/snacks/sliceable/attackby(obj/item/I, mob/user, params)
+ if((slices_num <= 0 || !slices_num) || !slice_path)
+ return FALSE
+
+ var/inaccurate = TRUE
+ if(I.sharp)
+ if(istype(I, /obj/item/kitchen/knife) || istype(I, /obj/item/scalpel))
+ inaccurate = FALSE
+ else
+ return TRUE
+ if(!isturf(loc) || !(locate(/obj/structure/table) in loc) && \
+ !(locate(/obj/machinery/optable) in loc) && !(locate(/obj/item/storage/bag/tray) in loc))
+ to_chat(user, "You cannot slice [src] here! You need a table or at least a tray to do it.")
+ return TRUE
+ var/slices_lost = 0
+ if(!inaccurate)
+ user.visible_message("[user] slices [src]!",
+ "You slice [src]!")
+ else
+ user.visible_message("[user] crudely slices [src] with [I]!",
+ "You crudely slice [src] with your [I]!")
+ slices_lost = rand(1,min(1,round(slices_num/2)))
+ var/reagents_per_slice = reagents.total_volume/slices_num
+ for(var/i=1 to (slices_num-slices_lost))
+ var/obj/slice = new slice_path (loc)
+ reagents.trans_to(slice,reagents_per_slice)
+ qdel(src)
+ return ..()
////////////////////////////////////////////////////////////////////////////////
/// FOOD END
////////////////////////////////////////////////////////////////////////////////
@@ -301,4 +291,4 @@
list_reagents = list("nutriment" = 3)
-#undef MAX_WEIGHT_CLASS
\ No newline at end of file
+#undef MAX_WEIGHT_CLASS
diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm
index 1a421e6d1ad..dd28f990322 100644
--- a/code/modules/lighting/lighting_overlay.dm
+++ b/code/modules/lighting/lighting_overlay.dm
@@ -1,7 +1,7 @@
/var/total_lighting_overlays = 0
/atom/movable/lighting_overlay
name = ""
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
simulated = 0
anchored = 1
icon = LIGHTING_ICON
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index 852bcd3edf3..3d3c67701e8 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -722,7 +722,7 @@
icon = 'icons/effects/effects.dmi'
icon_state = "shield1"
layer = 4.1
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/resonance_damage = 20
/obj/effect/resonance/New(loc, var/creator = null, var/timetoburst)
@@ -975,7 +975,7 @@
layer = 18
icon = 'icons/turf/mining.dmi'
anchored = 1
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
duration = 30
pixel_x = -4
pixel_y = -4
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 865f02a7eb8..6a5ae52ce27 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -453,7 +453,6 @@ var/global/list/rockTurfEdgeCache = list(
/turf/simulated/floor/plating/airless/asteroid
name = "Asteroid"
- icon = 'icons/turf/floors.dmi'
icon_state = "asteroid"
icon_plating = "asteroid"
var/dug = 0 //0 = has not yet been dug, 1 = has already been dug
@@ -463,10 +462,10 @@ var/global/list/rockTurfEdgeCache = list(
/turf/simulated/floor/plating/airless/asteroid/New()
var/proper_name = name
- ..()
name = proper_name
if(prob(20))
icon_state = "asteroid[rand(0,12)]"
+ ..()
/turf/simulated/floor/plating/airless/asteroid/ex_act(severity, target)
switch(severity)
@@ -663,4 +662,4 @@ var/global/list/rockTurfEdgeCache = list(
#undef NORTH_EDGING
#undef SOUTH_EDGING
#undef EAST_EDGING
-#undef WEST_EDGING
\ No newline at end of file
+#undef WEST_EDGING
diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm
index 16464aff11c..490d8c8fe0d 100644
--- a/code/modules/mining/minebot.dm
+++ b/code/modules/mining/minebot.dm
@@ -9,7 +9,7 @@
icon_state = "mining_drone"
icon_living = "mining_drone"
status_flags = CANSTUN|CANWEAKEN|CANPUSH
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
faction = list("neutral")
a_intent = INTENT_HARM
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
@@ -92,12 +92,14 @@
..()
/mob/living/simple_animal/hostile/mining_drone/death()
- ..()
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
visible_message("[src] is destroyed!")
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
DropOre(0)
qdel(src)
- return
/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M)
if(M.a_intent == INTENT_HELP)
@@ -307,4 +309,4 @@
origin_tech = "programming=6"
#undef MINEDRONE_COLLECT
-#undef MINEDRONE_ATTACK
\ No newline at end of file
+#undef MINEDRONE_ATTACK
diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm
index f9cb1123ca3..38b5e81a87b 100644
--- a/code/modules/mob/camera/camera.dm
+++ b/code/modules/mob/camera/camera.dm
@@ -5,7 +5,7 @@
density = 0
anchored = 1
status_flags = GODMODE // You can't damage it.
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
see_in_dark = 7
invisibility = 101 // No one can see us
sight = SEE_SELF
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index f20ba3b734d..36afcd3868e 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -12,7 +12,6 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
stat = DEAD
density = 0
canmove = 0
- blinded = 0
anchored = 1 // don't get pushed around
invisibility = INVISIBILITY_OBSERVER
var/can_reenter_corpse
@@ -171,7 +170,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
response = alert(src, alertmsg,"Are you sure you want to ghost?","Stay in body","Ghost")
if(response != "Ghost")
return //didn't want to ghost after-all
- resting = 1
+ StartResting()
var/mob/dead/observer/ghost = ghostize(0) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly.
var/obj/structure/morgue/Morgue = locate() in M.loc
diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm
index cf3e4c320b5..e9ef1f37b93 100644
--- a/code/modules/mob/death.dm
+++ b/code/modules/mob/death.dm
@@ -1,94 +1,12 @@
-//This is the proc for gibbing a mob. Cannot gib ghosts.
-//added different sort of gibs and animations. N
+// can't die if you're not alive
/mob/proc/gib()
- death(1)
- var/atom/movable/overlay/animation = null
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
+ return FALSE
- playsound(src.loc, 'sound/goonstation/effects/gib.ogg', 50, 1)
-
- animation = new(loc)
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = src
-
-// flick("gibbed-m", animation)
- gibs(loc, dna)
- dead_mob_list -= src
- if(client)
- respawnable_list += src
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
-
-
-//This is the proc for turning a mob into ash. Mostly a copy of gib code (above).
-//Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here.
-//Dusting robots does not eject the MMI, so it's a bit more powerful than gib() /N
/mob/proc/dust()
- death(1)
- var/atom/movable/overlay/animation = null
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
-
- animation = new(loc)
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = src
-
-// flick("dust-m", animation)
- new /obj/effect/decal/cleanable/ash(loc)
-
- dead_mob_list -= src
- if(client)
- respawnable_list += src
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
+ return FALSE
/mob/proc/melt()
- death(1)
- var/atom/movable/overlay/animation = null
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
-
- animation = new(loc)
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = src
-
-// flick("liquify", animation)
-// new /obj/effect/decal/cleanable/ash(loc)
-
- dead_mob_list -= src
- if(client)
- respawnable_list += src
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
+ return FALSE
/mob/proc/death(gibbed)
-
- //Makes it so gib/dust/melt all unbuckle their victims from anything they may be buckled to to avoid breaking beds/chairs/etc
- if(gibbed && buckled)
- buckled.unbuckle_mob()
-
- //Quick fix for corpses kept propped up in chairs. ~Z
- drop_r_hand()
- drop_l_hand()
- //End of fix.
-
- timeofdeath = world.time
-
- living_mob_list -= src
- dead_mob_list += src
- if(client)
- respawnable_list += src
- return ..(gibbed)
+ return FALSE
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index 6c11ee7a3a4..2593d2eebaf 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -28,7 +28,7 @@
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
if(language && (language.flags & NONVERBAL))
- if(!has_vision()) //blind people can't see dumbass
+ if(!has_vision(information_only = TRUE)) //blind people can't see dumbass
message = stars(message)
if(!speaker || !(speaker in view(src)))
@@ -95,7 +95,7 @@
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
if(language && (language.flags & NONVERBAL))
- if(!has_vision()) //blind people can't see dumbass
+ if(!has_vision(information_only=TRUE)) //blind people can't see dumbass
message = stars(message)
if(!speaker || !(speaker in view(src)))
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 8f74fbce413..7d2b92b1d14 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -19,6 +19,8 @@
var/leaping = 0
ventcrawler = 2
var/list/alien_organs = list()
+ var/death_message = "lets out a waning guttural screech, green blood bubbling from its maw..."
+ var/death_sound = 'sound/voice/hiss6.ogg'
/mob/living/carbon/alien/New()
verbs += /mob/living/verb/mob_sleep
@@ -49,25 +51,25 @@
/mob/living/carbon/alien/adjustToxLoss(amount)
- return
+ return STATUS_UPDATE_NONE
/mob/living/carbon/alien/adjustFireLoss(amount) // Weak to Fire
if(amount > 0)
- ..(amount * 2)
+ return ..(amount * 2)
else
- ..(amount)
- return
+ return ..(amount)
/mob/living/carbon/alien/check_eye_prot()
return 2
-/mob/living/carbon/alien/updatehealth()
+/mob/living/carbon/alien/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = maxHealth
stat = CONSCIOUS
return
health = maxHealth - getOxyLoss() - getFireLoss() - getBruteLoss() - getCloneLoss()
+ update_stat("updatehealth([reason])")
/mob/living/carbon/alien/handle_environment(var/datum/gas_mixture/environment)
@@ -256,4 +258,4 @@ Des: Removes all infected images from the alien.
if(getBruteLoss() < 200)
return pick("xltrails_1", "xltrails_2")
else
- return pick("xttrails_1", "xttrails_2")
\ No newline at end of file
+ return pick("xttrails_1", "xttrails_2")
diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm
index 72bf30ceedf..ec2d96ed880 100644
--- a/code/modules/mob/living/carbon/alien/alien_defense.dm
+++ b/code/modules/mob/living/carbon/alien/alien_defense.dm
@@ -17,7 +17,7 @@ In all, this is a lot like the monkey code. /N
switch(M.a_intent)
if(INTENT_HELP)
AdjustSleeping(-5)
- resting = 0
+ StopResting()
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
@@ -36,7 +36,6 @@ In all, this is a lot like the monkey code. /N
"[M.name] bites [src]!")
adjustBruteLoss(damage)
add_attack_logs(M, src, "Alien attack", ATKLOG_ALL)
- updatehealth()
else
to_chat(M, "[name] is too injured for that.")
@@ -75,4 +74,3 @@ In all, this is a lot like the monkey code. /N
adjustCloneLoss(damage)
if(STAMINA)
adjustStaminaLoss(damage)
- updatehealth()
diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index 6d663d6f3d4..e8982bb89e6 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -43,18 +43,15 @@
if(src) qdel(src)
/mob/living/carbon/alien/death(gibbed)
- if(stat == DEAD) return
- if(healths) healths.icon_state = "health6"
- stat = DEAD
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
+ if(healths)
+ healths.icon_state = "health6"
if(!gibbed)
- playsound(loc, 'sound/voice/hiss6.ogg', 80, 1, 1)
- for(var/mob/O in viewers(src, null))
- O.show_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...", 1)
- update_canmove()
+ if(death_sound)
+ playsound(loc, death_sound, 80, 1, 1)
+ visible_message("[src] [death_message]")
update_icons()
-
- timeofdeath = world.time
- if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0)
-
- return ..(gibbed)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 8946189b4cb..da47f8c80b5 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -73,10 +73,7 @@
AdjustEarDamage(15)
AdjustEarDeaf(60)
- adjustBruteLoss(b_loss)
- adjustFireLoss(f_loss)
-
- updatehealth()
+ take_overall_damage(b_loss, f_loss)
/mob/living/carbon/alien/humanoid/attack_slime(mob/living/carbon/slime/M)
..()
@@ -85,7 +82,6 @@
damage = rand(10, 40)
adjustBruteLoss(damage)
add_attack_logs(src, M, "Slime'd for [damage] damage")
- updatehealth()
return
/mob/living/carbon/alien/humanoid/restrained()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm
index 3fa08702605..cef087f343c 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm
@@ -30,7 +30,6 @@
"You hear someone fall.")
adjustBruteLoss(damage)
add_attack_logs(M, src, "Melee attacked with fists")
- updatehealth()
else
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
visible_message("[M] has attempted to punch [src]!")
@@ -56,4 +55,4 @@
/mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y)
if(!no_effect && !visual_effect_icon)
visual_effect_icon = ATTACK_EFFECT_CLAW
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index 180d6bd8072..7771f1f5f90 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -44,12 +44,10 @@
updatehealth()
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
- blinded = 1
SetSilence(0)
else //ALIVE. LIGHTS ARE ON
if(health < config.health_threshold_dead || !get_int_organ(/obj/item/organ/internal/brain))
death()
- blinded = 1
SetSilence(0)
return 1
@@ -62,10 +60,8 @@
Paralyse(3)
if(paralysis)
- blinded = 1
stat = UNCONSCIOUS
else if(sleeping)
- blinded = 1
stat = UNCONSCIOUS
if(prob(10) && health)
emote("hiss")
@@ -77,12 +73,8 @@
if(move_delay_add > 0)
move_delay_add = max(0, move_delay_add - rand(1, 2))
- //Eyes
- if(disabilities & BLIND) //disabled-blind, doesn't get better on its own
- blinded = 1
- else if(eye_blind) //blindness, heals slowly over time
+ if(eye_blind) //blindness, heals slowly over time
AdjustEyeBlind(-1)
- blinded = 1
else if(eye_blurry) //blurry eyes heal slowly
AdjustEyeBlurry(-1)
diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm
deleted file mode 100644
index 7d1101ca7d8..00000000000
--- a/code/modules/mob/living/carbon/alien/larva/death.dm
+++ /dev/null
@@ -1,15 +0,0 @@
-/mob/living/carbon/alien/larva/death(gibbed)
- if(stat == DEAD) return
- if(healths) healths.icon_state = "health6"
- stat = DEAD
- icon_state = "larva_dead"
-
- if(!gibbed)
- visible_message("[src] lets out a waning high-pitched cry.")
- update_canmove()
-
- timeofdeath = world.time
- if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0)
- living_mob_list -= src
-
- return ..(gibbed)
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 783d683f060..d0deac3e132 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -12,6 +12,8 @@
var/amount_grown = 0
var/max_grown = 200
var/time_of_birth
+ death_message = "lets out a waning high-pitched cry."
+ death_sound = null
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/larva/New()
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index 5bbb31c00d1..654e9e27af3 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -11,12 +11,10 @@
updatehealth()
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
- blinded = 1
SetSilence(0)
else //ALIVE. LIGHTS ARE ON
if(health < -25 || !get_int_organ(/obj/item/organ/internal/brain))
death()
- blinded = 1
SetSilence(0)
return 1
@@ -30,10 +28,8 @@
Paralyse(3)
if(paralysis)
- blinded = 1
stat = UNCONSCIOUS
else if(sleeping)
- blinded = 1
stat = UNCONSCIOUS
if(prob(10) && health)
emote("hiss_")
@@ -45,12 +41,8 @@
if(move_delay_add > 0)
move_delay_add = max(0, move_delay_add - rand(1, 2))
- //Eyes
- if(disabilities & BLIND) //disabled-blind, doesn't get better on its own
- blinded = 1
- else if(eye_blind) //blindness, heals slowly over time
+ if(eye_blind) //blindness, heals slowly over time
AdjustEyeBlind(-1)
- blinded = 1
else if(eye_blurry) //blurry eyes heal slowly
AdjustEyeBlurry(-1)
diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm
index b3df2879f8f..f1076721cf1 100644
--- a/code/modules/mob/living/carbon/alien/larva/powers.dm
+++ b/code/modules/mob/living/carbon/alien/larva/powers.dm
@@ -9,16 +9,10 @@
if(layer != TURF_LAYER+0.2)
layer = TURF_LAYER+0.2
- to_chat(src, text("You are now hiding."))
- for(var/mob/O in oviewers(src, null))
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] scurries to the ground!", src))
+ visible_message("[src] scurries to the ground!", "You are now hiding.")
else
layer = MOB_LAYER
- to_chat(src, text("You have stopped hiding."))
- for(var/mob/O in oviewers(src, null))
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] slowly peaks up from the ground...", src))
+ visible_message("[src] slowly peeks up from the ground...", "You have stopped hiding.")
/mob/living/carbon/alien/larva/verb/evolve()
set name = "Evolve"
diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm
index c38823173eb..777fce50423 100644
--- a/code/modules/mob/living/carbon/brain/death.dm
+++ b/code/modules/mob/living/carbon/brain/death.dm
@@ -1,42 +1,26 @@
/mob/living/carbon/brain/death(gibbed)
- if(stat == DEAD) return
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
if(!gibbed && container && istype(container, /obj/item/mmi))//If not gibbed but in a container.
- for(var/mob/O in viewers(container, null))
- O.show_message(text("[]'s MMI flatlines!", src), 1, "You hear something flatline.", 2)
+ visible_message("[src]'s MMI flatlines!", "You hear something flatline.")
container.icon_state = "mmi_dead"
- stat = DEAD
-
- sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
- see_in_dark = 8
- see_invisible = SEE_INVISIBLE_LEVEL_TWO
-
- timeofdeath = world.time
- if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0) //mind. ?
-
- return ..(gibbed)
/mob/living/carbon/brain/gib()
- death(1)
- var/atom/movable/overlay/animation = null
+ // can we muster a parent call here?
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
notransform = 1
canmove = 0
icon = null
invisibility = 101
- animation = new(loc)
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = src
-
-// flick("gibbed-m", animation)
gibs(loc, dna)
- dead_mob_list -= src
if(container && istype(container, /obj/item/mmi))
qdel(container)//Gets rid of the MMI if there is one
if(loc)
if(istype(loc,/obj/item/organ/internal/brain))
qdel(loc)//Gets rid of the brain item
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
+ QDEL_IN(src, 0)
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index 757ccab9fb9..2ac3b3c4d6b 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -29,19 +29,12 @@
adjustFireLoss(5.0*discomfort)
/mob/living/carbon/brain/handle_regular_status_updates()
- updatehealth()
+ . = ..()
- if(stat == DEAD)
- blinded = 1
- SetSilence(0)
- else
+ if(.)
if(!container && (health < config.health_threshold_dead || ((world.time - timeofhostdeath) > config.revival_brain_life)))
death()
- blinded = 1
- SetSilence(0)
- return 1
-
- . = 1
+ return 0
/mob/living/carbon/brain/breathe()
return
diff --git a/code/modules/mob/living/carbon/brain/update_status.dm b/code/modules/mob/living/carbon/brain/update_status.dm
index 2532edfe37d..431d1eea0c3 100644
--- a/code/modules/mob/living/carbon/brain/update_status.dm
+++ b/code/modules/mob/living/carbon/brain/update_status.dm
@@ -1,8 +1,16 @@
-/mob/living/carbon/brain/update_stat()
+/mob/living/carbon/brain/update_stat(reason = "none given")
if(status_flags & GODMODE)
return
// if(health <= min_health)
- if(health <= config.health_threshold_dead)
- if(stat != DEAD)
+ if(stat == DEAD)
+ if(container && health > config.health_threshold_dead)
+ update_revive()
+ create_debug_log("revived, trigger reason: [reason]")
+ return
+ else
+ if(!container || health <= config.health_threshold_dead)
+ // Considered "dead" without any external apparatus
death()
+ create_debug_log("died, trigger reason: [reason]")
+ return
// Put brain(organ) damaging code here
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 8e4bfb95105..c5557028896 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -60,7 +60,7 @@
if(organ.receive_damage(d, 0))
H.UpdateDamageIcon()
- H.updatehealth()
+ H.updatehealth("stomach attack")
else
src.take_organ_damage(d)
@@ -144,7 +144,7 @@
return 0
if(reagents.has_reagent("teslium"))
shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging!
- take_overall_damage(0,shock_damage, used_weapon = "Electrocution")
+ take_overall_damage(0,shock_damage, TRUE, used_weapon = "Electrocution")
visible_message(
"[src] was shocked by \the [source]!", \
"You feel a powerful shock coursing through your body!", \
@@ -269,7 +269,7 @@
H.w_uniform.add_fingerprint(M)
AdjustSleeping(-5)
if(sleeping == 0)
- resting = 0
+ StopResting()
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 5df7407ec71..e22b3b25445 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -55,9 +55,9 @@
var/stunprob = M.powerlevel * 7 + 10
if(prob(stunprob) && M.powerlevel >= 8)
adjustFireLoss(M.powerlevel * rand(6,10))
- updatehealth()
+ updatehealth("slime attack")
return 1
/mob/living/carbon/is_mouth_covered(head_only = FALSE, mask_only = FALSE)
if((!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)))
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index 2ad9b1ef6ab..8a06d1474a0 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -1,12 +1,11 @@
/mob/living/carbon/death(gibbed)
- SetLoseBreath(0)
- med_hud_set_health()
- med_hud_set_status()
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
if(reagents)
reagents.death_metabolize(src)
for(var/obj/item/organ/internal/I in internal_organs)
I.on_owner_death()
-
- ..(gibbed)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index bdca496d256..b2d2d24400b 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -1,5 +1,6 @@
/mob/living/carbon/human/gib()
- death(1)
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
var/atom/movable/overlay/animation = null
notransform = 1
canmove = 0
@@ -43,13 +44,13 @@
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
-
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
+ QDEL_IN(animation, 15)
+ QDEL_IN(src, 0)
+ return TRUE
/mob/living/carbon/human/dust()
- death(1)
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
var/atom/movable/overlay/animation = null
notransform = 1
canmove = 0
@@ -63,13 +64,13 @@
flick("dust-h", animation)
new dna.species.remains_type(get_turf(src))
-
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
+ QDEL_IN(src, 0)
+ QDEL_IN(animation, 15)
+ return TRUE
/mob/living/carbon/human/melt()
- death(1)
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
var/atom/movable/overlay/animation = null
notransform = 1
canmove = 0
@@ -82,60 +83,48 @@
animation.master = src
flick("liquify", animation)
+ QDEL_IN(src, 0)
+ QDEL_IN(animation, 15)
//new /obj/effect/decal/remains/human(loc)
-
- spawn(15)
- if(animation) qdel(animation)
- if(src) qdel(src)
+ return TRUE
/mob/living/carbon/human/death(gibbed)
- if(stat == DEAD)
- return
- if(healths)
- healths.icon_state = "health5"
-
- if(!gibbed)
+ if(can_die() && !gibbed)
emote("deathgasp") //let the world KNOW WE ARE DEAD
- stat = DEAD
- SetDizzy(0)
- SetJitter(0)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
+
set_heartattack(FALSE)
- //Handle species-specific deaths.
if(dna.species)
+ dna.species.handle_hud_icons(src)
+ //Handle species-specific deaths.
dna.species.handle_death(src)
- callHook("death", list(src, gibbed))
-
if(ishuman(LAssailant))
var/mob/living/carbon/human/H=LAssailant
if(H.mind)
H.mind.kills += "[key_name(src)]"
- if(!gibbed)
- update_canmove()
-
- timeofdeath = world.time
- med_hud_set_health()
- med_hud_set_status()
- if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0)
if(ticker && ticker.mode)
// log_world("k")
sql_report_death(src)
- ticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now
if(wearing_rig)
wearing_rig.notify_ai("Warning: user death event. Mobility control passed to integrated intelligence system.")
- return ..(gibbed)
-
/mob/living/carbon/human/update_revive()
. = ..()
- // Update healthdoll
if(. && healthdoll)
// We're alive again, so re-build the entire healthdoll
healthdoll.cached_healthdoll_overlays.Cut()
+ // Update healthdoll
+ if(dna.species)
+ dna.species.update_sight(src)
+ dna.species.handle_hud_icons(src)
/mob/living/carbon/human/proc/makeSkeleton()
var/obj/item/organ/external/head/H = get_organ("head")
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index d718e7e95d3..fd72a50bca1 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -294,7 +294,7 @@
if(prob(50) && !shielded)
Paralyse(10)
- take_overall_damage(b_loss,f_loss, used_weapon = "Explosive Blast")
+ take_overall_damage(b_loss,f_loss, TRUE, used_weapon = "Explosive Blast")
..()
@@ -1272,7 +1272,7 @@
else
to_chat(usr, "[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].")
-/mob/living/carbon/human/proc/set_species(datum/species/new_species, default_colour, delay_icon_update = FALSE, skip_same_check = FALSE)
+/mob/living/carbon/human/proc/set_species(datum/species/new_species, default_colour, delay_icon_update = FALSE, skip_same_check = FALSE, retain_damage = FALSE)
if(!skip_same_check)
if(dna.species.name == initial(new_species.name))
return
@@ -1325,7 +1325,69 @@
if(I)
kept_items[I] = thing
- dna.species.create_organs(src)
+ if(retain_damage)
+ //Create a list of body parts which are damaged by burn or brute and save them to apply after new organs are generated. First we just handle external organs.
+ var/bodypart_damages = list()
+ //Loop through all external organs and save the damage states for brute and burn
+ for(var/obj/item/organ/external/E in bodyparts)
+ if(E.brute_dam == 0 && E.burn_dam == 0 && E.internal_bleeding == FALSE) //If there's no damage we don't bother remembering it.
+ continue
+ var/brute = E.brute_dam
+ var/burn = E.burn_dam
+ var/IB = E.internal_bleeding
+ var/obj/item/organ/external/OE = new E.type()
+ var/stats = list(OE, brute, burn, IB)
+ bodypart_damages += list(stats)
+
+ //Now we do the same for internal organs via the same proceedure.
+ var/internal_damages = list()
+ for(var/obj/item/organ/internal/I in internal_organs)
+ if(I.damage == 0)
+ continue
+ var/obj/item/organ/internal/OI = new I.type()
+ var/damage = I.damage
+ var/broken = I.is_broken()
+ var/stats = list(OI, damage, broken)
+ internal_damages += list(stats)
+
+ //Create the new organs for the species change
+ dna.species.create_organs(src)
+
+ //Apply relevant damages and variables to the new organs.
+ for(var/B in bodyparts)
+ var/obj/item/organ/external/E = B
+ for(var/list/part in bodypart_damages)
+ var/obj/item/organ/external/OE = part[1]
+ if((E.type == OE.type)) // Type has to be explicit, as right limbs are a child of left ones etc.
+ var/brute = part[2]
+ var/burn = part[3]
+ var/IB = part[4]
+ //Deal the damage to the new organ and then delete the entry to prevent duplicate checks
+ E.receive_damage(brute, burn, ignore_resists = TRUE)
+ E.internal_bleeding = IB
+ qdel(part)
+
+ for(var/O in internal_organs)
+ var/obj/item/organ/internal/I = O
+ for(var/list/part in internal_damages)
+ var/obj/item/organ/internal/OI = part[1]
+ var/organ_type
+
+ if(OI.parent_type == /obj/item/organ/internal) //Dealing with species organs
+ organ_type = OI.type
+ else
+ organ_type = OI.parent_type
+
+ if(istype(I, organ_type))
+ var/damage = part[2]
+ var/broken = part[3]
+ I.receive_damage(damage, 1)
+ if(broken && !(I.status & ORGAN_BROKEN))
+ I.status |= ORGAN_BROKEN
+ qdel(part)
+
+ else
+ dna.species.create_organs(src)
for(var/thing in kept_items)
equip_to_slot_if_possible(thing, kept_items[thing], redraw_mob = 0)
@@ -1598,7 +1660,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(H.health > config.health_threshold_dead && H.health <= config.health_threshold_crit)
var/suff = min(H.getOxyLoss(), 7)
H.adjustOxyLoss(-suff)
- H.updatehealth()
+ H.updatehealth("cpr")
visible_message("[src] performs CPR on [H.name]!", \
"You perform CPR on [H.name].")
@@ -1867,4 +1929,4 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/proc/special_post_clone_handling()
if(mind && mind.assigned_role == "Cluwne") //HUNKE your suffering never stops
- makeCluwne()
\ No newline at end of file
+ makeCluwne()
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index ddfce48f6ce..d82fc719d88 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -1,5 +1,5 @@
//Updates the mob's health from organs and mob damage variables
-/mob/living/carbon/human/updatehealth()
+/mob/living/carbon/human/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = maxHealth
stat = CONSCIOUS
@@ -17,20 +17,14 @@
//TODO: fix husking
if(((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD)
ChangeToHusk()
- if(dna.species.can_revive_by_healing)
- var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain)
- if(B)
- if((health >= (config.health_threshold_dead + config.health_threshold_crit) * 0.5) && stat == DEAD && getBrainLoss()<120)
- update_revive()
- if(stat == CONSCIOUS && (src in dead_mob_list)) //Defib fix
- update_revive()
+ update_stat("updatehealth([reason])")
med_hud_set_health()
med_hud_set_status()
- handle_hud_icons()
+ handle_hud_icons_health()
-/mob/living/carbon/human/adjustBrainLoss(amount)
+/mob/living/carbon/human/adjustBrainLoss(amount, updating = TRUE)
if(status_flags & GODMODE)
- return 0 //godmode
+ return STATUS_UPDATE_NONE //godmode
if(dna.species && dna.species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
@@ -38,15 +32,13 @@
if(dna.species)
amount = amount * dna.species.brain_mod
sponge.receive_damage(amount, 1)
- brainloss = sponge.damage
- else
- brainloss = 200
- else
- brainloss = 0
+ if(updating)
+ update_stat("adjustBrainLoss")
+ return STATUS_UPDATE_STAT
-/mob/living/carbon/human/setBrainLoss(amount)
+/mob/living/carbon/human/setBrainLoss(amount, updating = TRUE)
if(status_flags & GODMODE)
- return 0 //godmode
+ return STATUS_UPDATE_NONE //godmode
if(dna.species && dna.species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
@@ -54,11 +46,9 @@
if(dna.species)
amount = amount * dna.species.brain_mod
sponge.damage = min(max(amount, 0), (maxHealth*2))
- brainloss = sponge.damage
- else
- brainloss = 200
- else
- brainloss = 0
+ if(updating)
+ update_stat("setBrainLoss")
+ return STATUS_UPDATE_STAT
/mob/living/carbon/human/getBrainLoss()
if(status_flags & GODMODE)
@@ -67,12 +57,11 @@
if(dna.species && dna.species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
- brainloss = min(sponge.damage,maxHealth*2)
+ return min(sponge.damage,maxHealth*2)
else
- brainloss = 200
+ return 200
else
- brainloss = 0
- return brainloss
+ return 0
//These procs fetch a cumulative total damage from all organs
/mob/living/carbon/human/getBruteLoss()
@@ -88,23 +77,27 @@
return amount
-/mob/living/carbon/human/adjustBruteLoss(amount, damage_source, robotic=0)
+/mob/living/carbon/human/adjustBruteLoss(amount, updating_health = TRUE, damage_source = null, robotic = FALSE)
if(dna.species)
amount = amount * dna.species.brute_mod
if(amount > 0)
- take_overall_damage(amount, 0, used_weapon = damage_source)
+ take_overall_damage(amount, 0, updating_health, used_weapon = damage_source)
else
- heal_overall_damage(-amount, 0, 0, robotic)
+ heal_overall_damage(-amount, 0, updating_health, FALSE, robotic)
+ // brainless default for now
+ return STATUS_UPDATE_HEALTH
-/mob/living/carbon/human/adjustFireLoss(amount, damage_source, robotic=0)
+/mob/living/carbon/human/adjustFireLoss(amount, updating_health = TRUE, damage_source = null, robotic = FALSE)
if(dna.species)
amount = amount * dna.species.burn_mod
if(amount > 0)
- take_overall_damage(0, amount, used_weapon = damage_source)
+ take_overall_damage(0, amount, updating_health, used_weapon = damage_source)
else
- heal_overall_damage(0, -amount, 0, robotic)
+ heal_overall_damage(0, -amount, updating_health, FALSE, robotic)
+ // brainless default for now
+ return STATUS_UPDATE_HEALTH
-/mob/living/carbon/human/proc/adjustBruteLossByPart(amount, organ_name, obj/damage_source = null)
+/mob/living/carbon/human/proc/adjustBruteLossByPart(amount, organ_name, obj/damage_source = null, updating_health = TRUE)
if(dna.species)
amount = amount * dna.species.brute_mod
@@ -112,13 +105,14 @@
var/obj/item/organ/external/O = get_organ(organ_name)
if(amount > 0)
- O.receive_damage(amount, 0, sharp=is_sharp(damage_source), used_weapon=damage_source)
+ O.receive_damage(amount, 0, sharp=is_sharp(damage_source), used_weapon=damage_source, list(), FALSE, updating_health)
else
//if you don't want to heal robot organs, they you will have to check that yourself before using this proc.
- O.heal_damage(-amount, 0, internal = 0, robo_repair = O.is_robotic())
+ O.heal_damage(-amount, 0, internal = 0, robo_repair = O.is_robotic(), updating_health = updating_health)
+ return STATUS_UPDATE_HEALTH
-/mob/living/carbon/human/proc/adjustFireLossByPart(amount, organ_name, obj/damage_source = null)
+/mob/living/carbon/human/proc/adjustFireLossByPart(amount, organ_name, obj/damage_source = null, updating_health = TRUE)
if(dna.species)
amount = amount * dna.species.burn_mod
@@ -126,22 +120,23 @@
var/obj/item/organ/external/O = get_organ(organ_name)
if(amount > 0)
- O.receive_damage(0, amount, sharp=is_sharp(damage_source), used_weapon=damage_source)
+ O.receive_damage(0, amount, sharp=is_sharp(damage_source), used_weapon=damage_source, forbidden_limbs = list(), ignore_resists = FALSE, updating_health = updating_health)
else
//if you don't want to heal robot organs, they you will have to check that yourself before using this proc.
- O.heal_damage(0, -amount, internal = 0, robo_repair = O.is_robotic())
+ O.heal_damage(0, -amount, internal = 0, robo_repair = O.is_robotic(), updating_health = updating_health)
+ return STATUS_UPDATE_HEALTH
/mob/living/carbon/human/Paralyse(amount)
// Notify our AI if they can now control the suit.
if(wearing_rig && !stat && paralysis < amount) //We are passing out right this second.
wearing_rig.notify_ai("Warning: user consciousness failure. Mobility control passed to integrated intelligence system.")
- ..()
+ return ..()
/mob/living/carbon/human/adjustCloneLoss(amount)
if(dna.species)
amount = amount * dna.species.clone_mod
- ..()
+ . = ..()
var/heal_prob = max(0, 80 - getCloneLoss())
var/mut_prob = min(80, getCloneLoss() + 10)
@@ -181,22 +176,22 @@
/mob/living/carbon/human/adjustOxyLoss(amount)
if(dna.species)
amount = amount * dna.species.oxy_mod
- ..()
+ . = ..()
/mob/living/carbon/human/setOxyLoss(amount)
if(dna.species)
amount = amount * dna.species.oxy_mod
- ..()
+ . = ..()
/mob/living/carbon/human/adjustToxLoss(amount)
if(dna.species)
amount = amount * dna.species.tox_mod
- ..()
+ . = ..()
/mob/living/carbon/human/setToxLoss(amount)
if(dna.species)
amount = amount * dna.species.tox_mod
- ..()
+ . = ..()
////////////////////////////////////////////
@@ -223,31 +218,29 @@
//Heals ONE external organ, organ gets randomly selected from damaged ones.
//It automatically updates damage overlays if necesary
//It automatically updates health status
-/mob/living/carbon/human/heal_organ_damage(brute, burn)
+/mob/living/carbon/human/heal_organ_damage(brute, burn, updating_health = TRUE)
var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn)
if(!parts.len)
return
var/obj/item/organ/external/picked = pick(parts)
- if(picked.heal_damage(brute,burn))
+ if(picked.heal_damage(brute,burn, updating_health))
UpdateDamageIcon()
- updatehealth()
//Damages ONE external organ, organ gets randomly selected from damagable ones.
//It automatically updates damage overlays if necesary
//It automatically updates health status
-/mob/living/carbon/human/take_organ_damage(brute, burn, sharp = 0, edge = 0)
+/mob/living/carbon/human/take_organ_damage(brute, burn, updating_health = TRUE, sharp = 0, edge = 0)
var/list/obj/item/organ/external/parts = get_damageable_organs()
if(!parts.len)
return
var/obj/item/organ/external/picked = pick(parts)
- if(picked.receive_damage(brute, burn, sharp))
+ if(picked.receive_damage(brute, burn, sharp, updating_health))
UpdateDamageIcon()
- updatehealth()
speech_problem_flag = 1
//Heal MANY external organs, in random order
-/mob/living/carbon/human/heal_overall_damage(brute, burn, internal=0, robotic=0)
+/mob/living/carbon/human/heal_overall_damage(brute, burn, updating_health = TRUE, internal=0, robotic=0)
var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn)
var/update = 0
@@ -257,20 +250,21 @@
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
- update |= picked.heal_damage(brute,burn, internal, robotic)
+ update |= picked.heal_damage(brute,burn, internal, robotic, updating_health = FALSE)
brute -= (brute_was-picked.brute_dam)
burn -= (burn_was-picked.burn_dam)
parts -= picked
- updatehealth()
+ if(updating_health)
+ updatehealth("heal overall damage")
speech_problem_flag = 1
if(update)
UpdateDamageIcon()
// damage MANY external organs, in random order
-/mob/living/carbon/human/take_overall_damage(brute, burn, sharp = 0, edge = 0, used_weapon = null)
+/mob/living/carbon/human/take_overall_damage(brute, burn, updating_health = TRUE, used_weapon = null, sharp = 0, edge = 0)
if(status_flags & GODMODE)
return //godmode
var/list/obj/item/organ/external/parts = get_damageable_organs()
@@ -285,14 +279,15 @@
var/burn_was = picked.burn_dam
- update |= picked.receive_damage(brute_per_part, burn_per_part, sharp, used_weapon)
+ update |= picked.receive_damage(brute_per_part, burn_per_part, sharp, used_weapon, list(), FALSE, FALSE)
brute -= (picked.brute_dam - brute_was)
burn -= (picked.burn_dam - burn_was)
parts -= picked
- updatehealth()
+ if(updating_health)
+ updatehealth("take overall damage")
if(update)
UpdateDamageIcon()
@@ -364,7 +359,7 @@ This function restores all organs.
var/list/attack_bubble_recipients = list()
var/mob/living/user
for(var/mob/O in viewers(user, src))
- if(O.client && !(O.blinded))
+ if(O.client && O.has_vision(information_only=TRUE))
attack_bubble_recipients.Add(O.client)
spawn(0)
var/image/dmgIcon = image('icons/effects/hit_blips.dmi', src, "dmg[rand(1,2)]",MOB_LAYER+1)
@@ -383,5 +378,5 @@ This function restores all organs.
UpdateDamageIcon()
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
- updatehealth()
+ updatehealth("apply damage")
return 1
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index b8e209498c2..6e1d35fb0d2 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -375,7 +375,7 @@ emp_act
var/obj/item/organ/external/affecting = get_organ(ran_zone(L.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor_block)
- updatehealth()
+ updatehealth("larva attack")
/mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M)
if(check_shields(0, M.name))
@@ -404,7 +404,7 @@ emp_act
"[M] has wounded [src]!")
apply_effect(4, WEAKEN, armor_block)
add_attack_logs(M, src, "Alien attacked")
- updatehealth()
+ updatehealth("alien attack")
if(M.a_intent == INTENT_DISARM)
if(prob(80))
@@ -434,7 +434,7 @@ emp_act
if(affected)
affected.add_autopsy_data(M.name, damage) // Add the mob's name to the autopsy data
apply_damage(damage, M.melee_damage_type, affecting, armor)
- updatehealth()
+ updatehealth("animal attack")
/mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M)
..()
@@ -473,7 +473,7 @@ emp_act
M.mech_toxin_damage(src)
else
return
- updatehealth()
+ updatehealth("mech melee attack")
M.occupant_message("You hit [src].")
visible_message("[src] has been hit by [M.name].", \
@@ -502,4 +502,4 @@ emp_act
if(check_head && head && (head.flags_cover & HEADCOVERSEYES))
return TRUE
if(check_mask && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index 5dcae16b87a..2c03e66bf8a 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -38,7 +38,7 @@
// Buckled to a bed/chair. Stance damage is forced to 0 since they're sitting on something solid
// Not standing, so no need to care about stance
- if(istype(buckled, /obj/structure/stool/bed) || !isturf(loc))
+ if(istype(buckled, /obj/structure/chair) || !isturf(loc))
return
for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot"))
diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm
index d8d469cfd57..abdcf9d7373 100644
--- a/code/modules/mob/living/carbon/human/interactive/interactive.dm
+++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm
@@ -67,14 +67,13 @@
//modules
var/list/functions = list("nearbyscan","combat","shitcurity","chatter")
var/restrictedJob = 0
- var/shouldUseDynamicProc = 0 // switch to make the AI control it's own proccessing
- var/alternateProcessing = 0
var/forceProcess = 0
- var/processTime = 10
var/speak_file = "npc_chatter.json"
var/debugexamine = FALSE //If we show debug info in our examine
var/showexaminetext = TRUE //If we show our telltale examine text
+ var/voice_saved = FALSE
+
var/list/knownStrings = list()
//snpc traitor variables
@@ -95,6 +94,8 @@
knownStrings = list()
/mob/living/carbon/human/interactive/proc/saveVoice()
+ if(voice_saved)
+ return
var/savefile/S = new /savefile("data/npc_saves/snpc.sav")
S["knownStrings"] << knownStrings
@@ -142,7 +143,7 @@
doing = 0
inactivity_period = 0
-/client/proc/resetSNPC(mob/living/carbon/human/interactive/T in npc_master.botPool_l)
+/client/proc/resetSNPC(mob/living/carbon/human/interactive/T in SSnpcpool.processing)
set name = "Reset SNPC"
set desc = "Reset the SNPC"
set category = "Debug"
@@ -153,20 +154,7 @@
if(istype(T))
T.reset()
-/client/proc/toggleSNPC(mob/living/carbon/human/interactive/T in npc_master.botPool_l)
- set name = "Toggle SNPC Proccessing Mode"
- set desc = "Toggle SNPC Proccessing Mode"
- set category = "Debug"
-
- if(!holder)
- return
-
- if(istype(T))
- T.alternateProcessing = !T.alternateProcessing
- T.forceProcess = 1
- to_chat(usr, "[T]'s processing has been switched to [T.alternateProcessing ? "High Profile" : "Low Profile"]")
-
-/client/proc/customiseSNPC(mob/living/carbon/human/interactive/T in npc_master.botPool_l)
+/client/proc/customiseSNPC(mob/living/carbon/human/interactive/T in SSnpcpool.processing)
set name = "Customize SNPC"
set desc = "Customize the SNPC"
set category = "Debug"
@@ -191,8 +179,12 @@
T.myjob = cjob
T.job = cjob.title
T.mind.assigned_role = cjob.title
- for(var/obj/item/W in T)
- qdel(W)
+ for(var/obj/item/I in T)
+ if(istype(I, /obj/item/implant))
+ continue
+ if(istype(I, /obj/item/organ))
+ continue
+ qdel(I)
T.myjob.equip(T)
T.doSetup(alt_title)
@@ -316,6 +308,12 @@
if(TRAITS & TRAIT_THIEVING)
slyness = 75
+/mob/living/carbon/human/interactive/proc/InteractiveProcess()
+ if(ticker.current_state == GAME_STATE_FINISHED)
+ saveVoice()
+ voice_saved = TRUE
+ doProcess()
+
/mob/living/carbon/human/interactive/proc/setup_job(thejob)
switch(thejob)
if("Civilian")
@@ -419,7 +417,7 @@
sync_mind()
random()
doSetup()
- npc_master.insertBot(src)
+ START_PROCESSING(SSnpcpool, src)
loadVoice()
hear_radio_list += src
@@ -432,9 +430,7 @@
doProcess()
/mob/living/carbon/human/interactive/Destroy()
- hear_radio_list -= src
- snpc_list -= src
- npc_master.removeBot(src)
+ SSnpcpool.stop_processing(src)
return ..()
/mob/living/carbon/human/interactive/proc/retalTarget(mob/living/target)
@@ -578,8 +574,11 @@
return get_dist(get_turf(towhere), get_turf(src))
/mob/living/carbon/human/interactive/death()
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
saveVoice()
- ..()
/mob/living/carbon/human/interactive/hear_say(message, verb = "says", datum/language/language = null, italics = 0, mob/speaker = null, sound/speech_sound, sound_vol)
if(!istype(speaker, /mob/living/carbon/human/interactive))
@@ -592,17 +591,7 @@
..()
/mob/living/carbon/human/interactive/proc/doProcess()
- forceProcess = 0
-
- if(shouldUseDynamicProc)
- var/isSeen = 0
- for(var/mob/living/carbon/human/A in orange(12, src))
- if(A.client)
- isSeen = 1
- alternateProcessing = isSeen
- if(alternateProcessing)
- forceProcess = 1
-
+ set waitfor = FALSE
if(IsDeadOrIncap())
reset()
return
@@ -630,10 +619,13 @@
if(istype(D,/obj/machinery/door/airlock))
var/obj/machinery/door/airlock/AL = D
if(!AL.CanAStarPass(RPID)) // only crack open doors we can't get through
+ inactivity_period = 20
AL.panel_open = 1
AL.update_icon()
AL.shock(src, mistake_chance)
sleep(5)
+ if(QDELETED(AL))
+ return
AL.unlock()
if(prob(mistake_chance))
if(!AL.wires.IsIndexCut(AIRLOCK_WIRE_DOOR_BOLTS))
@@ -650,6 +642,8 @@
if(prob(mistake_chance) && !AL.wires.IsIndexCut(AIRLOCK_WIRE_ELECTRIFY))
AL.wires.CutWireIndex(AIRLOCK_WIRE_ELECTRIFY)
sleep(5)
+ if(QDELETED(AL))
+ return
AL.panel_open = 0
AL.update_icon()
D.open()
@@ -683,7 +677,7 @@
//proc functions
for(var/Proc in functions)
if(!IsDeadOrIncap())
- callfunction(Proc)
+ INVOKE_ASYNC(src, Proc)
//target interaction stays hardcoded
@@ -697,8 +691,8 @@
if(istype(TARGET, /obj/machinery/door))
var/obj/machinery/door/D = TARGET
if(D.check_access(MYID) && !istype(D,/obj/machinery/door/poddoor))
+ inactivity_period = 10
D.open()
- sleep(15)
var/turf/T = get_step(get_step(D.loc, dir), dir) //recursion yo
tryWalk(T)
//THIEVING SKILLS
@@ -722,15 +716,8 @@
insert_into_backpack()
//---------FASHION
if(istype(TARGET, /obj/item/clothing))
- var/obj/item/clothing/C = TARGET
drop_item()
- spawn(5)
- take_to_slot(C,1)
- if(!equip_to_appropriate_slot(C))
- var/obj/item/I = get_item_by_slot(C)
- unEquip(I)
- spawn(5)
- equip_to_appropriate_slot(C)
+ dressup(TARGET)
update_hands = 1
if(MYPDA in loc)
equip_to_appropriate_slot(MYPDA)
@@ -787,9 +774,19 @@
TARGET = traitorTarget
tryWalk(TARGET)
LAST_TARGET = TARGET
- if(alternateProcessing)
- spawn(processTime)
- doProcess()
+
+/mob/living/carbon/human/interactive/proc/dressup(obj/item/clothing/C)
+ set waitfor = FALSE
+ inactivity_period = 12
+ sleep(5)
+ if(!QDELETED(C) && !QDELETED(src))
+ take_to_slot(C,1)
+ if(!equip_to_appropriate_slot(C))
+ var/obj/item/I = get_item_by_slot(C)
+ unEquip(I)
+ sleep(5)
+ if(!QDELETED(src) && !QDELETED(C))
+ equip_to_appropriate_slot(C)
/mob/living/carbon/human/interactive/proc/favouredObjIn(list/inList)
var/list/outList = list()
@@ -801,10 +798,6 @@
outList = inList
return outList
-/mob/living/carbon/human/interactive/proc/callfunction(Proc)
- spawn(0)
- call(src, Proc)(src)
-
/mob/living/carbon/human/interactive/proc/tryWalk(turf/inTarget)
if(restrictedJob) // we're a job that has to stay in our home
if(!(get_turf(inTarget) in get_area_turfs(job2area(myjob))))
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 50848851646..c74d7b47c56 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -114,7 +114,7 @@
if(G.tint)
update_tint()
if(G.prescription)
- clear_fullscreen("nearsighted")
+ update_nearsighted_effects()
if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view)
update_sight()
update_inv_glasses()
@@ -266,8 +266,7 @@
if(G.tint)
update_tint()
if(G.prescription)
- if(disabilities & NEARSIGHTED)
- overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
+ update_nearsighted_effects()
if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view)
update_sight()
update_inv_glasses(redraw_mob)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index d577a02e2c4..11df45462c4 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -144,12 +144,12 @@
if(3)
emote("drool")
- if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox
+ if(getBrainLoss() >= 100 && stat != DEAD) //you lapse into a coma and die without immediate aid; RIP. -Fox
Weaken(20)
AdjustLoseBreath(10)
AdjustSilence(2)
- if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox
+ if(getBrainLoss() >= 120 && stat != DEAD) //they died from stupidity--literally. -Fox
visible_message("[src] goes limp, [p_their()] facial expression utterly blank.")
death()
@@ -339,16 +339,16 @@
if(bodytemperature >= dna.species.heat_level_1 && bodytemperature <= dna.species.heat_level_2)
throw_alert("temp", /obj/screen/alert/hot, 1)
- take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
+ take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_1, updating_health = TRUE, used_weapon = "High Body Temperature")
if(bodytemperature > dna.species.heat_level_2 && bodytemperature <= dna.species.heat_level_3)
throw_alert("temp", /obj/screen/alert/hot, 2)
- take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
+ take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_2, updating_health = TRUE, used_weapon = "High Body Temperature")
if(bodytemperature > dna.species.heat_level_3 && bodytemperature < INFINITY)
throw_alert("temp", /obj/screen/alert/hot, 3)
if(on_fire)
- take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire")
+ take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_3, updating_health = TRUE, used_weapon = "Fire")
else
- take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
+ take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_2, updating_health = TRUE, used_weapon = "High Body Temperature")
else if(bodytemperature < dna.species.cold_level_1)
if(status_flags & GODMODE)
@@ -360,13 +360,13 @@
var/mult = dna.species.coldmod
if(bodytemperature >= dna.species.cold_level_2 && bodytemperature <= dna.species.cold_level_1)
throw_alert("temp", /obj/screen/alert/cold, 1)
- take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature")
+ take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_1, updating_health = TRUE, used_weapon = "Low Body Temperature")
if(bodytemperature >= dna.species.cold_level_3 && bodytemperature < dna.species.cold_level_2)
throw_alert("temp", /obj/screen/alert/cold, 2)
- take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature")
+ take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_2, updating_health = TRUE, used_weapon = "Low Body Temperature")
if(bodytemperature > -INFINITY && bodytemperature < dna.species.cold_level_3)
throw_alert("temp", /obj/screen/alert/cold, 3)
- take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature")
+ take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_3, updating_health = TRUE, used_weapon = "Low Body Temperature")
else
clear_alert("temp")
else
@@ -382,7 +382,7 @@
if(adjusted_pressure >= dna.species.hazard_high_pressure)
if(!(HEATRES in mutations))
var/pressure_damage = min( ( (adjusted_pressure / dna.species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE)
- take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure")
+ take_overall_damage(brute=pressure_damage, updating_health = TRUE, used_weapon = "High Pressure")
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
else
clear_alert("pressure")
@@ -396,7 +396,7 @@
if(COLDRES in mutations)
clear_alert("pressure")
else
- take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
+ take_overall_damage(brute=LOW_PRESSURE_DAMAGE, updating_health = TRUE, used_weapon = "Low Pressure")
throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
@@ -657,8 +657,6 @@
handle_trace_chems()
- updatehealth()
-
return //TODO: DEFERRED
/mob/living/carbon/human/handle_drunk()
@@ -744,13 +742,11 @@
heal_overall_damage(0.1, 0.1)
if(paralysis)
- blinded = 1
stat = UNCONSCIOUS
else if(sleeping)
speech_problem_flag = 1
- blinded = 1
stat = UNCONSCIOUS
if(mind)
@@ -761,7 +757,6 @@
adjustToxLoss(-1)
else if(status_flags & FAKEDEATH)
- blinded = 1
stat = UNCONSCIOUS
//Vision //god knows why this is here
@@ -771,26 +766,21 @@
if(!dna.species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
SetEyeBlind(0)
- blinded = 0
SetEyeBlurry(0)
else if(!vision || vision.is_broken()) // Vision organs cut out or broken? Permablind.
EyeBlind(2)
- blinded = 1
EyeBlurry(2)
else
//blindness
if(disabilities & BLIND) // Disabled-blind, doesn't get better on its own
- blinded = 1
else if(eye_blind) // Blindness, heals slowly over time
AdjustEyeBlind(-1)
- blinded = 1
else if(istype(glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) //resting your eyes with a blindfold heals blurry eyes faster
AdjustEyeBlurry(-3)
- blinded = 1
//blurry sight
if(vision.is_bruised()) // Vision organs impaired? Permablurry.
@@ -826,7 +816,6 @@
else //dead
- blinded = 1
SetSilence(0)
@@ -860,11 +849,13 @@
remoteview_target = null
reset_perspective(null)
- dna.species.handle_vision(src)
-
/mob/living/carbon/human/handle_hud_icons()
dna.species.handle_hud_icons(src)
+/mob/living/carbon/human/handle_hud_icons_health()
+ dna.species.handle_hud_icons_health(src)
+ handle_hud_icons_health_overlay()
+
/mob/living/carbon/human/handle_random_events()
// Puke if toxloss is too high
if(!stat)
diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm
index cb1d9b55319..ea6abc3a65c 100644
--- a/code/modules/mob/living/carbon/human/species/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/_species.dm
@@ -504,43 +504,23 @@
/datum/species/proc/handle_can_equip(obj/item/I, slot, disable_warning = 0, mob/living/carbon/human/user)
return FALSE
-/datum/species/proc/handle_vision(mob/living/carbon/human/H)
- // Right now this just handles blind, blurry, and similar states
- if(H.blinded || H.eye_blind)
- H.overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
- H.throw_alert("blind", /obj/screen/alert/blind)
- else
- H.clear_fullscreen("blind")
- H.clear_alert("blind")
-
-
- if(H.disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription
- if(H.glasses) //to every /obj/item
- var/obj/item/clothing/glasses/G = H.glasses
- if(G.prescription)
- H.clear_fullscreen("nearsighted")
- else
- H.overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
- else
- H.overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
- else
- H.clear_fullscreen("nearsighted")
-
- if(H.eye_blurry)
- H.overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry)
- else
- H.clear_fullscreen("blurry")
-
- if(H.druggy)
- H.overlay_fullscreen("high", /obj/screen/fullscreen/high)
- H.throw_alert("high", /obj/screen/alert/high)
- else
- H.clear_fullscreen("high")
- H.clear_alert("high")
+/datum/species/proc/get_perceived_trauma(mob/living/carbon/human/H)
+ return 100 - ((NO_PAIN in species_traits) ? 0 : H.traumatic_shock) - H.getStaminaLoss()
/datum/species/proc/handle_hud_icons(mob/living/carbon/human/H)
if(!H.client)
return
+ handle_hud_icons_health(H)
+ H.handle_hud_icons_health_overlay()
+ handle_hud_icons_nutrition(H)
+
+/datum/species/proc/handle_hud_icons_health(mob/living/carbon/H)
+ if(!H.client)
+ return
+ handle_hud_icons_health_side(H)
+ handle_hud_icons_health_doll(H)
+
+/datum/species/proc/handle_hud_icons_health_side(mob/living/carbon/human/H)
if(H.healths)
if(H.stat == DEAD)
H.healths.icon_state = "health7"
@@ -550,7 +530,7 @@
if(SCREWYHUD_DEAD) H.healths.icon_state = "health7"
if(SCREWYHUD_HEALTHY) H.healths.icon_state = "health0"
else
- switch(100 - ((NO_PAIN in species_traits) ? 0 : H.traumatic_shock) - H.staminaloss)
+ switch(get_perceived_trauma(H))
if(100 to INFINITY) H.healths.icon_state = "health0"
if(80 to 100) H.healths.icon_state = "health1"
if(60 to 80) H.healths.icon_state = "health2"
@@ -559,6 +539,7 @@
if(0 to 20) H.healths.icon_state = "health5"
else H.healths.icon_state = "health6"
+/datum/species/proc/handle_hud_icons_health_doll(mob/living/carbon/human/H)
if(H.healthdoll)
if(H.stat == DEAD)
H.healthdoll.icon_state = "healthdoll_DEAD"
@@ -588,6 +569,7 @@
H.healthdoll.overlays -= (cached_overlays - new_overlays)
H.healthdoll.cached_healthdoll_overlays = new_overlays
+/datum/species/proc/handle_hud_icons_nutrition(mob/living/carbon/human/H)
switch(H.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
H.throw_alert("nutrition", /obj/screen/alert/fat)
@@ -717,4 +699,4 @@ It'll return null if the organ doesn't correspond, so include null checks when u
random_species += initial(S.name)
var/picked_species = pick(random_species)
var/datum/species/selected_species = GLOB.all_species[picked_species]
- return species_name ? picked_species : selected_species.type
\ No newline at end of file
+ return species_name ? picked_species : selected_species.type
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
new file mode 100644
index 00000000000..ec8076cf37b
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -0,0 +1,1040 @@
+/datum/species/human
+ name = "Human"
+ name_plural = "Humans"
+ icobase = 'icons/mob/human_races/r_human.dmi'
+ deform = 'icons/mob/human_races/r_def_human.dmi'
+ primitive_form = /datum/species/monkey
+ language = "Sol Common"
+ species_traits = list(LIPS, CAN_BE_FAT)
+ skinned_type = /obj/item/stack/sheet/animalhide/human
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_SKIN_TONE | HAS_BODY_MARKINGS
+ dietflags = DIET_OMNI
+ blurb = "Humanity originated in the Sol system, and over the last five centuries has spread \
+ colonies across a wide swathe of space. They hold a wide range of forms and creeds.
\
+ While the central Sol government maintains control of its far-flung people, powerful corporate \
+ interests, rampant cyber and bio-augmentation and secretive factions make life on most human \
+ worlds tumultous at best."
+
+ reagent_tag = PROCESS_ORG
+ //Has standard darksight of 2.
+
+/datum/species/unathi
+ name = "Unathi"
+ name_plural = "Unathi"
+ icobase = 'icons/mob/human_races/r_lizard.dmi'
+ deform = 'icons/mob/human_races/r_def_lizard.dmi'
+ language = "Sinta'unathi"
+ tail = "sogtail"
+ skinned_type = /obj/item/stack/sheet/animalhide/lizard
+ unarmed_type = /datum/unarmed_attack/claws
+ primitive_form = /datum/species/monkey/unathi
+
+ blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \
+ Uuosa-Eso system, which roughly translates to 'burning mother'.
Coming from a harsh, radioactive \
+ desert planet, they mostly hold ideals of honesty, virtue, martial combat and bravery above all \
+ else, frequently even their own lives. They prefer warmer temperatures than most species and \
+ their native tongue is a heavy hissing laungage called Sinta'Unathi."
+
+ species_traits = list(LIPS)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_BODY_MARKINGS | HAS_HEAD_MARKINGS | HAS_SKIN_COLOR | HAS_ALT_HEADS | TAIL_WAGGING
+ dietflags = DIET_CARN
+
+ cold_level_1 = 280 //Default 260 - Lower is better
+ cold_level_2 = 220 //Default 200
+ cold_level_3 = 140 //Default 120
+
+ heat_level_1 = 380 //Default 360 - Higher is better
+ heat_level_2 = 420 //Default 400
+ heat_level_3 = 480 //Default 460
+
+ flesh_color = "#34AF10"
+ reagent_tag = PROCESS_ORG
+ base_color = "#066000"
+ //Default styles for created mobs.
+ default_headacc = "Simple"
+ default_headacc_colour = "#404040"
+ butt_sprite = "unathi"
+ brute_mod = 1.05
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs,
+ "liver" = /obj/item/organ/internal/liver/unathi,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes/unathi //3 darksight.
+ )
+
+ allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/lizard, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken,
+ /mob/living/simple_animal/crab, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, /mob/living/simple_animal/tribble)
+
+ suicide_messages = list(
+ "is attempting to bite their tongue off!",
+ "is jamming their claws into their eye sockets!",
+ "is twisting their own neck!",
+ "is holding their breath!")
+
+ var/datum/action/innate/tail_lash/lash = new()
+
+
+/datum/species/unathi/handle_post_spawn(var/mob/living/carbon/human/H)
+ lash.Grant(H)
+ ..()
+
+/datum/action/innate/tail_lash
+ name = "Tail lash"
+ icon_icon = 'icons/effects/effects.dmi'
+ button_icon_state = "tail"
+
+/datum/action/innate/tail_lash/Activate()
+ var/mob/living/carbon/human/user = owner
+ if(!user.restrained() || !user.buckled)
+ to_chat(user, "You need freedom of movement to tail lash!")
+ return
+ if(user.getStaminaLoss() >= 50)
+ to_chat(user, "Rest before tail lashing again!")
+ return
+ for(var/mob/living/carbon/human/C in orange(1))
+ var/obj/item/organ/external/E = C.get_organ(pick("l_leg", "r_leg", "l_foot", "r_foot", "groin"))
+ if(E)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message("[src] smacks [C] in [E] with their tail! ", "You hit [C] in [E] with your tail!")
+ user.adjustStaminaLoss(15)
+ C.apply_damage(5, BRUTE, E)
+ user.spin(20, 1)
+ playsound(user.loc, 'sound/weapons/slash.ogg', 50, 0)
+
+
+
+/datum/species/unathi/handle_death(var/mob/living/carbon/human/H)
+ H.stop_tail_wagging(1)
+
+/datum/species/tajaran
+ name = "Tajaran"
+ name_plural = "Tajaran"
+ icobase = 'icons/mob/human_races/r_tajaran.dmi'
+ deform = 'icons/mob/human_races/r_def_tajaran.dmi'
+ language = "Siik'tajr"
+ tail = "tajtail"
+ skinned_type = /obj/item/stack/sheet/fur
+ unarmed_type = /datum/unarmed_attack/claws
+
+ blurb = "The Tajaran race is a species of feline-like bipeds hailing from the planet of Ahdomai in the \
+ S'randarr system. They have been brought up into the space age by the Humans and Skrell, and have been \
+ influenced heavily by their long history of Slavemaster rule. They have a structured, clan-influenced way \
+ of family and politics. They prefer colder environments, and speak a variety of languages, mostly Siik'Maas, \
+ using unique inflections their mouths form."
+
+ cold_level_1 = 240
+ cold_level_2 = 180
+ cold_level_3 = 100
+
+ heat_level_1 = 340
+ heat_level_2 = 380
+ heat_level_3 = 440
+
+ primitive_form = /datum/species/monkey/tajaran
+
+ species_traits = list(LIPS, CAN_BE_FAT)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS | HAS_SKIN_COLOR | TAIL_WAGGING
+ dietflags = DIET_OMNI
+ taste_sensitivity = TASTE_SENSITIVITY_SHARP
+ reagent_tag = PROCESS_ORG
+ flesh_color = "#AFA59E"
+ base_color = "#424242"
+ butt_sprite = "tajaran"
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs,
+ "liver" = /obj/item/organ/internal/liver/tajaran,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes/tajaran /*Most Tajara see in full colour as a result of genetic augmentation, although it cost them their darksight (darksight = 2)
+ unless they choose otherwise by selecting the colourblind disability in character creation (darksight = 8 but colourblind).*/
+ )
+
+ allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/chick, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot,
+ /mob/living/simple_animal/tribble)
+
+ suicide_messages = list(
+ "is attempting to bite their tongue off!",
+ "is jamming their claws into their eye sockets!",
+ "is twisting their own neck!",
+ "is holding their breath!")
+
+/datum/species/tajaran/handle_death(var/mob/living/carbon/human/H)
+ H.stop_tail_wagging(1)
+
+/datum/species/vulpkanin
+ name = "Vulpkanin"
+ name_plural = "Vulpkanin"
+ icobase = 'icons/mob/human_races/r_vulpkanin.dmi'
+ deform = 'icons/mob/human_races/r_vulpkanin.dmi'
+ language = "Canilunzt"
+ primitive_form = /datum/species/monkey/vulpkanin
+ tail = "vulptail"
+ skinned_type = /obj/item/stack/sheet/fur
+ unarmed_type = /datum/unarmed_attack/claws
+
+ blurb = "Vulpkanin are a species of sharp-witted canine-pideds residing on the planet Altam just barely within the \
+ dual-star Vazzend system. Their politically de-centralized society and independent natures have led them to become a species and \
+ culture both feared and respected for their scientific breakthroughs. Discovery, loyalty, and utilitarianism dominates their lifestyles \
+ to the degree it can cause conflict with more rigorous and strict authorities. They speak a guttural language known as 'Canilunzt' \
+ which has a heavy emphasis on utilizing tail positioning and ear twitches to communicate intent."
+
+ species_traits = list(LIPS)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR
+ dietflags = DIET_OMNI
+ hunger_drain = 0.11
+ taste_sensitivity = TASTE_SENSITIVITY_SHARP
+ reagent_tag = PROCESS_ORG
+ flesh_color = "#966464"
+ base_color = "#CF4D2F"
+ butt_sprite = "vulp"
+
+ scream_verb = "yelps"
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs,
+ "liver" = /obj/item/organ/internal/liver/vulpkanin,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes/vulpkanin /*Most Vulpkanin see in full colour as a result of genetic augmentation, although it cost them their darksight (darksight = 2)
+ unless they choose otherwise by selecting the colourblind disability in character creation (darksight = 8 but colourblind).*/
+ )
+
+ allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/lizard, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken,
+ /mob/living/simple_animal/crab, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, /mob/living/simple_animal/tribble)
+
+ suicide_messages = list(
+ "is attempting to bite their tongue off!",
+ "is jamming their claws into their eye sockets!",
+ "is twisting their own neck!",
+ "is holding their breath!")
+
+/datum/species/vulpkanin/handle_death(var/mob/living/carbon/human/H)
+ H.stop_tail_wagging(1)
+
+/datum/species/skrell
+ name = "Skrell"
+ name_plural = "Skrell"
+ icobase = 'icons/mob/human_races/r_skrell.dmi'
+ deform = 'icons/mob/human_races/r_def_skrell.dmi'
+ language = "Skrellian"
+ primitive_form = /datum/species/monkey/skrell
+
+ blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \
+ the royals' or 'Light of the Crown'.
Skrell are a highly advanced and logical race who live under the rule \
+ of the Qerr'Katish, a caste within their society which keeps the empire of the Skrell running smoothly. Skrell are \
+ herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \
+ the secrets of their empire to their allies."
+
+ species_traits = list(LIPS)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_SKIN_COLOR | HAS_BODY_MARKINGS
+ dietflags = DIET_HERB
+ taste_sensitivity = TASTE_SENSITIVITY_DULL
+ flesh_color = "#8CD7A3"
+ blood_color = "#1D2CBF"
+ base_color = "#38b661" //RGB: 56, 182, 97.
+ default_hair_colour = "#38b661"
+ eyes = "skrell_eyes_s"
+ //Default styles for created mobs.
+ default_hair = "Skrell Male Tentacles"
+ reagent_tag = PROCESS_ORG
+ butt_sprite = "skrell"
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs,
+ "liver" = /obj/item/organ/internal/liver/skrell,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes, //Default darksight of 2.
+ "headpocket" = /obj/item/organ/internal/headpocket
+ )
+
+ suicide_messages = list(
+ "is attempting to bite their tongue off!",
+ "is jamming their thumbs into their eye sockets!",
+ "is twisting their own neck!",
+ "makes like a fish and suffocates!",
+ "is strangling themselves with their own tendrils!")
+
+/datum/species/vox
+ name = "Vox"
+ name_plural = "Vox"
+ icobase = 'icons/mob/human_races/vox/r_vox.dmi'
+ deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
+ language = "Vox-pidgin"
+ tail = "voxtail"
+ speech_sounds = list('sound/voice/shriek1.ogg')
+ speech_chance = 20
+ unarmed_type = /datum/unarmed_attack/claws //I dont think it will hurt to give vox claws too.
+
+ blurb = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \
+ scavenging vermin who prey on isolated stations, ships or planets to keep their own ancient arkships \
+ alive. They are four to five feet tall, reptillian, beaked, tailed and quilled; human crews often \
+ refer to them as 'shitbirds' for their violent and offensive nature, as well as their horrible \
+ smell.
Most humans will never meet a Vox raider, instead learning of this insular species through \
+ dealing with their traders and merchants; those that do rarely enjoy the experience."
+
+ brute_mod = 1.2 //20% more brute damage. Fragile bird bones.
+
+ warning_low_pressure = 50
+ hazard_low_pressure = 0
+
+ cold_level_1 = 80
+ cold_level_2 = 50
+ cold_level_3 = 0
+
+ breathid = "n2"
+
+ eyes = "vox_eyes_s"
+
+ species_traits = list(NO_SCAN, IS_WHITELISTED, NOTRANSSTING)
+ clothing_flags = HAS_SOCKS
+ dietflags = DIET_OMNI
+ bodyflags = HAS_ICON_SKIN_TONE | HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_BODY_MARKINGS | HAS_TAIL_MARKINGS
+
+ blood_color = "#2299FC"
+ flesh_color = "#808D11"
+ //Default styles for created mobs.
+ default_hair = "Short Vox Quills"
+ default_hair_colour = "#614f19" //R: 97, G: 79, B: 25
+ butt_sprite = "vox"
+
+ reagent_tag = PROCESS_ORG
+ scream_verb = "shrieks"
+ male_scream_sound = 'sound/voice/shriek1.ogg'
+ female_scream_sound = 'sound/voice/shriek1.ogg'
+ male_cough_sounds = list('sound/voice/shriekcough.ogg')
+ female_cough_sounds = list('sound/voice/shriekcough.ogg')
+ male_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
+ female_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
+
+ icon_skin_tones = list(
+ 1 = "Default Green",
+ 2 = "Dark Green",
+ 3 = "Brown",
+ 4 = "Grey",
+ 5 = "Emerald",
+ 6 = "Azure"
+ )
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs/vox,
+ "liver" = /obj/item/organ/internal/liver/vox,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes, //Default darksight of 2.
+ "stack" = /obj/item/organ/internal/stack //Not the same as the cortical stack implant Vox Raiders spawn with. The cortical stack implant is used
+ ) //for determining the success of the heist game-mode's 'leave nobody behind' objective, while this is just an organ.
+
+ suicide_messages = list(
+ "is attempting to bite their tongue off!",
+ "is jamming their claws into their eye sockets!",
+ "is twisting their own neck!",
+ "is holding their breath!",
+ "is deeply inhaling oxygen!")
+
+/datum/species/vox/handle_death(var/mob/living/carbon/human/H)
+ H.stop_tail_wagging(1)
+
+/datum/species/vox/after_equip_job(datum/job/J, mob/living/carbon/human/H)
+ if(!H.mind || !H.mind.assigned_role || H.mind.assigned_role != "Clown" && H.mind.assigned_role != "Mime")
+ H.unEquip(H.wear_mask)
+ H.unEquip(H.l_hand)
+
+ H.equip_or_collect(new /obj/item/clothing/mask/breath/vox(H), slot_wear_mask)
+ var/tank_pref = H.client && H.client.prefs ? H.client.prefs.speciesprefs : null
+ if(tank_pref)//Diseasel, here you go
+ H.equip_or_collect(new /obj/item/tank/nitrogen(H), slot_l_hand)
+ else
+ H.equip_or_collect(new /obj/item/tank/emergency_oxygen/vox(H), slot_l_hand)
+ to_chat(H, "You are now running on nitrogen internals from the [H.l_hand] in your hand. Your species finds oxygen toxic, so you must breathe nitrogen only.")
+ H.internal = H.l_hand
+ H.update_action_buttons_icon()
+
+/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
+ updatespeciescolor(H)
+ H.update_icons()
+ //H.verbs += /mob/living/carbon/human/proc/leap
+ ..()
+
+/datum/species/vox/updatespeciescolor(var/mob/living/carbon/human/H, var/owner_sensitive = 1) //Handling species-specific skin-tones for the Vox race.
+ if(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE) //Making sure we don't break Armalis.
+ var/new_icobase = 'icons/mob/human_races/vox/r_vox.dmi' //Default Green Vox.
+ var/new_deform = 'icons/mob/human_races/vox/r_def_vox.dmi' //Default Green Vox.
+ switch(H.s_tone)
+ if(6) //Azure Vox.
+ new_icobase = 'icons/mob/human_races/vox/r_voxazu.dmi'
+ new_deform = 'icons/mob/human_races/vox/r_def_voxazu.dmi'
+ H.tail = "voxtail_azu"
+ if(5) //Emerald Vox.
+ new_icobase = 'icons/mob/human_races/vox/r_voxemrl.dmi'
+ new_deform = 'icons/mob/human_races/vox/r_def_voxemrl.dmi'
+ H.tail = "voxtail_emrl"
+ if(4) //Grey Vox.
+ new_icobase = 'icons/mob/human_races/vox/r_voxgry.dmi'
+ new_deform = 'icons/mob/human_races/vox/r_def_voxgry.dmi'
+ H.tail = "voxtail_gry"
+ if(3) //Brown Vox.
+ new_icobase = 'icons/mob/human_races/vox/r_voxbrn.dmi'
+ new_deform = 'icons/mob/human_races/vox/r_def_voxbrn.dmi'
+ H.tail = "voxtail_brn"
+ if(2) //Dark Green Vox.
+ new_icobase = 'icons/mob/human_races/vox/r_voxdgrn.dmi'
+ new_deform = 'icons/mob/human_races/vox/r_def_voxdgrn.dmi'
+ H.tail = "voxtail_dgrn"
+ else //Default Green Vox.
+ H.tail = "voxtail" //Ensures they get an appropriately coloured tail depending on the skin-tone.
+
+ H.change_icobase(new_icobase, new_deform, owner_sensitive) //Update the icobase/deform of all our organs, but make sure we don't mess with frankenstein limbs in doing so.
+ H.update_dna()
+
+/datum/species/vox/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R)
+ if(R.id == "oxygen") //Armalis are above such petty things.
+ H.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) //Same as plasma.
+ H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM)
+ return 0 //Handling reagent removal on our own.
+
+ return ..()
+
+/datum/species/vox/armalis/handle_post_spawn(var/mob/living/carbon/human/H)
+ H.verbs += /mob/living/carbon/human/proc/leap
+ H.verbs += /mob/living/carbon/human/proc/gut
+ ..()
+
+/datum/species/vox/armalis
+ name = "Vox Armalis"
+ name_plural = "Vox Armalis"
+ icobase = 'icons/mob/human_races/r_armalis.dmi'
+ deform = 'icons/mob/human_races/r_armalis.dmi'
+ unarmed_type = /datum/unarmed_attack/claws/armalis
+
+ warning_low_pressure = 50
+ hazard_low_pressure = 0
+
+ cold_level_1 = 80
+ cold_level_2 = 50
+ cold_level_3 = 0
+
+ heat_level_1 = 2000
+ heat_level_2 = 3000
+ heat_level_3 = 4000
+
+ brute_mod = 0.2
+ burn_mod = 0.2
+
+ eyes = "blank_eyes"
+
+ species_traits = list(NO_SCAN, NO_BLOOD, NO_PAIN, IS_WHITELISTED)
+ bodyflags = HAS_TAIL
+ dietflags = DIET_OMNI //should inherit this from vox, this is here just in case
+
+ blood_color = "#2299FC"
+ flesh_color = "#808D11"
+
+ reagent_tag = PROCESS_ORG
+
+ tail = "armalis_tail"
+ icon_template = 'icons/mob/human_races/r_armalis.dmi'
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs/vox,
+ "liver" = /obj/item/organ/internal/liver,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "eyes" = /obj/item/organ/internal/eyes, //Default darksight of 2.
+ "stack" = /obj/item/organ/internal/stack //Not the same as the cortical stack implant Vox Raiders spawn with. The cortical stack implant is used
+ ) //for determining the success of the heist game-mode's 'leave nobody behind' objective, while this is just an organ.
+
+ suicide_messages = list(
+ "is attempting to bite their tongue off!",
+ "is jamming their claws into their eye sockets!",
+ "is twisting their own neck!",
+ "is holding their breath!",
+ "is huffing oxygen!")
+
+/datum/species/vox/armalis/handle_reagents() //Skip the Vox oxygen reagent toxicity. Armalis are above such things.
+ return 1
+
+/datum/species/kidan
+ name = "Kidan"
+ name_plural = "Kidan"
+ icobase = 'icons/mob/human_races/r_kidan.dmi'
+ deform = 'icons/mob/human_races/r_def_kidan.dmi'
+ language = "Chittin"
+ unarmed_type = /datum/unarmed_attack/claws
+
+ brute_mod = 0.8
+
+ species_traits = list(IS_WHITELISTED)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS
+ eyes = "kidan_eyes_s"
+ dietflags = DIET_HERB
+ blood_color = "#FB9800"
+ reagent_tag = PROCESS_ORG
+ //Default styles for created mobs.
+ default_headacc = "Normal Antennae"
+ butt_sprite = "kidan"
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs,
+ "liver" = /obj/item/organ/internal/liver/kidan,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes, //Default darksight of 2.
+ "lantern" = /obj/item/organ/internal/lantern
+ )
+
+ allowed_consumed_mobs = list(/mob/living/simple_animal/diona)
+
+ suicide_messages = list(
+ "is attempting to bite their antenna off!",
+ "is jamming their claws into their eye sockets!",
+ "is twisting their own neck!",
+ "is cracking their exoskeleton!",
+ "is stabbing themselves with their mandibles!",
+ "is holding their breath!")
+
+/datum/species/slime
+ name = "Slime People"
+ name_plural = "Slime People"
+ language = "Bubblish"
+ icobase = 'icons/mob/human_races/r_slime.dmi'
+ deform = 'icons/mob/human_races/r_slime.dmi'
+ remains_type = /obj/effect/decal/remains/slime
+
+ // More sensitive to the cold
+ cold_level_1 = 280
+ cold_level_2 = 240
+ cold_level_3 = 200
+ coldmod = 3
+
+ oxy_mod = 0
+ brain_mod = 2.5
+
+ male_cough_sounds = list('sound/effects/slime_squish.ogg')
+ female_cough_sounds = list('sound/effects/slime_squish.ogg')
+
+ species_traits = list(LIPS, IS_WHITELISTED, NO_BREATHE, NO_INTORGANS, NO_SCAN)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_SKIN_COLOR | NO_EYES
+ dietflags = DIET_CARN
+ reagent_tag = PROCESS_ORG
+
+ blood_color = "#0064C8"
+ exotic_blood = "water"
+ blood_damage_type = TOX
+
+ butt_sprite = "slime"
+ //Has default darksight of 2.
+
+ has_organ = list(
+ "brain" = /obj/item/organ/internal/brain/slime
+ )
+
+ suicide_messages = list(
+ "is melting into a puddle!",
+ "is ripping out their own core!",
+ "is turning a dull, brown color and melting into a puddle!")
+
+ var/reagent_skin_coloring = FALSE
+
+ var/datum/action/innate/regrow/grow = new()
+
+ species_abilities = list(
+ /mob/living/carbon/human/verb/toggle_recolor_verb,
+ /mob/living/carbon/human/proc/regrow_limbs
+ )
+
+/datum/species/slime/handle_post_spawn(var/mob/living/carbon/human/H)
+ grow.Grant(H)
+ ..()
+
+/datum/action/innate/regrow
+ name = "Regrow limbs"
+ icon_icon = 'icons/effects/effects.dmi'
+ button_icon_state = "greenglow"
+
+/datum/action/innate/regrow/Activate()
+ var/mob/living/carbon/human/user = owner
+ user.regrow_limbs()
+
+
+/datum/species/slime/handle_life(var/mob/living/carbon/human/H)
+//This is allegedly for code "style". Like a plaid sweater?
+#define SLIMEPERSON_COLOR_SHIFT_TRIGGER 0.1
+#define SLIMEPERSON_ICON_UPDATE_PERIOD 200 // 20 seconds
+#define SLIMEPERSON_BLOOD_SCALING_FACTOR 5 // Used to adjust how much of an effect the blood has on the rate of color change. Higher is slower.
+ // Slowly shifting to the color of the reagents
+ if(reagent_skin_coloring && H.reagents.total_volume > SLIMEPERSON_COLOR_SHIFT_TRIGGER)
+ var/blood_amount = H.blood_volume
+ var/r_color = mix_color_from_reagents(H.reagents.reagent_list)
+ var/new_body_color = BlendRGB(r_color, H.skin_colour, (blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)/((blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)+(H.reagents.total_volume)))
+ H.skin_colour = new_body_color
+ if(world.time % SLIMEPERSON_ICON_UPDATE_PERIOD > SLIMEPERSON_ICON_UPDATE_PERIOD - 20) // The 20 is because this gets called every 2 seconds, from the mob controller
+ for(var/organname in H.bodyparts_by_name)
+ var/obj/item/organ/external/E = H.bodyparts_by_name[organname]
+ if(istype(E) && E.dna && istype(E.dna.species, /datum/species/slime))
+ E.sync_colour_to_human(H)
+ H.update_hair(0)
+ H.update_body()
+ ..()
+
+#undef SLIMEPERSON_COLOR_SHIFT_TRIGGER
+#undef SLIMEPERSON_ICON_UPDATE_PERIOD
+#undef SLIMEPERSON_BLOOD_SCALING_FACTOR
+
+/mob/living/carbon/human/proc/toggle_recolor(silent = FALSE)
+ if(!isslimeperson(src))
+ if(!silent)
+ to_chat(src, "You're not a slime person!")
+ return
+
+ var/datum/species/slime/S = dna.species
+ if(S.reagent_skin_coloring)
+ S.reagent_skin_coloring = TRUE
+ if(!silent)
+ to_chat(src, "You adjust your internal chemistry to filter out pigments from things you consume.")
+ else
+ S.reagent_skin_coloring = TRUE
+ if(!silent)
+ to_chat(src, "You adjust your internal chemistry to permit pigments in chemicals you consume to tint you.")
+
+/mob/living/carbon/human/verb/toggle_recolor_verb()
+ set category = "IC"
+ set name = "Toggle Reagent Recoloring"
+ set desc = "While active, you'll slowly adjust your body's color to that of the reagents inside of you, moderated by how much blood you have."
+
+ toggle_recolor()
+
+
+/mob/living/carbon/human/proc/regrow_limbs()
+ set category = "IC"
+ set name = "Regrow Limbs"
+ set desc = "Regrow one of your missing limbs at the cost of a large amount of hunger"
+
+#define SLIMEPERSON_HUNGERCOST 50
+#define SLIMEPERSON_MINHUNGER 250
+#define SLIMEPERSON_REGROWTHDELAY 450 // 45 seconds
+
+ if(stat || paralysis || stunned)
+ to_chat(src, "You cannot regenerate missing limbs in your current state.")
+ return
+
+ if(nutrition < SLIMEPERSON_MINHUNGER)
+ to_chat(src, "You're too hungry to regenerate a limb!")
+ return
+
+ var/list/missing_limbs = list()
+ for(var/l in bodyparts_by_name)
+ var/obj/item/organ/external/E = bodyparts_by_name[l]
+ if(!istype(E))
+ var/list/limblist = dna.species.has_limbs[l]
+ var/obj/item/organ/external/limb = limblist["path"]
+ var/parent_organ = initial(limb.parent_organ)
+ var/obj/item/organ/external/parentLimb = bodyparts_by_name[parent_organ]
+ if(!istype(parentLimb))
+ continue
+ missing_limbs[initial(limb.name)] = l
+
+ if(!missing_limbs.len)
+ to_chat(src, "You're not missing any limbs!")
+ return
+
+ var/limb_select = input(src, "Choose a limb to regrow", "Limb Regrowth") as null|anything in missing_limbs
+ var/chosen_limb = missing_limbs[limb_select]
+
+ visible_message("[src] begins to hold still and concentrate on [p_their()] missing [limb_select]...", "You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)")
+ if(do_after(src, SLIMEPERSON_REGROWTHDELAY, needhand=0, target = src))
+ if(stat || paralysis || stunned)
+ to_chat(src, "You cannot regenerate missing limbs in your current state.")
+ return
+
+ if(nutrition < SLIMEPERSON_MINHUNGER)
+ to_chat(src, "You're too hungry to regenerate a limb!")
+ return
+
+ var/obj/item/organ/external/O = bodyparts_by_name[chosen_limb]
+
+ var/stored_brute = 0
+ var/stored_burn = 0
+ if(istype(O))
+ to_chat(src, "You distribute the damaged tissue around your body, out of the way of your new pseudopod!")
+ var/obj/item/organ/external/doomedStump = O
+ stored_brute = doomedStump.brute_dam
+ stored_burn = doomedStump.burn_dam
+ qdel(O)
+
+ var/limb_list = dna.species.has_limbs[chosen_limb]
+ var/obj/item/organ/external/limb_path = limb_list["path"]
+ // Parent check
+ var/obj/item/organ/external/potential_parent = bodyparts_by_name[initial(limb_path.parent_organ)]
+ if(!istype(potential_parent))
+ to_chat(src, "You've lost the organ that you've been growing your new part on!")
+ return // No rayman for you
+ // Grah this line will leave a "not used" warning, in spite of the fact that the new() proc WILL do the thing.
+ // Bothersome.
+ var/obj/item/organ/external/new_limb = new limb_path(src)
+ new_limb.open = 0 // This is just so that the compiler won't think that new_limb is unused, because the compiler is horribly stupid.
+ adjustBruteLoss(stored_brute)
+ adjustFireLoss(stored_burn)
+ update_body()
+ updatehealth("slime person regrowth")
+ UpdateDamageIcon()
+ nutrition -= SLIMEPERSON_HUNGERCOST
+ visible_message("[src] finishes regrowing [p_their()] missing [new_limb]!", "You finish regrowing your [limb_select]")
+ else
+ to_chat(src, "You need to hold still in order to regrow a limb!")
+ return
+
+#undef SLIMEPERSON_HUNGERCOST
+#undef SLIMEPERSON_MINHUNGER
+#undef SLIMEPERSON_REGROWTHDELAY
+
+/datum/species/slime/handle_pre_change(mob/living/carbon/human/H)
+ ..()
+ if(reagent_skin_coloring)
+ H.toggle_recolor(silent = 1)
+
+/datum/species/grey
+ name = "Grey"
+ name_plural = "Greys"
+ icobase = 'icons/mob/human_races/r_grey.dmi'
+ deform = 'icons/mob/human_races/r_def_grey.dmi'
+ language = "Psionic Communication"
+ eyes = "grey_eyes_s"
+ butt_sprite = "grey"
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart,
+ "lungs" = /obj/item/organ/internal/lungs,
+ "liver" = /obj/item/organ/internal/liver/grey,
+ "kidneys" = /obj/item/organ/internal/kidneys,
+ "brain" = /obj/item/organ/internal/brain/grey,
+ "appendix" = /obj/item/organ/internal/appendix,
+ "eyes" = /obj/item/organ/internal/eyes/grey //5 darksight.
+ )
+
+ brute_mod = 1.25 //greys are fragile
+
+ default_genes = list(REMOTE_TALK)
+
+
+ species_traits = list(LIPS, IS_WHITELISTED, CAN_BE_FAT)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_BODY_MARKINGS
+ dietflags = DIET_HERB
+ reagent_tag = PROCESS_ORG
+ blood_color = "#A200FF"
+
+/datum/species/grey/handle_dna(var/mob/living/carbon/C, var/remove)
+ if(!remove)
+ C.dna.SetSEState(REMOTETALKBLOCK,1,1)
+ genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED)
+ else
+ C.dna.SetSEState(REMOTETALKBLOCK,0,1)
+ genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED)
+ ..()
+
+/datum/species/grey/water_act(var/mob/living/carbon/C, volume, temperature, source)
+ ..()
+ C.take_organ_damage(5,min(volume,20))
+ C.emote("scream")
+
+/datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H)
+ var/speech_pref = H.client.prefs.speciesprefs
+ if(speech_pref)
+ H.mind.speech_span = "wingdings"
+
+/datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
+ if(R.id == "sacid")
+ H.reagents.del_reagent(R.id)
+ return 0
+ return ..()
+
+/datum/species/diona
+ name = "Diona"
+ name_plural = "Dionaea"
+ icobase = 'icons/mob/human_races/r_diona.dmi'
+ deform = 'icons/mob/human_races/r_def_plant.dmi'
+ language = "Rootspeak"
+ speech_sounds = list('sound/voice/dionatalk1.ogg') //Credit https://www.youtube.com/watch?v=ufnvlRjsOTI [0:13 - 0:16]
+ speech_chance = 20
+ unarmed_type = /datum/unarmed_attack/diona
+ //primitive_form = "Nymph"
+ slowdown = 5
+ remains_type = /obj/effect/decal/cleanable/ash
+
+
+ warning_low_pressure = 50
+ hazard_low_pressure = -1
+
+ cold_level_1 = 50
+ cold_level_2 = -1
+ cold_level_3 = -1
+
+ heat_level_1 = 300
+ heat_level_2 = 340
+ heat_level_3 = 400
+
+ blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
+ species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
+ there is no effective upper limit to the number that can fuse in gestalt, and reports exist of the Epsilon Ursae \
+ Minoris primary being ringed with a cloud of singing space-station-sized entities.
The Dionaea coexist peacefully with \
+ all known species, especially the Skrell. Their communal mind makes them slow to react, and they have difficulty understanding \
+ even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \
+ water and other radiation."
+
+ species_traits = list(NO_BREATHE, RADIMMUNE, IS_PLANT, NO_BLOOD, NO_PAIN)
+ clothing_flags = HAS_SOCKS
+ default_hair_colour = "#000000"
+ dietflags = 0 //Diona regenerate nutrition in light and water, no diet necessary
+ taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
+ skinned_type = /obj/item/stack/sheet/wood
+
+ oxy_mod = 0
+
+ body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
+ blood_color = "#004400"
+ flesh_color = "#907E4A"
+ butt_sprite = "diona"
+
+ reagent_tag = PROCESS_ORG
+
+ has_organ = list(
+ "nutrient channel" = /obj/item/organ/internal/liver/diona,
+ "neural strata" = /obj/item/organ/internal/heart/diona,
+ "receptor node" = /obj/item/organ/internal/eyes/diona, //Default darksight of 2.
+ "gas bladder" = /obj/item/organ/internal/brain/diona,
+ "polyp segment" = /obj/item/organ/internal/kidneys/diona,
+ "anchoring ligament" = /obj/item/organ/internal/appendix/diona
+ )
+
+ vision_organ = /obj/item/organ/internal/eyes/diona
+ has_limbs = list(
+ "chest" = list("path" = /obj/item/organ/external/chest/diona),
+ "groin" = list("path" = /obj/item/organ/external/groin/diona),
+ "head" = list("path" = /obj/item/organ/external/head/diona),
+ "l_arm" = list("path" = /obj/item/organ/external/arm/diona),
+ "r_arm" = list("path" = /obj/item/organ/external/arm/right/diona),
+ "l_leg" = list("path" = /obj/item/organ/external/leg/diona),
+ "r_leg" = list("path" = /obj/item/organ/external/leg/right/diona),
+ "l_hand" = list("path" = /obj/item/organ/external/hand/diona),
+ "r_hand" = list("path" = /obj/item/organ/external/hand/right/diona),
+ "l_foot" = list("path" = /obj/item/organ/external/foot/diona),
+ "r_foot" = list("path" = /obj/item/organ/external/foot/right/diona)
+ )
+
+ suicide_messages = list(
+ "is losing branches!",
+ "pulls out a secret stash of herbicide and takes a hearty swig!",
+ "is pulling themselves apart!")
+
+/datum/species/diona/can_understand(var/mob/other)
+ if(istype(other, /mob/living/simple_animal/diona))
+ return 1
+ return 0
+
+/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H)
+ H.gender = NEUTER
+
+ return ..()
+
+/datum/species/diona/handle_life(var/mob/living/carbon/human/H)
+ H.radiation = Clamp(H.radiation, 0, 100) //We have to clamp this first, then decrease it, or there's a few edge cases of massive heals if we clamp and decrease at the same time.
+ var/rads = H.radiation / 25
+ H.radiation = max(H.radiation-rads, 0)
+ H.nutrition = min(H.nutrition+rads, NUTRITION_LEVEL_WELL_FED+10)
+ H.adjustBruteLoss(-(rads))
+ H.adjustToxLoss(-(rads))
+
+ var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
+ if(isturf(H.loc)) //else, there's considered to be no light
+ var/turf/T = H.loc
+ light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights
+ H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10)
+
+ if(light_amount > 0)
+ H.clear_alert("nolight")
+ else
+ H.throw_alert("nolight", /obj/screen/alert/nolight)
+
+ if((light_amount >= 5) && !H.suiciding) //if there's enough light, heal
+
+ H.adjustBruteLoss(-(light_amount/2))
+ H.adjustFireLoss(-(light_amount/4))
+ if(H.nutrition < NUTRITION_LEVEL_STARVING+50)
+ H.take_overall_damage(10,0)
+ ..()
+
+/datum/species/machine
+ name = "Machine"
+ name_plural = "Machines"
+
+ blurb = "Positronic intelligence really took off in the 26th century, and it is not uncommon to see independant, free-willed \
+ robots on many human stations, particularly in fringe systems where standards are slightly lax and public opinion less relevant \
+ to corporate operations. IPCs (Integrated Positronic Chassis) are a loose category of self-willed robots with a humanoid form, \
+ generally self-owned after being 'born' into servitude; they are reliable and dedicated workers, albeit more than slightly \
+ inhuman in outlook and perspective."
+
+ icobase = 'icons/mob/human_races/r_machine.dmi'
+ deform = 'icons/mob/human_races/r_machine.dmi'
+ language = "Trinary"
+ remains_type = /obj/effect/decal/remains/robot
+ skinned_type = /obj/item/stack/sheet/metal // Let's grind up IPCs for station resources!
+
+ eyes = "blank_eyes"
+ brute_mod = 2.5 // 100% * 2.5 * 0.6 (robolimbs) ~= 150%
+ burn_mod = 2.5 // So they take 50% extra damage from brute/burn overall.
+ tox_mod = 0
+ clone_mod = 0
+ oxy_mod = 0
+ death_message = "gives one shrill beep before falling limp, their monitor flashing blue before completely shutting off..."
+
+ species_traits = list(IS_WHITELISTED, NO_BREATHE, NO_SCAN, NO_BLOOD, NO_PAIN, NO_DNA, RADIMMUNE, VIRUSIMMUNE, NOTRANSSTING)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
+ bodyflags = HAS_SKIN_COLOR | HAS_HEAD_MARKINGS | HAS_HEAD_ACCESSORY | ALL_RPARTS
+ dietflags = 0 //IPCs can't eat, so no diet
+ taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
+ blood_color = "#1F181F"
+ flesh_color = "#AAAAAA"
+ //Default styles for created mobs.
+ default_hair = "Blue IPC Screen"
+ can_revive_by_healing = 1
+ has_gender = FALSE
+ reagent_tag = PROCESS_SYN
+ male_scream_sound = 'sound/goonstation/voice/robot_scream.ogg'
+ female_scream_sound = 'sound/goonstation/voice/robot_scream.ogg'
+ male_cough_sounds = list('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
+ female_cough_sounds = list('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
+ male_sneeze_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
+ female_sneeze_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
+ butt_sprite = "machine"
+
+ has_organ = list(
+ "brain" = /obj/item/organ/internal/brain/mmi_holder/posibrain,
+ "cell" = /obj/item/organ/internal/cell,
+ "optics" = /obj/item/organ/internal/eyes/optical_sensor, //Default darksight of 2.
+ "charger" = /obj/item/organ/internal/cyberimp/arm/power_cord
+ )
+
+ vision_organ = /obj/item/organ/internal/eyes/optical_sensor
+ has_limbs = list(
+ "chest" = list("path" = /obj/item/organ/external/chest/ipc),
+ "groin" = list("path" = /obj/item/organ/external/groin/ipc),
+ "head" = list("path" = /obj/item/organ/external/head/ipc),
+ "l_arm" = list("path" = /obj/item/organ/external/arm/ipc),
+ "r_arm" = list("path" = /obj/item/organ/external/arm/right/ipc),
+ "l_leg" = list("path" = /obj/item/organ/external/leg/ipc),
+ "r_leg" = list("path" = /obj/item/organ/external/leg/right/ipc),
+ "l_hand" = list("path" = /obj/item/organ/external/hand/ipc),
+ "r_hand" = list("path" = /obj/item/organ/external/hand/right/ipc),
+ "l_foot" = list("path" = /obj/item/organ/external/foot/ipc),
+ "r_foot" = list("path" = /obj/item/organ/external/foot/right/ipc)
+ )
+
+ suicide_messages = list(
+ "is powering down!",
+ "is smashing their own monitor!",
+ "is twisting their own neck!",
+ "is downloading extra RAM!",
+ "is frying their own circuits!",
+ "is blocking their ventilation port!")
+
+ species_abilities = list(
+ /mob/living/carbon/human/proc/change_monitor
+ )
+
+/datum/species/machine/handle_death(var/mob/living/carbon/human/H)
+ var/obj/item/organ/external/head/head_organ = H.get_organ("head")
+ if(!head_organ)
+ return
+ head_organ.h_style = "Bald"
+ head_organ.f_style = "Shaved"
+ spawn(100)
+ if(H)
+ H.update_hair()
+ H.update_fhair()
+
+/datum/species/drask
+ name = "Drask"
+ name_plural = "Drask"
+ icobase = 'icons/mob/human_races/r_drask.dmi'
+ deform = 'icons/mob/human_races/r_drask.dmi'
+ language = "Orluum"
+ eyes = "drask_eyes_s"
+
+ speech_sounds = list('sound/voice/DraskTalk.ogg')
+ speech_chance = 20
+ male_scream_sound = 'sound/voice/DraskTalk2.ogg'
+ female_scream_sound = 'sound/voice/DraskTalk2.ogg'
+ male_cough_sounds = 'sound/voice/DraskCough.ogg'
+ female_cough_sounds = 'sound/voice/DraskCough.ogg'
+ male_sneeze_sound = 'sound/voice/DraskSneeze.ogg'
+ female_sneeze_sound = 'sound/voice/DraskSneeze.ogg'
+
+ burn_mod = 2
+ //exotic_blood = "cryoxadone"
+ body_temperature = 273
+
+ blurb = "Hailing from Hoorlm, planet outside what is usually considered a habitable \
+ orbit, the Drask evolved to live in extreme cold. Their strange bodies seem \
+ to operate better the colder their surroundings are, and can regenerate rapidly \
+ when breathing supercooled gas.
On their homeworld, the Drask live long lives \
+ in their labyrinthine settlements, carved out beneath Hoorlm's icy surface, where the air \
+ is of breathable density."
+
+ suicide_messages = list(
+ "is self-warming with friction!",
+ "is jamming fingers through their big eyes!",
+ "is sucking in warm air!",
+ "is holding their breath!")
+
+ species_traits = list(LIPS, IS_WHITELISTED)
+ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT
+ bodyflags = HAS_SKIN_TONE | HAS_BODY_MARKINGS
+ dietflags = DIET_OMNI
+
+ cold_level_1 = -1 //Default 260 - Lower is better
+ cold_level_2 = -1 //Default 200
+ cold_level_3 = -1 //Default 120
+ coldmod = -1
+
+ heat_level_1 = 300 //Default 360 - Higher is better
+ heat_level_2 = 340 //Default 400
+ heat_level_3 = 400 //Default 460
+ heatmod = 2
+
+ flesh_color = "#a3d4eb"
+ reagent_tag = PROCESS_ORG
+ base_color = "#a3d4eb"
+ blood_color = "#a3d4eb"
+ butt_sprite = "drask"
+
+ has_organ = list(
+ "heart" = /obj/item/organ/internal/heart/drask,
+ "lungs" = /obj/item/organ/internal/lungs/drask,
+ "metabolic strainer" = /obj/item/organ/internal/liver/drask,
+ "eyes" = /obj/item/organ/internal/eyes/drask, //5 darksight.
+ "brain" = /obj/item/organ/internal/brain/drask
+ )
diff --git a/code/modules/mob/living/carbon/human/update_stat.dm b/code/modules/mob/living/carbon/human/update_stat.dm
new file mode 100644
index 00000000000..e079328206e
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/update_stat.dm
@@ -0,0 +1,27 @@
+/mob/living/carbon/human/update_stat(reason = "none given")
+ if(status_flags & GODMODE)
+ return
+ ..(reason)
+ if(stat != DEAD)
+ switch(getBrainLoss())
+ if(100 to 120)
+ Weaken(20)
+ create_debug_log("collapsed from brain damage, trigger reason: [reason]")
+ if(120 to INFINITY)
+ visible_message("[src] goes limp, [p_their()] facial expression utterly blank.")
+ death()
+ create_debug_log("died of brain damage, trigger reason: [reason]")
+ else
+ if(dna.species && dna.species.can_revive_by_healing)
+ var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain)
+ if(B)
+ if((health >= (config.health_threshold_dead + config.health_threshold_crit) * 0.5) && getBrainLoss()<120)
+ update_revive()
+ create_debug_log("revived from healing, trigger reason: [reason]")
+
+/mob/living/carbon/human/update_nearsighted_effects()
+ var/obj/item/clothing/glasses/G = glasses
+ if((disabilities & NEARSIGHTED) && (!istype(G) || !G.prescription))
+ overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
+ else
+ clear_fullscreen("nearsighted")
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 1a590c2e397..18e42c98d08 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -219,19 +219,19 @@
radiation--
if(prob(25))
adjustToxLoss(1)
- updatehealth()
+ updatehealth("handle mutations and radiation(0-50)")
if(50 to 75)
radiation -= 2
adjustToxLoss(1)
if(prob(5))
radiation -= 5
- updatehealth()
+ updatehealth("handle mutations and radiation(50-75)")
if(75 to 100)
radiation -= 3
adjustToxLoss(3)
- updatehealth()
+ updatehealth("handle mutations and radiation(75-100)")
radiation = Clamp(radiation, 0, 100)
@@ -259,39 +259,11 @@
M.adjustBruteLoss(5)
nutrition += 10
-//This updates the health and status of the mob (conscious, unconscious, dead)
-/mob/living/carbon/handle_regular_status_updates()
-
- if(..()) //alive
-
- if(health <= config.health_threshold_dead)
- death()
- return
-
- if(getOxyLoss() > 50 || health <= config.health_threshold_crit)
- Paralyse(3)
- stat = UNCONSCIOUS
-
- if(sleeping)
- stat = UNCONSCIOUS
-
- return 1
-
-/mob/living/carbon/proc/CheckStamina()
- if(staminaloss)
- var/total_health = (health - staminaloss)
- if(total_health <= config.health_threshold_softcrit && !stat)
- to_chat(src, "You're too exhausted to keep going...")
- Weaken(5)
- setStaminaLoss(health - 2)
- return
- setStaminaLoss(max((staminaloss - 3), 0))
-
//this updates all special effects: stunned, sleeping, weakened, druggy, stuttering, etc..
/mob/living/carbon/handle_status_effects()
..()
- CheckStamina()
+ setStaminaLoss(max((staminaloss - 3), 0))
var/restingpwr = 1 + 4 * resting
@@ -375,61 +347,6 @@
Sleeping(2)
return sleeping
-
-//this handles hud updates. Calls update_vision() and handle_hud_icons()
-/mob/living/carbon/handle_regular_hud_updates()
- if(!client)
- return 0
-
- if(stat == UNCONSCIOUS && health <= config.health_threshold_crit)
- var/severity = 0
- switch(health)
- if(-20 to -10) severity = 1
- if(-30 to -20) severity = 2
- if(-40 to -30) severity = 3
- if(-50 to -40) severity = 4
- if(-60 to -50) severity = 5
- if(-70 to -60) severity = 6
- if(-80 to -70) severity = 7
- if(-90 to -80) severity = 8
- if(-95 to -90) severity = 9
- if(-INFINITY to -95) severity = 10
- overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
- else
- clear_fullscreen("crit")
- if(oxyloss)
- var/severity = 0
- switch(oxyloss)
- if(10 to 20) severity = 1
- if(20 to 25) severity = 2
- if(25 to 30) severity = 3
- if(30 to 35) severity = 4
- if(35 to 40) severity = 5
- if(40 to 45) severity = 6
- if(45 to INFINITY) severity = 7
- overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
- else
- clear_fullscreen("oxy")
-
- //Fire and Brute damage overlay (BSSR)
- var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp
- damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not.
- if(hurtdamage)
- var/severity = 0
- switch(hurtdamage)
- if(5 to 15) severity = 1
- if(15 to 30) severity = 2
- if(30 to 45) severity = 3
- if(45 to 70) severity = 4
- if(70 to 85) severity = 5
- if(85 to INFINITY) severity = 6
- overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
- else
- clear_fullscreen("brute")
-
- ..()
- return 1
-
/mob/living/carbon/update_sight()
if(!client)
return
@@ -464,6 +381,9 @@
return
/mob/living/carbon/handle_hud_icons_health()
+ if(!client)
+ return
+
if(healths)
if(stat != DEAD)
switch(health)
@@ -483,3 +403,51 @@
healths.icon_state = "health6"
else
healths.icon_state = "health7"
+ handle_hud_icons_health_overlay()
+
+/mob/living/carbon/proc/handle_hud_icons_health_overlay()
+ if(stat == UNCONSCIOUS && health <= config.health_threshold_crit)
+ var/severity = 0
+ switch(health)
+ if(-20 to -10) severity = 1
+ if(-30 to -20) severity = 2
+ if(-40 to -30) severity = 3
+ if(-50 to -40) severity = 4
+ if(-60 to -50) severity = 5
+ if(-70 to -60) severity = 6
+ if(-80 to -70) severity = 7
+ if(-90 to -80) severity = 8
+ if(-95 to -90) severity = 9
+ if(-INFINITY to -95) severity = 10
+ overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
+ else if(stat == CONSCIOUS)
+ clear_fullscreen("crit")
+ if(oxyloss)
+ var/severity = 0
+ switch(oxyloss)
+ if(10 to 20) severity = 1
+ if(20 to 25) severity = 2
+ if(25 to 30) severity = 3
+ if(30 to 35) severity = 4
+ if(35 to 40) severity = 5
+ if(40 to 45) severity = 6
+ if(45 to INFINITY) severity = 7
+ overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
+ else
+ clear_fullscreen("oxy")
+
+ //Fire and Brute damage overlay (BSSR)
+ var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp
+ damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not.
+ if(hurtdamage)
+ var/severity = 0
+ switch(hurtdamage)
+ if(5 to 15) severity = 1
+ if(15 to 30) severity = 2
+ if(30 to 45) severity = 3
+ if(45 to 70) severity = 4
+ if(70 to 85) severity = 5
+ if(85 to INFINITY) severity = 6
+ overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
+ else
+ clear_fullscreen("brute")
diff --git a/code/modules/mob/living/carbon/slime/death.dm b/code/modules/mob/living/carbon/slime/death.dm
index 5c551d6e470..055f972df07 100644
--- a/code/modules/mob/living/carbon/slime/death.dm
+++ b/code/modules/mob/living/carbon/slime/death.dm
@@ -1,6 +1,8 @@
/mob/living/carbon/slime/death(gibbed)
- if(stat == DEAD)
- return
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
if(!gibbed)
if(is_adult)
var/mob/living/carbon/slime/M = new /mob/living/carbon/slime(loc)
@@ -15,13 +17,5 @@
return
else
visible_message("The [name] seizes up and falls limp...")
- stat = DEAD
icon_state = "[colour] baby slime dead"
- overlays.len = 0
-
- update_canmove()
-
- if(ticker && ticker.mode)
- ticker.mode.check_win()
-
- return ..(gibbed)
\ No newline at end of file
+ overlays.Cut()
diff --git a/code/modules/mob/living/carbon/slime/life.dm b/code/modules/mob/living/carbon/slime/life.dm
index 5b0ee885ce7..2f2c05c9452 100644
--- a/code/modules/mob/living/carbon/slime/life.dm
+++ b/code/modules/mob/living/carbon/slime/life.dm
@@ -131,7 +131,7 @@
else // a hot place
bodytemperature += adjust_body_temperature(bodytemperature, loc_temp, 1)
- updatehealth()
+ updatehealth("handle environment")
return //TODO: DEFERRED
@@ -163,7 +163,7 @@
if(reagents.get_reagent_amount("epinephrine")>=5)
mutation_chance = max(mutation_chance - 5,0) //Prevents mutation chance going <0%
reagents.remove_reagent("epinephrine", 5)
- updatehealth()
+ updatehealth("handle chemicals in body")
return //TODO: DEFERRED
@@ -195,7 +195,6 @@
if(src.stat == DEAD)
src.lying = 1
- src.blinded = 1
else
if(src.paralysis || src.stunned || src.weakened || (status_flags && FAKEDEATH)) //Stunned etc.
if(src.stunned > 0)
@@ -207,7 +206,6 @@
src.stat = 0
if(src.paralysis > 0)
AdjustParalysis(-1)
- src.blinded = 0
src.lying = 0
src.stat = 0
@@ -219,7 +217,6 @@
if(src.eye_blind)
src.SetEyeBlind(0)
- src.blinded = 1
if(src.ear_deaf > 0) SetEarDeaf(0)
if(src.ear_damage < 25)
@@ -227,8 +224,6 @@
src.density = !( src.lying )
- if(src.disabilities & BLIND)
- src.blinded = 1
if(src.disabilities & DEAF)
EarDeaf(1)
diff --git a/code/modules/mob/living/carbon/slime/powers.dm b/code/modules/mob/living/carbon/slime/powers.dm
index a2aca96c163..23918680197 100644
--- a/code/modules/mob/living/carbon/slime/powers.dm
+++ b/code/modules/mob/living/carbon/slime/powers.dm
@@ -102,9 +102,9 @@
adjustFireLoss(-10)
adjustCloneLoss(-10)
- updatehealth()
+ updatehealth("slime feeding")
if(Victim)
- Victim.updatehealth()
+ Victim.updatehealth("slime feeding")
sleep(rand(15,45))
diff --git a/code/modules/mob/living/carbon/update_status.dm b/code/modules/mob/living/carbon/update_status.dm
index 33838b3e8f2..63d34788a98 100644
--- a/code/modules/mob/living/carbon/update_status.dm
+++ b/code/modules/mob/living/carbon/update_status.dm
@@ -1,15 +1,29 @@
-/mob/living/carbon/update_stat()
+/mob/living/carbon/update_stat(reason = "none given")
if(status_flags & GODMODE)
return
if(stat != DEAD)
// if(health <= min_health)
if(health <= config.health_threshold_dead)
death()
+ create_debug_log("died of damage, trigger reason: [reason]")
return
// if(paralysis || sleeping || getOxyLoss() > low_oxy_ko || (status_flags & FAKEDEATH) || health <= crit_health)
if(paralysis || sleeping || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= config.health_threshold_crit)
if(stat == CONSCIOUS)
KnockOut()
+ create_debug_log("fell unconscious, trigger reason: [reason]")
else
if(stat == UNCONSCIOUS)
WakeUp()
+ create_debug_log("woke up, trigger reason: [reason]")
+
+/mob/living/carbon/update_stamina()
+ ..()
+ if(staminaloss)
+ var/total_health = (health - staminaloss)
+ if(total_health <= config.health_threshold_softcrit && !stat)
+ to_chat(src, "You're too exhausted to keep going...")
+ Weaken(5)
+ setStaminaLoss(health - 2)
+ handle_hud_icons_health()
+ return
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 96caf40b191..734dd556b48 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -24,7 +24,7 @@
adjustCloneLoss(damage * blocked)
if(STAMINA)
adjustStaminaLoss(damage * blocked)
- updatehealth()
+ updatehealth("apply damage")
return 1
/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
@@ -83,7 +83,7 @@
if(JITTER)
if(status_flags & CANSTUN)
Jitter(effect * blocked)
- updatehealth()
+ updatehealth("apply effect")
return 1
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/slur = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0, var/stamina = 0, var/jitter = 0)
@@ -99,3 +99,205 @@
if(stamina) apply_damage(stamina, STAMINA, null, blocked)
if(jitter) apply_effect(jitter, JITTER, blocked)
return 1
+
+
+/mob/living/proc/getBruteLoss()
+ return bruteloss
+
+/mob/living/proc/adjustBruteLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_bruteloss = bruteloss
+ bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2))
+ if(old_bruteloss == bruteloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("adjustBruteLoss")
+
+/mob/living/proc/getOxyLoss()
+ return oxyloss
+
+/mob/living/proc/adjustOxyLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_oxyloss = oxyloss
+ oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2))
+ if(old_oxyloss == oxyloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("adjustOxyLoss")
+
+/mob/living/proc/setOxyLoss(amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_oxyloss = oxyloss
+ oxyloss = amount
+ if(old_oxyloss == oxyloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("setOxyLoss")
+
+/mob/living/proc/getToxLoss()
+ return toxloss
+
+/mob/living/proc/adjustToxLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_toxloss = toxloss
+ toxloss = min(max(toxloss + amount, 0),(maxHealth*2))
+ if(old_toxloss == toxloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("adjustToxLoss")
+
+/mob/living/proc/setToxLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_toxloss = toxloss
+ toxloss = amount
+ if(old_toxloss == toxloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("setToxLoss")
+
+/mob/living/proc/getFireLoss()
+ return fireloss
+
+/mob/living/proc/adjustFireLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_fireloss = fireloss
+ fireloss = min(max(fireloss + amount, 0),(maxHealth*2))
+ if(old_fireloss == fireloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("adjustFireLoss")
+
+/mob/living/proc/getCloneLoss()
+ return cloneloss
+
+/mob/living/proc/adjustCloneLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ var/old_cloneloss = cloneloss
+ cloneloss = min(max(cloneloss + amount, 0),(maxHealth*2))
+ if(old_cloneloss == cloneloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("adjustCloneLoss")
+
+/mob/living/proc/setCloneLoss(var/amount, updating_health = TRUE)
+ if(status_flags & GODMODE) return 0 //godmode
+ var/old_cloneloss = cloneloss
+ cloneloss = amount
+ if(old_cloneloss == cloneloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth("setCloneLoss")
+
+/mob/living/proc/getBrainLoss()
+ return 0
+
+/mob/living/proc/adjustBrainLoss(amount, updating = TRUE)
+ return STATUS_UPDATE_NONE
+
+/mob/living/proc/setBrainLoss(amount, updating = TRUE)
+ return STATUS_UPDATE_NONE
+
+/mob/living/proc/getStaminaLoss()
+ return staminaloss
+
+/mob/living/proc/adjustStaminaLoss(amount, updating = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE
+ var/old_stamloss = staminaloss
+ staminaloss = min(max(staminaloss + amount, 0),(maxHealth*2))
+ if(old_stamloss == staminaloss)
+ updating = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_STAMINA
+ if(updating)
+ handle_hud_icons_health()
+ update_stamina()
+
+/mob/living/proc/setStaminaLoss(amount, updating = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE
+ var/old_stamloss = staminaloss
+ staminaloss = amount
+ if(old_stamloss == staminaloss)
+ updating = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_STAMINA
+ if(updating)
+ handle_hud_icons_health()
+ update_stamina()
+
+/mob/living/proc/getMaxHealth()
+ return maxHealth
+
+/mob/living/proc/setMaxHealth(var/newMaxHealth)
+ maxHealth = newMaxHealth
+
+
+
+// heal ONE external organ, organ gets randomly selected from damaged ones.
+/mob/living/proc/heal_organ_damage(brute, burn, updating_health = TRUE)
+ adjustBruteLoss(-brute, FALSE)
+ adjustFireLoss(-burn, FALSE)
+ if(updating_health)
+ updatehealth("heal organ damage")
+
+// damage ONE external organ, organ gets randomly selected from damaged ones.
+/mob/living/proc/take_organ_damage(brute, burn, updating_health = TRUE)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ adjustBruteLoss(brute, FALSE)
+ adjustFireLoss(burn, FALSE)
+ if(updating_health)
+ updatehealth("take organ damage")
+
+// heal MANY external organs, in random order
+/mob/living/proc/heal_overall_damage(brute, burn, updating_health = TRUE)
+ adjustBruteLoss(-brute, FALSE)
+ adjustFireLoss(-burn, FALSE)
+ if(updating_health)
+ updatehealth("heal overall damage")
+
+// damage MANY external organs, in random order
+/mob/living/proc/take_overall_damage(brute, burn, updating_health = TRUE, used_weapon = null)
+ if(status_flags & GODMODE)
+ return FALSE //godmode
+ adjustBruteLoss(brute, FALSE)
+ adjustFireLoss(burn, FALSE)
+ if(updating_health)
+ updatehealth("take overall damage")
+
+/mob/living/proc/has_organic_damage()
+ return (maxHealth - health)
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 9056a078791..7987f460815 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -1,12 +1,71 @@
+//This is the proc for gibbing a mob. Cannot gib ghosts.
+//added different sort of gibs and animations. N
+/mob/living/gib()
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
+ // hide and freeze for the GC
+ notransform = 1
+ canmove = 0
+ icon = null
+ invisibility = 101
+
+ playsound(src.loc, 'sound/goonstation/effects/gib.ogg', 50, 1)
+ gibs(loc, dna)
+ QDEL_IN(src, 0)
+ return TRUE
+
+//This is the proc for turning a mob into ash. Mostly a copy of gib code (above).
+//Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here.
+//Dusting robots does not eject the MMI, so it's a bit more powerful than gib() /N
+/mob/living/dust()
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
+ new /obj/effect/decal/cleanable/ash(loc)
+ // hide and freeze them while they get GC'd
+ notransform = 1
+ canmove = 0
+ icon = null
+ invisibility = 101
+ QDEL_IN(src, 0)
+ return TRUE
+
+/mob/living/melt()
+ if(!death(TRUE) && stat != DEAD)
+ return FALSE
+ // hide and freeze them while they get GC'd
+ notransform = 1
+ canmove = 0
+ icon = null
+ invisibility = 101
+ QDEL_IN(src, 0)
+ return TRUE
+
+/mob/living/proc/can_die()
+ return !(stat == DEAD || (status_flags & GODMODE))
+
+// Returns true if mob transitioned from live to dead
+// Do a check with `can_die` beforehand if you need to do any
+// handling before `stat` is set
/mob/living/death(gibbed)
- blinded = max(blinded, 1)
+ if(!can_die())
+ // Whew! Good thing I'm indestructible! (or already dead)
+ return FALSE
+
+ stat = DEAD
+ SetDizzy(0)
+ SetJitter(0)
+ SetLoseBreath(0)
if(suiciding)
mind.suicided = TRUE
-
clear_fullscreens()
+ update_sight()
update_action_buttons_icon()
+ med_hud_set_health()
+ med_hud_set_status()
+ callHook("death", list(src, gibbed))
+
for(var/s in ownedSoullinks)
var/datum/soullink/S = s
S.ownerDies(gibbed, src)
@@ -14,7 +73,19 @@
var/datum/soullink/S = s
S.sharerDies(gibbed, src)
- med_hud_set_health()
- med_hud_set_status()
+ if(!gibbed)
+ update_canmove()
- ..(gibbed)
+ timeofdeath = world.time
+
+ living_mob_list -= src
+ dead_mob_list += src
+ if(mind)
+ mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0)
+ respawnable_list += src
+
+ if(ticker && ticker.mode)
+ ticker.mode.check_win()
+
+ // u no we dead
+ return TRUE
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index f02065b3a0a..032f46d42dd 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -8,12 +8,6 @@
return
var/datum/gas_mixture/environment = loc.return_air()
- //Apparently, the person who wrote this code designed it so that
- //blinded get reset each cycle and then get activated later in the
- //code. Very ugly. I dont care. Moving this stuff here so its easy
- //to find it.
- blinded = null
-
if(stat != DEAD)
//Chemicals in the body
handle_chemicals_in_body()
@@ -51,8 +45,6 @@
handle_disabilities() // eye, ear, brain damages
handle_status_effects() //all special effects, stunned, weakened, jitteryness, hallucination, sleeping, etc
- update_canmove(1) // set to 1 to not update icon action buttons; rip this argument out if Life is ever refactored to be non-stupid. -Fox
-
if(client)
//regular_hud_updates() //THIS DOESN'T FUCKING UPDATE SHIT
handle_regular_hud_updates() //IT JUST REMOVES FUCKING HUD IMAGES
@@ -90,21 +82,7 @@
//This updates the health and status of the mob (conscious, unconscious, dead)
/mob/living/proc/handle_regular_status_updates()
-
- updatehealth()
-
- if(stat != DEAD)
-
- if(paralysis)
- stat = UNCONSCIOUS
-
- else if(status_flags & FAKEDEATH)
- stat = UNCONSCIOUS
-
- else
- stat = CONSCIOUS
-
- return 1
+ return stat != DEAD
//this updates all special effects: stunned, sleeping, weakened, druggy, stuttering, etc..
/mob/living/proc/handle_status_effects()
@@ -215,29 +193,6 @@
if(stat == DEAD)
return
- if(blinded || eye_blind)
- overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
- throw_alert("blind", /obj/screen/alert/blind)
- else
- clear_fullscreen("blind")
- clear_alert("blind")
-
- if(disabilities & NEARSIGHTED)
- overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
- else
- clear_fullscreen("nearsighted")
-
- if(eye_blurry)
- overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry)
- else
- clear_fullscreen("blurry")
-
- if(druggy)
- overlay_fullscreen("high", /obj/screen/fullscreen/high)
- throw_alert("high", /obj/screen/alert/high)
- else
- clear_fullscreen("high")
- clear_alert("high")
if(machine)
if(!machine.check_eye(src))
@@ -247,6 +202,8 @@
reset_perspective(null)
/mob/living/proc/update_sight()
+ if(stat == DEAD)
+ grant_death_vision()
return
// Gives a mob the vision of being dead
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 4cfdc7bb1f4..fdd91bf1cd9 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -214,16 +214,14 @@
/mob/living/verb/succumb()
set hidden = 1
if(InCritical())
- attack_log += "[src] has ["succumbed to death"] with [round(health, 0.1)] points of health!"
+ create_attack_log("[src] has ["succumbed to death"] with [round(health, 0.1)] points of health!")
adjustOxyLoss(health - config.health_threshold_dead)
- updatehealth()
// super check for weird mobs, including ones that adjust hp
// we don't want to go overboard and gib them, though
for(var/i = 1 to 5)
if(health < config.health_threshold_dead)
break
take_overall_damage(max(5, health - config.health_threshold_dead), 0)
- updatehealth()
to_chat(src, "You have given up life and succumbed to death.")
/mob/living/proc/InCritical()
@@ -233,12 +231,15 @@
..()
flash_eyes()
-/mob/living/proc/updatehealth()
+/mob/living/proc/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = maxHealth
stat = CONSCIOUS
return
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss()
+
+ update_stat("updatehealth([reason])")
+ handle_hud_icons_health()
med_hud_set_health()
@@ -268,89 +269,6 @@
return temperature
-// ++++ROCKDTBEN++++ MOB PROCS -- Ask me before touching.
-// Stop! ... Hammertime! ~Carn
-// I touched them without asking... I'm soooo edgy ~Erro (added nodamage checks)
-// no ~Tigerkitty
-
-/mob/living/proc/getBruteLoss()
- return bruteloss
-
-/mob/living/proc/adjustBruteLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/getOxyLoss()
- return oxyloss
-
-/mob/living/proc/adjustOxyLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/setOxyLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- oxyloss = amount
-
-/mob/living/proc/getToxLoss()
- return toxloss
-
-/mob/living/proc/adjustToxLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- toxloss = min(max(toxloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/setToxLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- toxloss = amount
-
-/mob/living/proc/getFireLoss()
- return fireloss
-
-/mob/living/proc/adjustFireLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- fireloss = min(max(fireloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/getCloneLoss()
- return cloneloss
-
-/mob/living/proc/adjustCloneLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- cloneloss = min(max(cloneloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/setCloneLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- cloneloss = amount
-
-/mob/living/proc/getBrainLoss()
- return brainloss
-
-/mob/living/proc/adjustBrainLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- brainloss = min(max(brainloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/setBrainLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
- brainloss = amount
-
-/mob/living/proc/getStaminaLoss()
- return staminaloss
-
-/mob/living/proc/adjustStaminaLoss(var/amount)
- if(status_flags & GODMODE) return 0
- staminaloss = min(max(staminaloss + amount, 0),(maxHealth*2))
-
-/mob/living/proc/setStaminaLoss(var/amount)
- if(status_flags & GODMODE) return 0
- staminaloss = amount
-
-/mob/living/proc/getMaxHealth()
- return maxHealth
-
-/mob/living/proc/setMaxHealth(var/newMaxHealth)
- maxHealth = newMaxHealth
-
-// ++++ROCKDTBEN++++ MOB PROCS //END
-
-
/mob/proc/get_contents()
@@ -421,35 +339,6 @@
var/obj/item/organ/external/def_zone = ran_zone(t)
return def_zone
-// heal ONE external organ, organ gets randomly selected from damaged ones.
-/mob/living/proc/heal_organ_damage(var/brute, var/burn)
- adjustBruteLoss(-brute)
- adjustFireLoss(-burn)
- updatehealth()
-
-// damage ONE external organ, organ gets randomly selected from damaged ones.
-/mob/living/proc/take_organ_damage(var/brute, var/burn)
- if(status_flags & GODMODE) return 0 //godmode
- adjustBruteLoss(brute)
- adjustFireLoss(burn)
- updatehealth()
-
-// heal MANY external organs, in random order
-/mob/living/proc/heal_overall_damage(var/brute, var/burn)
- adjustBruteLoss(-brute)
- adjustFireLoss(-burn)
- updatehealth()
-
-// damage MANY external organs, in random order
-/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
- if(status_flags & GODMODE) return 0 //godmode
- adjustBruteLoss(brute)
- adjustFireLoss(burn)
- updatehealth()
-
-/mob/living/proc/has_organic_damage()
- return (maxHealth - health)
-
/mob/living/proc/restore_all_organs()
return
@@ -474,6 +363,8 @@
C.reagents.clear_reagents()
C.reagents.addiction_list.Cut()
+// rejuvenate: Called by `revive` to get the mob into a revivable state
+// the admin "rejuvenate" command calls `revive`, not this proc.
/mob/living/proc/rejuvenate()
var/mob/living/carbon/human/human_mob = null //Get this declared for use later.
@@ -496,7 +387,6 @@
radiation = 0
SetDruggy(0)
SetHallucinate(0)
- blinded = 0
nutrition = NUTRITION_LEVEL_FED + 50
bodytemperature = 310
CureBlind()
@@ -544,11 +434,10 @@
restore_all_organs()
surgeries.Cut() //End all surgeries.
if(stat == DEAD)
- dead_mob_list -= src
- living_mob_list += src
- timeofdeath = 0
+ update_revive()
+ else if(stat == UNCONSCIOUS)
+ WakeUp()
- stat = CONSCIOUS
update_fire()
regenerate_icons()
restore_blood()
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index aaeb26fe2c6..ed6ef267fb0 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -122,7 +122,7 @@
M.mech_toxin_damage(src)
else
return
- updatehealth()
+ updatehealth("mech melee attack")
M.occupant_message("You hit [src].")
visible_message("[src] has been hit by [M.name].", \
"[src] has been hit by [M.name].")
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 4afdd9281ce..44d34516ab0 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -12,7 +12,6 @@
var/toxloss = 0 //Toxic damage caused by being poisoned or radiated
var/fireloss = 0 //Burn damage caused by being way too hot, too cold or burnt.
var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims
- var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot.
var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are stunned if it gets too high. Holodeck and hallucinations deal this.
@@ -67,4 +66,3 @@
hud_possible = list(HEALTH_HUD,STATUS_HUD,SPECIALROLE_HUD)
var/list/status_effects //a list of all status effects the mob has
-
diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm
index a2fc8e934cb..57e5623cbbf 100644
--- a/code/modules/mob/living/login.dm
+++ b/code/modules/mob/living/login.dm
@@ -2,6 +2,8 @@
..()
//Mind updates
sync_mind()
+ update_stat("mob login")
+ update_sight()
//If they're SSD, remove it so they can wake back up.
player_logged = 0
@@ -11,8 +13,8 @@
to_chat(src, "You can ventcrawl! Use alt+click on vents to quickly travel about the station.")
if(ranged_ability)
- ranged_ability.add_ranged_ability(src, "You currently have [ranged_ability] active!")
-
+ ranged_ability.add_ranged_ability(src, "You currently have [ranged_ability] active!")
+
//Should update regardless of if we can ventcrawl, since we can end up in pipes in other ways.
update_pipe_vision()
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 2c4b4612e5f..daf723597de 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -549,7 +549,6 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/blob_act()
if(stat != 2)
adjustBruteLoss(60)
- updatehealth()
return TRUE
return FALSE
@@ -685,7 +684,6 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/bullet_act(var/obj/item/projectile/Proj)
..(Proj)
- updatehealth()
return 2
/mob/living/silicon/ai/reset_perspective(atom/A)
diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm
index 553af6f09b8..ca4d2da70bd 100644
--- a/code/modules/mob/living/silicon/ai/death.dm
+++ b/code/modules/mob/living/silicon/ai/death.dm
@@ -1,19 +1,16 @@
/mob/living/silicon/ai/death(gibbed)
- if(stat == DEAD)
- return
- stat = DEAD
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
if(custom_sprite == 1)//check for custom AI sprite, defaulting to blue screen if no.
icon_state = "[ckey]-ai_dead"
else if("[icon_state]_dead" in icon_states(icon,1))
icon_state = "[icon_state]_dead"
else
icon_state = "ai_dead"
- update_canmove()
if(eyeobj)
eyeobj.setLoc(get_turf(src))
- sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
- see_in_dark = 8
- see_invisible = SEE_INVISIBLE_LEVEL_TWO
shuttle_caller_list -= src
SSshuttle.autoEvac()
@@ -38,12 +35,7 @@
explosion(src.loc, 3, 6, 12, 15)
for(var/obj/machinery/ai_status_display/O in world) //change status
- spawn( 0 )
O.mode = 2
- if(istype(loc, /obj/item/aicard))
- loc.icon_state = "aicard-404"
- timeofdeath = world.time
- if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0)
-
- return ..(gibbed)
+ if(istype(loc, /obj/item/aicard))
+ loc.icon_state = "aicard-404"
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index 42f132e39d4..c3b22129cb8 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -14,13 +14,11 @@
reset_perspective(null)
unset_machine()
- updatehealth()
+ updatehealth("life")
+ if(stat == DEAD)
+ return
update_gravity(mob_has_gravity())
- if(health <= config.health_threshold_dead)
- death()
- return 0
-
if(!eyeobj || QDELETED(eyeobj) || !eyeobj.loc)
view_core()
@@ -44,21 +42,15 @@
var/area/my_area = get_area(src)
if(!lacks_power())
- if(aiRestorePowerRoutine == 2)
- to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
+ if(aiRestorePowerRoutine > 1)
+ update_blind_effects()
aiRestorePowerRoutine = 0
- clear_fullscreen("blind")
- update_sight()
- else if(aiRestorePowerRoutine == 3)
- to_chat(src, "Alert cancelled. Power has been restored.")
- aiRestorePowerRoutine = 0
- clear_fullscreen("blind")
update_sight()
+ to_chat(src, "Alert cancelled. Power has been restored[aiRestorePowerRoutine == 2 ? "without our assistance" : ""].")
else
- overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
-
if(lacks_power())
if(!aiRestorePowerRoutine)
+ update_blind_effects()
aiRestorePowerRoutine = 1
update_sight()
to_chat(src, "You have lost power!")
@@ -73,7 +65,7 @@
if(!lacks_power())
to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
aiRestorePowerRoutine = 0
- clear_fullscreen("blind")
+ update_blind_effects()
update_sight()
return
to_chat(src, "Fault confirmed: missing external power. Shutting down main control system to save power.")
@@ -112,7 +104,7 @@
if(!lacks_power())
to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
aiRestorePowerRoutine = 0
- clear_fullscreen("blind")
+ update_blind_effects()
update_sight()
return
@@ -143,12 +135,13 @@
if(get_nations_mode())
process_nations_ai()
-/mob/living/silicon/ai/updatehealth()
+/mob/living/silicon/ai/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = 100
stat = CONSCIOUS
else
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
+ update_stat("updatehealth([reason])")
diag_hud_set_status()
diag_hud_set_health()
diff --git a/code/modules/mob/living/silicon/ai/update_status.dm b/code/modules/mob/living/silicon/ai/update_status.dm
index 4fa060abf39..18a35534db8 100644
--- a/code/modules/mob/living/silicon/ai/update_status.dm
+++ b/code/modules/mob/living/silicon/ai/update_status.dm
@@ -1,10 +1,15 @@
-/mob/living/silicon/ai/update_stat()
+/mob/living/silicon/ai/update_stat(reason = "none given")
if(status_flags & GODMODE)
return
if(stat != DEAD)
if(health <= config.health_threshold_dead)
death()
+ create_debug_log("died of damage, trigger reason: [reason]")
return
else if(stat == UNCONSCIOUS)
WakeUp()
+ create_debug_log("woke up, trigger reason: [reason]")
//diag_hud_set_status()
+
+/mob/living/silicon/ai/has_vision(information_only = FALSE)
+ return ..() && !lacks_power()
diff --git a/code/modules/mob/living/silicon/decoy/death.dm b/code/modules/mob/living/silicon/decoy/death.dm
index 624343af464..46a60822aa8 100644
--- a/code/modules/mob/living/silicon/decoy/death.dm
+++ b/code/modules/mob/living/silicon/decoy/death.dm
@@ -1,10 +1,10 @@
/mob/living/silicon/decoy/death(gibbed)
- if(stat == DEAD)
- return
- stat = DEAD
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
icon_state = "ai-crash"
for(var/obj/machinery/ai_status_display/O in world) //change status
if(atoms_share_level(O, src))
O.mode = 2
- ..(0)
- gib()
\ No newline at end of file
+ gib()
diff --git a/code/modules/mob/living/silicon/decoy/life.dm b/code/modules/mob/living/silicon/decoy/life.dm
index dc1324dc6dd..b8919373faf 100644
--- a/code/modules/mob/living/silicon/decoy/life.dm
+++ b/code/modules/mob/living/silicon/decoy/life.dm
@@ -2,17 +2,18 @@
return
-/mob/living/silicon/decoy/updatehealth()
+/mob/living/silicon/decoy/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = 100
stat = CONSCIOUS
else
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
- update_stat()
+ update_stat("updatehealth([reason])")
-/mob/living/silicon/decoy/update_stat()
+/mob/living/silicon/decoy/update_stat(reason = "none given")
if(stat == DEAD)
return
if(health <= 0)
- death()
\ No newline at end of file
+ death()
+ create_debug_log("died of damage, trigger reason: [reason]")
diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm
index b0f498014d8..48539a9689b 100644
--- a/code/modules/mob/living/silicon/pai/death.dm
+++ b/code/modules/mob/living/silicon/pai/death.dm
@@ -1,28 +1,17 @@
/mob/living/silicon/pai/death(gibbed, cleanWipe)
- if(stat == DEAD)
- return
+ if(can_die())
+ if(!cleanWipe)
+ force_fold_out()
- if(!cleanWipe)
- force_fold_out()
+ visible_message("[src] emits a dull beep before it loses power and collapses.", "You hear a dull beep followed by the sound of glass crunching.")
+ name = "pAI debris"
+ desc = "The unfortunate remains of some poor personal AI device."
+ icon_state = "[chassis]_dead"
- var/turf/T = get_turf_or_move(loc)
- for(var/mob/M in viewers(T))
- M.show_message("[src] emits a dull beep before it loses power and collapses.", 3, "You hear a dull beep followed by the sound of glass crunching.", 2)
- name = "pAI debris"
- desc = "The unfortunate remains of some poor personal AI device."
- icon_state = "[chassis]_dead"
- stat = DEAD
- canmove = 0
- sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
- see_in_dark = 8
- see_invisible = SEE_INVISIBLE_LEVEL_TWO
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
- //var/tod = time2text(world.realtime,"hh:mm:ss") //weasellos time of death patch
- //mind.store_memory("Time of death: [tod]", 0)
-
- //New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here.
- //Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak
- if(mind) qdel(mind)
- living_mob_list -= src
if(icon_state != "[chassis]_dead" || cleanWipe)
qdel(src)
diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm
index abcfc6bd643..0abaa12bdd9 100644
--- a/code/modules/mob/living/silicon/pai/life.dm
+++ b/code/modules/mob/living/silicon/pai/life.dm
@@ -18,11 +18,10 @@
qdel(src.cable)
cable = null
-/mob/living/silicon/pai/updatehealth()
+/mob/living/silicon/pai/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = 100
stat = CONSCIOUS
else
health = 100 - getBruteLoss() - getFireLoss()
- if(health <= 0)
- death(0)
\ No newline at end of file
+ update_stat("updatehealth([reason])")
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index d635422073f..210aeadb7ee 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -160,9 +160,8 @@
return 1
/mob/living/silicon/pai/blob_act()
- if(stat != 2)
+ if(stat != DEAD)
adjustBruteLoss(60)
- updatehealth()
return 1
return 0
@@ -238,7 +237,6 @@
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
add_attack_logs(M, src, "Animal attacked for [damage] damage")
adjustBruteLoss(damage)
- updatehealth()
/mob/living/silicon/pai/proc/switchCamera(var/obj/machinery/camera/C)
usr:cameraFollow = null
@@ -454,9 +452,7 @@
if(stat == DEAD)
to_chat(user, "\The [src] is beyond help, at this point.")
else if(getBruteLoss() || getFireLoss())
- adjustBruteLoss(-15)
- adjustFireLoss(-15)
- updatehealth()
+ heal_overall_damage(15, 15)
N.use(1)
user.visible_message("[user.name] applied some [W] at [src]'s damaged areas.",\
"You apply some [W] at [name]'s damaged areas.")
@@ -467,7 +463,6 @@
else if(W.force)
visible_message("[user.name] attacks [src] with [W]!")
adjustBruteLoss(W.force)
- updatehealth()
else
visible_message("[user.name] bonks [src] harmlessly with [W].")
spawn(1)
@@ -557,7 +552,6 @@
/mob/living/silicon/pai/bullet_act(var/obj/item/projectile/Proj)
..(Proj)
- updatehealth()
if(stat != 2)
spawn(1)
close_up()
diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm
index 2d52af6e89d..29bfabddb0a 100644
--- a/code/modules/mob/living/silicon/pai/recruit.dm
+++ b/code/modules/mob/living/silicon/pai/recruit.dm
@@ -226,7 +226,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
Submit Personality |
-
+
"}
M << browse(dat, "window=paiRecruit;size=580x580;")
diff --git a/code/modules/mob/living/silicon/pai/update_status.dm b/code/modules/mob/living/silicon/pai/update_status.dm
index 155ecc84a28..110b645c11f 100644
--- a/code/modules/mob/living/silicon/pai/update_status.dm
+++ b/code/modules/mob/living/silicon/pai/update_status.dm
@@ -1,3 +1,4 @@
-/mob/living/silicon/pai/update_stat()
+/mob/living/silicon/pai/update_stat(reason = "none given")
if(health <= 0)
death(gibbed = 0)
+ create_debug_log("died of damage, trigger reason: [reason]")
diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm
index dfdaac8015c..69cf6f93872 100644
--- a/code/modules/mob/living/silicon/robot/component.dm
+++ b/code/modules/mob/living/silicon/robot/component.dm
@@ -21,7 +21,9 @@
src.owner = R
/datum/robot_component/proc/install()
+ go_online()
/datum/robot_component/proc/uninstall()
+ go_offline()
/datum/robot_component/proc/destroy()
if(wrapped)
@@ -34,34 +36,62 @@
installed = -1
uninstall()
-/datum/robot_component/proc/take_damage(brute, electronics, sharp)
+/datum/robot_component/proc/take_damage(brute, electronics, sharp, updating_health = TRUE)
if(installed != 1)
return
+ if(owner && updating_health)
+ owner.updatehealth("component '[src]' take damage")
+
brute_damage += brute
electronics_damage += electronics
if(brute_damage + electronics_damage >= max_damage)
destroy()
-/datum/robot_component/proc/heal_damage(brute, electronics)
+/datum/robot_component/proc/heal_damage(brute, electronics, updating_health = TRUE)
if(installed != 1)
// If it's not installed, can't repair it.
return 0
+ if(owner && updating_health)
+ owner.updatehealth("component '[src]' heal damage")
+
brute_damage = max(0, brute_damage - brute)
electronics_damage = max(0, electronics_damage - electronics)
/datum/robot_component/proc/is_powered()
return (installed == 1) && (brute_damage + electronics_damage < max_damage) && (powered)
-
/datum/robot_component/proc/consume_power()
if(toggled == 0)
powered = 0
return
powered = 1
+/datum/robot_component/proc/disable()
+ if(!component_disabled)
+ go_offline()
+ component_disabled++
+
+/datum/robot_component/proc/enable()
+ component_disabled--
+ if(!component_disabled)
+ go_online()
+
+/datum/robot_component/proc/toggle()
+ toggled = !toggled
+ if(toggled)
+ go_online()
+ else
+ go_offline()
+
+/datum/robot_component/proc/go_online()
+ return
+
+/datum/robot_component/proc/go_offline()
+ return
+
/datum/robot_component/armour
name = "armour plating"
external_type = /obj/item/robot_parts/robot_component/armour
@@ -72,10 +102,25 @@
external_type = /obj/item/robot_parts/robot_component/actuator
max_damage = 50
+/datum/robot_component/actuator/go_online()
+ owner.update_stat()
+
+/datum/robot_component/actuator/go_offline()
+ owner.update_stat()
+
/datum/robot_component/cell
name = "power cell"
max_damage = 50
+/datum/robot_component/cell/is_powered()
+ return ..() && owner.cell
+
+/datum/robot_component/cell/go_online()
+ owner.update_stat()
+
+/datum/robot_component/cell/go_offline()
+ owner.update_stat()
+
/datum/robot_component/cell/destroy()
..()
owner.cell = null
@@ -95,6 +140,14 @@
external_type = /obj/item/robot_parts/robot_component/camera
max_damage = 40
+/datum/robot_component/camera/go_online()
+ owner.update_blind_effects()
+ owner.update_sight()
+
+/datum/robot_component/camera/go_offline()
+ owner.update_blind_effects()
+ owner.update_sight()
+
/datum/robot_component/diagnosis_unit
name = "self-diagnosis unit"
external_type = /obj/item/robot_parts/robot_component/diagnosis_unit
@@ -117,9 +170,9 @@
/mob/living/silicon/robot/proc/disable_component(module_name, duration)
var/datum/robot_component/D = get_component(module_name)
- D.component_disabled++
+ D.disable()
spawn(duration)
- D.component_disabled--
+ D.enable()
// Returns component by it's string name
/mob/living/silicon/robot/proc/get_component(var/component_name)
@@ -154,6 +207,8 @@
name = "camera"
icon_state = "camera"
+
+
/obj/item/robot_parts/robot_component/diagnosis_unit
name = "diagnosis unit"
icon_state = "diagnosis_unit"
diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm
index 82667be2d3d..f9432ab7836 100644
--- a/code/modules/mob/living/silicon/robot/death.dm
+++ b/code/modules/mob/living/silicon/robot/death.dm
@@ -46,11 +46,20 @@
/mob/living/silicon/robot/death(gibbed)
- if(stat == DEAD) return
- if(!gibbed)
- emote("deathgasp")
- stat = DEAD
- update_canmove()
+ if(can_die())
+ if(!gibbed)
+ emote("deathgasp")
+
+ if(module)
+ module.handle_death(gibbed)
+
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
+
+ diag_hud_set_status()
+ diag_hud_set_health()
if(camera)
camera.status = 0
update_headlamp(1) //So borg lights are disabled when killed.
@@ -59,13 +68,6 @@
var/obj/machinery/recharge_station/RC = loc
RC.go_out()
- sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
- see_in_dark = 8
- see_invisible = SEE_INVISIBLE_LEVEL_TWO
update_icons()
- timeofdeath = world.time
- if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0)
sql_report_cyborg_death(src)
-
- return ..(gibbed)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index aaaeb15b283..eb1596c55c6 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -215,33 +215,13 @@
//DRONE LIFE/DEATH
//For some goddamn reason robots have this hardcoded. Redefining it for our fragile friends here.
-/mob/living/silicon/robot/drone/updatehealth()
+/mob/living/silicon/robot/drone/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = 35
stat = CONSCIOUS
return
health = 35 - (getBruteLoss() + getFireLoss())
- return
-
-//Easiest to check this here, then check again in the robot proc.
-//Standard robots use config for crit, which is somewhat excessive for these guys.
-//Drones killed by damage will gib.
-/mob/living/silicon/robot/drone/handle_regular_status_updates()
-
- if(health <= -35 && src.stat != DEAD)
- timeofdeath = world.time
- death() //Possibly redundant, having trouble making death() cooperate.
- gib()
- return
- return ..() // If you don't return anything here, you won't update status effects, like weakening
-
-/mob/living/silicon/robot/drone/death(gibbed)
-
- if(module)
- var/obj/item/gripper/G = locate(/obj/item/gripper) in module
- if(G) G.drop_item()
-
- ..(gibbed)
+ update_stat("updatehealth([reason])")
//CONSOLE PROCS
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_damage.dm b/code/modules/mob/living/silicon/robot/drone/drone_damage.dm
index 57ffc898873..1ca0ecbfbbc 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_damage.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_damage.dm
@@ -1,24 +1,28 @@
//Redefining some robot procs, since drones can't be repaired and really shouldn't take component damage.
-/mob/living/silicon/robot/drone/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/used_weapon = null)
+/mob/living/silicon/robot/drone/take_overall_damage(brute, burn, updating_health = TRUE, used_weapon = null, sharp = 0)
bruteloss += brute
fireloss += burn
+ if(updating_health)
+ updatehealth("take overall damage")
-/mob/living/silicon/robot/drone/heal_overall_damage(var/brute, var/burn)
+/mob/living/silicon/robot/drone/heal_overall_damage(brute, burn, updating_health = TRUE)
bruteloss -= brute
fireloss -= burn
if(bruteloss<0) bruteloss = 0
if(fireloss<0) fireloss = 0
+ if(updating_health)
+ updatehealth("heal overall damage")
-/mob/living/silicon/robot/drone/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0)
- take_overall_damage(brute,burn)
+/mob/living/silicon/robot/drone/take_organ_damage(brute, burn, updating_health = TRUE, sharp = 0)
+ take_overall_damage(brute,burn, updating_health, null, sharp)
-/mob/living/silicon/robot/drone/heal_organ_damage(var/brute, var/burn)
- heal_overall_damage(brute,burn)
+/mob/living/silicon/robot/drone/heal_organ_damage(brute, burn, updating_health = TRUE)
+ heal_overall_damage(brute,burn, updating_health)
/mob/living/silicon/robot/drone/getFireLoss()
return fireloss
/mob/living/silicon/robot/drone/getBruteLoss()
- return bruteloss
\ No newline at end of file
+ return bruteloss
diff --git a/code/modules/mob/living/silicon/robot/drone/update_status.dm b/code/modules/mob/living/silicon/robot/drone/update_status.dm
index 97d2214c2e2..80eac952966 100644
--- a/code/modules/mob/living/silicon/robot/drone/update_status.dm
+++ b/code/modules/mob/living/silicon/robot/drone/update_status.dm
@@ -1,10 +1,11 @@
//Easiest to check this here, then check again in the robot proc.
//Standard robots use config for crit, which is somewhat excessive for these guys.
//Drones killed by damage will gib.
-/mob/living/silicon/robot/drone/update_stat()
+/mob/living/silicon/robot/drone/update_stat(reason = "none given")
if(status_flags & GODMODE)
return
if(health <= -35 && stat != DEAD)
gib()
+ create_debug_log("died of damage, trigger reason: [reason]")
return
- return ..()
+ return ..(reason)
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index d590892cc01..8eb8bb80763 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -13,7 +13,7 @@
if(!O)
return 0
- O.mouse_opacity = 2
+ O.mouse_opacity = MOUSE_OPACITY_OPAQUE
if(client)
client.screen -= O
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index afa10c1772b..752cdc0f631 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -21,22 +21,22 @@
/mob/living/silicon/robot/proc/handle_robot_cell()
if(stat != DEAD)
- if(!is_component_functioning("power cell") || !cell)
- Paralyse(2)
+ if(!is_component_functioning("power cell"))
uneq_all()
low_power_mode = 1
update_headlamp()
diag_hud_set_borgcell()
return
if(low_power_mode)
- if(is_component_functioning("power cell") && cell && cell.charge)
+ if(is_component_functioning("power cell") && cell.charge)
low_power_mode = 0
update_headlamp()
else if(stat == CONSCIOUS)
use_power()
/mob/living/silicon/robot/proc/use_power()
- if(is_component_functioning("power cell") && cell && cell.charge)
+ // this check is safe because `cell` is guaranteed to be set when the power cell is functioning
+ if(is_component_functioning("power cell") && cell.charge)
if(cell.charge <= 100)
uneq_all()
var/amt = Clamp((lamp_intensity - 2) * 2,1,cell.charge) //Always try to use at least one charge per tick, but allow it to completely drain the cell.
@@ -57,22 +57,10 @@
else
camera.status = 1
- if(getOxyLoss() > 50)
- Paralyse(3)
-
if(sleeping)
- Paralyse(3)
AdjustSleeping(-1)
- if(resting)
- Weaken(5)
-
if(.) //alive
- if(health <= config.health_threshold_dead)
- death()
- diag_hud_set_status()
- return
-
if(!istype(src, /mob/living/silicon/robot/drone))
if(health < 50) //Gradual break down of modules as more damage is sustained
if(uneq_module(module_state_3))
@@ -86,19 +74,8 @@
if(uneq_module(module_state_1))
to_chat(src, "CRITICAL ERROR: All modules OFFLINE.")
- if(paralysis || stunned || weakened)
- stat = UNCONSCIOUS
-
- if(!paralysis > 0)
- SetEyeBlind(0)
-
- else
- stat = CONSCIOUS
-
diag_hud_set_health()
diag_hud_set_status()
- else //dead
- SetEyeBlind(0)
//update the state of modules and components here
if(stat != CONSCIOUS)
@@ -109,14 +86,6 @@
else
radio.on = 1
- if(is_component_functioning("camera") && stat == CONSCIOUS)
- blinded = 0
- else
- blinded = 1
-
- if(!is_component_functioning("actuator"))
- Paralyse(3)
-
return 1
/mob/living/silicon/robot/update_sight()
@@ -234,7 +203,7 @@
weaponlock_time = 120
/mob/living/silicon/robot/update_canmove(delay_action_updates = 0)
- if(paralysis || stunned || weakened || buckled || lockcharge)
+ if(paralysis || stunned || weakened || buckled || lockcharge || stat)
canmove = 0
else
canmove = 1
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index b9a7d0d12a0..d2e065d3b8d 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -477,12 +477,8 @@ var/list/robot_verbs_default = list(
return
var/datum/robot_component/C = components[toggle]
- if(C.toggled)
- C.toggled = 0
- to_chat(src, "You disable [C.name].")
- else
- C.toggled = 1
- to_chat(src, "You enable [C.name].")
+ C.toggle()
+ to_chat(src, "You [C.toggled ? "enable" : "disable"] [C.name].")
/mob/living/silicon/robot/proc/sensor_mode()
set name = "Set Sensor Augmentation"
@@ -528,9 +524,8 @@ var/list/robot_verbs_default = list(
thruster_button.icon_state = "ionpulse[ionpulse_on]"
/mob/living/silicon/robot/blob_act()
- if(stat != 2)
+ if(stat != DEAD)
adjustBruteLoss(60)
- updatehealth()
return 1
else
gib()
@@ -573,7 +568,6 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj)
..(Proj)
- updatehealth()
if(prob(75) && Proj.damage > 0) spark_system.start()
return 2
@@ -609,7 +603,6 @@ var/list/robot_verbs_default = list(
if(WT.remove_fuel(0))
playsound(src.loc, W.usesound, 50, 1)
adjustBruteLoss(-30)
- updatehealth()
add_fingerprint(user)
user.visible_message("\The [user] patches some dents on \the [src] with \the [WT].")
else
@@ -1259,7 +1252,9 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/adjustOxyLoss(var/amount)
if(suiciding)
- ..()
+ return ..()
+ else
+ return STATUS_UPDATE_NONE
/mob/living/silicon/robot/regenerate_icons()
..()
@@ -1439,6 +1434,7 @@ var/list/robot_verbs_default = list(
disable_component("comms", 160)
if(2)
disable_component("comms", 60)
+
/mob/living/silicon/robot/rejuvenate()
..()
var/brute = 1000
diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm
index f84696c9964..ef7734c1e0d 100644
--- a/code/modules/mob/living/silicon/robot/robot_damage.dm
+++ b/code/modules/mob/living/silicon/robot/robot_damage.dm
@@ -1,17 +1,12 @@
-/mob/living/silicon/robot/updatehealth()
+/mob/living/silicon/robot/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = maxHealth
stat = CONSCIOUS
return
health = maxHealth - (getOxyLoss() + getFireLoss() + getBruteLoss())
- if(stat == DEAD && health > 0)
- update_revive()
- var/mob/dead/observer/ghost = get_ghost()
- if(ghost)
- to_chat(ghost, "Your cyborg shell has been repaired, re-enter if you want to continue! (Verbs -> Ghost -> Re-enter corpse)")
- ghost << sound('sound/effects/genetics.ogg')
- return
-
+ update_stat("updatehealth([reason])")
+ handle_hud_icons_health()
+ diag_hud_set_health()
/mob/living/silicon/robot/getBruteLoss()
var/amount = 0
@@ -27,17 +22,19 @@
if(C.installed != 0) amount += C.electronics_damage
return amount
-/mob/living/silicon/robot/adjustBruteLoss(var/amount)
+/mob/living/silicon/robot/adjustBruteLoss(amount, updating_health = TRUE)
if(amount > 0)
- take_overall_damage(amount, 0)
+ take_overall_damage(amount, 0, updating_health)
else
- heal_overall_damage(-amount, 0)
+ heal_overall_damage(-amount, 0, updating_health)
+ return STATUS_UPDATE_HEALTH
-/mob/living/silicon/robot/adjustFireLoss(var/amount)
+/mob/living/silicon/robot/adjustFireLoss(amount, updating_health = TRUE)
if(amount > 0)
- take_overall_damage(0, amount)
+ take_overall_damage(0, amount, updating_health)
else
- heal_overall_damage(0, -amount)
+ heal_overall_damage(0, -amount, updating_health)
+ return STATUS_UPDATE_HEALTH
/mob/living/silicon/robot/proc/get_damaged_components(var/brute, var/burn, var/get_all)
var/list/datum/robot_component/parts = list()
@@ -62,13 +59,13 @@
return C
return 0
-/mob/living/silicon/robot/heal_organ_damage(var/brute, var/burn)
+/mob/living/silicon/robot/heal_organ_damage(brute, burn, updating_health = TRUE)
var/list/datum/robot_component/parts = get_damaged_components(brute,burn)
if(!parts.len) return
var/datum/robot_component/picked = pick(parts)
- picked.heal_damage(brute,burn)
+ picked.heal_damage(brute,burn, updating_health)
-/mob/living/silicon/robot/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/edge = 0)
+/mob/living/silicon/robot/take_organ_damage(brute = 0, burn = 0, updating_health = TRUE, sharp = 0, edge = 0)
var/list/components = get_damageable_components()
if(!components.len)
return
@@ -98,13 +95,13 @@
var/datum/robot_component/armour/A = get_armour()
if(A)
- A.take_damage(brute, burn, sharp)
+ A.take_damage(brute, burn, sharp, updating_health)
return
var/datum/robot_component/C = pick(components)
- C.take_damage(brute, burn, sharp)
+ C.take_damage(brute, burn, sharp, updating_health)
-/mob/living/silicon/robot/heal_overall_damage(var/brute, var/burn)
+/mob/living/silicon/robot/heal_overall_damage(var/brute, var/burn, updating_health = TRUE)
var/list/datum/robot_component/parts = get_damaged_components(brute,burn)
while(parts.len && (brute>0 || burn>0) )
@@ -113,14 +110,14 @@
var/brute_was = picked.brute_damage
var/burn_was = picked.electronics_damage
- picked.heal_damage(brute,burn)
+ picked.heal_damage(brute,burn, updating_health)
brute -= (brute_was-picked.brute_damage)
burn -= (burn_was-picked.electronics_damage)
parts -= picked
-/mob/living/silicon/robot/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/used_weapon = null)
+/mob/living/silicon/robot/take_overall_damage(brute = 0, burn = 0, updating_health = TRUE, used_weapon = null, sharp = 0)
if(status_flags & GODMODE) return //godmode
var/list/datum/robot_component/parts = get_damageable_components()
@@ -158,9 +155,10 @@
var/brute_was = picked.brute_damage
var/burn_was = picked.electronics_damage
- picked.take_damage(brute, burn)
+ picked.take_damage(brute, burn, sharp, FALSE)
brute -= (picked.brute_damage - brute_was)
burn -= (picked.electronics_damage - burn_was)
parts -= picked
+ updatehealth()
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index e18ca8d6a17..161b81e3cd2 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -34,7 +34,6 @@
damage = rand(5, 35)
damage = round(damage / 2) // borgs recieve half damage
adjustBruteLoss(damage)
- updatehealth()
return
/mob/living/silicon/robot/attack_hand(mob/living/carbon/human/user)
@@ -47,7 +46,7 @@
user.put_in_active_hand(cell)
to_chat(user, "You remove \the [cell].")
cell = null
- update_icons()
+ update_stat()
diag_hud_set_borgcell()
if(!opened)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 486b2a72e8f..2330d0ecd64 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -40,10 +40,10 @@
/obj/item/robot_module/proc/fix_modules()
for(var/obj/item/I in modules)
I.flags |= NODROP
- I.mouse_opacity = 2
+ I.mouse_opacity = MOUSE_OPACITY_OPAQUE
if(emag)
emag.flags |= NODROP
- emag.mouse_opacity = 2
+ emag.mouse_opacity = MOUSE_OPACITY_OPAQUE
/obj/item/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R)
if(!stacktypes || !stacktypes.len)
@@ -106,7 +106,10 @@
// Return true in an overridden subtype to prevent normal removal handling
/obj/item/robot_module/proc/handle_custom_removal(component_id, mob/living/user, obj/item/W, params)
- return FALSE
+ return FALSE
+
+/obj/item/robot_module/proc/handle_death(gibbed)
+ return
/obj/item/robot_module/standard
name = "standard robot module"
@@ -217,6 +220,11 @@
fix_modules()
+/obj/item/robot_module/engineering/handle_death()
+ var/obj/item/gripper/G = locate(/obj/item/gripper) in modules
+ if(G)
+ G.drop_item()
+
/obj/item/robot_module/security
name = "security robot module"
module_type = "Security"
@@ -530,6 +538,12 @@
..()
+
+/obj/item/robot_module/drone/handle_death()
+ var/obj/item/gripper/G = locate(/obj/item/gripper) in modules
+ if(G)
+ G.drop_item()
+
//checks whether this item is a module of the robot it is located in.
/obj/item/proc/is_robot_module()
if(!istype(loc, /mob/living/silicon/robot))
diff --git a/code/modules/mob/living/silicon/robot/update_status.dm b/code/modules/mob/living/silicon/robot/update_status.dm
index ca755748231..352750a23ea 100644
--- a/code/modules/mob/living/silicon/robot/update_status.dm
+++ b/code/modules/mob/living/silicon/robot/update_status.dm
@@ -3,19 +3,38 @@
if(stat || lockcharge || weakened || stunned || paralysis || !is_component_functioning("actuator"))
return TRUE
-/mob/living/silicon/robot/update_stat()
+/mob/living/silicon/robot/has_vision(information_only = FALSE)
+ return ..(information_only) && ((stat == DEAD && information_only) || is_component_functioning("camera"))
+
+/mob/living/silicon/robot/update_stat(reason = "none given")
if(status_flags & GODMODE)
return
if(stat != DEAD)
if(health <= -maxHealth) //die only once
death()
+ create_debug_log("died of damage, trigger reason: [reason]")
return
- if(!is_component_functioning("actuator") || paralysis || sleeping || stunned || weakened || getOxyLoss() > maxHealth * 0.5)
+ if(!is_component_functioning("actuator") || !is_component_functioning("power cell") || paralysis || sleeping || resting || stunned || weakened || getOxyLoss() > maxHealth * 0.5)
if(stat == CONSCIOUS)
KnockOut()
+ create_debug_log("fell unconscious, trigger reason: [reason]")
else
if(stat == UNCONSCIOUS)
WakeUp()
+ create_debug_log("woke up, trigger reason: [reason]")
+ else
+ if(health > 0)
+ update_revive()
+ var/mob/dead/observer/ghost = get_ghost()
+ if(ghost)
+ to_chat(ghost, "Your cyborg shell has been repaired, re-enter if you want to continue! (Verbs -> Ghost -> Re-enter corpse)")
+ ghost << sound('sound/effects/genetics.ogg')
+ create_attack_log("revived, trigger reason: [reason]")
// diag_hud_set_status()
// diag_hud_set_health()
// update_health_hud()
+
+/mob/living/silicon/robot/update_revive(updating = TRUE)
+ . = ..(updating)
+ if(.)
+ update_icons()
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 60b1a263922..b7a64908a42 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -317,7 +317,7 @@
to_chat(src, "[A.alarm_name()]! ([(cameratext)? cameratext : "No Camera"])")
/mob/living/silicon/adjustToxLoss(var/amount)
- return
+ return STATUS_UPDATE_NONE
/mob/living/silicon/get_access()
return IGNORE_ACCESS //silicons always have access
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 7f5c1916619..72184f36e2f 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -202,8 +202,11 @@
return ..()
/mob/living/simple_animal/bot/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
explode()
- ..()
/mob/living/simple_animal/bot/proc/explode()
qdel(src)
@@ -242,8 +245,8 @@
new /obj/effect/decal/cleanable/blood/oil(loc)
return ..(amount)
-/mob/living/simple_animal/bot/updatehealth()
- ..()
+/mob/living/simple_animal/bot/updatehealth(reason = "none given")
+ ..(reason)
diag_hud_set_bothealth()
/mob/living/simple_animal/bot/handle_automated_action()
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index 007688fb7db..dc4805462fa 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -442,7 +442,7 @@
/mob/living/simple_animal/bot/medbot/examinate(atom/A as mob|obj|turf in view())
..()
- if(!is_blind(src))
+ if(has_vision(information_only=TRUE))
chemscan(src, A)
/mob/living/simple_animal/bot/medbot/proc/medicate_patient(mob/living/carbon/C)
diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm
index ea7db302c43..e1d61c5aa55 100644
--- a/code/modules/mob/living/simple_animal/friendly/cat.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cat.dm
@@ -60,9 +60,9 @@
return baby
/mob/living/simple_animal/pet/cat/Runtime/death()
- if(!memory_saved)
+ if(can_die() && !memory_saved)
Write_Memory(1)
- ..()
+ return ..()
/mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory()
var/savefile/S = new /savefile("data/npc_saves/Runtime.sav")
@@ -176,4 +176,4 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
melee_damage_lower = 5
- melee_damage_upper = 15
\ No newline at end of file
+ melee_damage_upper = 15
diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm
index c0f7efca2c6..e92174bd6c2 100644
--- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm
@@ -21,10 +21,8 @@
loot = list(/obj/effect/decal/cleanable/deadcockroach)
del_on_death = 1
-/mob/living/simple_animal/cockroach/death(gibbed)
- if(ticker.cinematic) //If the nuke is going off, then cockroaches are invincible. Keeps the nuke from killing them, cause cockroaches are immune to nukes.
- return
- ..()
+/mob/living/simple_animal/cockroach/can_die()
+ return ..() && !ticker.cinematic //If the nuke is going off, then cockroaches are invincible. Keeps the nuke from killing them, cause cockroaches are immune to nukes.
/mob/living/simple_animal/cockroach/Crossed(var/atom/movable/AM)
if(isliving(AM))
@@ -48,4 +46,4 @@
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
- anchored = 1
\ No newline at end of file
+ anchored = 1
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index bda169fe576..77d930b6b69 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -41,14 +41,6 @@
. = ..()
regenerate_icons()
-/mob/living/simple_animal/pet/corgi/death(gibbed)
- ..()
- regenerate_icons()
-
-/mob/living/simple_animal/pet/corgi/revive()
- ..()
- regenerate_icons()
-
/mob/living/simple_animal/pet/corgi/show_inv(mob/user as mob)
user.set_machine(src)
if(user.stat) return
@@ -626,7 +618,10 @@
s.start()
/mob/living/simple_animal/pet/corgi/Ian/borgi/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
- ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm
index 52769f9dba6..5f6f34b8b1c 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm
@@ -2,8 +2,5 @@
set name = "Chase your tail"
set desc = "d'awwww."
set category = "Corgi"
- to_chat(src, text("[pick("You dance around","You chase your tail")]."))
- for(var/mob/O in oviewers(src, null))
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] [pick("dances around","chases its tail")].", src))
- spin(20, 1)
\ No newline at end of file
+ visible_message("[src] [pick("dances around","chases [p_their()] tail")].","[pick("You dance around","You chase your tail")].")
+ spin(20, 1)
diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm
index 665afa16cb2..6e49437455e 100644
--- a/code/modules/mob/living/simple_animal/friendly/crab.dm
+++ b/code/modules/mob/living/simple_animal/friendly/crab.dm
@@ -67,22 +67,15 @@
MED.amount -= 1
if(MED.amount <= 0)
qdel(MED)
- for(var/mob/M in viewers(src, null))
- if((M.client && !( M.blinded )))
- M.show_message("[user] applies the [MED] on [src]")
+ user.visible_message("[user] applies the [MED] on [src]")
else
to_chat(user, "this [src] is dead, medical items won't bring it back to life.")
else
if(O.force)
health -= O.force
- for(var/mob/M in viewers(src, null))
- if((M.client && !( M.blinded )))
- M.show_message("[src] has been attacked with the [O] by [user]. ")
+ visible_message("[src] has been attacked with the [O] by [user]. ")
else
- to_chat(usr, "This weapon is ineffective, it does no damage.")
- for(var/mob/M in viewers(src, null))
- if((M.client && !( M.blinded )))
- M.show_message("[user] gently taps [src] with the [O]. ")
+ user.visible_message("[user] gently taps [src] with the [O]. ","This weapon is ineffective, it does no damage.")
/mob/living/simple_animal/crab/Topic(href, href_list)
if(usr.stat) return
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 370418134c3..d8a3f793d3a 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -250,7 +250,10 @@ var/global/chicken_count = 0
chicken_count += 1
/mob/living/simple_animal/chicken/death(gibbed)
- ..(gibbed)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return
chicken_count -= 1
/mob/living/simple_animal/chicken/attackby(obj/item/O, mob/user, params)
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 762dea31272..3ed45508b87 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -117,10 +117,13 @@
..()
/mob/living/simple_animal/mouse/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
layer = MOB_LAYER
if(client)
client.time_died_as_mouse = world.time
- ..()
/*
* Mouse types
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 06176add94d..0b10513b7cd 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -31,7 +31,7 @@
move_to_delay = 0
obj_damage = 0
environment_smash = 0
- mouse_opacity = 2
+ mouse_opacity = MOUSE_OPACITY_OPAQUE
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
flying = 1
search_objects = 1 //have to find those plant trays!
diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm
index c2284764050..e08e7e11502 100644
--- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm
@@ -48,10 +48,13 @@
ranged = 1
/mob/living/simple_animal/hostile/hivebot/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
- ..()
/mob/living/simple_animal/hostile/hivebot/tele//this still needs work
name = "Beacon"
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index f3e31925228..93182226972 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -289,8 +289,11 @@
//////////////END HOSTILE MOB TARGETTING AND AGGRESSION////////////
/mob/living/simple_animal/hostile/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
LoseTarget()
- ..(gibbed)
/mob/living/simple_animal/hostile/proc/summon_backup(distance)
do_alert_animation(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index fe80846935d..39215985963 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -95,17 +95,16 @@ Difficulty: Hard
visible_message("\"Vitemvw gsqtpixi. Stivexmsrep ijjmgmirgc gsqtvsqmwih.\"")*/
/mob/living/simple_animal/hostile/megafauna/hierophant/death()
- if(health > 0 || stat == DEAD)
- return
- else
- stat = DEAD
- blinking = TRUE //we do a fancy animation, release a huge burst(), and leave our staff.
- animate(src, alpha = 0, color = "660099", time = 20, easing = EASE_OUT)
- burst_range = 10
- //visible_message("\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"")
- visible_message("[src] disappears in a massive burst of magic, leaving only its staff.")
- burst(get_turf(src))
- ..()
+ if(!can_die())
+ return FALSE
+ blinking = TRUE //we do a fancy animation, release a huge burst(), and leave our staff.
+ animate(src, alpha = 0, color = "660099", time = 20, easing = EASE_OUT)
+ burst_range = 10
+ //visible_message("\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"")
+ visible_message("[src] disappears in a massive burst of magic, leaving only its staff.")
+ burst(get_turf(src))
+ // Things are in this order due to `del_on_death`
+ return ..()
/mob/living/simple_animal/hostile/megafauna/hierophant/Destroy()
QDEL_NULL(spawned_rune)
@@ -612,4 +611,4 @@ Difficulty: Hard
icon_state = "hierophant"
smooth = SMOOTH_TRUE
-#undef MEDAL_PREFIX
\ No newline at end of file
+#undef MEDAL_PREFIX
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 1bfb56bd26f..ae37f388b8a 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -48,7 +48,7 @@ Difficulty: Medium
elimination = 1
idle_vision_range = 13
appearance_flags = 0
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
stat_attack = 1 // Overriden from /tg/ - otherwise Legion starts chasing its minions
/mob/living/simple_animal/hostile/megafauna/legion/New()
@@ -89,9 +89,12 @@ Difficulty: Medium
speed = 2
charging = 0
+/mob/living/simple_animal/hostile/megafauna/legion/can_die()
+ return ..() && health <= 0
+
/mob/living/simple_animal/hostile/megafauna/legion/death()
- if(health > 0)
- return
+ if(!can_die())
+ return FALSE
if(size > 1)
adjustHealth(-maxHealth) //heal ourself to full in prep for splitting
var/mob/living/simple_animal/hostile/megafauna/legion/L = new(loc)
@@ -117,7 +120,9 @@ Difficulty: Medium
L.GiveTarget(target)
visible_message("[src] splits in twain!")
+ return FALSE // not dead
else
+ // this must come before the parent call due to the setting of `loot` here
var/last_legion = TRUE
for(var/mob/living/simple_animal/hostile/megafauna/legion/other in mob_list)
if(other != src)
@@ -128,7 +133,7 @@ Difficulty: Medium
elimination = 0
else if(prob(5))
loot = list(/obj/structure/closet/crate/necropolis/tendril)
- ..()
+ return ..()
/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0)
return 1
@@ -139,4 +144,4 @@ Difficulty: Medium
desc = "The message repeats."
invisibility = 100
-#undef MEDAL_PREFIX
\ No newline at end of file
+#undef MEDAL_PREFIX
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 23a25d6df28..118ee54e858 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -41,33 +41,22 @@
anchored = TRUE
mob_size = MOB_SIZE_LARGE
layer = MOB_LAYER + 0.5 //Looks weird with them slipping under mineral walls and cameras and shit otherwise
- mouse_opacity = 2 // Easier to click on in melee, they're giant targets anyway
+ mouse_opacity = MOUSE_OPACITY_OPAQUE // Easier to click on in melee, they're giant targets anyway
/mob/living/simple_animal/hostile/megafauna/Destroy()
QDEL_NULL(internal_gps)
. = ..()
+/mob/living/simple_animal/hostile/megafauna/can_die()
+ return ..() && health <= 0
+
/mob/living/simple_animal/hostile/megafauna/death(gibbed)
- if(health > 0)
- return
- else
- if(!admin_spawned)
- feedback_set_details("megafauna_kills","[initial(name)]")
- if(!elimination) //used so the achievment only occurs for the last legion to die.
- grant_achievement(medal_type,score_type)
- ..()
-
-/mob/living/simple_animal/hostile/megafauna/gib()
- if(health > 0)
- return
- else
- ..()
-
-/mob/living/simple_animal/hostile/megafauna/dust()
- if(health > 0)
- return
- else
- ..()
+ // this happens before the parent call because `del_on_death` may be set
+ if(can_die() && !admin_spawned)
+ feedback_set_details("megafauna_kills","[initial(name)]")
+ if(!elimination) //used so the achievment only occurs for the last legion to die.
+ grant_achievement(medal_type,score_type)
+ return ..()
/mob/living/simple_animal/hostile/megafauna/AttackingTarget()
..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 5832f7bdd60..5c26fe1ba57 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -92,11 +92,13 @@
icon_state = initial(icon_state)
/mob/living/simple_animal/hostile/mimic/crate/death(gibbed)
- var/obj/structure/closet/crate/C = new(get_turf(src))
- // Put loot in crate
- for(var/obj/O in src)
- O.loc = C
- ..()
+ if(can_die())
+ var/obj/structure/closet/crate/C = new(get_turf(src))
+ // Put loot in crate
+ for(var/obj/O in src)
+ O.loc = C
+ // due to `del_on_death`
+ return ..()
/mob/living/simple_animal/hostile/mimic/crate/AttackingTarget()
. =..()
@@ -129,9 +131,11 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
death()
/mob/living/simple_animal/hostile/mimic/copy/death(gibbed)
- for(var/atom/movable/M in src)
- M.loc = get_turf(src)
- ..()
+ if(can_die())
+ for(var/atom/movable/M in src)
+ M.loc = get_turf(src)
+ // due to `del_on_death`
+ return ..()
/mob/living/simple_animal/hostile/mimic/copy/ListTargets()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm
index 6da4c6e8b68..4041e95c6c7 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm
@@ -7,7 +7,7 @@
icon_aggro = "Hivelord_alert"
icon_dead = "Hivelord_dead"
icon_gib = "syndicate_gib"
- mouse_opacity = 2
+ mouse_opacity = MOUSE_OPACITY_OPAQUE
move_to_delay = 14
ranged = 1
vision_range = 5
@@ -46,8 +46,11 @@
OpenFire()
/mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed)
- mouse_opacity = 1
- ..(gibbed)
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
+ mouse_opacity = MOUSE_OPACITY_ICON
/obj/item/organ/internal/hivelord_core
name = "hivelord remains"
@@ -132,7 +135,7 @@
icon_aggro = "Hivelordbrood"
icon_dead = "Hivelordbrood"
icon_gib = "syndicate_gib"
- mouse_opacity = 2
+ mouse_opacity = MOUSE_OPACITY_OPAQUE
move_to_delay = 1
friendly = "buzzes near"
vision_range = 10
@@ -165,9 +168,10 @@
color = "#C80000"
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/death()
- if(loc) // Splash the turf we are on with blood
+ if(can_die() && loc)
+ // Splash the turf we are on with blood
reagents.reaction(get_turf(src))
- ..()
+ return ..()
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/New()
create_reagents(30)
@@ -235,15 +239,17 @@
var/mob/living/carbon/human/stored_mob
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed)
- visible_message("The skulls on [src] wail in anger as they flee from their dying host!")
- var/turf/T = get_turf(src)
- if(T)
- if(stored_mob)
- stored_mob.forceMove(get_turf(src))
- stored_mob = null
- else
- new /obj/effect/mob_spawn/human/corpse/charredskeleton(T)
- ..(gibbed)
+ if(can_die())
+ visible_message("The skulls on [src] wail in anger as they flee from their dying host!")
+ var/turf/T = get_turf(src)
+ if(T)
+ if(stored_mob)
+ stored_mob.forceMove(get_turf(src))
+ stored_mob = null
+ else
+ new /obj/effect/mob_spawn/human/corpse/charredskeleton(T)
+ // due to `del_on_death`
+ return ..(gibbed)
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion
@@ -330,4 +336,4 @@
mob_gender = NEUTER
husk = FALSE
mob_species = /datum/species/skeleton
- mob_color = "#454545"
\ No newline at end of file
+ mob_color = "#454545"
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
index cc0de6aea4e..2edfb7cea5d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
@@ -25,7 +25,8 @@
/mob/living/simple_animal/hostile/asteroid/LoseAggro()
..()
- icon_state = icon_living
+ if(stat == CONSCIOUS)
+ icon_state = icon_living
/mob/living/simple_animal/hostile/asteroid/bullet_act(var/obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills
if(!stat)
@@ -115,7 +116,7 @@
icon_dead = "Goliath_dead"
icon_gib = "syndicate_gib"
attack_sound = 'sound/weapons/punch4.ogg'
- mouse_opacity = 2
+ mouse_opacity = MOUSE_OPACITY_OPAQUE
move_to_delay = 40
ranged = 1
ranged_cooldown = 2 //By default, start the Goliath with his cooldown off so that people can run away quickly on first sight
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index 2c775074253..59c23953e6b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -22,7 +22,7 @@
faction = list("mushroom")
environment_smash = 0
stat_attack = 2
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
speed = 1
ventcrawler = 2
robust_searching = 1
@@ -91,7 +91,10 @@
UpdateMushroomCap()
/mob/living/simple_animal/hostile/mushroom/death(gibbed)
- ..()
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
UpdateMushroomCap()
/mob/living/simple_animal/hostile/mushroom/proc/UpdateMushroomCap()
@@ -160,4 +163,4 @@
S.reagents.add_reagent("psilocybin", powerlevel)
S.reagents.add_reagent("omnizine", powerlevel)
S.reagents.add_reagent("synaptizine", powerlevel)
- qdel(src)
\ No newline at end of file
+ qdel(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm
index 30546ecb17d..93e03e8279e 100644
--- a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm
+++ b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm
@@ -184,7 +184,10 @@
//Harder to kill the head, but it can kill off the whole worm
/mob/living/simple_animal/hostile/spaceWorm/wormHead/death(gibbed)
- ..()
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
if(prob(catastrophicDeathProb))
for(var/mob/living/simple_animal/hostile/spaceWorm/SW in totalWormSegments)
SW.death()
@@ -294,7 +297,10 @@
/mob/living/simple_animal/hostile/spaceWorm/death(gibbed)
- ..()
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
if(myHead)
myHead.totalWormSegments -= src
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm
index 0ed63563011..337988346ce 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm
@@ -9,25 +9,26 @@
metabolization_rate = 0.1
/datum/reagent/terror_black_toxin/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(volume < 30)
// bitten once, die very slowly. Easy to survive a single bite - just go to medbay.
// total damage: 1/tick, human health 150 until crit, = 150 ticks, = 300 seconds = 5 minutes to get to medbay.
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
else if(volume < 60)
// bitten twice, die slowly. Get to medbay.
// total damage: 2/tick, human health 150 until crit, = 75 ticks, = 150 seconds = 2.5 minutes to get some medical treatment.
- M.adjustToxLoss(2)
- M.EyeBlurry(3)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.EyeBlurry(3, FALSE)
else if(volume < 90)
// bitten thrice, die quickly, severe muscle cramps make movement very difficult. Even calling for help probably won't save you.
// total damage: 4, human health 150 until crit, = 37.5 ticks, = 75s = 1m15s until death
- M.adjustToxLoss(4) // a bit worse than coiine
+ update_flags |= M.adjustToxLoss(4, FALSE) // a bit worse than coiine
+ update_flags |= M.EyeBlurry(6, FALSE)
M.Confused(6)
- M.EyeBlurry(6)
else
// bitten 4 or more times, whole body goes into shock/death
// total damage: 8, human health 150 until crit, = 18.75 ticks, = 37s until death
- M.adjustToxLoss(8)
- M.EyeBlurry(6)
- M.Paralyse(5)
- ..()
+ update_flags |= M.adjustToxLoss(8, FALSE)
+ update_flags |= M.EyeBlurry(6, FALSE)
+ update_flags |= M.Paralyse(5, FALSE)
+ return ..() | update_flags
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm
index 43c0e7b0be5..59e3bebbfb3 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm
@@ -41,12 +41,12 @@
L.attack_animal(src)
/mob/living/simple_animal/hostile/poison/terror_spider/gray/adjustBruteLoss(damage)
- ..(damage)
+ . = ..(damage)
if(invisibility > 0)
GrayDeCloak()
/mob/living/simple_animal/hostile/poison/terror_spider/gray/adjustFireLoss(damage)
- ..(damage)
+ . = ..(damage)
if(invisibility > 0)
GrayDeCloak()
@@ -136,4 +136,4 @@
if(temp_vent)
if(get_dist(src,temp_vent) > 0 && get_dist(src,temp_vent) < 5)
step_to(src,temp_vent)
- // if you're bumped off your vent, try to get back to it
\ No newline at end of file
+ // if you're bumped off your vent, try to get back to it
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm
index f4ab38eda93..9280b428e9e 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm
@@ -33,24 +33,25 @@
ventsmash_action.Grant(src)
/mob/living/simple_animal/hostile/poison/terror_spider/mother/death(gibbed)
- var/always_stillborn = FALSE
- if(spider_awaymission && !is_away_level(z))
- always_stillborn = TRUE
- if(canspawn)
- canspawn = 0
- for(var/i in 0 to 30)
- var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
- S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray)
- if(always_stillborn || prob(66))
- S.stillborn = 1
- else if(prob(10))
- S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/black, /mob/living/simple_animal/hostile/poison/terror_spider/green)
- S.amount_grown = 50 // double speed growth
- S.immediate_ventcrawl = 1
- visible_message("[src] breaks apart, the many spiders on its back scurrying everywhere!")
- degenerate = 1
- ..()
+ if(can_die())
+ var/always_stillborn = FALSE
+ if(spider_awaymission && !is_away_level(z))
+ always_stillborn = TRUE
+ if(canspawn)
+ canspawn = 0
+ for(var/i in 0 to 30)
+ var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
+ S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray)
+ if(always_stillborn || prob(66))
+ S.stillborn = 1
+ else if(prob(10))
+ S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/black, /mob/living/simple_animal/hostile/poison/terror_spider/green)
+ S.amount_grown = 50 // double speed growth
+ S.immediate_ventcrawl = 1
+ visible_message("[src] breaks apart, the many spiders on its back scurrying everywhere!")
+ degenerate = 1
+ return ..()
/mob/living/simple_animal/hostile/poison/terror_spider/mother/Destroy()
canspawn = 0
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm
index 66e88af1e1b..75cf5c7ede8 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm
@@ -36,10 +36,9 @@
thickweb_action.Grant(src)
/mob/living/simple_animal/hostile/poison/terror_spider/prince/death(gibbed)
- if(!hasdied)
- if(spider_uo71)
- UnlockBlastDoors("UO71_SciStorage")
- ..()
+ if(can_die() && !hasdied && spider_uo71)
+ UnlockBlastDoors("UO71_SciStorage")
+ return ..()
/mob/living/simple_animal/hostile/poison/terror_spider/prince/spider_specialattack(mob/living/carbon/human/L)
if(prob(15))
@@ -47,4 +46,4 @@
L.Weaken(5)
L.Stun(5)
else
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm
index 5c483b4e3e9..2c3e573c43e 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm
@@ -38,7 +38,7 @@
thickweb_action.Grant(src)
/mob/living/simple_animal/hostile/poison/terror_spider/purple/death(gibbed)
- if(spider_myqueen)
+ if(can_die() && spider_myqueen)
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/Q = spider_myqueen
if(Q.stat != DEAD && !Q.ckey)
if(get_dist(src,Q) > 20)
@@ -46,7 +46,7 @@
degenerate = 1
Q.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple,1,0)
visible_message("[src] chitters in the direction of [Q]!")
- . = ..()
+ return ..()
/mob/living/simple_animal/hostile/poison/terror_spider/purple/Life(seconds, times_fired)
. = ..()
@@ -91,4 +91,4 @@
degenerate = 1
to_chat(src,"Your link to your Queen has been broken! Your life force starts to drain away!")
melee_damage_lower = 5
- melee_damage_upper = 10
\ No newline at end of file
+ melee_damage_upper = 10
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm
index 532c2b7357a..54531e62d09 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm
@@ -81,7 +81,7 @@
to_chat(src, "You have [canlay] eggs available to lay.")
/mob/living/simple_animal/hostile/poison/terror_spider/queen/death(gibbed)
- if(!hasdied)
+ if(can_die() && !hasdied)
SetHiveCommand(0, 15) // Hive becomes very aggressive.
if(spider_uo71)
UnlockBlastDoors("UO71_Caves")
@@ -91,7 +91,7 @@
P.visible_message("\The [src] writhes in pain!")
to_chat(P,"\The [src] has died. Without her hivemind link, purple terrors like yourself cannot survive more than a few minutes!")
P.degenerate = 1
- ..()
+ return ..()
/mob/living/simple_animal/hostile/poison/terror_spider/queen/Retaliate()
..()
@@ -347,4 +347,4 @@
if(L.can_inject(null, 0, "chest", 0))
L.Hallucinate(400)
if(!isterrorspider(L))
- L.adjustToxLoss(bonus_tox)
\ No newline at end of file
+ L.adjustToxLoss(bonus_tox)
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm
index 62f69b20b39..8c48b9b409b 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm
@@ -162,11 +162,11 @@
..()
/mob/living/simple_animal/hostile/poison/terror_spider/adjustBruteLoss(damage)
- ..(damage)
+ . = ..(damage)
Retaliate()
/mob/living/simple_animal/hostile/poison/terror_spider/adjustFireLoss(damage)
- ..(damage)
+ . = ..(damage)
Retaliate()
/mob/living/simple_animal/hostile/poison/terror_spider/proc/Retaliate()
@@ -318,4 +318,4 @@
/mob/living/simple_animal/hostile/poison/terror_spider/proc/UnlockBlastDoors(target_id_tag)
for(var/obj/machinery/door/poddoor/P in airlocks)
if(P.density && P.id_tag == target_id_tag && P.z == z && !P.operating)
- P.open()
\ No newline at end of file
+ P.open()
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm
index b5d0a100ae3..46b903774f3 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm
@@ -321,10 +321,11 @@ var/global/list/ts_spiderling_list = list()
ts_count_alive_station--
/mob/living/simple_animal/hostile/poison/terror_spider/death(gibbed)
- if(!gibbed)
- msg_terrorspiders("[src] has died in [get_area(src)].")
- handle_dying()
- ..()
+ if(can_die())
+ if(!gibbed)
+ msg_terrorspiders("[src] has died in [get_area(src)].")
+ handle_dying()
+ return ..()
/mob/living/simple_animal/hostile/poison/terror_spider/proc/spider_special_action()
return
@@ -372,4 +373,4 @@ var/global/list/ts_spiderling_list = list()
visible_message("[src] pries open the door!")
playsound(src.loc, "sparks", 100, 1)
D.open(1)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm
index 973195c90a7..36378cb988e 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm
@@ -31,10 +31,9 @@
..()
/mob/living/simple_animal/hostile/poison/terror_spider/white/death(gibbed)
- if(!hasdied)
- if(spider_uo71)
- UnlockBlastDoors("UO71_Bridge")
- ..()
+ if(can_die() && !hasdied && spider_uo71)
+ UnlockBlastDoors("UO71_Bridge")
+ return ..(gibbed)
/mob/living/simple_animal/hostile/poison/terror_spider/white/spider_specialattack(mob/living/carbon/human/L, poisonable)
if(!poisonable)
@@ -57,4 +56,4 @@
/proc/IsTSInfected(mob/living/carbon/C) // Terror AI requires this
if(C.get_int_organ(/obj/item/organ/internal/body_egg))
return 1
- return 0
\ No newline at end of file
+ return 0
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 57412eb5a0d..e2c9194abc5 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -32,7 +32,7 @@
/obj/effect/ebeam/vine
name = "thick vine"
- mouse_opacity = 1
+ mouse_opacity = MOUSE_OPACITY_ICON
desc = "A thick vine, painful to the touch."
diff --git a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm
index 70ea0400f84..f96ebabf014 100644
--- a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm
@@ -36,15 +36,14 @@
/mob/living/simple_animal/hostile/winter/snowman/death(gibbed)
- if(prob(50) && !ranged) //50% chance to drop candy cane sword on death, if it has one to drop
- loot = list(/obj/item/melee/candy_sword)
- if(prob(20)) //chance to become a stationary snowman structure instead of a corpse
- loot.Add(/obj/structure/snowman)
- deathmessage = "shimmers as its animating magic fades away!"
- del_on_death = 1
- ..() //this is just to make sure it gets properly killed before we qdel it
- else
- ..()
+ if(can_die())
+ if(prob(50) && !ranged) //50% chance to drop candy cane sword on death, if it has one to drop
+ loot = list(/obj/item/melee/candy_sword)
+ if(prob(20)) //chance to become a stationary snowman structure instead of a corpse
+ loot.Add(/obj/structure/snowman)
+ deathmessage = "shimmers as its animating magic fades away!"
+ del_on_death = 1
+ return ..()
/mob/living/simple_animal/hostile/winter/snowman/ranged
maxHealth = 50
@@ -79,7 +78,10 @@
icon_dead = "santa-dead"
/mob/living/simple_animal/hostile/winter/santa/death(gibbed)
- ..()
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
if(death_message)
visible_message(death_message)
if(next_stage)
@@ -133,12 +135,16 @@
melee_damage_upper = 30 //that's gonna leave a mark, for sure
/mob/living/simple_animal/hostile/winter/santa/stage_4/death(gibbed)
- to_chat(world, "
")
- to_chat(world, "THE FAT MAN HAS FALLEN!")
- to_chat(world, "SANTA CLAUS HAS BEEN DEFEATED!")
- to_chat(world, "
")
- ..()
+ if(can_die())
+ to_chat(world, "
")
+ to_chat(world, "THE FAT MAN HAS FALLEN!")
+ to_chat(world, "SANTA CLAUS HAS BEEN DEFEATED!")
+ to_chat(world, "
")
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
var/obj/item/grenade/clusterbuster/xmas/X = new /obj/item/grenade/clusterbuster/xmas(get_turf(src))
var/obj/item/grenade/clusterbuster/xmas/Y = new /obj/item/grenade/clusterbuster/xmas(get_turf(src))
X.prime()
- Y.prime()
\ No newline at end of file
+ Y.prime()
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index ed4c074bff0..2120925a164 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -113,11 +113,12 @@
return ..()
/mob/living/simple_animal/parrot/death(gibbed)
- if(held_item)
- held_item.loc = src.loc
- held_item = null
- walk(src,0)
- ..()
+ if(can_die())
+ if(held_item)
+ held_item.loc = src.loc
+ held_item = null
+ walk(src,0)
+ return ..()
/mob/living/simple_animal/parrot/Stat()
..()
diff --git a/code/modules/mob/living/simple_animal/posessed_object.dm b/code/modules/mob/living/simple_animal/posessed_object.dm
index 22901f4d29a..7afb3b01cbc 100644
--- a/code/modules/mob/living/simple_animal/posessed_object.dm
+++ b/code/modules/mob/living/simple_animal/posessed_object.dm
@@ -15,6 +15,7 @@
allow_spin = 0 // No spinning. Spinning breaks our floating animation.
no_spin_thrown = 1
+ del_on_death = TRUE
var/obj/item/possessed_item
@@ -39,26 +40,19 @@
var/response = alert(src, "End your possession of this object? (It will not stop you from respawning later)","Are you sure you want to ghost?","Ghost","Stay in body")
if(response != "Ghost")
return
- resting = 1
+ StartResting()
var/mob/dead/observer/ghost = ghostize(1)
ghost.timeofdeath = world.time
death(0) // Turn back into a regular object.
-
/mob/living/simple_animal/possessed_object/death(gibbed)
- var/mob/dead/observer/ghost = ghostize(1)
- ..()
-
- if(gibbed) // Leave no trace.
- ghost.timeofdeath = world.time
- qdel(src)
- return
-
- if(possessed_item.loc == src)
- possessed_item.forceMove(loc) // Put the normal item back once the EVIL SPIRIT has been vanquished from it. If it's not already in place
-
- qdel(src)
-
+ if(can_die())
+ ghostize(GHOST_CAN_REENTER)
+ // if gibbed, the item goes with the ghost
+ if(!gibbed && possessed_item.loc == src)
+ // Put the normal item back once the EVIL SPIRIT has been vanquished from it. If it's not already in place
+ possessed_item.forceMove(loc)
+ return ..()
/mob/living/simple_animal/possessed_object/Life(seconds, times_fired)
..()
@@ -160,4 +154,4 @@
pixel_y = possessed_item.pixel_y
color = possessed_item.color
overlays = possessed_item.overlays
- set_opacity(possessed_item.opacity)
\ No newline at end of file
+ set_opacity(possessed_item.opacity)
diff --git a/code/modules/mob/living/simple_animal/powers.dm b/code/modules/mob/living/simple_animal/powers.dm
index 9d1d6217415..d85557f350d 100644
--- a/code/modules/mob/living/simple_animal/powers.dm
+++ b/code/modules/mob/living/simple_animal/powers.dm
@@ -8,13 +8,7 @@
if(layer != TURF_LAYER+0.2)
layer = TURF_LAYER+0.2
- to_chat(src, text("You are now hiding."))
- for(var/mob/O in oviewers(src, null))
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] scurries to the ground!", src))
+ visible_message("[src] scurries to the ground!", "You are now hiding.")
else
layer = MOB_LAYER
- to_chat(src, text("You have stopped hiding."))
- for(var/mob/O in oviewers(src, null))
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] slowly peaks up from the ground...", src))
+ visible_message("[src] slowly peeks up from the ground...", "You have stopped hiding.")
diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index 2f761c21f9c..47113341881 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -29,25 +29,20 @@
deathmessage = "lets out a contented sigh as their form unwinds."
- attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
- if(istype(O, /obj/item/soulstone))
- O.transfer_soul("SHADE", src, user)
+/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
+ if(istype(O, /obj/item/soulstone))
+ O.transfer_soul("SHADE", src, user)
+ else
+ if(O.force)
+ var/damage = O.force
+ if(O.damtype == STAMINA)
+ damage = 0
+ health -= damage
+ user.visible_message("[src] has been attacked with the [O] by [user]. ")
else
- if(O.force)
- var/damage = O.force
- if(O.damtype == STAMINA)
- damage = 0
- health -= damage
- for(var/mob/M in viewers(src, null))
- if((M.client && !( M.blinded )))
- M.show_message("[src] has been attacked with the [O] by [user]. ")
- else
- to_chat(usr, "This weapon is ineffective, it does no damage.")
- for(var/mob/M in viewers(src, null))
- if((M.client && !( M.blinded )))
- M.show_message("[user] gently taps [src] with the [O]. ")
- return
+ user.visible_message("[user] gently taps [src] with the [O]. ", "This weapon is ineffective, it does no damage.")
+ return
/mob/living/simple_animal/shade/sword
universal_speak = 1
- faction = list("neutral")
\ No newline at end of file
+ faction = list("neutral")
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 5a88373f6f2..0015327bca7 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -105,8 +105,8 @@
client.screen += client.void
..()
-/mob/living/simple_animal/updatehealth()
- ..()
+/mob/living/simple_animal/updatehealth(reason = "none given")
+ ..(reason)
health = Clamp(health, 0, maxHealth)
med_hud_set_status()
@@ -127,12 +127,15 @@
else if(stat != DEAD)
icon_state = icon_living
-/mob/living/simple_animal/handle_regular_status_updates()
- if(..()) //alive
+/mob/living/simple_animal/update_stat(reason = "none given")
+ if(status_flags & GODMODE)
+ return
+
+ ..(reason)
+ if(stat != DEAD)
if(health < 1)
death()
- return FALSE
- return TRUE
+ create_debug_log("died of damage, trigger reason: [reason]")
/mob/living/simple_animal/proc/handle_automated_action()
return
@@ -303,6 +306,10 @@
stat(null, "Health: [round((health / maxHealth) * 100)]%")
/mob/living/simple_animal/death(gibbed)
+ // Only execute the below if we successfully died
+ . = ..()
+ if(!.)
+ return FALSE
if(nest)
nest.spawned_mobs -= src
nest = null
@@ -322,10 +329,8 @@
else
health = 0
icon_state = icon_dead
- stat = DEAD
density = 0
lying = 1
- ..()
/mob/living/simple_animal/ex_act(severity)
..()
@@ -341,35 +346,42 @@
if(3.0)
adjustBruteLoss(30)
-/mob/living/simple_animal/proc/adjustHealth(amount)
+/mob/living/simple_animal/proc/adjustHealth(amount, updating_health = TRUE)
if(status_flags & GODMODE)
return FALSE
+ var/oldbruteloss = bruteloss
bruteloss = Clamp(bruteloss + amount, 0, maxHealth)
- handle_regular_status_updates()
+ if(oldbruteloss == bruteloss)
+ updating_health = FALSE
+ . = STATUS_UPDATE_NONE
+ else
+ . = STATUS_UPDATE_HEALTH
+ if(updating_health)
+ updatehealth()
-/mob/living/simple_animal/adjustBruteLoss(amount)
+/mob/living/simple_animal/adjustBruteLoss(amount, updating_health = TRUE)
if(damage_coeff[BRUTE])
- adjustHealth(amount * damage_coeff[BRUTE])
+ return adjustHealth(amount * damage_coeff[BRUTE], updating_health)
-/mob/living/simple_animal/adjustFireLoss(amount)
+/mob/living/simple_animal/adjustFireLoss(amount, updating_health = TRUE)
if(damage_coeff[BURN])
- adjustHealth(amount * damage_coeff[BURN])
+ return adjustHealth(amount * damage_coeff[BURN], updating_health)
-/mob/living/simple_animal/adjustOxyLoss(amount)
+/mob/living/simple_animal/adjustOxyLoss(amount, updating_health = TRUE)
if(damage_coeff[OXY])
- adjustHealth(amount * damage_coeff[OXY])
+ return adjustHealth(amount * damage_coeff[OXY], updating_health)
-/mob/living/simple_animal/adjustToxLoss(amount)
+/mob/living/simple_animal/adjustToxLoss(amount, updating_health = TRUE)
if(damage_coeff[TOX])
- adjustHealth(amount * damage_coeff[TOX])
+ return adjustHealth(amount * damage_coeff[TOX], updating_health)
-/mob/living/simple_animal/adjustCloneLoss(amount)
+/mob/living/simple_animal/adjustCloneLoss(amount, updating_health = TRUE)
if(damage_coeff[CLONE])
- adjustHealth(amount * damage_coeff[CLONE])
+ return adjustHealth(amount * damage_coeff[CLONE], updating_health)
-/mob/living/simple_animal/adjustStaminaLoss(amount)
+/mob/living/simple_animal/adjustStaminaLoss(amount, updating_health = TRUE)
if(damage_coeff[STAMINA])
- return ..(amount*damage_coeff[STAMINA])
+ return ..(amount*damage_coeff[STAMINA], updating_health)
/mob/living/simple_animal/proc/CanAttack(var/atom/the_target)
if(see_invisible < the_target.invisibility)
diff --git a/code/modules/mob/living/simple_animal/tribbles.dm b/code/modules/mob/living/simple_animal/tribbles.dm
index 3e7f1722a41..0f10a9ad382 100644
--- a/code/modules/mob/living/simple_animal/tribbles.dm
+++ b/code/modules/mob/living/simple_animal/tribbles.dm
@@ -80,7 +80,10 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles,
/mob/living/simple_animal/tribble/death(gibbed) // Gotta make sure to remove tribbles from the list on death
- ..()
+ // Only execute the below if we successfully died
+ . = ..(gibbed)
+ if(!.)
+ return FALSE
totaltribbles -= 1
@@ -195,10 +198,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles,
if(src.destroyed)
return
else
- to_chat(usr, text("You kick the lab cage."))
- for(var/mob/O in oviewers())
- if((O.client && !( O.blinded )))
- to_chat(O, text("[] kicks the lab cage.", usr))
+ user.visible_message("[user] kicks the lab cage.", "You kick the lab cage.")
src.health -= 2
healthcheck()
return
diff --git a/code/modules/mob/living/stat_states.dm b/code/modules/mob/living/stat_states.dm
index 3decff7596e..c9c51e2c5ab 100644
--- a/code/modules/mob/living/stat_states.dm
+++ b/code/modules/mob/living/stat_states.dm
@@ -10,7 +10,8 @@
log_game("[key_name(src)] fell unconscious at [atom_loc_line(get_turf(src))]")
stat = UNCONSCIOUS
if(updating)
- // update_blind_effects()
+ update_sight()
+ update_blind_effects()
update_canmove()
return 1
@@ -24,7 +25,8 @@
log_game("[key_name(src)] woke up at [atom_loc_line(get_turf(src))]")
stat = CONSCIOUS
if(updating)
- // update_blind_effects()
+ update_sight()
+ update_blind_effects()
update_canmove()
return 1
@@ -47,11 +49,14 @@
stat = CONSCIOUS
dead_mob_list -= src
living_mob_list += src
+ if(mind)
+ respawnable_list -= src
timeofdeath = null
if(updating)
update_canmove()
- // update_blind_effects()
- updatehealth()
+ update_blind_effects()
+ update_sight()
+ updatehealth("update revive")
for(var/s in ownedSoullinks)
var/datum/soullink/S = s
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 972a8b0d553..8fdeec94679 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -216,19 +216,22 @@
// DRUGGY
-/mob/living/Druggy(amount)
- SetDruggy(max(druggy, amount))
+/mob/living/Druggy(amount, updating = TRUE)
+ return SetDruggy(max(druggy, amount), updating)
-/mob/living/SetDruggy(amount)
- var/old_val = druggy
+/mob/living/SetDruggy(amount, updating = TRUE)
+ . = STATUS_UPDATE_DRUGGY
+ if((!!amount) == (!!druggy)) // We're not changing from + to 0 or vice versa
+ . = STATUS_UPDATE_NONE
+ updating = FALSE
druggy = max(amount, 0)
// We transitioned to/from 0, so update the druggy overlays
- if((old_val == 0 || druggy == 0) && (old_val != druggy))
+ if(updating)
update_druggy_effects()
-/mob/living/AdjustDruggy(amount, bound_lower = 0, bound_upper = INFINITY)
+/mob/living/AdjustDruggy(amount, bound_lower = 0, bound_upper = INFINITY, updating = TRUE)
var/new_value = directional_bounded_sum(druggy, amount, bound_lower, bound_upper)
- SetDruggy(new_value)
+ return SetDruggy(new_value, updating)
// EAR_DAMAGE
@@ -256,35 +259,41 @@
// EYE_BLIND
-/mob/living/EyeBlind(amount)
- SetEyeBlind(max(eye_blind, amount))
+/mob/living/EyeBlind(amount, updating = TRUE)
+ return SetEyeBlind(max(eye_blind, amount), updating)
-/mob/living/SetEyeBlind(amount)
- var/old_val = eye_blind
+/mob/living/SetEyeBlind(amount, updating = TRUE)
+ . = STATUS_UPDATE_BLIND
+ if((!!amount) == (!!eye_blind)) // We're not changing from + to 0 or vice versa
+ updating = FALSE
+ . = STATUS_UPDATE_NONE
eye_blind = max(amount, 0)
// We transitioned to/from 0, so update the eye blind overlays
- if((old_val == 0 || eye_blind == 0) && (old_val != eye_blind))
+ if(updating)
update_blind_effects()
-/mob/living/AdjustEyeBlind(amount, bound_lower = 0, bound_upper = INFINITY)
+/mob/living/AdjustEyeBlind(amount, bound_lower = 0, bound_upper = INFINITY, updating = TRUE)
var/new_value = directional_bounded_sum(eye_blind, amount, bound_lower, bound_upper)
- SetEyeBlind(new_value)
+ return SetEyeBlind(new_value, updating)
// EYE_BLURRY
-/mob/living/EyeBlurry(amount)
- SetEyeBlurry(max(eye_blurry, amount))
+/mob/living/EyeBlurry(amount, updating = TRUE)
+ return SetEyeBlurry(max(eye_blurry, amount), updating)
-/mob/living/SetEyeBlurry(amount)
- var/old_val = eye_blurry
+/mob/living/SetEyeBlurry(amount, updating = TRUE)
+ . = STATUS_UPDATE_BLURRY
+ if((!!amount) == (!!eye_blurry)) // We're not changing from + to 0 or vice versa
+ updating = FALSE
+ . = STATUS_UPDATE_NONE
eye_blurry = max(amount, 0)
// We transitioned to/from 0, so update the eye blur overlays
- if((old_val == 0 || eye_blurry == 0) && (old_val != eye_blurry))
+ if(updating)
update_blurry_effects()
-/mob/living/AdjustEyeBlurry(amount, bound_lower = 0, bound_upper = INFINITY)
+/mob/living/AdjustEyeBlurry(amount, bound_lower = 0, bound_upper = INFINITY, updating = TRUE)
var/new_value = directional_bounded_sum(eye_blurry, amount, bound_lower, bound_upper)
- SetEyeBlurry(new_value)
+ return SetEyeBlurry(new_value, updating)
// HALLUCINATION
@@ -327,20 +336,22 @@
// PARALYSE
/mob/living/Paralyse(amount, updating = 1, force = 0)
- SetParalysis(max(paralysis, amount), updating, force)
+ return SetParalysis(max(paralysis, amount), updating, force)
/mob/living/SetParalysis(amount, updating = 1, force = 0)
+ . = STATUS_UPDATE_STAT
if((!!amount) == (!!paralysis)) // We're not changing from + to 0 or vice versa
updating = FALSE
+ . = STATUS_UPDATE_NONE
if(status_flags & CANPARALYSE || force)
paralysis = max(amount, 0)
if(updating)
update_canmove()
- update_stat()
+ update_stat("paralysis")
/mob/living/AdjustParalysis(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0)
var/new_value = directional_bounded_sum(paralysis, amount, bound_lower, bound_upper)
- SetParalysis(new_value, updating, force)
+ return SetParalysis(new_value, updating, force)
// SILENT
@@ -357,20 +368,22 @@
// SLEEPING
/mob/living/Sleeping(amount, updating = 1, no_alert = FALSE)
- SetSleeping(max(sleeping, amount), updating, no_alert)
+ return SetSleeping(max(sleeping, amount), updating, no_alert)
/mob/living/SetSleeping(amount, updating = 1, no_alert = FALSE)
+ . = STATUS_UPDATE_STAT
if((!!amount) == (!!sleeping)) // We're not changing from + to 0 or vice versa
updating = FALSE
+ . = STATUS_UPDATE_NONE
sleeping = max(amount, 0)
if(updating)
update_sleeping_effects(no_alert)
- update_stat()
+ update_stat("sleeping")
update_canmove()
/mob/living/AdjustSleeping(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, no_alert = FALSE)
var/new_value = directional_bounded_sum(sleeping, amount, bound_lower, bound_upper)
- SetSleeping(new_value, updating, no_alert)
+ return SetSleeping(new_value, updating, no_alert)
// SLOWED
@@ -411,19 +424,24 @@
// STUN
/mob/living/Stun(amount, updating = 1, force = 0)
- SetStunned(max(stunned, amount), updating, force)
+ return SetStunned(max(stunned, amount), updating, force)
/mob/living/SetStunned(amount, updating = 1, force = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
+ . = STATUS_UPDATE_CANMOVE
if((!!amount) == (!!stunned)) // We're not changing from + to 0 or vice versa
updating = FALSE
+ . = STATUS_UPDATE_NONE
+
if(status_flags & CANSTUN || force)
stunned = max(amount, 0)
if(updating)
update_canmove()
+ else
+ return STATUS_UPDATE_NONE
/mob/living/AdjustStunned(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0)
var/new_value = directional_bounded_sum(stunned, amount, bound_lower, bound_upper)
- SetStunned(new_value, updating, force)
+ return SetStunned(new_value, updating, force)
// STUTTERING
@@ -443,19 +461,23 @@
// WEAKEN
/mob/living/Weaken(amount, updating = 1, force = 0)
- SetWeakened(max(weakened, amount), updating, force)
+ return SetWeakened(max(weakened, amount), updating, force)
/mob/living/SetWeakened(amount, updating = 1, force = 0)
+ . = STATUS_UPDATE_CANMOVE
if((!!amount) == (!!weakened)) // We're not changing from + to 0 or vice versa
updating = FALSE
+ . = STATUS_UPDATE_NONE
if(status_flags & CANWEAKEN || force)
weakened = max(amount, 0)
if(updating)
update_canmove() //updates lying, canmove and icons
+ else
+ return STATUS_UPDATE_NONE
/mob/living/AdjustWeakened(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0)
var/new_value = directional_bounded_sum(weakened, amount, bound_lower, bound_upper)
- SetWeakened(new_value, updating, force)
+ return SetWeakened(new_value, updating, force)
//
// DISABILITIES
@@ -463,18 +485,19 @@
// Blind
-/mob/living/proc/BecomeBlind()
+/mob/living/proc/BecomeBlind(updating = TRUE)
var/val_change = !(disabilities & BLIND)
+ . = val_change ? STATUS_UPDATE_BLIND : STATUS_UPDATE_NONE
disabilities |= BLIND
- if(val_change)
+ if(val_change && updating)
update_blind_effects()
-/mob/living/proc/CureBlind()
+/mob/living/proc/CureBlind(updating = TRUE)
var/val_change = !!(disabilities & BLIND)
+ . = val_change ? STATUS_UPDATE_BLIND : STATUS_UPDATE_NONE
disabilities &= ~BLIND
- CureIfHasDisability(BLINDBLOCK)
-
- if(val_change)
+ if(val_change && updating)
+ CureIfHasDisability(BLINDBLOCK)
update_blind_effects()
// Coughing
@@ -515,17 +538,19 @@
// Nearsighted
-/mob/living/proc/BecomeNearsighted()
+/mob/living/proc/BecomeNearsighted(updating = TRUE)
var/val_change = !(disabilities & NEARSIGHTED)
+ . = val_change ? STATUS_UPDATE_NEARSIGHTED : STATUS_UPDATE_NONE
disabilities |= NEARSIGHTED
- if(val_change)
+ if(val_change && updating)
update_nearsighted_effects()
-/mob/living/proc/CureNearsighted()
+/mob/living/proc/CureNearsighted(updating = TRUE)
var/val_change = !!(disabilities & NEARSIGHTED)
+ . = val_change ? STATUS_UPDATE_NEARSIGHTED : STATUS_UPDATE_NONE
disabilities &= ~NEARSIGHTED
- CureIfHasDisability(GLASSESBLOCK)
- if(val_change)
+ if(val_change && updating)
+ CureIfHasDisability(GLASSESBLOCK)
update_nearsighted_effects()
// Nervous
diff --git a/code/modules/mob/living/update_status.dm b/code/modules/mob/living/update_status.dm
index c7f9bdd0d96..40d4cdc9cb2 100644
--- a/code/modules/mob/living/update_status.dm
+++ b/code/modules/mob/living/update_status.dm
@@ -1,5 +1,5 @@
/mob/living/update_blind_effects()
- if(!has_vision())
+ if(!has_vision(information_only=TRUE))
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
throw_alert("blind", /obj/screen/alert/blind)
return 1
@@ -44,8 +44,10 @@
return !(ear_deaf || (disabilities & DEAF))
// Whether the mob is able to see
-/mob/living/has_vision()
- return !(eye_blind || (disabilities & BLIND) || stat)
+// `information_only` is for stuff that's purely informational - like understanding nonverbal languages, or blindness overlays
+// This flag exists because certain things like angel statues expect this to be false for dead people
+/mob/living/has_vision(information_only = FALSE)
+ return (information_only && stat == DEAD) || !(eye_blind || (disabilities & BLIND) || stat)
// Whether the mob is capable of talking
/mob/living/can_speak()
@@ -104,6 +106,22 @@
/mob/living/proc/update_stamina()
return
+/mob/living/update_stat(reason = "None given")
+ if(status_flags & GODMODE)
+ return
+ if(stat != DEAD)
+ if(health <= config.health_threshold_dead)
+ death()
+ create_debug_log("died of damage, trigger reason: [reason]")
+ else if(paralysis || status_flags & FAKEDEATH)
+ if(stat == CONSCIOUS)
+ KnockOut()
+ create_debug_log("fell unconscious, trigger reason: [reason]")
+ else
+ if(stat == UNCONSCIOUS)
+ WakeUp()
+ create_debug_log("woke up, trigger reason: [reason]")
+
/mob/living/vv_edit_var(var_name, var_value)
. = ..()
switch(var_name)
@@ -126,6 +144,6 @@
if("druggy")
SetDruggy(druggy)
if("maxHealth")
- updatehealth()
+ updatehealth("var edit")
if("resize")
- update_transform()
\ No newline at end of file
+ update_transform()
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c4f10d71452..4560e935547 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -75,7 +75,7 @@
if(!client) return
if(type)
- if(type & 1 && !has_vision())//Vision related
+ if(type & 1 && !has_vision(information_only=TRUE))//Vision related
if(!( alt ))
return
else
@@ -87,7 +87,7 @@
else
msg = alt
type = alt_type
- if(type & 1 && !has_vision())
+ if(type & 1 && !has_vision(information_only=TRUE))
return
// Added voice muffling for Issue 41.
if(stat == UNCONSCIOUS || (sleeping > 0 && stat != DEAD))
@@ -576,7 +576,7 @@ var/list/slot_equipment_priority = list( \
set name = "Examine"
set category = "IC"
- if((is_blind(src) || usr.stat) && !isobserver(src))
+ if(!has_vision(information_only = TRUE) && !isobserver(src))
to_chat(src, "Something is there but you can't see it.")
return 1
@@ -1246,13 +1246,22 @@ var/list/slot_equipment_priority = list( \
return 1
return 0
-/mob/proc/create_attack_log(var/text, var/collapse = 1)//forgive me code gods for this shitcode proc
+/mob/proc/create_attack_log(text, collapse = TRUE)
+ LAZYINITLIST(attack_log)
+ create_log_in_list(attack_log, text, collapse, last_log)
+ last_log = world.timeofday
+
+/mob/proc/create_debug_log(text, collapse = TRUE)
+ LAZYINITLIST(debug_log)
+ create_log_in_list(debug_log, text, collapse, world.timeofday)
+
+/proc/create_log_in_list(list/target, text, collapse = TRUE, last_log)//forgive me code gods for this shitcode proc
//this proc enables lovely stuff like an attack log that looks like this: "[18:20:29-18:20:45]21x John Smith attacked Andrew Jackson with a crowbar."
//That makes the logs easier to read, but because all of this is stored in strings, weird things have to be used to get it all out.
var/new_log = "\[[time_stamp()]] [text]"
- if(length(attack_log) > 0)//if there are other logs already present
- var/previous_log = attack_log[length(attack_log)]//get the latest log
+ if(target.len)//if there are other logs already present
+ var/previous_log = target[target.len]//get the latest log
var/last_log_is_range = (copytext(previous_log, 10, 11) == "-") //whether the last log is a time range or not. The "-" will be an indicator that it is.
var/x_sign_position = findtext(previous_log, "x")
@@ -1277,10 +1286,9 @@ var/list/slot_equipment_priority = list( \
rep = text2num(copytext(previous_log, 44, x_sign_position))//get whatever number is right before the 'x'
new_log = "\[[old_timestamp]-[time_stamp()]][rep?rep+1:2]x [text]"
- attack_log -= attack_log[length(attack_log)]//remove the last log
+ target -= target[target.len]//remove the last log
- attack_log += new_log
- last_log = world.timeofday
+ target += new_log
/mob/vv_get_dropdown()
. = ..()
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 57b5aeb4996..bfe9ac7484a 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -29,7 +29,8 @@
var/computer_id = null
var/lastattacker = null
var/lastattacked = null
- var/attack_log = list( )
+ var/list/attack_log = list( )
+ var/list/debug_log = null
var/last_log = 0
var/obj/machinery/machine = null
var/other_mobs = null
@@ -44,7 +45,6 @@
var/med_record = ""
var/sec_record = ""
var/gen_record = ""
- var/blinded = null
var/bhunger = 0 //Carbon
var/lying = 0
var/lying_prev = 0
@@ -199,4 +199,4 @@
var/list/tkgrabbed_objects = list() // Assoc list of items to TK grabs
- var/forced_look = null // This can either be a numerical direction or a soft object reference (UID). It makes the mob always face towards the selected thing.
\ No newline at end of file
+ var/forced_look = null // This can either be a numerical direction or a soft object reference (UID). It makes the mob always face towards the selected thing.
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 01bcb2bcc1a..c0862b31404 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -397,13 +397,6 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM)
to_chat(src, "You are now getting up.")
StopResting()
-/proc/is_blind(A)
- if(iscarbon(A))
- var/mob/living/carbon/C = A
- if(C.disabilities & BLIND || C.blinded)
- return 1
- return 0
-
/proc/get_multitool(mob/user as mob)
// Get tool
var/obj/item/multitool/P
@@ -498,7 +491,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM)
A.overlays += alert_overlay
/mob/proc/switch_to_camera(var/obj/machinery/camera/C)
- if(!C.can_use() || stat || (get_dist(C, src) > 1 || machine != src || blinded || !canmove))
+ if(!C.can_use() || stat || (get_dist(C, src) > 1 || machine != src || !has_vision() || !canmove))
return 0
check_eye(src)
return 1
diff --git a/code/modules/mob/update_status.dm b/code/modules/mob/update_status.dm
index 7e1df6171e7..52a6fb7769d 100644
--- a/code/modules/mob/update_status.dm
+++ b/code/modules/mob/update_status.dm
@@ -37,7 +37,7 @@
/mob/proc/can_hear()
return 1
-/mob/proc/has_vision()
+/mob/proc/has_vision(information_only = FALSE)
return 1
/mob/proc/can_speak()
diff --git a/code/modules/nano/modules/ert_manager.dm b/code/modules/nano/modules/ert_manager.dm
index d954c36ee2d..1d70157f079 100644
--- a/code/modules/nano/modules/ert_manager.dm
+++ b/code/modules/nano/modules/ert_manager.dm
@@ -50,7 +50,7 @@
cyborg_slots = text2num(href_list["set_cyb"])
if(href_list["dispatch_ert"])
- ert_request_answered = 1
+ ert_request_answered = TRUE
var/slots_list = list()
if(commander_slots > 0)
slots_list += "commander: [commander_slots]"
diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
index ef73d714447..f3c5db5da22 100644
--- a/code/modules/projectiles/ammunition/ammo_casings.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -87,7 +87,7 @@
desc = "A .45 rubber bullet casing."
caliber = ".45"
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/weakbullet4
+ projectile_type = /obj/item/projectile/bullet/midbullet_r
/obj/item/ammo_casing/c45
desc = "A .45 bullet casing."
diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm
index 7a9441ae46c..322c0931161 100644
--- a/code/modules/projectiles/ammunition/energy.dm
+++ b/code/modules/projectiles/ammunition/energy.dm
@@ -67,6 +67,18 @@
fire_sound = 'sound/weapons/laser3.ogg'
e_cost = 125
+/obj/item/ammo_casing/energy/immolator/strong
+ projectile_type = /obj/item/projectile/beam/immolator/strong
+ e_cost = 125
+ select_name = "precise"
+
+/obj/item/ammo_casing/energy/immolator/scatter
+ projectile_type = /obj/item/projectile/beam/immolator/weak
+ e_cost = 125
+ pellets = 6
+ variance = 25
+ select_name = "scatter"
+
/obj/item/ammo_casing/energy/electrode
projectile_type = /obj/item/projectile/energy/electrode
select_name = "stun"
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index 24b77ee9bb5..e621b1906b4 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -208,12 +208,16 @@
caliber = ".45"
max_ammo = 8
multiple_sprites = 1
-/obj/item/ammo_box/magazine/m45/enforcer45
- name = "handgun magazine (.45)"
- icon_state = "enforcer"
- ammo_type = /obj/item/ammo_casing/rubber45
-/obj/item/ammo_box/magazine/m45/enforcer45/update_icon()
+/obj/item/ammo_box/magazine/enforcer
+ name = "handgun magazine (9mm)"
+ icon_state = "enforcer"
+ ammo_type = /obj/item/ammo_casing/rubber9mm
+ max_ammo = 8
+ multiple_sprites = 1
+ caliber = "9mm"
+
+/obj/item/ammo_box/magazine/enforcer/update_icon()
..()
overlays.Cut()
@@ -221,21 +225,21 @@
if(ammo && is_rubber())
overlays += image('icons/obj/ammo.dmi', icon_state = "enforcer-r")
-/obj/item/ammo_box/magazine/m45/enforcer45/examine(mob/user, var/distance)
+/obj/item/ammo_box/magazine/enforcer/examine(mob/user, var/distance)
..()
if(distance <= 2)
to_chat(user, "It seems to be loaded with [is_rubber() ? "rubber" : "lethal"] bullets.")//only can see the topmost one.
-/obj/item/ammo_box/magazine/m45/enforcer45/proc/is_rubber()//if the topmost bullet is a rubber one
+/obj/item/ammo_box/magazine/enforcer/proc/is_rubber()//if the topmost bullet is a rubber one
var/ammo = ammo_count()
if(!ammo)
return 0
- if(istype(contents[contents.len], /obj/item/ammo_casing/rubber45))
+ if(istype(contents[contents.len], /obj/item/ammo_casing/rubber9mm))
return 1
return 0
-/obj/item/ammo_box/magazine/m45/enforcer45/lethal
- ammo_type = /obj/item/ammo_casing/c45
+/obj/item/ammo_box/magazine/enforcer/lethal
+ ammo_type = /obj/item/ammo_casing/c9mm
/obj/item/ammo_box/magazine/wt550m9
name = "wt550 magazine (4.6x30mm)"
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 4be1f36cb22..75da1fdbedd 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -125,6 +125,19 @@
origin_tech = "combat=4;magnets=4;powerstorage=3"
shaded_charge = 1
+/obj/item/gun/energy/immolator/multi
+ name = "multi lens immolator cannon"
+ desc = "A large laser cannon, similar to the Immolator Laser, with toggleable firemodes. It is frequently used by military-like forces through Nanotrasen."
+ icon_state = "multilensimmolator"
+ ammo_type = list(/obj/item/ammo_casing/energy/immolator/strong, /obj/item/ammo_casing/energy/immolator/scatter)
+ origin_tech = "combat=5;magnets=5;powerstorage=4"
+
+/obj/item/gun/energy/immolator/multi/update_icon()
+ ..()
+ var/obj/item/ammo_casing/energy/shot = ammo_type[select]
+ var/append = shot.select_name
+ overlays += image(icon = icon, icon_state = "multilensimmolator-[append]")
+
////////Laser Tag////////////////////
/obj/item/gun/energy/laser/bluetag
diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm
index 7169b3d1443..f17fe55340a 100644
--- a/code/modules/projectiles/guns/energy/nuclear.dm
+++ b/code/modules/projectiles/guns/energy/nuclear.dm
@@ -65,6 +65,11 @@
ammo_x_offset = 1
shaded_charge = 1
+/obj/item/gun/energy/gun/blueshield/pdw9
+ name = "PDW-9 taser pistol"
+ desc = "A military grade sidearm, used by many militia forces throughout the local sector."
+ icon_state = "pdw9pistol"
+
/obj/item/gun/energy/gun/turret
name = "hybrid turret gun"
desc = "A heavy hybrid energy cannon with two settings: Stun and kill."
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 40e3ab36df1..f886c5e5e53 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -257,7 +257,7 @@
/obj/item/gun/projectile/automatic/lasercarbine
name = "\improper IK-60 Laser Carbine"
- desc = "An experimental carbine. Uses encased laser projectors as ammunition."//we need to uncouple the toroidal resistance dejammers
+ desc = "A short, compact carbine like rifle, relying more on battery cartridges rather than a built in power cell. Utilized by the Nanotrasen Navy for combat operations."
icon_state = "lasercarbine"
item_state = "laser"
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index 7ac82f99d5c..b9fdc969a66 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -27,15 +27,27 @@
can_suppress = 0
/obj/item/gun/projectile/automatic/pistol/enforcer
- name = "Enforcer .45"
+ name = "Enforcer"
desc = "A pistol of modern design."
icon_state = "enforcer_grey"
force = 10
- mag_type = /obj/item/ammo_box/magazine/m45/enforcer45
+ mag_type = /obj/item/ammo_box/magazine/enforcer
can_suppress = TRUE
unique_reskin = TRUE
can_flashlight = TRUE
+/obj/item/gun/projectile/automatic/pistol/enforcer/New()
+ ..()
+ options["Grey slide"] = "enforcer_grey"
+ options["Red slide"] = "enforcer_red"
+ options["Green slide"] = "enforcer_green"
+ options["Tan slide"] = "enforcer_tan"
+ options["Black slide"] = "enforcer_black"
+ options["Green Handle"] = "enforcer_greengrip"
+ options["Tan Handle"] = "enforcer_tangrip"
+ options["Red Handle"] = "enforcer_redgrip"
+ options["Cancel"] = null
+
/obj/item/gun/projectile/automatic/pistol/enforcer/update_icon()
..()
if(current_skin)
@@ -54,17 +66,11 @@
/obj/item/gun/projectile/automatic/pistol/enforcer/ui_action_click()
toggle_gunlight()
-/obj/item/gun/projectile/automatic/pistol/enforcer/New()
+/obj/item/gun/projectile/automatic/pistol/enforcer/lethal
+
+/obj/item/gun/projectile/automatic/pistol/enforcer/lethal/New()
+ magazine = new/obj/item/ammo_box/magazine/enforcer/lethal
..()
- options["Grey slide"] = "enforcer_grey"
- options["Red slide"] = "enforcer_red"
- options["Green slide"] = "enforcer_green"
- options["Tan slide"] = "enforcer_tan"
- options["Black slide"] = "enforcer_black"
- options["Green Handle"] = "enforcer_greengrip"
- options["Tan Handle"] = "enforcer_tangrip"
- options["Red Handle"] = "enforcer_redgrip"
- options["Cancel"] = null
/obj/item/gun/projectile/automatic/pistol/deagle
name = "desert eagle"
diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm
index 79f4509e7de..1cc35d2ce38 100644
--- a/code/modules/projectiles/guns/projectile/toy.dm
+++ b/code/modules/projectiles/guns/projectile/toy.dm
@@ -42,8 +42,8 @@
..()
/obj/item/gun/projectile/automatic/toy/pistol/enforcer
- name = "Enforcer trainer"
- desc = "A foam version of the Enforcer meant to be used for training new caddets who can't be trusted with rubber bullets."
+ name = "Foam Enforcer"
+ desc = "A foam shooting version of the Enforcer meant to be used for training new caddets who can't be trusted with rubber bullets."
icon_state = "enforcer"
mag_type = /obj/item/ammo_box/magazine/toy/enforcer
can_flashlight = TRUE
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index e19cd1165b5..868317177bd 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -7,7 +7,7 @@
anchored = 1 //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots.
flags = ABSTRACT
pass_flags = PASSTABLE
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
hitsound = 'sound/weapons/pierce.ogg'
var/hitsound_wall = ""
pressure_resistance = INFINITY
@@ -28,16 +28,17 @@
var/speed = 1 //Amount of deciseconds it takes for projectile to travel
var/Angle = 0
var/spread = 0 //amount (in degrees) of projectile spread
- var/legacy = 0 //legacy projectile system
+ var/legacy = FALSE //legacy projectile system
animate_movement = 0
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
- var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
+ var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
var/projectile_type = "/obj/item/projectile"
var/range = 50 //This will de-increment every step. When 0, it will delete the projectile.
var/is_reflectable = FALSE // Can it be reflected or not?
+ var/alwayslog = FALSE // ALWAYS log this projectile on hit even if it doesn't hit a living target. Useful for AOE explosion / EMP.
//Effects
var/stun = 0
var/weaken = 0
@@ -68,6 +69,8 @@
/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone)
var/turf/target_loca = get_turf(target)
+ if(alwayslog)
+ add_attack_logs(firer, target, "Shot with a [type]")
if(!isliving(target))
return 0
var/mob/living/L = target
@@ -121,7 +124,7 @@
reagent_note += R.id + " ("
reagent_note += num2text(R.volume) + ") "
has_reagents = TRUE
- if(!log_override && firer && original)
+ if(!log_override && firer && !alwayslog)
if(has_reagents)
add_attack_logs(firer, L, "Shot with a [type] (containing [reagent_note])")
else
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 761fb50179c..3cd4e888b1f 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -119,6 +119,16 @@
/obj/item/projectile/beam/immolator
name = "immolation beam"
+/obj/item/projectile/beam/immolator/strong
+ name = "heavy immolation beam"
+ damage = 45
+ icon_state = "heavylaser"
+
+/obj/item/projectile/beam/immolator/weak
+ name = "light immolation beam"
+ damage = 8
+ icon_state = "scatterlaser"
+
/obj/item/projectile/beam/immolator/on_hit(var/atom/target, var/blocked = 0)
. = ..()
if(istype(target, /mob/living/carbon))
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 8e697d1e86e..6c19971a996 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -123,6 +123,10 @@
damage = 20
stamina = 65 //two rounds from the c20r knocks people down
+/obj/item/projectile/bullet/midbullet_r
+ damage = 5
+ stamina = 75 //Still two rounds to knock people down
+
/obj/item/projectile/bullet/midbullet2
damage = 25
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 2003e78b780..ef8a36f7f86 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -2,43 +2,46 @@
name = "ion bolt"
icon_state = "ion"
damage = 0
+ alwayslog = TRUE
damage_type = BURN
nodamage = 1
flag = "energy"
/obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0)
..()
- empulse(target, 1, 1, 1)
+ empulse(target, 1, 1, 1, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/ion/weak
/obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0)
..()
- empulse(target, 0, 0, 1)
+ empulse(target, 0, 0, 1, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/bullet/gyro
name ="explosive bolt"
icon_state= "bolter"
damage = 50
+ alwayslog = TRUE
flag = "bullet"
/obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0)
..()
- explosion(target, -1, 0, 2)
+ explosion(target, -1, 0, 2, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/bullet/a40mm
name ="40mm grenade"
desc = "USE A WEEL GUN"
icon_state= "bolter"
+ alwayslog = TRUE
damage = 60
flag = "bullet"
/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
..()
- explosion(target, -1, 0, 2, 1, 0, flame_range = 3)
+ explosion(target, -1, 0, 2, 1, 0, flame_range = 3, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/temp
@@ -229,6 +232,7 @@
name ="explosive slug"
damage = 25
weaken = 5
+ alwayslog = TRUE
/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0)
..()
@@ -276,6 +280,7 @@
icon_state = "bluespace"
damage = 0
nodamage = 1
+ alwayslog = TRUE
var/teleport_target = null
/obj/item/projectile/energy/teleport/New(loc, tele_target)
@@ -289,6 +294,7 @@
do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon
else
do_teleport(target, target, 15) //Otherwise it just warps you off somewhere.
+ add_attack_logs(firer, target, "Shot with a [type] [teleport_target ? "(Destination: [teleport_target])" : ""]")
/obj/item/projectile/snowball
name = "snowball"
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 73a591f9ddb..c76129fc27f 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -196,6 +196,9 @@ var/const/INGEST = 2
if(M)
chem_temp = M.bodytemperature
handle_reactions()
+
+ // a bitfield filled in by each reagent's `on_mob_life` to find out which states to update
+ var/update_flags = STATUS_UPDATE_NONE
for(var/A in reagent_list)
var/datum/reagent/R = A
if(!istype(R)) // How are non-reagents ending up in the reagents_list?
@@ -233,14 +236,18 @@ var/const/INGEST = 2
continue
//If you got this far, that means we can process whatever reagent this iteration is for. Handle things normally from here.
if(M && R)
- R.on_mob_life(M)
+ update_flags |= R.on_mob_life(M)
if(R.volume >= R.overdose_threshold && !R.overdosed && R.overdose_threshold > 0)
R.overdosed = TRUE
R.overdose_start(M)
if(R.volume < R.overdose_threshold && R.overdosed)
R.overdosed = FALSE
if(R.overdosed)
- R.overdose_process(M, R.volume >= R.overdose_threshold*2 ? 2 : 1)
+ var/list/overdose_results = R.overdose_process(M, R.volume >= R.overdose_threshold*2 ? 2 : 1)
+ if(overdose_results) // to protect against poorly-coded overdose procs
+ update_flags |= overdose_results[REAGENT_OVERDOSE_FLAGS]
+ else
+ log_runtime(EXCEPTION("Reagent '[R.name]' does not return an overdose info list!"))
for(var/A in addiction_list)
var/datum/reagent/R = A
@@ -250,18 +257,36 @@ var/const/INGEST = 2
R.addiction_stage++
switch(R.addiction_stage)
if(1)
- R.addiction_act_stage1(M)
+ update_flags |= R.addiction_act_stage1(M)
if(2)
- R.addiction_act_stage2(M)
+ update_flags |= R.addiction_act_stage2(M)
if(3)
- R.addiction_act_stage3(M)
+ update_flags |= R.addiction_act_stage3(M)
if(4)
- R.addiction_act_stage4(M)
+ update_flags |= R.addiction_act_stage4(M)
if(5)
- R.addiction_act_stage5(M)
+ update_flags |= R.addiction_act_stage5(M)
if(prob(20) && (world.timeofday > (R.last_addiction_dose + ADDICTION_TIME))) //Each addiction lasts 8 minutes before it can end
to_chat(M, "You no longer feel reliant on [R.name]!")
addiction_list.Remove(R)
+ if(update_flags & STATUS_UPDATE_HEALTH)
+ M.updatehealth("reagent metabolism")
+ else if(update_flags & STATUS_UPDATE_STAT)
+ // update_stat is called in updatehealth
+ M.update_stat("reagent metabolism")
+ if(update_flags & STATUS_UPDATE_CANMOVE)
+ M.update_canmove()
+ if(update_flags & STATUS_UPDATE_STAMINA)
+ M.handle_hud_icons_health()
+ M.update_stamina()
+ if(update_flags & STATUS_UPDATE_BLIND)
+ M.update_blind_effects()
+ if(update_flags & STATUS_UPDATE_BLURRY)
+ M.update_blurry_effects()
+ if(update_flags & STATUS_UPDATE_NEARSIGHTED)
+ M.update_nearsighted_effects()
+ if(update_flags & STATUS_UPDATE_DRUGGY)
+ M.update_druggy_effects()
update_total()
/datum/reagents/proc/death_metabolize(mob/living/M)
@@ -455,7 +480,8 @@ var/const/INGEST = 2
reagent_list -= A
qdel(A)
update_total()
- my_atom.on_reagent_change()
+ if(my_atom)
+ my_atom.on_reagent_change()
return 0
@@ -537,7 +563,8 @@ var/const/INGEST = 2
if(R.id == reagent)
R.volume += amount
update_total()
- my_atom.on_reagent_change()
+ if(my_atom)
+ my_atom.on_reagent_change()
R.on_merge(data)
if(!no_react)
handle_reactions()
@@ -555,7 +582,8 @@ var/const/INGEST = 2
R.on_new(data)
update_total()
- my_atom.on_reagent_change()
+ if(my_atom)
+ my_atom.on_reagent_change()
if(!no_react)
handle_reactions()
return 0
@@ -578,7 +606,8 @@ var/const/INGEST = 2
update_total()
if(!safety)//So it does not handle reactions when it need not to
handle_reactions()
- my_atom.on_reagent_change()
+ if(my_atom)
+ my_atom.on_reagent_change()
return 0
return 1
@@ -688,7 +717,7 @@ var/const/INGEST = 2
// Convenience proc to create a reagents holder for an atom
// Max vol is maximum volume of holder
-atom/proc/create_reagents(max_vol)
+/atom/proc/create_reagents(max_vol)
reagents = new/datum/reagents(max_vol)
reagents.my_atom = src
@@ -716,4 +745,4 @@ atom/proc/create_reagents(max_vol)
QDEL_LIST(reagent_list)
reagent_list = null
if(my_atom && my_atom.reagents == src)
- my_atom.reagents = null
\ No newline at end of file
+ my_atom.reagents = null
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index ee2ac418555..1d300767488 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -9,6 +9,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 20
var/temp_html = ""
+ var/printing = null
var/wait = null
var/obj/item/reagent_containers/beaker = null
@@ -162,6 +163,10 @@
for(var/datum/disease/advance/AD in active_diseases)
AD.Refresh()
updateUsrDialog()
+ else if(href_list["print_form"])
+ var/datum/disease/D = GetVirusByIndex(text2num(href_list["print_form"]))
+ D = archive_diseases[D.GetDiseaseID()]//We know it's advanced no need to check
+ print_form(D, usr)
else
@@ -172,6 +177,47 @@
add_fingerprint(usr)
return
+//Prints a nice virus release form. Props to Urbanliner for the layout
+/obj/machinery/computer/pandemic/proc/print_form(var/datum/disease/advance/D, mob/living/user)
+ D = archive_diseases[D.GetDiseaseID()]
+ if(!(printing) && D)
+ var/reason = input(user,"Enter a reason for the release", "Write", null) as message
+ reason += ""
+ var/english_symptoms = list()
+ for(var/I in D.symptoms)
+ var/datum/symptom/S = I
+ english_symptoms += S.name
+ var/symtoms = english_list(english_symptoms)
+
+
+ var/signature
+ if(alert(user,"Would you like to add your signature?",,"Yes","No") == "Yes")
+ signature = "[user ? user.real_name : "Anonymous"]"
+ else
+ signature = ""
+
+ printing = 1
+ var/obj/item/paper/P = new /obj/item/paper(loc)
+ visible_message("[src] rattles and prints out a sheet of paper.")
+ playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
+
+ P.info = " Releasing Virus "
+ P.info += "
"
+ P.info += "Name of the Virus: [D.name]
"
+ P.info += "Symptoms: [symtoms]
"
+ P.info += "Spreads by: [D.spread_text]
"
+ P.info += "Cured by: [D.cure_text]
"
+ P.info += "
"
+ P.info += "Reason for releasing: [reason]"
+ P.info += "
"
+ P.info += "The Virologist is responsible for any biohazards caused by the virus released.
"
+ P.info += "Virologist's sign: [signature]
"
+ P.info += "If approved, stamp below with the Chief Medical Officer's stamp, and/or the Captain's stamp if required:"
+ P.populatefields()
+ P.updateinfolinks()
+ P.name = "Releasing Virus - [D.name]"
+ printing = null
+
/obj/machinery/computer/pandemic/attack_hand(mob/user)
if(..())
return
@@ -214,8 +260,11 @@
var/datum/disease/advance/A = D
D = archive_diseases[A.GetDiseaseID()]
- if(D && D.name == "Unknown")
- dat += "Name Disease
"
+ if(D)
+ if(D.name == "Unknown")
+ dat += "Name Disease
"
+ else
+ dat += "Print release form
"
if(!D)
CRASH("We weren't able to get the advance disease from the archive.")
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 16e4197f72c..2ae74f4a91f 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -69,6 +69,7 @@
/datum/reagent/proc/on_mob_life(mob/living/M)
current_cycle++
holder.remove_reagent(id, metabolization_rate * M.metabolism_efficiency * M.digestion_ratio) //By default it slowly disappears.
+ return STATUS_UPDATE_NONE
/datum/reagent/proc/on_mob_death(mob/living/M) //use this to have chems have a "death-triggered" effect
return
@@ -102,15 +103,16 @@
// Called if the reagent has passed the overdose threshold and is set to be triggering overdose effects
/datum/reagent/proc/overdose_process(mob/living/M, severity)
var/effect = rand(1, 100) - severity
+ var/update_flags = STATUS_UPDATE_NONE
if(effect <= 8)
- M.adjustToxLoss(severity)
- return effect
+ update_flags |= (M.adjustToxLoss(severity, FALSE) ? STATUS_UPDATE_HEALTH : STATUS_UPDATE_NONE)
+ return list(effect, update_flags)
/datum/reagent/proc/overdose_start(mob/living/M)
return
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
- return
+ return STATUS_UPDATE_NONE
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
if(prob(8))
@@ -119,6 +121,7 @@
M.emote("sneeze")
if(prob(4))
to_chat(M, "You feel a dull headache.")
+ return STATUS_UPDATE_NONE
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
if(prob(8))
@@ -127,6 +130,7 @@
M.emote("shiver")
if(prob(4))
to_chat(M, "You begin craving [name]!")
+ return STATUS_UPDATE_NONE
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
if(prob(8))
@@ -135,16 +139,19 @@
to_chat(M, "You have the strong urge for some [name]!")
if(prob(4))
to_chat(M, "You REALLY crave some [name]!")
+ return STATUS_UPDATE_NONE
/datum/reagent/proc/addiction_act_stage5(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(8))
M.emote("twitch")
if(prob(6))
to_chat(M, "Your stomach lurches painfully!")
M.visible_message("[M] gags and retches!")
- M.Stun(rand(2,4))
- M.Weaken(rand(2,4))
+ update_flags |= M.Stun(rand(2,4), FALSE)
+ update_flags |= M.Weaken(rand(2,4), FALSE)
if(prob(5))
to_chat(M, "You feel like you can't live without [name]!")
if(prob(5))
to_chat(M, "You would DIE for some [name] right now!")
+ return update_flags
diff --git a/code/modules/reagents/chemistry/reagents/admin.dm b/code/modules/reagents/chemistry/reagents/admin.dm
index 785ac17a598..0856955da2b 100644
--- a/code/modules/reagents/chemistry/reagents/admin.dm
+++ b/code/modules/reagents/chemistry/reagents/admin.dm
@@ -9,42 +9,42 @@
taste_message = "admin abuse"
/datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M)
- M.setCloneLoss(0)
- M.setOxyLoss(0)
+ M.setCloneLoss(0, FALSE)
+ M.setOxyLoss(0, FALSE)
M.radiation = 0
- M.adjustBruteLoss(-5)
- M.adjustFireLoss(-5)
- M.adjustToxLoss(-5)
- M.setBrainLoss(0)
+ M.adjustBruteLoss(-5, FALSE)
+ M.adjustFireLoss(-5, FALSE)
+ M.adjustToxLoss(-5, FALSE)
+ M.setBrainLoss(0, FALSE)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/thing in H.internal_organs)
var/obj/item/organ/internal/I = thing
- I.receive_damage(-5)
+ I.receive_damage(-5, FALSE)
for(var/obj/item/organ/external/E in H.bodyparts)
if(E.mend_fracture())
E.perma_injury = 0
- M.SetEyeBlind(0)
- M.CureNearsighted()
- M.CureBlind()
+ M.SetEyeBlind(0, FALSE)
+ M.CureNearsighted(FALSE)
+ M.CureBlind(FALSE)
M.CureMute()
M.CureDeaf()
M.CureEpilepsy()
M.CureTourettes()
M.CureCoughing()
M.CureNervous()
- M.SetEyeBlurry(0)
- M.SetWeakened(0)
- M.SetStunned(0)
- M.SetParalysis(0)
- M.SetSilence(0)
+ M.SetEyeBlurry(0, FALSE)
+ M.SetWeakened(0, FALSE)
+ M.SetStunned(0, FALSE)
+ M.SetParalysis(0, FALSE)
+ M.SetSilence(0, FALSE)
M.SetHallucinate(0)
M.SetDizzy(0)
M.SetDrowsy(0)
M.SetStuttering(0)
M.SetSlur(0)
M.SetConfused(0)
- M.SetSleeping(0)
+ M.SetSleeping(0, FALSE)
M.SetJitter(0)
for(var/thing in M.viruses)
var/datum/disease/D = thing
@@ -52,6 +52,7 @@
continue
D.cure(0)
..()
+ return STATUS_UPDATE_ALL
/datum/reagent/medicine/adminordrazine/nanites
name = "Nanites"
diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm
index 33f4ef4263c..c74e5973bf7 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol.dm
@@ -13,7 +13,7 @@
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/M)
M.AdjustDrunk(alcohol_perc)
M.AdjustDizzy(dizzy_adj)
- ..()
+ return ..()
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, volume)
if(istype(O,/obj/item/paper))
@@ -103,10 +103,12 @@
//copy paste from LSD... shoot me
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/M)
M.AdjustHallucinate(5)
- ..()
+ return ..()
/datum/reagent/consumable/ethanol/absinthe/overdose_process(mob/living/M, severity)
- M.adjustToxLoss(1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return list(0, update_flags)
/datum/reagent/consumable/ethanol/rum
name = "Rum"
@@ -121,7 +123,9 @@
drink_desc = "Now you want to Pray for a pirate suit, don't you?"
/datum/reagent/consumable/ethanol/rum/overdose_process(mob/living/M, severity)
- M.adjustToxLoss(1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return list(0, update_flags)
/datum/reagent/consumable/ethanol/mojito
name = "Mojito"
@@ -237,12 +241,13 @@
taste_message = "party"
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-7)
- M.AdjustSleeping(-2)
+ update_flags |= M.AdjustSleeping(-2, FALSE)
if(M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
M.Jitter(5)
- ..()
+ return ..() | update_flags
/////////////////////////////////////////////////////////////////cocktail entities//////////////////////////////////////////////
@@ -475,7 +480,7 @@
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M)
if(M.bodytemperature < 330)
M.bodytemperature = min(330, M.bodytemperature + (15 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
- ..()
+ return ..()
/datum/reagent/consumable/ethanol/beepsky_smash
name = "Beepsky Smash"
@@ -491,8 +496,9 @@
taste_message = "THE LAW"
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/M)
- M.Stun(1)
- ..()
+ var/update_flag = STATUS_UPDATE_NONE
+ update_flag |= M.Stun(1, FALSE)
+ return ..() | update_flag
/datum/reagent/consumable/ethanol/irish_cream
name = "Irish Cream"
@@ -640,7 +646,7 @@
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M)
if(M.bodytemperature < 330)
M.bodytemperature = min(330, M.bodytemperature + (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
- ..()
+ return ..()
/datum/reagent/consumable/ethanol/barefoot
name = "Barefoot"
@@ -888,13 +894,14 @@
taste_message = "brain damageeeEEeee"
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(current_cycle >= 13)
- M.Weaken(3)
+ update_flags |= M.Weaken(3, FALSE)
if(current_cycle >= 55)
- M.Druggy(55)
+ update_flags |= M.Druggy(55, FALSE)
if(current_cycle >= 200)
- M.adjustToxLoss(2)
- ..()
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/ethanol/hippies_delight
name = "Hippie's Delight"
@@ -908,25 +915,29 @@
drink_desc = "A drink enjoyed by people during the 1960's."
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/M)
- M.Druggy(50)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.Druggy(50, FALSE)
switch(current_cycle)
if(1 to 5)
- if(!M.stuttering) M.stuttering = 1
+ M.Stuttering(1)
M.Dizzy(10)
- if(prob(10)) M.emote(pick("twitch","giggle"))
+ if(prob(10))
+ M.emote(pick("twitch","giggle"))
if(5 to 10)
- if(!M.stuttering) M.stuttering = 1
+ M.Stuttering(1)
M.Jitter(20)
M.Dizzy(20)
- M.Druggy(45)
- if(prob(20)) M.emote(pick("twitch","giggle"))
+ update_flags |= M.Druggy(45, FALSE)
+ if(prob(20))
+ M.emote(pick("twitch","giggle"))
if(10 to INFINITY)
- if(!M.stuttering) M.stuttering = 1
+ M.Stuttering(1)
M.Jitter(40)
M.Dizzy(40)
- M.Druggy(60)
- if(prob(30)) M.emote(pick("twitch","giggle"))
- ..()
+ update_flags |= M.Druggy(60, FALSE)
+ if(prob(30))
+ M.emote(pick("twitch","giggle"))
+ return ..() | update_flags
/datum/reagent/consumable/ethanol/changelingsting
name = "Changeling Sting"
@@ -993,8 +1004,8 @@
/datum/reagent/consumable/ethanol/driestmartini/on_mob_life(mob/living/M)
if(current_cycle >= 55 && current_cycle < 115)
- M.stuttering += 10
- ..()
+ M.AdjustStuttering(10)
+ return ..()
/datum/reagent/consumable/ethanol/kahlua
name = "Kahlua"
@@ -1008,11 +1019,12 @@
taste_message = "sweet alcohol"
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDizzy(-5)
M.AdjustDrowsy(-3)
- M.AdjustSleeping(-2)
+ update_flags |= (M.AdjustSleeping(-2) ? STATUS_UPDATE_STAT : STATUS_UPDATE_NONE)
M.Jitter(5)
- ..()
+ return ..() | update_flags
/datum/reagent/ginsonic
name = "Gin and sonic"
@@ -1026,11 +1038,12 @@
taste_message = "SPEED"
/datum/reagent/ginsonic/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-5)
if(prob(25))
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
if(prob(8))
M.reagents.add_reagent("methamphetamine",1.2)
var/sonic_message = pick("Gotta go fast!", "Time to speed, keed!", "I feel a need for speed!", "Let's juice.", "Juice time.", "Way Past Cool!")
@@ -1038,7 +1051,7 @@
M.say("[sonic_message]")
else
to_chat(M, "[sonic_message ]")
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/ethanol/applejack
name = "Applejack"
@@ -1101,6 +1114,7 @@
M.adjust_fire_stacks(3)
/datum/reagent/consumable/ethanol/dragons_breath/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(M.reagents.has_reagent("milk"))
to_chat(M, "The milk stops the burning. Ahhh.")
M.reagents.del_reagent("milk")
@@ -1111,7 +1125,7 @@
if(prob(50))
to_chat(M, "Your throat burns terribly!")
M.emote(pick("scream","cry","choke","gasp"))
- M.Stun(1)
+ update_flags |= M.Stun(1, FALSE)
if(prob(8))
to_chat(M, "Why!? WHY!?")
if(prob(8))
@@ -1125,7 +1139,7 @@
M.visible_message("[M] is consumed in flames!")
M.dust()
return
- ..()
+ return ..() | update_flags
// ROBOT ALCOHOL PAST THIS POINT
// WOOO!
diff --git a/code/modules/reagents/chemistry/reagents/disease.dm b/code/modules/reagents/chemistry/reagents/disease.dm
index bac6f475261..a9cbbe87691 100644
--- a/code/modules/reagents/chemistry/reagents/disease.dm
+++ b/code/modules/reagents/chemistry/reagents/disease.dm
@@ -11,7 +11,7 @@
if(iscarbon(M))
if(!M.get_int_organ(/obj/item/organ/internal/body_egg))
new/obj/item/organ/internal/body_egg/spider_eggs(M) //Yes, even Xenos can fall victim to the plague that is spider infestation.
- ..()
+ return ..()
/datum/reagent/nanomachines
@@ -24,7 +24,7 @@
/datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M)
if(volume > 1.5)
M.ForceContractDisease(new /datum/disease/transformation/robot(0))
- ..()
+ return ..()
/datum/reagent/xenomicrobes
@@ -37,7 +37,7 @@
/datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M)
if(volume > 1.5)
M.ContractDisease(new /datum/disease/transformation/xeno(0))
- ..()
+ return ..()
/datum/reagent/fungalspores
name = "Tubercle bacillus Cosmosis microbes"
@@ -49,7 +49,7 @@
/datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M)
if(volume > 2.5)
M.ForceContractDisease(new /datum/disease/tuberculosis(0))
- ..()
+ return ..()
/datum/reagent/jagged_crystals
name = "Jagged Crystals"
@@ -61,7 +61,7 @@
/datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M)
M.ForceContractDisease(new /datum/disease/berserker(0))
- ..()
+ return ..()
/datum/reagent/salmonella
name = "Salmonella"
@@ -73,7 +73,7 @@
/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
- ..()
+ return ..()
/datum/reagent/gibbis
name = "Gibbis"
@@ -86,7 +86,7 @@
/datum/reagent/gibbis/on_mob_life(mob/living/carbon/M)
if(volume > 2.5)
M.ForceContractDisease(new /datum/disease/gbs/curable(0))
- ..()
+ return ..()
/datum/reagent/prions
name = "Prions"
@@ -99,7 +99,7 @@
/datum/reagent/prions/on_mob_life(mob/living/carbon/M)
if(volume > 4.5)
M.ForceContractDisease(new /datum/disease/kuru(0))
- ..()
+ return ..()
/datum/reagent/grave_dust
name = "Grave Dust"
@@ -112,7 +112,7 @@
/datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M)
if(volume > 4.5)
M.ForceContractDisease(new /datum/disease/vampire(0))
- ..()
+ return ..()
/datum/reagent/heartworms
name = "Space heartworms"
@@ -130,7 +130,7 @@
if(ate_heart)
ate_heart.remove(H)
qdel(ate_heart)
- ..()
+ return ..()
/datum/reagent/concentrated_initro
name = "Concentrated Initropidril"
@@ -146,7 +146,7 @@
var/mob/living/carbon/human/H = M
if(!H.undergoing_cardiac_arrest())
H.set_heartattack(TRUE) // rip in pepperoni
- ..()
+ return ..()
//virus foods
diff --git a/code/modules/reagents/chemistry/reagents/drink_base.dm b/code/modules/reagents/chemistry/reagents/drink_base.dm
index a924d84349b..4f20e323049 100644
--- a/code/modules/reagents/chemistry/reagents/drink_base.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_base.dm
@@ -11,16 +11,17 @@
var/adj_temp_cool = 0
/datum/reagent/consumable/drink/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(adj_dizzy)
M.AdjustDizzy(adj_dizzy)
if(adj_drowsy)
M.AdjustDrowsy(adj_drowsy)
if(adj_sleepy)
- M.AdjustSleeping(adj_sleepy)
+ update_flags |= M.AdjustSleeping(adj_sleepy, FALSE)
if(adj_temp_hot)
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
M.bodytemperature = min(310, M.bodytemperature + (adj_temp_hot * TEMPERATURE_DAMAGE_COEFFICIENT))
if(adj_temp_cool)
if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT))
- ..()
+ return ..() | update_flags
diff --git a/code/modules/reagents/chemistry/reagents/drink_cold.dm b/code/modules/reagents/chemistry/reagents/drink_cold.dm
index a92d8644c6b..1a7be3748b8 100644
--- a/code/modules/reagents/chemistry/reagents/drink_cold.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_cold.dm
@@ -65,12 +65,13 @@
taste_message = "cola"
/datum/reagent/consumable/drink/cold/nuka_cola/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.Jitter(20)
- M.Druggy(30)
+ update_flags |= M.Druggy(30, FALSE)
M.AdjustDizzy(5)
M.SetDrowsy(0)
M.status_flags |= GOTTAGOFAST
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/drink/cold/nuka_cola/on_mob_delete(mob/living/M)
M.status_flags &= ~GOTTAGOFAST
@@ -172,4 +173,4 @@
/datum/reagent/consumable/drink/cold/rewriter/on_mob_life(mob/living/M)
M.Jitter(5)
- ..()
+ return ..()
diff --git a/code/modules/reagents/chemistry/reagents/drinks.dm b/code/modules/reagents/chemistry/reagents/drinks.dm
index cf73e0a5087..b6b4a27e10d 100644
--- a/code/modules/reagents/chemistry/reagents/drinks.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks.dm
@@ -9,9 +9,10 @@
taste_message = "orange juice"
/datum/reagent/consumable/drink/orangejuicde/on_mob_life(mob/living/M)
- if(M.getOxyLoss() && prob(30))
- M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ if(prob(30))
+ update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/tomatojuice
name = "Tomato Juice"
@@ -34,9 +35,10 @@
taste_message = "pineapple juice"
/datum/reagent/consumable/drink/tomatojuice/on_mob_life(mob/living/M)
- if(M.getFireLoss() && prob(20))
- M.adjustFireLoss(-1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ if(prob(20))
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/limejuice
name = "Lime Juice"
@@ -49,9 +51,10 @@
taste_message = "lime juice"
/datum/reagent/consumable/drink/limejuice/on_mob_life(mob/living/M)
- if(M.getToxLoss() && prob(20))
- M.adjustToxLoss(-1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ if(prob(20))
+ update_flags |= M.adjustToxLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/carrotjuice
name = "Carrot juice"
@@ -63,16 +66,17 @@
drink_desc = "It is just like a carrot but without crunching."
taste_message = "carrot juice"
-/datum/reagent/consumable/drink/carrotjuicde/on_mob_life(mob/living/M)
- M.AdjustEyeBlurry(-1)
- M.AdjustEyeBlind(-1)
+/datum/reagent/consumable/drink/carrotjuice/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.AdjustEyeBlurry(-1, FALSE)
+ update_flags |= M.AdjustEyeBlind(-1, FALSE)
switch(current_cycle)
if(1 to 20)
//nothing
if(21 to INFINITY)
if(prob(current_cycle-10))
- M.disabilities &= ~NEARSIGHTED
- ..()
+ update_flags |= M.CureNearsighted(FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/doctor_delight
name = "The Doctor's Delight"
@@ -86,9 +90,10 @@
taste_message = "healthy dietary choices"
/datum/reagent/consumable/drink/doctors_delight/on_mob_life(mob/living/M)
- if(M.getToxLoss() && prob(20))
- M.adjustToxLoss(-1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ if(prob(20))
+ update_flags |= M.adjustToxLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/triple_citrus
name = "Triple Citrus"
@@ -126,8 +131,9 @@
taste_message = "berry juice"
/datum/reagent/consumable/drink/poisonberryjuice/on_mob_life(mob/living/M)
- M.adjustToxLoss(1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/applejuice
name = "Apple Juice"
@@ -171,10 +177,11 @@
taste_message = "banana juice"
/datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if((ishuman(M) && M.job in list("Clown") ) || issmall(M))
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/nothing
name = "Nothing"
@@ -186,10 +193,11 @@
taste_message = "nothing... how?"
/datum/reagent/consumable/drink/nothing/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && M.job in list("Mime"))
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/potato_juice
name = "Potato Juice"
@@ -213,11 +221,12 @@
taste_message = "milk"
/datum/reagent/consumable/drink/milk/on_mob_life(mob/living/M)
- if(M.getBruteLoss() && prob(20))
- M.adjustBruteLoss(-1)
+ var/update_flags = STATUS_UPDATE_NONE
+ if(prob(20))
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
if(holder.has_reagent("capsaicin"))
holder.remove_reagent("capsaicin", 2)
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/drink/milk/soymilk
name = "Soy Milk"
@@ -275,13 +284,14 @@
taste_message = "coffee"
/datum/reagent/consumable/drink/coffee/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(holder.has_reagent("frostoil"))
holder.remove_reagent("frostoil", 5)
if(prob(50))
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
- ..()
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/coffee/overdose_process(mob/living/M, severity)
if(volume > 45)
@@ -311,10 +321,11 @@
drink_desc = "A nice and refrshing beverage while you are reading."
/datum/reagent/consumable/drink/coffee/soy_latte/on_mob_life(mob/living/M)
- ..()
- M.SetSleeping(0)
- if(M.getBruteLoss() && prob(20))
- M.adjustBruteLoss(-1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.SetSleeping(0, FALSE)
+ if(prob(20))
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/coffee/cafe_latte
name = "Cafe Latte"
@@ -328,10 +339,11 @@
drink_desc = "A nice, strong and refreshing beverage while you are reading."
/datum/reagent/consumable/drink/coffee/cafe_latte/on_mob_life(mob/living/M)
- ..()
- M.SetSleeping(0)
- if(M.getBruteLoss() && prob(20))
- M.adjustBruteLoss(-1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.SetSleeping(0, FALSE)
+ if(prob(20))
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/coffee/cafe_latte/cafe_mocha
name = "Cafe Mocha"
@@ -357,9 +369,10 @@
taste_message = "tea"
/datum/reagent/consumable/drink/tea/on_mob_life(mob/living/M)
- if(M.getToxLoss() && prob(20))
- M.adjustToxLoss(-1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ if(prob(20))
+ update_flags |= M.adjustToxLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/tea/icetea
name = "Iced Tea"
@@ -383,10 +396,11 @@
taste_message = "honks"
/datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if((ishuman(M) && M.job in list("Clown") ) || issmall(M))
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/silencer
name = "Silencer"
@@ -399,10 +413,11 @@
taste_message = "mphhhh"
/datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && M.job in list("Mime"))
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/drink/chocolatepudding
name = "Chocolate Pudding"
diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm
index 77c4b08f359..980c6d5bf9d 100644
--- a/code/modules/reagents/chemistry/reagents/drugs.dm
+++ b/code/modules/reagents/chemistry/reagents/drugs.dm
@@ -10,7 +10,7 @@
if(ishuman(M))
if(prob(7))
M.emote(pick("twitch","drool","moan","gasp"))
- ..()
+ return ..()
/datum/reagent/lithium
@@ -24,8 +24,9 @@
if(isturf(M.loc) && !istype(M.loc, /turf/space))
if(M.canmove && !M.restrained())
step(M, pick(cardinal))
- if(prob(5)) M.emote(pick("twitch","drool","moan"))
- ..()
+ if(prob(5))
+ M.emote(pick("twitch","drool","moan"))
+ return ..()
/datum/reagent/lsd
name = "Lysergic acid diethylamide"
@@ -35,9 +36,10 @@
color = "#0000D8"
/datum/reagent/lsd/on_mob_life(mob/living/M)
- M.Druggy(15)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.Druggy(15, FALSE)
M.AdjustHallucinate(10)
- ..()
+ return ..() | update_flags
/datum/reagent/space_drugs
name = "Space drugs"
@@ -50,12 +52,14 @@
heart_rate_decrease = 1
/datum/reagent/space_drugs/on_mob_life(mob/living/M)
- M.Druggy(15)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.Druggy(15, FALSE)
if(isturf(M.loc) && !istype(M.loc, /turf/space))
if(M.canmove && !M.restrained())
step(M, pick(cardinal))
- if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
- ..()
+ if(prob(7))
+ M.emote(pick("twitch","drool","moan","giggle"))
+ return ..() | update_flags
/datum/reagent/psilocybin
name = "Psilocybin"
@@ -64,25 +68,29 @@
color = "#E700E7" // rgb: 231, 0, 231
/datum/reagent/psilocybin/on_mob_life(mob/living/M)
- M.Druggy(30)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.Druggy(30, FALSE)
switch(current_cycle)
if(1 to 5)
M.Stuttering(1)
M.Dizzy(5)
- if(prob(10)) M.emote(pick("twitch","giggle"))
+ if(prob(10))
+ M.emote(pick("twitch","giggle"))
if(5 to 10)
M.Stuttering(1)
M.Jitter(10)
M.Dizzy(10)
- M.Druggy(35)
- if(prob(20)) M.emote(pick("twitch","giggle"))
+ update_flags |= M.Druggy(35, FALSE)
+ if(prob(20))
+ M.emote(pick("twitch","giggle"))
if(10 to INFINITY)
M.Stuttering(1)
M.Jitter(20)
M.Dizzy(20)
- M.Druggy(40)
- if(prob(30)) M.emote(pick("twitch","giggle"))
- ..()
+ update_flags |= M.Druggy(40, FALSE)
+ if(prob(30))
+ M.emote(pick("twitch","giggle"))
+ return ..() | update_flags
/datum/reagent/nicotine
name = "Nicotine"
@@ -95,55 +103,59 @@
heart_rate_increase = 1
/datum/reagent/nicotine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.")
if(prob(5))
to_chat(M, "[smoke_message]")
if(prob(50))
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
- M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
+ update_flags |= M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/nicotine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("[M] looks nervous!")
M.AdjustConfused(15)
- M.adjustToxLoss(2)
+ update_flags |= M.adjustToxLoss(2, FALSE)
M.Jitter(10)
M.emote("twitch_s")
else if(effect <= 4)
M.visible_message("[M] is all sweaty!")
M.bodytemperature += rand(15,30)
- M.adjustToxLoss(3)
+ update_flags |= M.adjustToxLoss(3, FALSE)
else if(effect <= 7)
- M.adjustToxLoss(4)
+ update_flags |= M.adjustToxLoss(4, FALSE)
M.emote("twitch")
M.Jitter(10)
else if(severity == 2)
if(effect <= 2)
M.emote("gasp")
to_chat(M, "You can't breathe!")
- M.adjustOxyLoss(15)
- M.adjustToxLoss(3)
- M.Stun(1)
+ update_flags |= M.adjustOxyLoss(15, FALSE)
+ update_flags |= M.adjustToxLoss(3, FALSE)
+ update_flags |= M.Stun(1, FALSE)
else if(effect <= 4)
to_chat(M, "You feel terrible!")
M.emote("drool")
M.Jitter(10)
- M.adjustToxLoss(5)
- M.Weaken(1)
+ update_flags |= M.adjustToxLoss(5, FALSE)
+ update_flags |= M.Weaken(1, FALSE)
M.AdjustConfused(33)
else if(effect <= 7)
M.emote("collapse")
to_chat(M, "Your heart is pounding!")
M << 'sound/effects/singlebeat.ogg'
- M.Paralyse(5)
+ update_flags |= M.Paralyse(5, FALSE)
M.Jitter(30)
- M.adjustToxLoss(6)
- M.adjustOxyLoss(20)
+ update_flags |= M.adjustToxLoss(6, FALSE)
+ update_flags |= M.adjustOxyLoss(20, FALSE)
+ return list(effect, update_flags)
/datum/reagent/crank
name = "Crank"
@@ -155,9 +167,10 @@
addiction_chance = 50
/datum/reagent/crank/on_mob_life(mob/living/M)
- M.AdjustParalysis(-2)
- M.AdjustStunned(-2)
- M.AdjustWeakened(-2)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.AdjustParalysis(-2, FALSE)
+ update_flags |= M.AdjustStunned(-2, FALSE)
+ update_flags |= M.AdjustWeakened(-2, FALSE)
if(prob(15))
M.emote(pick("twitch", "twitch_s", "grumble", "laugh"))
if(prob(8))
@@ -169,13 +182,15 @@
M.bodytemperature += rand(1,10)
if(prob(4))
to_chat(M, "You feel kinda awful!")
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
M.AdjustJitter(30)
M.emote(pick("groan", "moan"))
- ..()
+ return ..() | update_flags
/datum/reagent/crank/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("[M] looks confused!")
@@ -185,9 +200,9 @@
else if(effect <= 4)
M.visible_message("[M] is all sweaty!")
M.bodytemperature += rand(5,30)
- M.adjustBrainLoss(1)
- M.adjustToxLoss(1)
- M.Stun(2)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.Stun(2, FALSE)
else if(effect <= 7)
M.Jitter(30)
M.emote("grumble")
@@ -195,14 +210,14 @@
if(effect <= 2)
M.visible_message("[M] is sweating like a pig!")
M.bodytemperature += rand(20,100)
- M.adjustToxLoss(5)
- M.Stun(3)
+ update_flags |= M.adjustToxLoss(5, FALSE)
+ update_flags |= M.Stun(3, FALSE)
else if(effect <= 4)
M.visible_message("[M] starts tweaking the hell out!")
M.Jitter(100)
- M.adjustToxLoss(2)
- M.adjustBrainLoss(8)
- M.Weaken(3)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBrainLoss(8, FALSE)
+ update_flags |= M.Weaken(3, FALSE)
M.AdjustConfused(25)
M.emote("scream")
M.reagents.add_reagent("jagged_crystals", 5)
@@ -210,8 +225,9 @@
M.emote("scream")
M.visible_message("[M] nervously scratches at [M.p_their()] skin!")
M.Jitter(10)
- M.adjustBruteLoss(5)
+ update_flags |= M.adjustBruteLoss(5, FALSE)
M.emote("twitch_s")
+ return list(effect, update_flags)
/datum/reagent/krokodil
name = "Krokodil"
@@ -224,9 +240,10 @@
/datum/reagent/krokodil/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustJitter(-40)
if(prob(25))
- M.adjustBrainLoss(1)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
if(prob(15))
M.emote(pick("smile", "grin", "yawn", "laugh", "drool"))
if(prob(10))
@@ -236,49 +253,52 @@
if(prob(5))
to_chat(M, "You feel too chill!")
M.emote(pick("yawn", "drool"))
- M.Stun(1)
- M.adjustToxLoss(1)
- M.adjustBrainLoss(1)
+ update_flags |= M.Stun(1, FALSE)
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
M.bodytemperature -= 20
if(prob(2))
to_chat(M, "Your skin feels all rough and dry.")
- M.adjustBruteLoss(2)
- ..()
+ update_flags |= M.adjustBruteLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/krokodil/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("[M] looks dazed!")
- M.Stun(3)
+ update_flags |= M.Stun(3, FALSE)
M.emote("drool")
else if(effect <= 4)
M.emote("shiver")
M.bodytemperature -= 40
else if(effect <= 7)
to_chat(M, "Your skin is cracking and bleeding!")
- M.adjustBruteLoss(5)
- M.adjustToxLoss(2)
- M.adjustBrainLoss(1)
+ update_flags |= M.adjustBruteLoss(5, FALSE)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
M.emote("cry")
else if(severity == 2)
if(effect <= 2)
M.visible_message("[M] sways and falls over!")
- M.adjustToxLoss(3)
- M.adjustBrainLoss(3)
- M.Weaken(8)
+ update_flags |= M.adjustToxLoss(3, FALSE)
+ update_flags |= M.adjustBrainLoss(3, FALSE)
+ update_flags |= M.Weaken(8, FALSE)
M.emote("faint")
else if(effect <= 4)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.visible_message("[M]'s skin is rotting away!")
- H.adjustBruteLoss(25)
+ update_flags |= H.adjustBruteLoss(25, FALSE)
H.emote("scream")
H.ChangeToHusk()
H.emote("faint")
else if(effect <= 7)
M.emote("shiver")
M.bodytemperature -= 70
+ return list(effect, update_flags)
/datum/reagent/methamphetamine
name = "Methamphetamine"
@@ -292,32 +312,35 @@
heart_rate_increase = 1
/datum/reagent/methamphetamine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(5))
M.emote(pick("twitch_s","blink_r","shiver"))
if(current_cycle >= 25)
M.AdjustJitter(5)
M.AdjustDrowsy(-10)
- M.AdjustParalysis(-2.5)
- M.AdjustStunned(-2.5)
- M.AdjustWeakened(-2.5)
- M.adjustStaminaLoss(-2)
- M.SetSleeping(0)
+ update_flags |= M.AdjustParalysis(-2.5, FALSE)
+ update_flags |= M.AdjustStunned(-2.5, FALSE)
+ update_flags |= M.AdjustWeakened(-2.5, FALSE)
+ update_flags |= M.adjustStaminaLoss(-2, FALSE)
+ update_flags |= M.SetSleeping(0, FALSE)
M.status_flags |= GOTTAGOFAST_METH
if(prob(50))
- M.adjustBrainLoss(1.0)
- ..()
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/methamphetamine/on_mob_delete(mob/living/M)
M.status_flags &= ~GOTTAGOFAST_METH
..()
/datum/reagent/methamphetamine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("[M] can't seem to control [M.p_their()] legs!")
M.AdjustConfused(20)
- M.Weaken(4)
+ update_flags |= M.Weaken(4, FALSE)
else if(effect <= 4)
M.visible_message("[M]'s hands flip out and flail everywhere!")
M.drop_l_hand()
@@ -332,9 +355,10 @@
else if(effect <= 4)
M.visible_message("[M] falls to the floor and flails uncontrollably!")
M.Jitter(10)
- M.Weaken(10)
+ update_flags |= M.Weaken(10, FALSE)
else if(effect <= 7)
M.emote("laugh")
+ return list(effect, update_flags)
/datum/reagent/bath_salts
name = "Bath Salts"
@@ -348,6 +372,7 @@
/datum/reagent/bath_salts/on_mob_life(mob/living/M)
var/check = rand(0,100)
+ var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
@@ -358,25 +383,25 @@
H.update_fhair()
H.visible_message("[H] has a wild look in [H.p_their()] eyes!")
if(check < 60)
- M.SetParalysis(0)
- M.SetStunned(0)
- M.SetWeakened(0)
+ update_flags |= M.SetParalysis(0, FALSE)
+ update_flags |= M.SetStunned(0, FALSE)
+ update_flags |= M.SetWeakened(0, FALSE)
if(check < 30)
M.emote(pick("twitch", "twitch_s", "scream", "drool", "grumble", "mumble"))
- M.Druggy(15)
+ update_flags |= M.Druggy(15, FALSE)
if(check < 20)
M.AdjustConfused(10)
if(check < 8)
M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5))
M.visible_message("[M] scratches at something under [M.p_their()] skin!")
- M.adjustBruteLoss(5)
+ update_flags |= M.adjustBruteLoss(5, FALSE)
else if(check < 16)
M.AdjustHallucinate(30)
else if(check < 24)
to_chat(M, "They're coming for you!")
else if(check < 28)
to_chat(M, "THEY'RE GONNA GET YOU!")
- ..()
+ return ..() | update_flags
/datum/reagent/bath_salts/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == INGEST)
@@ -390,7 +415,9 @@
to_chat(M, "You feel a bit more salty than usual.")
/datum/reagent/bath_salts/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("[M] flails around like a lunatic!")
@@ -401,10 +428,10 @@
else if(effect <= 4)
M.visible_message("[M]'s eyes dilate!")
M.emote("twitch_s")
- M.adjustToxLoss(2)
- M.adjustBrainLoss(1)
- M.Stun(3)
- M.EyeBlurry(7)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ update_flags |= M.Stun(3, FALSE)
+ update_flags |= M.EyeBlurry(7, FALSE)
M.reagents.add_reagent("jagged_crystals", 5)
else if(effect <= 7)
M.emote("faint")
@@ -412,25 +439,26 @@
else if(severity == 2)
if(effect <= 2)
M.visible_message("[M]'s eyes dilate!")
- M.adjustToxLoss(2)
- M.adjustBrainLoss(1)
- M.Stun(3)
- M.EyeBlurry(7)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ update_flags |= M.Stun(3, FALSE)
+ update_flags |= M.EyeBlurry(7, FALSE)
M.reagents.add_reagent("jagged_crystals", 5)
else if(effect <= 4)
M.visible_message("[M] convulses violently and falls to the floor!")
M.Jitter(50)
- M.adjustToxLoss(2)
- M.adjustBrainLoss(1)
- M.Weaken(8)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ update_flags |= M.Weaken(8, FALSE)
M.emote("gasp")
M.reagents.add_reagent("jagged_crystals", 5)
else if(effect <= 7)
M.emote("scream")
M.visible_message("[M] tears at [M.p_their()] own skin!")
- M.adjustBruteLoss(5)
+ update_flags |= M.adjustBruteLoss(5, FALSE)
M.reagents.add_reagent("jagged_crystals", 5)
M.emote("twitch")
+ return list(effect, update_flags)
/datum/reagent/jenkem
name = "Jenkem"
@@ -442,11 +470,12 @@
taste_message = "puke... or worse"
/datum/reagent/jenkem/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.Dizzy(5)
if(prob(10))
M.emote(pick("twitch_s","drool","moan"))
- M.adjustToxLoss(1)
- ..()
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/aranesp
name = "Aranesp"
@@ -456,9 +485,10 @@
color = "#60A584" // rgb: 96, 165, 132
/datum/reagent/aranesp/on_mob_life(mob/living/M)
- M.adjustStaminaLoss(-40)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustStaminaLoss(-40, FALSE)
if(prob(90))
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
if(prob(5))
M.emote(pick("twitch", "shake", "tremble","quiver", "twitch_s"))
var/high_message = pick("really buff", "on top of the world","like you're made of steel", "energized", "invigorated", "full of energy")
@@ -466,10 +496,10 @@
to_chat(M, "[high_message]!")
if(prob(5))
to_chat(M, "You cannot breathe!")
- M.adjustOxyLoss(15)
- M.Stun(1)
- M.AdjustLoseBreath(1)
- ..()
+ update_flags |= M.adjustOxyLoss(15, FALSE)
+ update_flags |= M.Stun(1, FALSE)
+ M.AdjustLoseBreath(1, FALSE)
+ return ..() | update_flags
/datum/reagent/thc
name = "Tetrahydrocannabinol"
@@ -489,7 +519,7 @@
if(volume >= 50 && prob(25))
if(prob(10))
M.Drowsy(10)
- ..()
+ return ..()
/datum/reagent/fliptonium
name = "Fliptonium"
@@ -504,6 +534,7 @@
taste_message = "flips"
/datum/reagent/fliptonium/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(current_cycle == 5)
M.SpinAnimation(speed = 11, loops = -1)
if(current_cycle == 10)
@@ -522,12 +553,12 @@
M.SpinAnimation(speed = 4, loops = -1)
M.AdjustDrowsy(-6)
- M.AdjustParalysis(-1.5)
- M.AdjustStunned(-1.5)
- M.AdjustWeakened(-1.5)
- M.adjustStaminaLoss(-1.5)
- M.SetSleeping(0)
- ..()
+ update_flags |= M.AdjustParalysis(-1.5, FALSE)
+ update_flags |= M.AdjustStunned(-1.5, FALSE)
+ update_flags |= M.AdjustWeakened(-1.5, FALSE)
+ update_flags |= M.adjustStaminaLoss(-1.5, FALSE)
+ update_flags |= M.SetSleeping(0, FALSE)
+ return ..() | update_flags
/datum/reagent/fliptonium/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == INGEST || method == TOUCH)
@@ -538,12 +569,14 @@
M.SpinAnimation(speed = 12, loops = -1)
/datum/reagent/fliptonium/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("[M] can't seem to control [M.p_their()] legs!")
M.AdjustConfused(33)
- M.Weaken(2)
+ update_flags |= M.Weaken(2, FALSE)
else if(effect <= 4)
M.visible_message("[M]'s hands flip out and flail everywhere!")
M.drop_l_hand()
@@ -558,9 +591,10 @@
else if(effect <= 4)
M.visible_message("[M] falls to the floor and flails uncontrollably!")
M.Jitter(5)
- M.Weaken(5)
+ update_flags |= M.Weaken(5, FALSE)
else if(effect <= 7)
M.emote("laugh")
+ return list(effect, update_flags)
//////////////////////////////
// Synth-Drugs //
@@ -580,28 +614,32 @@
taste_message = "wiper fluid"
/datum/reagent/lube/ultra/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!")
if(prob(1))
if(prob(1))
high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!"
if(prob(5))
to_chat(M, "[high_message]")
- M.AdjustParalysis(-2)
- M.AdjustStunned(-2)
- M.AdjustWeakened(-2)
- M.adjustStaminaLoss(-2)
+ update_flags |= M.AdjustParalysis(-2, FALSE)
+ update_flags |= M.AdjustStunned(-2, FALSE)
+ update_flags |= M.AdjustWeakened(-2, FALSE)
+ update_flags |= M.adjustStaminaLoss(-2, FALSE)
M.status_flags |= GOTTAGOFAST_METH
M.Jitter(3)
- M.adjustBrainLoss(0.5)
+ update_flags |= M.adjustBrainLoss(0.5, FALSE)
if(prob(5))
M.emote(pick("twitch", "shiver"))
- ..()
+ return ..() | update_flags
/datum/reagent/lube/ultra/on_mob_delete(mob/living/M)
M.status_flags &= ~GOTTAGOFAST_METH
..()
/datum/reagent/lube/ultra/overdose_process(mob/living/M, severity)
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(prob(20))
M.emote("ping")
if(prob(33))
@@ -610,9 +648,9 @@
if(I)
M.drop_item()
if(prob(50))
- M.adjustFireLoss(10)
- M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
- ..()
+ update_flags |= M.adjustFireLoss(10, FALSE)
+ update_flags |= M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1), FALSE)
+ return list(effect, update_flags)
//Surge: Krokodil
/datum/reagent/surge
@@ -629,19 +667,21 @@
/datum/reagent/surge/on_mob_life(mob/living/M)
- M.Druggy(15)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.Druggy(15)
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
if(prob(1))
if(prob(1))
high_message = "01010100010100100100000101001110010100110100001101000101010011100100010001000101010011100100001101000101."
if(prob(5))
to_chat(M, "[high_message]")
- ..()
+ return ..() | update_flags
/datum/reagent/surge/overdose_process(mob/living/M, severity)
+ var/update_flags = STATUS_UPDATE_NONE
//Hit them with the same effects as an electrode!
- M.Stun(5)
- M.Weaken(5)
+ update_flags |= M.Stun(5, FALSE)
+ update_flags |= M.Weaken(5, FALSE)
M.Jitter(20)
M.apply_effect(STUTTER, 5)
if(prob(10))
@@ -654,5 +694,6 @@
B.pixel_x = rand(-20, 0)
B.pixel_y = rand(-20, 0)
B.icon = I
- M.adjustFireLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustFireLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return list(0, update_flags)
diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm
index 7426844e292..e42b30dc296 100644
--- a/code/modules/reagents/chemistry/reagents/food.dm
+++ b/code/modules/reagents/chemistry/reagents/food.dm
@@ -14,7 +14,7 @@
var/mob/living/carbon/human/H = M
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
H.nutrition += nutriment_factor // For hunger and fatness
- ..()
+ return ..()
/datum/reagent/consumable/nutriment // Pure nutriment, universally digestable and thus slightly less effective
name = "Nutriment"
@@ -25,16 +25,17 @@
color = "#664330" // rgb: 102, 67, 48
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(!(M.mind in ticker.mode.vampires))
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
if(prob(50))
- M.adjustBruteLoss(-1)
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 0.4
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/nutriment/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores
name = "Protein"
@@ -59,9 +60,10 @@
taste_message = null
/datum/reagent/consumable/vitamin/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(50))
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
if(M.satiety < 600)
M.satiety += 30
if(ishuman(M))
@@ -69,7 +71,7 @@
if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 0.5
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/sugar
name = "Sugar"
@@ -82,16 +84,17 @@
taste_message = "sweetness"
/datum/reagent/consumable/sugar/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-5)
if(current_cycle >= 90)
M.AdjustJitter(2)
if(prob(50))
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
to_chat(M, "You pass out from hyperglycemic shock!")
@@ -99,10 +102,12 @@
..()
/datum/reagent/consumable/sugar/overdose_process(mob/living/M, severity)
- M.Paralyse(3 * severity)
- M.Weaken(4 * severity)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.Paralyse(3 * severity, FALSE)
+ update_flags |= M.Weaken(4 * severity, FALSE)
if(prob(8))
- M.adjustToxLoss(severity)
+ update_flags |= M.adjustToxLoss(severity, FALSE)
+ return list(0, update_flags)
/datum/reagent/consumable/soysauce
name = "Soysauce"
@@ -150,7 +155,7 @@
M.bodytemperature += 20 * TEMPERATURE_DAMAGE_COEFFICIENT
if(isslime(M))
M.bodytemperature += rand(20,25)
- ..()
+ return ..()
/datum/reagent/consumable/condensedcapsaicin
name = "Condensed Capsaicin"
@@ -163,7 +168,7 @@
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/M)
if(prob(5))
M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]")
- ..()
+ return ..()
/datum/reagent/consumable/condensedcapsaicin/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
@@ -253,7 +258,7 @@
M.emote("shiver")
if(isslime(M))
M.bodytemperature -= rand(20,25)
- ..()
+ return ..()
/datum/reagent/consumable/frostoil/reaction_turf(turf/T, volume)
if(volume >= 5)
@@ -270,9 +275,10 @@
taste_message = "salt"
/datum/reagent/consumable/sodiumchloride/overdose_process(mob/living/M, severity)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(70))
- M.adjustBrainLoss(1)
- ..()
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/blackpepper
name = "Black Pepper"
@@ -311,7 +317,7 @@
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/M)
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
- ..()
+ return ..()
/datum/reagent/consumable/sprinkles
name = "Sprinkles"
@@ -321,10 +327,11 @@
taste_message = "sweetness"
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate"))
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/cornoil
name = "Corn Oil"
@@ -376,7 +383,7 @@
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/M)
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT))
- ..()
+ return ..()
/datum/reagent/consumable/hell_ramen
name = "Hell Ramen"
@@ -389,7 +396,7 @@
/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/M)
M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT
- ..()
+ return ..()
/datum/reagent/consumable/flour
name = "flour"
@@ -461,7 +468,7 @@
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 1.2)
- ..()
+ return ..()
/datum/reagent/consumable/vhfcs
name = "Very-high-fructose corn syrup"
@@ -473,7 +480,7 @@
/datum/reagent/consumable/vhfcs/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 2.4)
- ..()
+ return ..()
/datum/reagent/consumable/honey
name = "Honey"
@@ -485,11 +492,12 @@
taste_message = "sweetness"
/datum/reagent/consumable/honey/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.reagents.add_reagent("sugar", 3)
if(prob(20))
- M.adjustBruteLoss(-3)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustBruteLoss(-3, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/onion
name = "Concentrated Onion Juice"
@@ -524,7 +532,7 @@
/datum/reagent/consumable/chocolate/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 0.8)
- ..()
+ return ..()
/datum/reagent/consumable/chocolate/reaction_turf(turf/T, volume)
if(volume >= 5 && !isspaceturf(T))
@@ -539,13 +547,14 @@
taste_message = "tea"
/datum/reagent/consumable/mugwort/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && M.mind)
if(M.mind.special_role == SPECIAL_ROLE_WIZARD)
- M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/porktonium
name = "Porktonium"
@@ -563,6 +572,7 @@
if(prob(8))
M.reagents.add_reagent("radium", 15)
M.reagents.add_reagent("cyanide", 10)
+ return list(0, STATUS_UPDATE_NONE)
/datum/reagent/consumable/chicken_soup
name = "Chicken soup"
@@ -585,7 +595,7 @@
/datum/reagent/consumable/cheese/on_mob_life(mob/living/M)
if(prob(3))
M.reagents.add_reagent("cholesterol", rand(1,2))
- ..()
+ return ..()
/datum/reagent/consumable/cheese/reaction_turf(turf/T, volume)
if(volume >= 5 && !isspaceturf(T))
@@ -601,9 +611,11 @@
taste_message = "cheese?"
/datum/reagent/consumable/fake_cheese/overdose_process(mob/living/M, severity)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(8))
to_chat(M, "You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat.")
- M.adjustToxLoss(rand(1,2))
+ update_flags |= M.adjustToxLoss(rand(1,2), FALSE)
+ return list(0, update_flags)
/datum/reagent/consumable/weird_cheese
name = "Weird cheese"
@@ -617,7 +629,7 @@
/datum/reagent/consumable/weird_cheese/on_mob_life(mob/living/M)
if(prob(5))
M.reagents.add_reagent("cholesterol", rand(1,3))
- ..()
+ return ..()
/datum/reagent/consumable/weird_cheese/reaction_turf(turf/T, volume)
if(volume >= 5 && !isspaceturf(T))
@@ -634,7 +646,7 @@
/datum/reagent/consumable/beans/on_mob_life(mob/living/M)
if(prob(10))
M.emote("fart")
- ..()
+ return ..()
/datum/reagent/consumable/bread
name = "Bread"
@@ -657,7 +669,7 @@
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
M.reagents.add_reagent("porktonium", 5)
- ..()
+ return ..()
/datum/reagent/consumable/hydrogenated_soybeanoil
name = "Partially hydrogenated space-soybean oil"
@@ -678,19 +690,21 @@
metabolization_rate = 0.4
else
metabolization_rate = 0.2
- ..()
+ return ..()
/datum/reagent/consumable/hydrogenated_soybeanoil/overdose_process(mob/living/M, severity)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(33))
to_chat(M, "You feel horribly weak.")
if(prob(10))
to_chat(M, "You cannot breathe!")
- M.adjustOxyLoss(5)
+ update_flags |= M.adjustOxyLoss(5, FALSE)
if(prob(5))
to_chat(M, "You feel a sharp pain in your chest!")
- M.adjustOxyLoss(25)
- M.Stun(5)
- M.Paralyse(10)
+ update_flags |= M.adjustOxyLoss(25, FALSE)
+ update_flags |= M.Stun(5, FALSE)
+ update_flags |= M.Paralyse(10, FALSE)
+ return list(0, update_flags)
/datum/reagent/consumable/meatslurry
name = "Meat Slurry"
@@ -703,7 +717,7 @@
/datum/reagent/consumable/meatslurry/on_mob_life(mob/living/M)
if(prob(4))
M.reagents.add_reagent("cholesterol", rand(1,3))
- ..()
+ return ..()
/datum/reagent/consumable/meatslurry/reaction_turf(turf/T, volume)
if(prob(10) && volume >= 5 && !isspaceturf(T))
@@ -742,7 +756,7 @@
else if(prob(6))
to_chat(M, "[pick("You feel ill.","Your stomach churns.","You feel queasy.","You feel sick.")]")
M.emote(pick("groan","moan"))
- ..()
+ return ..()
/datum/reagent/consumable/pepperoni
name = "Pepperoni"
@@ -786,8 +800,9 @@
/datum/reagent/questionmark/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == INGEST)
- M.Stun(2)
- M.Weaken(2)
+ M.Stun(2, FALSE)
+ M.Weaken(2, FALSE)
+ M.update_canmove()
to_chat(M, "Ugh! Eating that was a terrible idea!")
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
@@ -801,13 +816,14 @@
taste_message = "excellent cuisine"
/datum/reagent/msg/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(5))
if(prob(10))
- M.adjustToxLoss(rand(2.4))
+ update_flags |= M.adjustToxLoss(rand(2.4), FALSE)
if(prob(7))
to_chat(M, "A horrible migraine overpowers you.")
- M.Stun(rand(2,5))
- ..()
+ update_flags |= M.Stun(rand(2,5), FALSE)
+ return ..() | update_flags
/datum/reagent/cholesterol
name = "cholesterol"
@@ -818,22 +834,23 @@
taste_message = "heart attack"
/datum/reagent/cholesterol/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(volume >= 25 && prob(volume*0.15))
to_chat(M, "Your chest feels [pick("weird","uncomfortable","nasty","gross","odd","unusual","warm")]!")
- M.adjustToxLoss(rand(1,2))
+ update_flags |= M.adjustToxLoss(rand(1,2), FALSE)
else if(volume >= 45 && prob(volume*0.08))
to_chat(M, "Your chest [pick("hurts","stings","aches","burns")]!")
- M.adjustToxLoss(rand(2,4))
- M.Stun(1)
+ update_flags |= M.adjustToxLoss(rand(2,4), FALSE)
+ update_flags |= M.Stun(1, FALSE)
else if(volume >= 150 && prob(volume*0.01))
to_chat(M, "Your chest is burning with pain!")
- M.Stun(1)
- M.Weaken(1)
+ update_flags |= M.Stun(1, FALSE)
+ update_flags |= M.Weaken(1, FALSE)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.undergoing_cardiac_arrest())
H.set_heartattack(TRUE)
- ..()
+ return ..() | update_flags
/datum/reagent/fungus
name = "Space fungus"
@@ -868,7 +885,7 @@
var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...")
if(prob(8))
to_chat(M, "[spooky_message]")
- ..()
+ return ..()
/datum/reagent/ectoplasm/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == INGEST)
@@ -879,12 +896,12 @@
if(volume >= 10 && !isspaceturf(T))
new /obj/item/reagent_containers/food/snacks/ectoplasm(T)
-///Vomit///
-
/datum/reagent/consumable/bread/reaction_turf(turf/T, volume)
if(volume >= 5 && !isspaceturf(T))
new /obj/item/reagent_containers/food/snacks/breadslice(T)
+ ///Vomit///
+
/datum/reagent/vomit
name = "Vomit"
id = "vomit"
@@ -921,15 +938,16 @@
taste_message = "mold"
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(current_cycle >= 10)
- M.Paralyse(2)
+ update_flags |= M.Paralyse(2, FALSE)
if(prob(20))
- M.LoseBreath(4)
- M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(3 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustStaminaLoss(10 * REAGENTS_EFFECT_MULTIPLIER)
- M.EyeBlurry(5)
- ..()
+ update_flags |= M.LoseBreath(4, FALSE)
+ update_flags |= M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustStaminaLoss(10 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.EyeBlurry(5, FALSE)
+ return ..() | update_flags
/datum/reagent/consumable/tinlux
name = "Tinea Luxor"
@@ -943,7 +961,7 @@
if(!light_activated)
M.set_light(2)
light_activated = 1
- ..()
+ return ..()
/datum/reagent/consumable/tinlux/on_mob_delete(mob/living/M)
M.set_light(0)
@@ -957,7 +975,8 @@
taste_message = "sweetness"
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(80))
- M.adjustBruteLoss(-1 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-1 * REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustBruteLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index f603d5eb0d1..bc6f8f66317 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -20,7 +20,7 @@
var/mob/living/carbon/human/H = M
if(H.traumatic_shock < 100)
H.shock_stage = 0
- ..()
+ return ..()
/datum/reagent/medicine/sterilizine
name = "Sterilizine"
@@ -49,17 +49,20 @@
overdose_threshold = 40
/datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-5)
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
- M.SetSleeping(0)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
+ update_flags |= M.SetSleeping(0, FALSE)
if(prob(50))
- M.adjustBrainLoss(-1.0)
- ..()
+ update_flags |= M.adjustBrainLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/synaptizine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 1)
M.visible_message("[M] suddenly and violently vomits!")
@@ -67,7 +70,7 @@
else if(effect <= 3)
M.emote(pick("groan","moan"))
if(effect <= 8)
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
else if(severity == 2)
if(effect <= 2)
M.visible_message("[M] suddenly and violently vomits!")
@@ -75,9 +78,10 @@
else if(effect <= 5)
M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!")
M.Dizzy(8)
- M.Weaken(4)
+ update_flags |= M.Weaken(4, FALSE)
if(effect <= 15)
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return list(effect, update_flags)
/datum/reagent/medicine/mitocholide
name = "Mitocholide"
@@ -93,7 +97,7 @@
//Mitocholide is hard enough to get, it's probably fair to make this all internal organs
for(var/obj/item/organ/internal/I in H.internal_organs)
I.heal_internal_damage(0.4)
- ..()
+ return ..()
/datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume)
if(istype(O, /obj/item/organ))
@@ -110,18 +114,19 @@
heart_rate_decrease = 1
/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(M.bodytemperature < 265)
- M.adjustCloneLoss(-4)
- M.adjustOxyLoss(-10)
- M.adjustToxLoss(-3)
- M.adjustBruteLoss(-12)
- M.adjustFireLoss(-12)
+ update_flags |= M.adjustCloneLoss(-4, FALSE)
+ update_flags |= M.adjustOxyLoss(-10, FALSE)
+ update_flags |= M.adjustToxLoss(-3, FALSE)
+ update_flags |= M.adjustBruteLoss(-12, FALSE)
+ update_flags |= M.adjustFireLoss(-12, FALSE)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head = H.get_organ("head")
if(head)
head.disfigured = FALSE
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/rezadone
name = "Rezadone"
@@ -132,21 +137,24 @@
overdose_threshold = 30
/datum/reagent/medicine/rezadone/on_mob_life(mob/living/M)
- M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
- M.adjustCloneLoss(-1) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate.
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.setCloneLoss(0, FALSE) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
+ update_flags |= M.adjustCloneLoss(-1, FALSE) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate. // why don't you fix the code instead
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head = H.get_organ("head")
if(head)
head.disfigured = FALSE
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/rezadone/overdose_process(mob/living/M, severity)
- M.adjustToxLoss(1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
M.Dizzy(5)
M.Jitter(5)
+ return list(0, update_flags)
/datum/reagent/medicine/spaceacillin
name = "Spaceacillin"
@@ -165,8 +173,9 @@
metabolization_rate = 3
/datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/M)
- M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
@@ -189,8 +198,9 @@
metabolization_rate = 3
/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/M)
- M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
@@ -216,15 +226,16 @@
taste_message = "salt"
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(33))
- M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(ishuman(M) && prob(33))
var/mob/living/carbon/human/H = M
if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 1
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/synthflesh
name = "Synthflesh"
@@ -255,12 +266,13 @@
color = "#000000"
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/M)
- M.adjustToxLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(prob(50))
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,1)
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/omnizine
name = "Omnizine"
@@ -273,30 +285,33 @@
addiction_chance = 5
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/M)
- M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(prob(50))
M.AdjustLoseBreath(-1)
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/omnizine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1) //lesser
- M.stuttering += 1
+ M.AdjustStuttering(1)
if(effect <= 1)
M.visible_message("[M] suddenly cluches [M.p_their()] gut!")
M.emote("scream")
- M.Stun(4)
- M.Weaken(4)
+ update_flags |= M.Stun(4, FALSE)
+ update_flags |= M.Weaken(4, FALSE)
else if(effect <= 3)
M.visible_message("[M] completely spaces out for a moment.")
M.AdjustConfused(15)
else if(effect <= 5)
M.visible_message("[M] stumbles and staggers.")
M.Dizzy(5)
- M.Weaken(3)
+ update_flags |= M.Weaken(3, FALSE)
else if(effect <= 7)
M.visible_message("[M] shakes uncontrollably.")
M.Jitter(30)
@@ -304,16 +319,17 @@
if(effect <= 2)
M.visible_message("[M] suddenly cluches [M.p_their()] gut!")
M.emote("scream")
- M.Stun(7)
- M.Weaken(7)
+ update_flags |= M.Stun(7, FALSE)
+ update_flags |= M.Weaken(7, FALSE)
else if(effect <= 5)
M.visible_message("[M] jerks bolt upright, then collapses!")
- M.Paralyse(5)
- M.Weaken(4)
+ update_flags |= M.Paralyse(5, FALSE)
+ update_flags |= M.Weaken(4, FALSE)
else if(effect <= 8)
M.visible_message("[M] stumbles and staggers.")
M.Dizzy(5)
- M.Weaken(3)
+ update_flags |= M.Weaken(3, FALSE)
+ return list(effect, update_flags)
/datum/reagent/medicine/calomel
name = "Calomel"
@@ -324,14 +340,15 @@
metabolization_rate = 0.8
/datum/reagent/medicine/calomel/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,5)
if(M.health > 20)
- M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(prob(6))
M.fakevomit()
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/potass_iodide
name = "Potassium Iodide"
@@ -343,7 +360,7 @@
/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M)
if(prob(80))
M.radiation = max(0, M.radiation-1)
- ..()
+ return ..()
/datum/reagent/medicine/pen_acid
name = "Pentetic Acid"
@@ -353,16 +370,17 @@
color = "#C8A5DC"
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,4)
M.radiation = max(0, M.radiation-7)
if(prob(75))
- M.adjustToxLoss(-4*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustToxLoss(-4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(prob(33))
- M.adjustBruteLoss(1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustBruteLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/sal_acid
name = "Salicylic Acid"
@@ -375,13 +393,14 @@
overdose_threshold = 25
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(55))
- M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.traumatic_shock < 100)
H.shock_stage = 0
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/salbutamol
name = "Salbutamol"
@@ -392,9 +411,10 @@
metabolization_rate = 0.2
/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M)
- M.adjustOxyLoss(-6*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustOxyLoss(-6*REAGENTS_EFFECT_MULTIPLIER, FALSE)
M.AdjustLoseBreath(-4)
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/perfluorodecalin
name = "Perfluorodecalin"
@@ -406,14 +426,15 @@
addiction_chance = 20
/datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
- M.adjustOxyLoss(-25*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustOxyLoss(-25*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(volume >= 4)
M.LoseBreath(6)
M.Silence(6)
if(prob(33))
- M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/ephedrine
name = "Ephedrine"
@@ -426,22 +447,25 @@
addiction_chance = 25
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-5)
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
- M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
+ update_flags |= M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
M.AdjustLoseBreath(-1, bound_lower = 5)
if(M.oxyloss > 75)
- M.adjustOxyLoss(-1)
+ update_flags |= M.adjustOxyLoss(-1, FALSE)
if(M.health < 0 || M.health > 0 && prob(33))
- M.adjustToxLoss(-1)
- M.adjustBruteLoss(-1)
- M.adjustFireLoss(-1)
- ..()
+ update_flags |= M.adjustToxLoss(-1, FALSE)
+ update_flags |= M.adjustBruteLoss(-1, FALSE)
+ update_flags |= M.adjustFireLoss(-1, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 1)
M.visible_message("[M] suddenly and violently vomits!")
@@ -457,9 +481,10 @@
else if(effect <= 5)
M.visible_message("[M.name] staggers and drools, [M.p_their()] eyes bloodshot!")
M.Dizzy(2)
- M.Weaken(3)
+ update_flags |= M.Weaken(3, FALSE)
if(effect <= 15)
M.emote("collapse")
+ return list(effect, update_flags)
/datum/reagent/medicine/diphenhydramine
name = "Diphenhydramine"
@@ -476,10 +501,10 @@
if(prob(7))
M.emote("yawn")
if(prob(3))
- M.Stun(2)
+
M.AdjustDrowsy(1)
M.visible_message("[M] looks a bit dazed.")
- ..()
+ return ..()
/datum/reagent/medicine/morphine
name = "Morphine"
@@ -516,19 +541,20 @@
color = "#C8A5DC"
/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(80))
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
E.heal_internal_damage(1)
- M.AdjustEyeBlurry(-1)
- M.AdjustEarDamage(-1)
+ update_flags |= M.AdjustEyeBlurry(-1, FALSE)
+ update_flags |= M.AdjustEarDamage(-1, FALSE)
if(prob(50))
- M.CureNearsighted()
+ update_flags |= M.CureNearsighted(FALSE)
if(prob(30))
- M.CureBlind()
- M.SetEyeBlind(0)
+ update_flags |= M.CureBlind(FALSE)
+ update_flags |= M.SetEyeBlind(0, FALSE)
if(M.ear_damage <= 25)
if(prob(30))
M.SetEarDeaf(0)
@@ -544,21 +570,22 @@
overdose_threshold = 25
/datum/reagent/medicine/atropine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDizzy(1)
M.Confused(5)
if(prob(4))
M.emote("collapse")
M.AdjustLoseBreath(-5, bound_lower = 5)
if(M.oxyloss > 65)
- M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(M.health < -25)
- M.adjustToxLoss(-1)
- M.adjustBruteLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustToxLoss(-1, FALSE)
+ update_flags |= M.adjustBruteLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
else if(M.health > -60)
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
M.reagents.remove_reagent("sarin", 20)
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/epinephrine
name = "Epinephrine"
@@ -570,29 +597,32 @@
overdose_threshold = 20
/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-5)
if(prob(20))
- M.AdjustParalysis(-1)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
if(prob(20))
- M.AdjustStunned(-1)
+ update_flags |= M.AdjustStunned(-1, FALSE)
if(prob(20))
- M.AdjustWeakened(-1)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
if(prob(5))
- M.SetSleeping(0)
+ update_flags |= M.SetSleeping(0, FALSE)
if(prob(5))
- M.adjustBrainLoss(-1)
+ update_flags |= M.adjustBrainLoss(-1, FALSE)
holder.remove_reagent("histamine", 15)
M.AdjustLoseBreath(-1, bound_lower = 3)
if(M.oxyloss > 35)
- M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(M.health < -10 && M.health > -65)
- M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/epinephrine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 1)
M.visible_message("[M] suddenly and violently vomits!")
@@ -608,7 +638,7 @@
else if(effect <= 5)
M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!")
M.Dizzy(2)
- M.Weaken(3)
+ update_flags |= M.Weaken(3, FALSE)
if(effect <= 15)
M.emote("collapse")
@@ -621,10 +651,11 @@
metabolization_rate = 0.2
/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(10))
- M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
if(volume < 1)
@@ -685,8 +716,9 @@
color = "#D1D1F1"
/datum/reagent/medicine/mannitol/on_mob_life(mob/living/M)
- M.adjustBrainLoss(-3)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBrainLoss(-3, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/mutadone
name = "Mutadone"
@@ -722,12 +754,13 @@
color = "#009CA8"
/datum/reagent/medicine/antihol/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.SetSlur(0)
M.AdjustDrunk(-4)
M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 8, 0, 1)
if(M.toxloss <= 25)
- M.adjustToxLoss(-2.0)
- ..()
+ update_flags |= M.adjustToxLoss(-2.0, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/stimulants
name = "Stimulants"
@@ -737,26 +770,28 @@
can_synth = FALSE
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(volume > 5)
- M.adjustOxyLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
- M.setStaminaLoss(0)
+ update_flags |= M.adjustOxyLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.setStaminaLoss(0, FALSE)
M.SetSlowed(0)
M.AdjustDizzy(-10)
M.AdjustDrowsy(-10)
M.SetConfused(0)
- M.SetSleeping(0)
+ update_flags |= M.SetSleeping(0, FALSE)
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
M.status_flags &= ~status
else
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
- M.adjustToxLoss(2)
- M.adjustBruteLoss(1)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBruteLoss(1, FALSE)
if(prob(10))
- M.Stun(3)
- ..()
+ update_flags |= M.Stun(3, FALSE)
+
+ return ..() | update_flags
/datum/reagent/medicine/stimulants/on_mob_delete(mob/living/M)
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
@@ -772,27 +807,30 @@
can_synth = FALSE
/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.status_flags |= GOTTAGOFAST
if(M.health < 50 && M.health > 0)
- M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
- M.AdjustParalysis(-3)
- M.AdjustStunned(-3)
- M.AdjustWeakened(-3)
- M.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.AdjustParalysis(-3, FALSE)
+ update_flags |= M.AdjustStunned(-3, FALSE)
+ update_flags |= M.AdjustWeakened(-3, FALSE)
+ update_flags |= M.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/stimulative_agent/on_mob_delete(mob/living/M)
M.status_flags &= ~GOTTAGOFAST
..()
/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M, severity)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(33))
- M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
M.AdjustLoseBreath(1)
+ return list(0, update_flags)
/datum/reagent/medicine/insulin
name = "Insulin"
@@ -835,6 +873,7 @@
color = "#FFDCFF"
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.reagents.remove_reagent("crank", 5)
M.reagents.remove_reagent("methamphetamine", 5)
M.reagents.remove_reagent("space_drugs", 5)
@@ -845,7 +884,7 @@
M.reagents.remove_reagent("bath_salts", 5)
M.reagents.remove_reagent("lsd", 5)
M.reagents.remove_reagent("thc", 5)
- M.AdjustDruggy(-5)
+ update_flags |= M.AdjustDruggy(-5, FALSE)
M.AdjustHallucinate(-5)
M.AdjustJitter(-5)
if(prob(50))
@@ -853,8 +892,8 @@
if(prob(10))
M.emote("drool")
if(prob(20))
- M.adjustBrainLoss(1)
- ..()
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/ether
name = "Ether"
@@ -886,13 +925,14 @@
can_synth = FALSE
/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
- M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER) //A ton of healing - this is a 50 telecrystal investment.
- M.adjustFireLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustOxyLoss(-15*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBrainLoss(-15*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustCloneLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE) //A ton of healing - this is a 50 telecrystal investment.
+ update_flags |= M.adjustFireLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustOxyLoss(-15*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBrainLoss(-15*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustCloneLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/omnizine_diluted
name = "Diluted Omnizine"
@@ -904,17 +944,20 @@
metabolization_rate = 0.1
/datum/reagent/medicine/omnizine_diluted/on_mob_life(mob/living/M)
- M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/omnizine_diluted/overdose_process(mob/living/M, severity)
- M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustOxyLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBruteLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustOxyLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBruteLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return list(0, update_flags)
//virus-specific symptom reagents
@@ -925,6 +968,7 @@
color = "#EC536D" // rgb: 236, 83, 109
/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-5)
if(holder.has_reagent("lsd"))
holder.remove_reagent("lsd", 5)
@@ -932,8 +976,8 @@
holder.remove_reagent("histamine", 5)
M.AdjustHallucinate(-10)
if(prob(30))
- M.adjustToxLoss(1)
- ..()
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
//////////////////////////////
// Synth-Meds //
@@ -949,10 +993,11 @@
process_flags = SYNTHETIC
/datum/reagent/medicine/degreaser/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-1, FALSE)
+ update_flags |= M.AdjustWeakened(-1, FALSE)
M.AdjustConfused(-5)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
@@ -961,7 +1006,7 @@
M.reagents.remove_reagent(R.id, 5)
else
M.reagents.remove_reagent(R.id,1)
- ..()
+ return ..() | update_flags
/datum/reagent/medicine/degreaser/reaction_turf(turf/simulated/T, volume)
if(volume >= 1 && istype(T))
@@ -978,8 +1023,9 @@
process_flags = SYNTHETIC
/datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M)
- M.adjustBrainLoss(-3)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBrainLoss(-3, FALSE)
+ return ..() | update_flags
@@ -993,11 +1039,14 @@
overdose_threshold = 30
/datum/reagent/medicine/bicaridine/on_mob_life(mob/living/M)
- M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/bicaridine/overdose_process(mob/living/M)
- M.adjustBruteLoss(4*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBruteLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return list(0, update_flags)
/datum/reagent/medicine/kelotane
name = "Kelotane"
@@ -1008,11 +1057,14 @@
overdose_threshold = 30
/datum/reagent/medicine/kelotane/on_mob_life(mob/living/M)
- M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/kelotane/overdose_process(mob/living/M)
- M.adjustFireLoss(4*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustFireLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants
@@ -1023,20 +1075,23 @@
overdose_threshold = 25
/datum/reagent/medicine/earthsblood/on_mob_life(mob/living/M)
- M.adjustBruteLoss(-3 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(-3 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustOxyLoss(-15 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(-3 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
- M.adjustCloneLoss(-1 * REAGENTS_EFFECT_MULTIPLIER)
- M.adjustStaminaLoss(-30 * REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBruteLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustOxyLoss(-15 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustToxLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER, FALSE) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
+ update_flags |= M.adjustCloneLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustStaminaLoss(-30 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
M.SetJitter(min(max(0, M.jitteriness + 3), 30))
- M.SetDruggy(min(max(0, M.druggy + 10), 15)) //See above
- ..()
+ update_flags |= M.SetDruggy(min(max(0, M.druggy + 10), 15), FALSE) //See above
+ return ..() | update_flags
/datum/reagent/medicine/earthsblood/overdose_process(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.SetHallucinate(min(max(0, M.hallucination + 10), 50))
- M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return list(0, update_flags)
/datum/reagent/medicine/corazone
name = "Corazone"
@@ -1055,6 +1110,7 @@
can_synth = FALSE
/datum/reagent/medicine/nanocalcium/on_mob_life(mob/living/carbon/human/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 19)
M.AdjustJitter(4)
@@ -1063,15 +1119,15 @@
if(20 to 43)
//If they have stimulants or stimulant drugs then just apply toxin damage instead.
if(M.reagents.has_reagent("methamphetamine") || M.reagents.has_reagent("crank") || M.reagents.has_reagent("bath_salts") || M.reagents.has_reagent("stimulative_agent") || M.reagents.has_reagent("stimulants"))
- M.adjustToxLoss(10)
+ update_flags |= M.adjustToxLoss(10, FALSE)
else //apply debilitating effects
if(prob(75))
M.AdjustConfused(5)
else
- M.AdjustWeakened(5)
+ update_flags |= M.AdjustWeakened(5, FALSE)
if(44)
to_chat(M, "Your body goes rigid, you cannot move at all!")
- M.AdjustWeakened(15)
+ update_flags |= M.AdjustWeakened(15, FALSE)
if(45 to INFINITY) // Start fixing bones | If they have stimulants or stimulant drugs in their system then the nanites won't work.
if(M.reagents.has_reagent("methamphetamine") || M.reagents.has_reagent("crank") || M.reagents.has_reagent("bath_salts") || M.reagents.has_reagent("stimulative_agent") || M.reagents.has_reagent("stimulants"))
return ..()
@@ -1082,4 +1138,4 @@
to_chat(M, "You feel a burning sensation in your [E.name] as it straightens involuntarily!")
E.rejuvenate() //Repair it completely.
break
- ..()
+ return ..() | update_flags
diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index fdddea44bd2..c86a839c4e2 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -250,8 +250,9 @@
taste_message = null
/datum/reagent/acetone/on_mob_life(mob/living/M)
- M.adjustToxLoss(1.5)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1.5, FALSE)
+ return ..() | update_flags
/datum/reagent/saltpetre
name = "Saltpetre"
@@ -362,20 +363,21 @@
taste_message = "mexican cuisine"
/datum/reagent/fartonium/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(66))
M.emote("fart")
if(holder.has_reagent("simethicone"))
if(prob(25))
to_chat(M, "[pick("Oh god, something doesn't feel right!", "IT HURTS!", "FUCK!", "Something is seriously wrong!", "THE PAIN!", "You feel like you're gonna die!")]")
- M.adjustBruteLoss(1)
+ update_flags |= M.adjustBruteLoss(1, FALSE)
if(prob(10))
M.custom_emote(1,"strains, but nothing happens.")
- M.adjustBruteLoss(2)
+ update_flags |= M.adjustBruteLoss(2, FALSE)
if(prob(5))
M.emote("scream")
- M.adjustBruteLoss(4)
- ..()
+ update_flags |= M.adjustBruteLoss(4, FALSE)
+ return ..() | update_flags
/datum/reagent/hugs
name = "Pure hugs"
@@ -412,7 +414,7 @@
M.visible_message("[M] gives [C] a [pick("hug","warm embrace")].")
playsound(get_turf(M), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
break
- ..()
+ return ..()
/datum/reagent/love/on_mob_delete(mob/living/M)
M.can_change_intents = 1
@@ -432,7 +434,7 @@
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M)
if(prob(2))
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."))
- ..()
+ return ..()
/datum/reagent/growthserum
name = "Growth serum"
@@ -459,7 +461,7 @@
H.resize = newsize/current_size
current_size = newsize
H.update_transform()
- ..()
+ return ..()
/datum/reagent/growthserum/on_mob_delete(mob/living/M)
M.resize = 1/current_size
@@ -493,9 +495,10 @@
taste_message = "puke"
/datum/reagent/plantnutriment/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(tox_prob))
- M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/plantnutriment/eznutriment
name = "E-Z-Nutrient"
diff --git a/code/modules/reagents/chemistry/reagents/paradise_pop.dm b/code/modules/reagents/chemistry/reagents/paradise_pop.dm
index edf633bcacc..08f01bdd381 100644
--- a/code/modules/reagents/chemistry/reagents/paradise_pop.dm
+++ b/code/modules/reagents/chemistry/reagents/paradise_pop.dm
@@ -43,23 +43,24 @@
taste_message = "a permaban"
/datum/reagent/consumable/drink/berry_banned/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(10))
var/heal_type = rand(0, 5) //still prefer the string version
switch(heal_type)
if(0)
- M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(1)
- M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(2)
- M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(3)
- M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(4)
- M.adjustCloneLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustCloneLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(5)
- M.adjustBrainLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustBrainLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
to_chat(M, "You feel slightly rejuvinated!")
- ..()
+ return ..() | update_flags
//Berry Banned 2: This one is tasty and toxic. Deals toxin damage and MAYBE plays the "BWOINK!" sound if it kills someone?
/datum/reagent/consumable/drink/berry_banned2
@@ -71,11 +72,12 @@
taste_message = "a permaban"
/datum/reagent/consumable/drink/berry_banned2/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(50))
- M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often)
+ update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often)
if(prob(10))
to_chat(M, "You feel slightly rejuvinated!") //meta this!
- ..()
+ return ..() | update_flags
/datum/reagent/consumable/drink/berry_banned2/on_mob_death(mob/living/M)
M << sound('sound/effects/adminhelp.ogg',0,1,0,25)
@@ -103,7 +105,7 @@
"THIS DOOR WAS SHOCKED WHEN I GOT HERE",
"ANIMALS ARE NOT CREW")
M.say(pick(tider_talk))
- ..()
+ return ..()
//Grape Granade: causes the drinker to sometimes burp, has a low chance to cause a goonchem vortex that pushes things within a very small radius (1-2 tiles) away from the drinker
/datum/reagent/consumable/drink/grape_granade
@@ -122,7 +124,7 @@
to_chat(M, "You feel ready to burst! Oh wait, just a burp...")
else if(prob(25))
M.emote("burp")
- ..()
+ return ..()
//Meteor Malt: Sometimes causes screen shakes for the drinker like a meteor impact, low chance to add 1-5 units of a random mineral reagent to the drinker's blood (iron, copper, silver, gold, uranium, carbon, etc)
/datum/reagent/consumable/drink/meteor_malt
@@ -141,4 +143,4 @@
var/amount = rand(1, 5)
var/mineral = pick("copper", "iron", "gold", "carbon", "silver", "aluminum", "silicon", "sodiumchloride", "plasma")
M.reagents.add_reagent(mineral, amount)
- ..()
+ return ..()
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
index f2a5e8b9e24..bc47e709823 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
@@ -24,13 +24,14 @@
taste_message = "corporate assets going to waste"
/datum/reagent/plasma/on_mob_life(mob/living/M)
- M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(holder.has_reagent("epinephrine"))
holder.remove_reagent("epinephrine", 2)
if(iscarbon(M))
var/mob/living/carbon/C = M
C.adjustPlasma(10)
- ..()
+ return ..() | update_flags
/datum/reagent/plasma/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma is stronger than fuel!
if(method == TOUCH)
@@ -80,10 +81,11 @@
taste_message = null
/datum/reagent/clf3/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.adjust_fire_stacks(2)
var/burndmg = max(0.3*M.fire_stacks, 0.3)
- M.adjustFireLoss(burndmg)
- ..()
+ update_flags |= M.adjustFireLoss(burndmg, FALSE)
+ return ..() | update_flags
/datum/reagent/clf3/reaction_turf(turf/simulated/T, volume)
if(prob(1) && istype(T, /turf/simulated/floor/plating))
@@ -167,10 +169,11 @@
process_flags = ORGANIC | SYNTHETIC
/datum/reagent/phlogiston/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.adjust_fire_stacks(1)
var/burndmg = max(0.3*M.fire_stacks, 0.3)
- M.adjustFireLoss(burndmg)
- ..()
+ update_flags |= M.adjustFireLoss(burndmg, FALSE)
+ return ..() | update_flags
/datum/reagent/phlogiston/reaction_mob(mob/living/M, method=TOUCH, volume)
M.adjust_fire_stacks(1)
@@ -187,7 +190,7 @@
/datum/reagent/napalm/on_mob_life(mob/living/M)
M.adjust_fire_stacks(1)
- ..()
+ return ..()
/datum/reagent/napalm/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
@@ -204,7 +207,7 @@
if(M.reagents.has_reagent("oxygen"))
M.reagents.remove_reagent("oxygen", 1)
M.bodytemperature -= 30
- ..()
+ return ..()
/datum/reagent/cryostylane/on_tick()
if(holder.has_reagent("oxygen"))
@@ -229,7 +232,7 @@
if(M.reagents.has_reagent("oxygen"))
M.reagents.remove_reagent("oxygen", 1)
M.bodytemperature += 30
- ..()
+ return ..()
/datum/reagent/pyrosium/on_tick()
if(holder.has_reagent("oxygen"))
@@ -276,11 +279,12 @@
taste_message = "corporate assets going to waste"
/datum/reagent/plasma_dust/on_mob_life(mob/living/M)
- M.adjustToxLoss(3)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(3, FALSE)
if(iscarbon(M))
var/mob/living/carbon/C = M
C.adjustPlasma(20)
- ..()
+ return ..() | update_flags
/datum/reagent/plasma_dust/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma dust is stronger than fuel!
if(method == TOUCH)
diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm
index a3fc113339e..d6813ee6f61 100644
--- a/code/modules/reagents/chemistry/reagents/toxins.dm
+++ b/code/modules/reagents/chemistry/reagents/toxins.dm
@@ -6,8 +6,9 @@
color = "#CF3600" // rgb: 207, 54, 0
/datum/reagent/toxin/on_mob_life(mob/living/M)
- M.adjustToxLoss(2)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/spider_venom
name = "Spider venom"
@@ -17,8 +18,9 @@
color = "#CF3600" // rgb: 207, 54, 0
/datum/reagent/spider_venom/on_mob_life(mob/living/M)
- M.adjustToxLoss(1.5)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1.5, FALSE)
+ return ..() | update_flags
/datum/reagent/minttoxin
name = "Mint Toxin"
@@ -31,7 +33,7 @@
/datum/reagent/minttoxin/on_mob_life(mob/living/M)
if(FAT in M.mutations)
M.gib()
- ..()
+ return ..()
/datum/reagent/slimejelly
name = "Slime Jelly"
@@ -42,12 +44,13 @@
taste_message = "slimes"
/datum/reagent/slimejelly/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(10))
to_chat(M, "Your insides are burning!")
- M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER)
+ update_flags |= M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
else if(prob(40))
- M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/slimetoxin
name = "Mutation Toxin"
@@ -67,7 +70,7 @@
to_chat(M, "Your body reacts violently to light. However, it naturally heals in darkness.")
to_chat(M, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
human.set_species(/datum/species/shadow)
- ..()
+ return ..()
/datum/reagent/aslimetoxin
name = "Advanced Mutation Toxin"
@@ -93,9 +96,10 @@
taste_message = "metal"
/datum/reagent/mercury/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(70))
M.adjustBrainLoss(1)
- ..()
+ return ..() | update_flags
/datum/reagent/chlorine
name = "Chlorine"
@@ -108,8 +112,9 @@
taste_message = "fire"
/datum/reagent/chlorine/on_mob_life(mob/living/M)
- M.adjustFireLoss(1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustFireLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/fluorine
name = "Fluorine"
@@ -122,9 +127,10 @@
taste_message = "spicy freshness"
/datum/reagent/fluorine/on_mob_life(mob/living/M)
- M.adjustFireLoss(1)
- M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustFireLoss(1, FALSE)
+ update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/radium
name = "Radium"
@@ -137,7 +143,7 @@
/datum/reagent/radium/on_mob_life(mob/living/M)
if(M.radiation < 80)
M.apply_effect(4, IRRADIATE, negate_armor = 1)
- ..()
+ return ..()
/datum/reagent/radium/reaction_turf(turf/T, volume)
if(volume >= 3 && !isspaceturf(T))
@@ -167,7 +173,7 @@
M.apply_effect(2*REAGENTS_EFFECT_MULTIPLIER, IRRADIATE, negate_armor = 1)
if(prob(4))
randmutb(M)
- ..()
+ return ..()
/datum/reagent/uranium
@@ -180,7 +186,7 @@
/datum/reagent/uranium/on_mob_life(mob/living/M)
M.apply_effect(2, IRRADIATE, negate_armor = 1)
- ..()
+ return ..()
/datum/reagent/uranium/reaction_turf(turf/T, volume)
if(volume >= 3 && !isspaceturf(T))
@@ -196,8 +202,9 @@
metabolization_rate = 0.2
/datum/reagent/lexorin/on_mob_life(mob/living/M)
- M.adjustToxLoss(1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/sacid
@@ -210,8 +217,9 @@
taste_message = "ACID"
/datum/reagent/sacid/on_mob_life(mob/living/M)
- M.adjustFireLoss(1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustFireLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/sacid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
@@ -282,8 +290,9 @@
color = "#003333" // rgb: 0, 51, 51
/datum/reagent/carpotoxin/on_mob_life(mob/living/M)
- M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/staminatoxin
name = "Tirizene"
@@ -294,9 +303,10 @@
data = 13
/datum/reagent/staminatoxin/on_mob_life(mob/living/M)
- M.adjustStaminaLoss(REAGENTS_EFFECT_MULTIPLIER * data)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustStaminaLoss(REAGENTS_EFFECT_MULTIPLIER * data, FALSE)
data = max(data - 1, 3)
- ..()
+ return ..() | update_flags
/datum/reagent/spore
@@ -306,10 +316,11 @@
color = "#9ACD32"
/datum/reagent/spores/on_mob_life(mob/living/M)
- M.adjustToxLoss(1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
M.damageoverlaytemp = 60
- M.EyeBlurry(3)
- ..()
+ update_flags |= M.EyeBlurry(3)
+ return ..() | update_flags
/datum/reagent/beer2 //disguised as normal beer for use by emagged service borgs
name = "Beer"
@@ -323,13 +334,14 @@
taste_message = "beer"
/datum/reagent/beer2/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 50)
- M.Sleeping(2)
+ update_flags |= M.Sleeping(2, FALSE)
if(51 to INFINITY)
- M.Sleeping(2)
- M.adjustToxLoss((current_cycle - 50)*REAGENTS_EFFECT_MULTIPLIER)
- ..()
+ update_flags |= M.Sleeping(2, FALSE)
+ update_flags |= M.adjustToxLoss((current_cycle - 50)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ return ..() | update_flags
/datum/reagent/polonium
name = "Polonium"
@@ -344,7 +356,7 @@
/datum/reagent/polonium/on_mob_life(mob/living/M)
M.apply_effect(8, IRRADIATE, negate_armor = 1)
- ..()
+ return ..()
/datum/reagent/histamine
name = "Histamine"
@@ -365,60 +377,64 @@
M.emote("drool")
/datum/reagent/histamine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(20))
M.emote(pick("twitch", "grumble", "sneeze", "cough"))
if(prob(10))
to_chat(M, "Your eyes itch.")
M.emote(pick("blink", "sneeze"))
- M.AdjustEyeBlurry(3)
+ update_flags |= M.AdjustEyeBlurry(3, FALSE)
if(prob(10))
M.visible_message("[M] scratches at an itch.")
- M.adjustBruteLoss(1)
+ update_flags |= M.adjustBruteLoss(1, FALSE)
M.emote("grumble")
if(prob(5))
to_chat(M, "You're getting a rash!")
- M.adjustBruteLoss(2)
- ..()
+ update_flags |= M.adjustBruteLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/histamine/overdose_process(mob/living/M, severity)
- var/effect = ..()
+ var/list/overdose_info = ..()
+ var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
+ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
to_chat(M, "You feel mucus running down the back of your throat.")
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
M.Jitter(4)
M.emote(pick("sneeze", "cough"))
else if(effect <= 4)
- M.stuttering += rand(0,5)
+ M.AdjustStuttering(rand(0,5))
if(prob(25))
M.emote(pick("choke","gasp"))
- M.adjustOxyLoss(5)
+ update_flags |= M.adjustOxyLoss(5, FALSE)
else if(effect <= 7)
to_chat(M, "Your chest hurts!")
M.emote(pick("cough","gasp"))
- M.adjustOxyLoss(3)
+ update_flags |= M.adjustOxyLoss(3, FALSE)
else if(severity == 2)
if(effect <= 2)
M.visible_message("[M] breaks out in hives!")
- M.adjustBruteLoss(6)
+ update_flags |= M.adjustBruteLoss(6, FALSE)
else if(effect <= 4)
M.visible_message("[M] has a horrible coughing fit!")
M.Jitter(10)
- M.stuttering += rand(0,5)
+ M.AdjustStuttering(rand(0,5))
M.emote("cough")
if(prob(40))
M.emote(pick("choke","gasp"))
- M.adjustOxyLoss(6)
- M.Weaken(8)
+ update_flags |= M.adjustOxyLoss(6, FALSE)
+ update_flags |= M.Weaken(8, FALSE)
else if(effect <= 7)
to_chat(M, "Your heartbeat is pounding inside your head!")
M << 'sound/effects/singlebeat.ogg'
M.emote("collapse")
- M.adjustOxyLoss(8)
- M.adjustToxLoss(3)
- M.Weaken(3)
+ update_flags |= M.adjustOxyLoss(8, FALSE)
+ update_flags |= M.adjustToxLoss(3, FALSE)
+ update_flags |= M.Weaken(3, FALSE)
M.emote(pick("choke", "gasp"))
to_chat(M, "You feel like you're dying!")
+ return list(effect, update_flags)
/datum/reagent/formaldehyde
name = "Formaldehyde"
@@ -429,10 +445,11 @@
penetrates_skin = TRUE
/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
- M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(prob(10))
M.reagents.add_reagent("histamine",rand(5,15))
- ..()
+ return ..() | update_flags
/datum/reagent/venom
name = "Venom"
@@ -445,26 +462,29 @@
can_synth = FALSE
/datum/reagent/venom/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(25))
M.reagents.add_reagent("histamine",rand(5,10))
if(volume < 20)
- M.adjustToxLoss(1)
- M.adjustBruteLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustBruteLoss(1, FALSE)
else if(volume < 40)
if(prob(8))
M.fakevomit()
- M.adjustToxLoss(2)
- M.adjustBruteLoss(2)
- ..()
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ update_flags |= M.adjustBruteLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/venom/overdose_process(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(volume >= 40)
if(prob(4))
M.visible_message("[M] starts convulsing violently!", "You feel as if your body is tearing itself apart!")
- M.Weaken(15)
+ update_flags |= M.Weaken(15, FALSE)
M.AdjustJitter(1000)
spawn(rand(20, 100))
M.gib()
+ return list(0, update_flags)
/datum/reagent/neurotoxin2
name = "Neurotoxin"
@@ -475,6 +495,7 @@
metabolization_rate = 1
/datum/reagent/neurotoxin2/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 4)
current_cycle++
@@ -489,19 +510,19 @@
if(13)
M.emote("faint")
if(14 to INFINITY)
- M.Paralyse(10)
+ update_flags |= M.Paralyse(10, FALSE)
M.Drowsy(20)
M.AdjustJitter(-30)
if(M.getBrainLoss() <= 80)
- M.adjustBrainLoss(1)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
else
if(prob(10))
- M.adjustBrainLoss(1)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
if(prob(10))
M.emote("drool")
- M.adjustToxLoss(1)
- ..()
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/cyanide
name = "Cyanide"
@@ -514,7 +535,8 @@
taste_message = "almonds"
/datum/reagent/cyanide/on_mob_life(mob/living/M)
- M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(prob(5))
M.emote("drool")
if(prob(10))
@@ -523,9 +545,9 @@
M.emote("gasp")
if(prob(8))
to_chat(M, "You feel horrendously weak!")
- M.Stun(2)
- M.adjustToxLoss(2)
- ..()
+ update_flags |= M.Stun(2, FALSE)
+ update_flags |= M.adjustToxLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/itching_powder
name = "Itching Powder"
@@ -537,6 +559,7 @@
penetrates_skin = TRUE
/datum/reagent/itching_powder/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_STAT
if(prob(25))
M.emote(pick("twitch", "laugh", "sneeze", "cry"))
if(prob(20))
@@ -544,22 +567,22 @@
M.emote(pick("laugh", "giggle"))
if(prob(15))
M.visible_message("[M] scratches at an itch.")
- M.adjustBruteLoss(1)
- M.Stun(rand(0,1))
+ update_flags |= M.adjustBruteLoss(1, FALSE)
+ update_flags |= M.Stun(rand(0,1), FALSE)
M.emote("grumble")
if(prob(10))
to_chat(M, "So itchy!")
- M.adjustBruteLoss(2)
+ update_flags |= M.adjustBruteLoss(2, FALSE)
if(prob(6))
M.reagents.add_reagent("histamine", rand(1,3))
if(prob(2))
to_chat(M, "AHHHHHH!")
- M.adjustBruteLoss(5)
- M.Weaken(5)
+ update_flags |= M.adjustBruteLoss(5, FALSE)
+ update_flags |= M.Weaken(5, FALSE)
M.AdjustJitter(6)
M.visible_message("[M] falls to the floor, scratching [M.p_them()]self violently!")
M.emote("scream")
- ..()
+ return ..() | update_flags
/datum/reagent/facid
name = "Fluorosulfuric Acid"
@@ -571,9 +594,10 @@
taste_message = "ACID"
/datum/reagent/facid/on_mob_life(mob/living/M)
- M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustFireLoss(1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ update_flags |= M.adjustFireLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH || method == INGEST)
@@ -635,26 +659,27 @@
taste_message = null
/datum/reagent/initropidril/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(33))
- M.adjustToxLoss(rand(5,25))
+ update_flags |= M.adjustToxLoss(rand(5,25), FALSE)
if(prob(33))
to_chat(M, "You feel horribly weak.")
- M.Stun(2)
+ update_flags |= M.Stun(2, FALSE)
if(prob(10))
to_chat(M, "You cannot breathe!")
- M.adjustOxyLoss(10)
+ update_flags |= M.adjustOxyLoss(10, FALSE)
M.AdjustLoseBreath(1)
if(prob(10))
to_chat(M, "Your chest is burning with pain!")
- M.adjustOxyLoss(10)
+ update_flags |= M.adjustOxyLoss(10, FALSE)
M.AdjustLoseBreath(1)
- M.Stun(3)
- M.Weaken(2)
+ update_flags |= M.Stun(3, FALSE)
+ update_flags |= M.Weaken(2, FALSE)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.undergoing_cardiac_arrest())
H.set_heartattack(TRUE) // rip in pepperoni
- ..()
+ return ..() | update_flags
/datum/reagent/pancuronium
name = "Pancuronium"
@@ -666,6 +691,7 @@
taste_message = null
/datum/reagent/pancuronium/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 5)
if(prob(10))
@@ -673,12 +699,12 @@
if(6 to 10)
if(prob(8))
to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].")
- M.Stun(1)
+ update_flags |= M.Stun(1, FALSE)
else if(prob(8))
M.emote(pick("drool", "tremble"))
if(11 to INFINITY)
- M.Stun(20)
- M.Weaken(20)
+ update_flags |= M.Stun(20, FALSE)
+ update_flags |= M.Weaken(20, FALSE)
if(prob(10))
M.emote(pick("drool", "tremble", "gasp"))
M.AdjustLoseBreath(1)
@@ -687,7 +713,7 @@
if(prob(7))
to_chat(M, "You can't breathe!")
M.AdjustLoseBreath(3)
- ..()
+ return ..() | update_flags
/datum/reagent/sodium_thiopental
name = "Sodium Thiopental"
@@ -700,6 +726,7 @@
taste_message = null
/datum/reagent/sodium_thiopental/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1)
M.emote("drool")
@@ -708,14 +735,14 @@
M.Drowsy(20)
if(5)
M.emote("faint")
- M.Weaken(5)
+ update_flags |= M.Weaken(5, FALSE)
if(6 to INFINITY)
- M.Paralyse(20)
+ update_flags |= M.Paralyse(20, FALSE)
M.AdjustJitter(-50)
if(prob(10))
M.emote("drool")
- M.adjustBrainLoss(1)
- ..()
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/ketamine
name = "Ketamine"
@@ -729,20 +756,21 @@
taste_message = null
/datum/reagent/ketamine/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 5)
if(prob(25))
M.emote("yawn")
if(6 to 9)
- M.AdjustEyeBlurry(5)
+ update_flags |= M.AdjustEyeBlurry(5, FALSE)
if(prob(35))
M.emote("yawn")
if(10)
M.emote("faint")
- M.Weaken(5)
+ update_flags |= M.Weaken(5, FALSE)
if(11 to INFINITY)
- M.Paralyse(25)
- ..()
+ update_flags |= M.Paralyse(25, FALSE)
+ return ..() | update_flags
/datum/reagent/sulfonal
name = "Sulfonal"
@@ -753,6 +781,7 @@
metabolization_rate = 0.1
/datum/reagent/sulfonal/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustJitter(-30)
switch(current_cycle)
if(1 to 10)
@@ -765,10 +794,10 @@
if(22 to INFINITY)
if(prob(20))
M.emote("faint")
- M.Paralyse(5)
+ update_flags |= M.Paralyse(5, FALSE)
M.Drowsy(20)
- M.adjustToxLoss(1)
- ..()
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/amanitin
name = "Amanitin"
@@ -792,19 +821,20 @@
taste_message = "battery acid"
/datum/reagent/lipolicide/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(!M.nutrition)
switch(rand(1,3))
if(1)
to_chat(M, "You feel hungry...")
if(2)
- M.adjustToxLoss(1)
+ update_flags |= M.adjustToxLoss(1, FALSE)
to_chat(M, "Your stomach grumbles painfully!")
else
if(prob(60))
var/fat_to_burn = max(round(M.nutrition/100,1), 5)
M.nutrition = max(0, M.nutrition-fat_to_burn)
M.overeatduration = 0
- ..()
+ return ..() | update_flags
/datum/reagent/coniine
name = "Coniine"
@@ -816,9 +846,10 @@
can_synth = FALSE
/datum/reagent/coniine/on_mob_life(mob/living/M)
- M.adjustToxLoss(2)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(2, FALSE)
M.AdjustLoseBreath(5)
- ..()
+ return ..() | update_flags
/datum/reagent/curare
name = "Curare"
@@ -830,28 +861,29 @@
penetrates_skin = TRUE
/datum/reagent/curare/on_mob_life(mob/living/M)
- M.adjustToxLoss(1)
- M.adjustOxyLoss(1)
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustOxyLoss(1, FALSE)
switch(current_cycle)
if(1 to 5)
if(prob(20))
M.emote(pick("drool", "pale", "gasp"))
if(6 to 10)
- M.AdjustEyeBlurry(5)
+ update_flags |= M.AdjustEyeBlurry(5, FALSE)
if(prob(8))
to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].")
- M.Stun(1)
+ update_flags |= M.Stun(1, FALSE)
else if(prob(8))
- M.emote(pick("drool","pale", "gasp"))
+ M.emote(pick("drool", "pale", "gasp"))
if(11 to INFINITY)
- M.Stun(30)
+ update_flags |= M.Stun(30, FALSE)
M.Drowsy(20)
if(prob(20))
M.emote(pick("drool", "faint", "pale", "gasp", "collapse"))
else if(prob(8))
to_chat(M, "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!")
M.AdjustLoseBreath(1)
- ..()
+ return ..() | update_flags
/datum/reagent/heparin //Based on a real-life anticoagulant.
name = "Heparin"
@@ -862,11 +894,12 @@
metabolization_rate = 0.2 * REAGENTS_METABOLISM
/datum/reagent/heparin/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.bleed_rate = min(H.bleed_rate + 2, 8)
- H.adjustBruteLoss(1)
- ..()
+ update_flags |= H.adjustBruteLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/sarin
name = "Sarin"
@@ -880,6 +913,7 @@
taste_message = null
/datum/reagent/sarin/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 15)
M.AdjustJitter(20)
@@ -888,23 +922,23 @@
if(16 to 30)
if(prob(25))
M.emote(pick("twitch","twitch","drool","quiver","tremble"))
- M.AdjustEyeBlurry(5)
+ update_flags |= M.AdjustEyeBlurry(5, FALSE)
M.Stuttering(5)
if(prob(10))
M.Confused(15)
if(prob(15))
- M.Stun(1)
+ update_flags |= M.Stun(1, FALSE)
M.emote("scream")
if(30 to 60)
- M.AdjustEyeBlurry(5)
+ update_flags |= M.AdjustEyeBlurry(5, FALSE)
M.Stuttering(5)
if(prob(10))
- M.Stun(1)
+ update_flags |= M.Stun(1, FALSE)
M.emote(pick("twitch","twitch","drool","shake","tremble"))
if(prob(5))
M.emote("collapse")
if(prob(5))
- M.Weaken(3)
+ update_flags |= M.Weaken(3, FALSE)
M.visible_message("[M] has a seizure!")
M.SetJitter(1000)
if(prob(5))
@@ -915,15 +949,15 @@
if(prob(15))
M.emote(pick("gasp", "choke", "cough","twitch", "shake", "tremble","quiver","drool", "twitch","collapse"))
M.LoseBreath(5)
- M.adjustToxLoss(1)
- M.adjustBrainLoss(1)
- M.Weaken(4)
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ update_flags |= M.Weaken(4, FALSE)
if(prob(8))
M.fakevomit()
- M.adjustToxLoss(1)
- M.adjustBrainLoss(1)
- M.adjustFireLoss(1)
- ..()
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustBrainLoss(1, FALSE)
+ update_flags |= M.adjustFireLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/glyphosate
name = "Glyphosate"
@@ -934,8 +968,9 @@
var/lethality = 0 //Glyphosate is non-toxic to people
/datum/reagent/glyphosate/on_mob_life(mob/living/M)
- M.adjustToxLoss(lethality)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(lethality, FALSE)
+ return ..() | update_flags
/datum/reagent/glyphosate/reaction_turf(turf/simulated/wall/W, volume) // Clear off wallrot fungi
if(istype(W) && W.rotting)
@@ -985,8 +1020,9 @@
color = "#4B004B" // rgb: 75, 0, 75
/datum/reagent/pestkiller/on_mob_life(mob/living/M)
- M.adjustToxLoss(1)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ return ..() | update_flags
/datum/reagent/pestkiller/reaction_mob(mob/living/M, method=TOUCH, volume)
if(iscarbon(M))
@@ -1008,19 +1044,20 @@
taste_message = "sweetness"
/datum/reagent/capulettium/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 5)
- M.AdjustEyeBlurry(10)
+ update_flags |= M.AdjustEyeBlurry(10, FALSE)
if(6 to 10)
M.Drowsy(10)
if(11)
- M.Paralyse(10)
+ update_flags |= M.Paralyse(10, FALSE)
M.visible_message("[M] seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
if(12 to 60)
- M.Paralyse(10)
+ update_flags |= M.Paralyse(10, FALSE)
if(61 to INFINITY)
- M.AdjustEyeBlurry(10)
- ..()
+ update_flags |= M.AdjustEyeBlurry(10, FALSE)
+ return ..() | update_flags
/datum/reagent/capulettium_plus
name = "Capulettium Plus"
@@ -1033,7 +1070,7 @@
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
M.Silence(2)
- ..()
+ return ..()
/datum/reagent/toxic_slurry
name = "Toxic Slurry"
@@ -1043,14 +1080,15 @@
color = "#00C81E"
/datum/reagent/toxic_slurry/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(prob(10))
- M.adjustToxLoss(rand(2.4))
+ update_flags |= M.adjustToxLoss(rand(2.4), FALSE)
if(prob(7))
to_chat(M, "A horrible migraine overpowers you.")
- M.Stun(rand(2,5))
+ update_flags |= M.Stun(rand(2,5), FALSE)
if(prob(7))
M.fakevomit(1)
- ..()
+ return ..() | update_flags
/datum/reagent/glowing_slurry
name = "Glowing Slurry"
@@ -1079,7 +1117,7 @@
randmutg(M)
domutcheck(M, null)
M.UpdateAppearance()
- ..()
+ return ..()
/datum/reagent/ants
name = "Ants"
@@ -1091,8 +1129,9 @@
taste_message = "ANTS OH GOD"
/datum/reagent/ants/on_mob_life(mob/living/M)
- M.adjustBruteLoss(2)
- ..()
+ var/update_flags = STATUS_UPDATE_NONE
+ update_flags |= M.adjustBruteLoss(2, FALSE)
+ return ..() | update_flags
/datum/reagent/ants/reaction_mob(mob/living/M, method=TOUCH, volume) //NOT THE ANTS
if(iscarbon(M))
@@ -1118,4 +1157,4 @@
shock_timer = 0
M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you
playsound(M, "sparks", 50, 1)
- ..()
+ return ..()
diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm
index 7779cb91d85..cb1dfb0928e 100644
--- a/code/modules/reagents/chemistry/reagents/water.dm
+++ b/code/modules/reagents/chemistry/reagents/water.dm
@@ -316,7 +316,7 @@
M.fakevomit(1)
else
M.fakevomit(0)
- ..()
+ return ..()
/datum/reagent/fishwater/toiletwater
name = "Toilet Water"
@@ -342,6 +342,7 @@
taste_message = null
/datum/reagent/holywater/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.AdjustJitter(-5)
if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
M.AdjustStuttering(4, bound_lower = 0, bound_upper = 20)
@@ -370,7 +371,7 @@
if(M.mind.vampire.bloodusable)
M.Stuttering(1)
M.Jitter(30)
- M.adjustStaminaLoss(5)
+ update_flags |= M.adjustStaminaLoss(5, FALSE)
if(prob(20))
M.emote("scream")
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
@@ -388,7 +389,7 @@
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
if(5 to 12)
to_chat(M, "You feel an intense burning inside of you!")
- M.adjustFireLoss(1)
+ update_flags |= M.adjustFireLoss(1, FALSE)
M.Stuttering(1)
M.Jitter(20)
if(prob(20))
@@ -400,13 +401,13 @@
O.show_message(text("[] suddenly bursts into flames!", M), 1)
M.fire_stacks = min(5,M.fire_stacks + 3)
M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire
- M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard?
+ update_flags |= M.adjustFireLoss(3, FALSE) //Hence the other damages... ain't I a bastard?
M.Stuttering(1)
M.Jitter(30)
if(prob(40))
M.emote("scream")
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
- ..()
+ return ..() | update_flags
/datum/reagent/holywater/reaction_mob(mob/living/M, method=TOUCH, volume)
@@ -442,23 +443,24 @@
taste_message = null
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
if(iscultist(M))
M.AdjustDrowsy(-5)
- M.AdjustParalysis(-1)
- M.AdjustStunned(-2)
- M.AdjustWeakened(-2)
- M.adjustToxLoss(-2)
- M.adjustFireLoss(-2)
- M.adjustOxyLoss(-2)
- M.adjustBruteLoss(-2)
+ update_flags |= M.AdjustParalysis(-1, FALSE)
+ update_flags |= M.AdjustStunned(-2, FALSE)
+ update_flags |= M.AdjustWeakened(-2, FALSE)
+ update_flags |= M.adjustToxLoss(-2, FALSE)
+ update_flags |= M.adjustFireLoss(-2, FALSE)
+ update_flags |= M.adjustOxyLoss(-2, FALSE)
+ update_flags |= M.adjustBruteLoss(-2, FALSE)
else
- M.adjustBrainLoss(3)
- M.adjustToxLoss(1)
- M.adjustFireLoss(2)
- M.adjustOxyLoss(2)
- M.adjustBruteLoss(2)
+ update_flags |= M.adjustBrainLoss(3, FALSE)
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustFireLoss(2, FALSE)
+ update_flags |= M.adjustOxyLoss(2, FALSE)
+ update_flags |= M.adjustBruteLoss(2, FALSE)
M.AdjustCultSlur(10)//CUASE WHY THE HELL NOT
- ..()
+ return ..() | update_flags
/datum/reagent/hellwater
name = "Hell Water"
@@ -470,12 +472,13 @@
taste_message = "admin abuse"
/datum/reagent/hellwater/on_mob_life(mob/living/M)
+ var/update_flags = STATUS_UPDATE_NONE
M.fire_stacks = min(5, M.fire_stacks + 3)
M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire
- M.adjustToxLoss(1)
- M.adjustFireLoss(1) //Hence the other damages... ain't I a bastard?
- M.adjustBrainLoss(5)
- ..()
+ update_flags |= M.adjustToxLoss(1, FALSE)
+ update_flags |= M.adjustFireLoss(1, FALSE) //Hence the other damages... ain't I a bastard?
+ update_flags |= M.adjustBrainLoss(5, FALSE)
+ return ..() | update_flags
/datum/reagent/liquidgibs
name = "Liquid gibs"
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index eb588200265..4bbc25a8037 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -1,262 +1,261 @@
+#define DIRECTION_FORWARDS 1
+#define DIRECTION_OFF 0
+#define DIRECTION_REVERSED -1
+
+GLOBAL_LIST_INIT(conveyor_belts, list()) //Saves us having to look through the entire machines list for our things
+GLOBAL_LIST_INIT(conveyor_switches, list())
+
//conveyor2 is pretty much like the original, except it supports corners, but not diverters.
-//note that corner pieces transfer stuff clockwise when running forward, and anti-clockwise backwards.
+//Except this is pretty heavily modified so it's more like conveyor2.5
/obj/machinery/conveyor
icon = 'icons/obj/recycling.dmi'
- icon_state = "conveyor0"
+ icon_state = "conveyor_stopped_cw"
name = "conveyor belt"
- desc = "A conveyor belt."
- layer = 2 // so they appear under stuff
- anchored = 1
- var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off
- var/operable = 1 // true if can operate (no broken segments in this belt run)
- var/forwards // this is the default (forward) direction, set by the map dir
- var/backwards // hopefully self-explanatory
- var/movedir // the actual direction to move stuff in
-
- var/list/affecting // the list of all items that will be moved this ptick
- var/id = "" // the control ID - must match controller ID
- var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons
- speed_process = 1
-
-/obj/machinery/conveyor/centcom_auto
- id = "round_end_belt"
-
-
-// Auto conveyor is always on unless unpowered
-
-/obj/machinery/conveyor/auto/New(loc, newdir)
- ..(loc, newdir)
- operating = 1
- update_move_direction()
-
-/obj/machinery/conveyor/auto/update()
- if(stat & BROKEN)
- icon_state = "conveyor-broken"
- operating = 0
- return
- else if(!operable)
- operating = 0
- else if(stat & NOPOWER)
- operating = 0
- else
- operating = 1
- icon_state = "conveyor[operating * verted]"
+ desc = "It's a conveyor belt, commonly used to transport large numbers of items elsewhere quite quickly."
+ layer = CONVEYOR_LAYER // so they appear under stuff but not below stuff like vents
+ anchored = TRUE
+ var/operating = FALSE //NB: this can be TRUE while the belt doesn't go
+ var/forwards // The direction the conveyor sends you in
+ var/backwards // hopefully self-explanatory
+ var/clockwise = TRUE // For corner pieces - do we go clockwise or counterclockwise?
+ var/operable = TRUE // Can this belt actually go?
+ var/list/affecting // the list of all items that will be moved this ptick
+ var/reversed = FALSE // set to TRUE to have the conveyor belt be reversed
+ speed_process = TRUE //gotta go fast
+ var/id //ID of the connected lever
// create a conveyor
-/obj/machinery/conveyor/New(loc, newdir)
+/obj/machinery/conveyor/New(loc, new_dir, new_id)
..(loc)
- if(newdir)
- dir = newdir
+ GLOB.conveyor_belts += src
+ if(new_id)
+ id = new_id
+ if(new_dir)
+ dir = new_dir
update_move_direction()
+ for(var/I in GLOB.conveyor_switches)
+ var/obj/machinery/conveyor_switch/S = I
+ if(id == S.id)
+ S.conveyors += src
+
+/obj/machinery/conveyor/Destroy()
+ GLOB.conveyor_belts -= src
+ return ..()
/obj/machinery/conveyor/setDir(newdir)
. = ..()
update_move_direction()
-
-/obj/machinery/conveyor/proc/update_move_direction()
- switch(dir)
- if(NORTH)
- forwards = NORTH
- backwards = SOUTH
- if(SOUTH)
- forwards = SOUTH
- backwards = NORTH
- if(EAST)
- forwards = EAST
- backwards = WEST
- if(WEST)
- forwards = WEST
- backwards = EAST
- if(NORTHEAST)
- forwards = EAST
- backwards = SOUTH
- if(NORTHWEST)
- forwards = SOUTH
- backwards = WEST
- if(SOUTHEAST)
- forwards = NORTH
- backwards = EAST
- if(SOUTHWEST)
- forwards = WEST
- backwards = NORTH
- if(verted == -1)
- var/temp = forwards
- forwards = backwards
- backwards = temp
- if(operating == 1)
- movedir = forwards
- else
- movedir = backwards
- update()
-
-
-/obj/machinery/conveyor/proc/update()
- if(stat & BROKEN)
- icon_state = "conveyor-broken"
- operating = 0
- return
- if(!operable)
- operating = 0
- if(stat & NOPOWER)
- operating = 0
- icon_state = "conveyor[operating * verted]"
-
- // machine process
- // move items to the target location
-/obj/machinery/conveyor/process()
- if(stat & (BROKEN | NOPOWER))
- return
- if(!operating)
- return
- use_power(100)
-
- affecting = loc.contents - src // moved items will be all in loc
- sleep(1)
- for(var/atom/movable/A in affecting)
- if(!A.anchored)
- if(A.loc == loc) // prevents the object from being affected if it's not currently here.
- step(A,movedir)
- CHECK_TICK
-
-
-
// attack with item, place item on conveyor
-/obj/machinery/conveyor/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/crowbar))
+/obj/machinery/conveyor/attackby(obj/item/I, mob/user)
+ if(iscrowbar(I))
if(!(stat & BROKEN))
- var/obj/item/conveyor_construct/C = new/obj/item/conveyor_construct(src.loc)
+ var/obj/item/conveyor_construct/C = new(loc)
C.id = id
transfer_fingerprints_to(C)
playsound(loc, I.usesound, 50, 1)
- to_chat(usr,"You remove the conveyor belt.")
+ to_chat(user,"You remove the conveyor belt.")
qdel(src)
-
- else if(istype(I, /obj/item/wrench))
- if(!(stat & BROKEN))
- playsound(loc, I.usesound, 50, 1)
- dir = turn(dir,-45)
- update_move_direction()
- to_chat(user, "You rotate [src].")
-
+ else if(stat & BROKEN)
+ return ..()
+ else if(iswrench(I))
+ set_rotation(user)
+ update_move_direction()
+ playsound(loc, I.usesound, 50, 1)
+ else if(istype(I, /obj/item/conveyor_switch_construct))
+ var/obj/item/conveyor_switch_construct/S = I
+ if(S.id == id)
+ return ..()
+ for(var/obj/machinery/conveyor_switch/CS in GLOB.conveyor_switches)
+ if(CS.id == id)
+ CS.conveyors -= src
+ id = S.id
+ to_chat(user, "You link [I] with [src].")
else if(user.a_intent != INTENT_HARM)
if(user.drop_item())
I.forceMove(loc)
else
return ..()
-
// attack with hand, move pulled object onto conveyor
/obj/machinery/conveyor/attack_hand(mob/user as mob)
user.Move_Pulled(src)
+/obj/machinery/conveyor/update_icon()
+ ..()
+ if(operating && can_conveyor_run())
+ icon_state = "conveyor_started_[clockwise ? "cw" : "ccw"]"
+ if(reversed)
+ icon_state += "_r"
+ else
+ icon_state = "conveyor_stopped_[clockwise ? "cw" : "ccw"]"
-// make the conveyor broken
-// also propagate inoperability to any connected conveyor with the same ID
-/obj/machinery/conveyor/proc/broken()
- stat |= BROKEN
- update()
-
- var/obj/machinery/conveyor/C = locate() in get_step(src, dir)
- if(C)
- C.set_operable(dir, id, 0)
-
- C = locate() in get_step(src, turn(dir,180))
- if(C)
- C.set_operable(turn(dir,180), id, 0)
-
-
-//set the operable var if ID matches, propagating in the given direction
-
-/obj/machinery/conveyor/proc/set_operable(stepdir, match_id, op)
-
- if(id != match_id)
+/obj/machinery/conveyor/proc/update_move_direction()
+ update_icon()
+ switch(dir)
+ if(NORTH)
+ forwards = NORTH
+ backwards = SOUTH
+ if(EAST)
+ forwards = EAST
+ backwards = WEST
+ if(SOUTH)
+ forwards = SOUTH
+ backwards = NORTH
+ if(WEST)
+ forwards = WEST
+ backwards = EAST
+ if(NORTHEAST)
+ forwards = clockwise ? EAST : NORTH
+ backwards = clockwise ? SOUTH : WEST
+ if(SOUTHEAST)
+ forwards = clockwise ? SOUTH : EAST
+ backwards = clockwise ? WEST : NORTH
+ if(SOUTHWEST)
+ forwards = clockwise ? WEST : SOUTH
+ backwards = clockwise ? NORTH : EAST
+ if(NORTHWEST)
+ forwards = clockwise ? NORTH : WEST
+ backwards = clockwise ? EAST : SOUTH
+ if(!reversed)
return
- operable = op
+ var/temporary_direction = forwards
+ forwards = backwards
+ backwards = temporary_direction
- update()
- var/obj/machinery/conveyor/C = locate() in get_step(src, stepdir)
- if(C)
- C.set_operable(stepdir, id, op)
-
-/*
-/obj/machinery/conveyor/verb/destroy()
- set src in view()
- src.broken()
-*/
+/obj/machinery/conveyor/proc/set_rotation(mob/user)
+ dir = turn(reversed ? backwards : forwards, -90) //Fuck it, let's do it this way instead of doing something clever with dir
+ var/turf/left = get_step(src, turn(dir, 90)) //We need to get conveyors to the right, left, and behind this one to be able to determine if we need to make a corner piece
+ var/turf/right = get_step(src, turn(dir, -90))
+ var/turf/back = get_step(src, turn(dir, 180))
+ to_chat(user, "You rotate [src].")
+ var/obj/machinery/conveyor/CL = locate() in left
+ var/obj/machinery/conveyor/CR = locate() in right
+ var/obj/machinery/conveyor/CB = locate() in back
+ var/link_to_left = FALSE
+ var/link_to_right = FALSE
+ var/link_to_back = FALSE
+ if(CL)
+ if(CL.id == id && get_step(CL, CL.reversed ? CL.backwards : CL.forwards) == loc)
+ link_to_left = TRUE
+ if(CR)
+ if(CR.id == id && get_step(CR, CR.reversed ? CR.backwards : CR.forwards) == loc)
+ link_to_right = TRUE
+ if(CB)
+ if(CB.id == id && get_step(CB, CB.reversed ? CB.backwards : CB.forwards) == loc)
+ link_to_back = TRUE
+ if(link_to_back) //Don't need to do anything because we can assume the conveyor carries on in a line
+ return
+ else if(!(link_to_left ^ link_to_right)) //Either no valid conveyors point here, or two point here (making a "junction" with this belt as the middle piece). Either way we don't need a corner
+ return
+ if(link_to_right)
+ dir = turn(dir, 45)
+ clockwise = TRUE
+ else if(link_to_left)
+ dir = turn(dir, -45)
+ clockwise = FALSE
/obj/machinery/conveyor/power_change()
..()
- update()
+ update_icon()
+
+/obj/machinery/conveyor/process()
+ if(!operating)
+ return
+ if(!can_conveyor_run())
+ return
+ use_power(100)
+ affecting = loc.contents - src // moved items will be all in loc
+ if(!affecting)
+ return
+ sleep(1)
+ for(var/atom/movable/A in affecting)
+ if(!A.anchored)
+ if(A.loc == loc) // prevents the object from being affected if it's not currently here.
+ step(A,forwards)
+ CHECK_TICK
+
+/obj/machinery/conveyor/proc/can_conveyor_run()
+ if(stat & BROKEN)
+ return FALSE
+ else if(stat & NOPOWER)
+ return FALSE
+ else if(!operable)
+ return FALSE
+ return TRUE
+
+// make the conveyor broken and propagate inoperability to any connected conveyor with the same conveyor datum
+/obj/machinery/conveyor/proc/make_broken()
+ stat |= BROKEN
+ operable = FALSE
+ update_icon()
+ var/obj/machinery/conveyor/C = locate() in get_step(src, forwards)
+ if(C)
+ C.set_operable(TRUE, id, FALSE)
+ C = locate() in get_step(src, backwards)
+ if(C)
+ C.set_operable(FALSE, id, FALSE)
+
+/obj/machinery/conveyor/proc/set_operable(propagate_forwards, match_id, op) //Sets a conveyor inoperable if ID matches it, and propagates forwards / backwards
+ if(id != match_id)
+ return
+ operable = op
+ update_icon()
+ var/obj/machinery/conveyor/C = locate() in get_step(src, propagate_forwards ? forwards : backwards)
+ if(C)
+ C.set_operable(propagate_forwards ? TRUE : FALSE, id, op)
// the conveyor control switch
-//
-//
/obj/machinery/conveyor_switch
-
name = "conveyor switch"
- desc = "A conveyor control switch."
+ desc = "This switch controls any and all conveyor belts it is linked to."
icon = 'icons/obj/recycling.dmi'
icon_state = "switch-off"
- var/position = 0 // 0 off, -1 reverse, 1 forward
- var/last_pos = -1 // last direction setting
- var/operated = 1 // true if just operated
- var/convdir = 0 // 0 is two way switch, 1 and -1 means one way
+ var/position = DIRECTION_OFF
+ var/reversed = TRUE
+ var/one_way = FALSE // Do we go in one direction?
+ anchored = TRUE
+ var/id
+ var/list/conveyors = list()
- var/id = "" // must match conveyor IDs to control them
-
- var/list/conveyors // the list of converyors that are controlled by this switch
- anchored = 1
- speed_process = 1
-
-
-/obj/machinery/conveyor_switch/New(newloc, newid)
+/obj/machinery/conveyor_switch/New(newloc, new_id)
..(newloc)
+ GLOB.conveyor_switches += src
if(!id)
- id = newid
- update()
-
- spawn(5)
- conveyors = list()
- for(var/obj/machinery/conveyor/C in machines)
- if(C.id == id)
- conveyors += C
+ id = new_id
+ for(var/I in GLOB.conveyor_belts)
+ var/obj/machinery/conveyor/C = I
+ if(C.id == id)
+ conveyors += C
+/obj/machinery/conveyor_switch/Destroy()
+ GLOB.conveyor_switches -= src
+ return ..()
// update the icon depending on the position
-/obj/machinery/conveyor_switch/proc/update()
- if(position<0)
- icon_state = "switch-rev"
- else if(position>0)
- icon_state = "switch-fwd"
- else
+/obj/machinery/conveyor_switch/update_icon()
+ overlays.Cut()
+ if(!position)
icon_state = "switch-off"
-
-
-// timed process
-// if the switch changed, update the linked conveyors
-
-/obj/machinery/conveyor_switch/process()
- if(!operated)
- return
- operated = 0
-
- for(var/obj/machinery/conveyor/C in conveyors)
- C.operating = position
- C.update_move_direction()
- CHECK_TICK
+ else if(position == DIRECTION_REVERSED)
+ icon_state = "switch-rev"
+ if(!(stat & NOPOWER))
+ overlays += "redlight"
+ else if(position == DIRECTION_FORWARDS)
+ icon_state = "switch-fwd"
+ if(!(stat & NOPOWER))
+ overlays += "greenlight"
/obj/machinery/conveyor_switch/oneway
- convdir = 1 //Set to 1 or -1 depending on which way you want the convayor to go. (In other words keep at 1 and set the proper dir on the belts.) - Cargo uses a reverse belt.
+ one_way = TRUE
// attack with hand, switch position
/obj/machinery/conveyor_switch/attack_hand(mob/user)
if(..())
- return 1
-
+ return TRUE
toggle(user)
/obj/machinery/conveyor_switch/attack_ghost(mob/user)
@@ -264,125 +263,215 @@
toggle(user)
/obj/machinery/conveyor_switch/proc/toggle(mob/user)
+ add_fingerprint(user)
if(!allowed(user) && !user.can_advanced_admin_interact()) //this is in Para but not TG. I don't think there's any which are set anyway.
to_chat(user, "Access denied.")
return
-
- add_fingerprint(user)
- if(position == 0)
- if(convdir) //is it a oneway switch
- position = convdir
- else
- if(last_pos < 0)
- position = 1
- last_pos = 0
- else
- position = -1
- last_pos = 0
+ if(position)
+ position = DIRECTION_OFF
else
- last_pos = position
- position = 0
-
- operated = 1
- update()
-
- // find any switches with same id as this one, and set their positions to match us
- for(var/obj/machinery/conveyor_switch/S in machines)
- if(S.id == src.id)
- S.position = position
- S.update()
+ reversed = one_way ? FALSE : !reversed
+ position = reversed ? DIRECTION_REVERSED : DIRECTION_FORWARDS
+ update_icon()
+ for(var/obj/machinery/conveyor/C in conveyors)
+ C.operating = abs(position)
+ if(C.reversed != reversed)
+ C.reversed = reversed
+ C.update_move_direction()
+ else
+ C.update_icon()
+ CHECK_TICK
+ for(var/I in GLOB.conveyor_switches) // find any switches with same id as this one, and set their positions to match us
+ var/obj/machinery/conveyor_switch/S = I
+ if(S == src || S.id != id)
+ continue
+ S.position = position
+ S.one_way = one_way //Break everything!!1!
+ S.reversed = reversed
+ S.update_icon()
CHECK_TICK
-/obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/crowbar))
- var/obj/item/conveyor_switch_construct/C = new/obj/item/conveyor_switch_construct(src.loc)
- C.id = id
+/obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user)
+ if(iscrowbar(I))
+ var/obj/item/conveyor_switch_construct/C = new(loc, id)
transfer_fingerprints_to(C)
- to_chat(user,"You deattach the conveyor switch.")
+ to_chat(user,"You detach the conveyor switch.")
qdel(src)
-
- else if(istype(I, /obj/item/multitool))
+ else if(ismultitool(I))
update_multitool_menu(user)
- return 1
-
+ else
+ return ..()
/obj/machinery/conveyor_switch/multitool_topic(var/mob/user,var/list/href_list,var/obj/O)
..()
if("toggle_logic" in href_list)
- if(convdir)
- convdir = 0
- else if(last_pos)
- convdir = last_pos
- else
- convdir = position
-
+ one_way = !one_way
+ update_multitool_menu(user)
/obj/machinery/conveyor_switch/multitool_menu(var/mob/user, var/obj/item/multitool/P)
return {"
"}
+/obj/machinery/conveyor_switch/power_change()
+ ..()
+ update_icon()
-
-//
// CONVEYOR CONSTRUCTION STARTS HERE
-//
/obj/item/conveyor_construct
icon = 'icons/obj/recycling.dmi'
- icon_state = "conveyor0"
+ icon_state = "conveyor_loose"
name = "conveyor belt assembly"
- desc = "A conveyor belt assembly."
+ desc = "A conveyor belt assembly, used for the assembly of conveyor belt systems."
w_class = WEIGHT_CLASS_BULKY
- var/id = "" //inherited by the belt
+ var/id
/obj/item/conveyor_construct/attackby(obj/item/I, mob/user, params)
..()
- if(istype(I, /obj/item/conveyor_switch_construct))
- to_chat(user, "You link the switch to the conveyor belt assembly.")
- var/obj/item/conveyor_switch_construct/C = I
- id = C.id
+ if(!istype(I, /obj/item/conveyor_switch_construct))
+ return
+ var/obj/item/conveyor_switch_construct/C = I
+ to_chat(user, "You link [src] to [C].")
+ id = C.id
-/obj/item/conveyor_construct/afterattack(atom/A, mob/user, proximity)
- if(!proximity || user.stat || !istype(A, /turf/simulated/floor) || istype(A, /area/shuttle))
+/obj/item/conveyor_construct/afterattack(turf/T, mob/user, proximity)
+ if(!proximity)
return
- var/cdir = get_dir(A, user)
- if(A == user.loc)
- to_chat(user, "You cannot place a conveyor belt under yourself.")
+ if(user.incapacitated())
return
- var/obj/machinery/conveyor/C = new/obj/machinery/conveyor(A,cdir)
- C.id = id
+ if(!istype(T, /turf/simulated/floor))
+ return
+ if(T == get_turf(user))
+ to_chat(user, "You cannot place [src] under yourself.")
+ return
+ if(locate(/obj/machinery/conveyor) in T) //Can't put conveyors beneath conveyors
+ to_chat(user, "There's already a conveyor there!")
+ return
+ var/obj/machinery/conveyor/C = new(T, user.dir, id)
transfer_fingerprints_to(C)
qdel(src)
/obj/item/conveyor_switch_construct
name = "conveyor switch assembly"
- desc = "A conveyor control switch assembly."
+ desc = "A conveyor control switch assembly. When set up, it'll control any and all conveyor belts it is linked to."
icon = 'icons/obj/recycling.dmi'
- icon_state = "switch-off"
+ icon_state = "switch"
w_class = WEIGHT_CLASS_BULKY
- var/id = "" //inherited by the switch
+ var/id
-/obj/item/conveyor_switch_construct/New()
- ..()
- id = rand() //this couldn't possibly go wrong
+/obj/item/conveyor_switch_construct/New(loc, new_id)
+ ..(loc)
+ if(new_id)
+ id = new_id
+ else
+ id = world.time + rand() //this couldn't possibly go wrong
-/obj/item/conveyor_switch_construct/afterattack(atom/A, mob/user, proximity)
- if(!proximity || user.stat || !istype(A, /turf/simulated/floor) || istype(A, /area/shuttle))
+
+/obj/item/conveyor_switch_construct/afterattack(turf/T, mob/user, proximity)
+ if(!proximity)
return
- var/found = 0
+ if(user.incapacitated())
+ return
+ if(!istype(T, /turf/simulated/floor))
+ return
+ var/found = FALSE
for(var/obj/machinery/conveyor/C in view())
- if(C.id == src.id)
- found = 1
+ if(C.id == id)
+ found = TRUE
break
if(!found)
- to_chat(usr, "[bicon(src)] The conveyor switch did not detect any linked conveyor belts in range.")
+ to_chat(user, "[src] did not detect any linked conveyor belts in range.")
return
- var/obj/machinery/conveyor_switch/NC = new/obj/machinery/conveyor_switch(A, id)
+ var/obj/machinery/conveyor_switch/NC = new(T, id)
transfer_fingerprints_to(NC)
qdel(src)
+/obj/item/conveyor_switch_construct/attackby(obj/item/I, mob/user)
+ if(!istype(I, /obj/item/conveyor_switch_construct))
+ return ..()
+ var/obj/item/conveyor_switch_construct/S = I
+ id = S.id
+ to_chat(user, "You link the two switch constructs.")
+
/obj/item/paper/conveyor
name = "paper- 'Nano-it-up U-build series, #9: Build your very own conveyor belt, in SPACE'"
- info = "Congratulations!
You are now the proud owner of the best conveyor set available for space mail order! We at Nano-it-up know you love to prepare your own structures without wasting time, so we have devised a special streamlined assembly procedure that puts all other mail-order products to shame!
Firstly, you need to link the conveyor switch assembly to each of the conveyor belt assemblies. After doing so, you simply need to install the belt assemblies onto the floor, et voila, belt built. Our special Nano-it-up smart switch will detected any linked assemblies as far as the eye can see!
Set single directional switches by using your multitool on the switch after you've installed the switch assembly.
This convenience, you can only have it when you Nano-it-up. Stay nano!
"
+ info = "Congratulations!
You are now the proud owner of the best conveyor set available for space mail order! \
+ We at Nano-it-up know you love to prepare your own structures without wasting time, so we have devised a special streamlined \
+ assembly procedure that puts all other mail-order products to shame!
\
+ Firstly, you need to link the conveyor switch assembly to each of the conveyor belt assemblies. After doing so, you simply need to install the belt \
+ assemblies onto the floor, et voila, belt built. Our special Nano-it-up smart switch will detected any linked assemblies as far as the eye can see!
\
+ Set single directional switches by using your multitool on the switch after you've installed the switch assembly.
\
+ This convenience, you can only have it when you Nano-it-up. Stay nano!
"
+
+/obj/machinery/conveyor/counterclockwise
+ clockwise = FALSE
+ icon_state = "conveyor_stopped_ccw"
+
+/obj/machinery/conveyor/auto/New(loc, newdir)
+ ..(loc, newdir)
+ operating = TRUE
+ update_icon()
+
+//Other types of conveyor, mostly for saving yourself a headache during mapping
+
+/obj/machinery/conveyor/north
+ dir = NORTH
+
+/obj/machinery/conveyor/northeast
+ dir = NORTHEAST
+
+/obj/machinery/conveyor/east
+ dir = EAST
+
+/obj/machinery/conveyor/southeast
+ dir = SOUTHEAST
+
+/obj/machinery/conveyor/south
+ dir = SOUTH
+
+/obj/machinery/conveyor/southwest
+ dir = SOUTHWEST
+
+/obj/machinery/conveyor/west
+ dir = WEST
+
+/obj/machinery/conveyor/northwest
+ dir = NORTHWEST
+
+/obj/machinery/conveyor/north/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/northeast/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/east/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/southeast/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/south/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/southwest/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/west/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+/obj/machinery/conveyor/northwest/ccw
+ icon_state = "conveyor_stopped_ccw"
+ clockwise = FALSE
+
+#undef DIRECTION_FORWARDS
+#undef DIRECTION_OFF
+#undef DIRECTION_REVERSED
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 6a1f7883312..78e7ad47f57 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -580,7 +580,7 @@
/* if(hasmob && prob(3))
for(var/mob/living/H in src)
if(!istype(H,/mob/living/silicon/robot/drone)) //Drones use the mailing code to move through the disposal system,
- H.take_overall_damage(20, 0, "Blunt Trauma") */ //horribly maim any living creature jumping down disposals. c'est la vie
+ H.take_overall_damage(20, 0, TRUE, "Blunt Trauma") */ //horribly maim any living creature jumping down disposals. c'est la vie
if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy
active = 0
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 35bdb18caae..dd672e7938d 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -476,7 +476,7 @@
pixel_x = -64
pixel_y = -64
unacidable = 1
- mouse_opacity = 0
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/mob/living/immune = list() // the one who creates the timestop is immune
var/list/stopped_atoms = list()
var/freezerange = 2
diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm
new file mode 100644
index 00000000000..8614df8135b
--- /dev/null
+++ b/code/modules/response_team/ert.dm
@@ -0,0 +1,368 @@
+// ERTs
+
+#define ERT_TYPE_AMBER 1
+#define ERT_TYPE_RED 2
+#define ERT_TYPE_GAMMA 3
+
+/datum/game_mode
+ var/list/datum/mind/ert = list()
+
+var/list/response_team_members = list()
+var/responseteam_age = 21 // Minimum account age to play as an ERT member
+var/datum/response_team/active_team = null
+var/send_emergency_team = FALSE
+var/ert_request_answered = FALSE
+
+/client/proc/response_team()
+ set name = "Dispatch CentComm Response Team"
+ set category = "Event"
+ set desc = "Send an CentComm response team to the station."
+
+ if(!check_rights(R_EVENT))
+ return
+
+ if(!ticker)
+ to_chat(usr, "The game hasn't started yet!")
+ return
+
+ if(ticker.current_state == GAME_STATE_PREGAME)
+ to_chat(usr, "The round hasn't started yet!")
+ return
+
+ if(send_emergency_team)
+ to_chat(usr, "Central Command has already dispatched an emergency response team!")
+ return
+
+ var/datum/nano_module/ert_manager/E = new()
+ E.ui_interact(usr)
+
+
+/mob/dead/observer/proc/JoinResponseTeam()
+ if(!send_emergency_team)
+ to_chat(src, "No emergency response team is currently being sent.")
+ return 0
+
+ if(jobban_isbanned(src, ROLE_ERT))
+ to_chat(src, "You are jobbanned from playing on an emergency response team!")
+ return 0
+
+ var/player_age_check = check_client_age(client, responseteam_age)
+ if(player_age_check && config.use_age_restriction_for_antags)
+ to_chat(src, "This role is not yet available to you. You need to wait another [player_age_check] days.")
+ return 0
+
+ if(cannotPossess(src))
+ to_chat(src, "Upon using the antagHUD you forfeited the ability to join the round.")
+ return 0
+
+ if(response_team_members.len > 6)
+ to_chat(src, "The emergency response team is already full!")
+ return 0
+
+ return 1
+
+/proc/trigger_armed_response_team(var/datum/response_team/response_team_type, commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots)
+ response_team_members = list()
+ active_team = response_team_type
+ active_team.setSlots(commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots)
+
+ send_emergency_team = TRUE
+ var/list/ert_candidates = pollCandidates("Join the Emergency Response Team?",, responseteam_age, 600, 1, role_playtime_requirements[ROLE_ERT])
+ if(!ert_candidates.len)
+ active_team.cannot_send_team()
+ send_emergency_team = FALSE
+ return 0
+
+ // Respawnable players get first dibs
+ for(var/mob/dead/observer/M in ert_candidates)
+ if(jobban_isbanned(M, ROLE_TRAITOR) || jobban_isbanned(M, "Security Officer") || jobban_isbanned(M, "Captain") || jobban_isbanned(M, "Cyborg"))
+ continue
+ if((M in respawnable_list) && M.JoinResponseTeam())
+ response_team_members |= M
+ // If there's still open slots, non-respawnable players can fill them
+ for(var/mob/dead/observer/M in (ert_candidates - respawnable_list))
+ if(M.JoinResponseTeam())
+ response_team_members |= M
+
+ if(!response_team_members.len)
+ active_team.cannot_send_team()
+ send_emergency_team = FALSE
+ return 0
+
+ var/index = 1
+ var/ert_spawn_seconds = 120
+ spawn(ert_spawn_seconds * 10) // to account for spawn() using deciseconds
+ var/list/unspawnable_ert = list()
+ for(var/mob/M in response_team_members)
+ if(M)
+ unspawnable_ert |= M
+ if(unspawnable_ert.len)
+ message_admins("ERT SPAWN: The following ERT members could not be spawned within [ert_spawn_seconds] seconds:")
+ for(var/mob/M in unspawnable_ert)
+ message_admins("- Unspawned ERT: [ADMIN_FULLMONTY(M)]")
+ for(var/mob/M in response_team_members)
+ if(index > emergencyresponseteamspawn.len)
+ index = 1
+
+ if(!M || !M.client)
+ continue
+ var/client/C = M.client
+ var/mob/living/new_commando = C.create_response_team(emergencyresponseteamspawn[index])
+ if(!M || !new_commando)
+ continue
+ new_commando.mind.key = M.key
+ new_commando.key = M.key
+ new_commando.update_icons()
+ index++
+
+ send_emergency_team = FALSE
+ active_team.announce_team()
+ return 1
+
+/client/proc/create_response_team(var/turf/spawn_location)
+ var/class = 0
+ while(!class)
+ class = input(src, "Which loadout would you like to choose?") in active_team.get_slot_list()
+ if(!active_team.check_slot_available(class)) // Because the prompt does not update automatically when a slot gets filled.
+ class = 0
+
+ if(class == "Cyborg")
+ active_team.reduceCyborgSlots()
+ var/cyborg_unlock = active_team.getCyborgUnlock()
+ var/mob/living/silicon/robot/ert/R = new /mob/living/silicon/robot/ert(spawn_location, cyborg_unlock)
+ return R
+
+ var/mob/living/carbon/human/M = new(null)
+ var/obj/item/organ/external/head/head_organ = M.get_organ("head")
+
+ var/new_gender = alert(src, "Please select your gender.", "ERT Character Generation", "Male", "Female")
+
+ if(new_gender)
+ if(new_gender == "Male")
+ M.change_gender(MALE)
+ else
+ M.change_gender(FEMALE)
+
+ M.set_species(/datum/species/human, TRUE)
+ M.dna.ready_dna(M)
+ M.reagents.add_reagent("mutadone", 1) //No fat/blind/colourblind/epileptic/whatever ERT.
+ M.overeatduration = 0
+
+ var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde
+ var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
+ var/skin_tone = rand(-120, 20) // A range of skin colors
+
+ head_organ.facial_colour = hair_c
+ head_organ.sec_facial_colour = hair_c
+ head_organ.hair_colour = hair_c
+ head_organ.sec_hair_colour = hair_c
+ M.change_eye_color(eye_c)
+ M.s_tone = skin_tone
+ head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species.name)
+ head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species.name)
+
+ M.rename_character(null, "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(last_names)]")
+ M.age = rand(23,35)
+ M.regenerate_icons()
+ M.update_body()
+ M.update_dna()
+
+ //Creates mind stuff.
+ M.mind = new
+ M.mind.current = M
+ M.mind.original = M
+ M.mind.assigned_role = SPECIAL_ROLE_ERT
+ M.mind.special_role = SPECIAL_ROLE_ERT
+ if(!(M.mind in ticker.minds))
+ ticker.minds += M.mind //Adds them to regular mind list.
+ ticker.mode.ert += M.mind
+ M.forceMove(spawn_location)
+
+ job_master.CreateMoneyAccount(M, class, null)
+
+ active_team.equip_officer(class, M)
+
+ return M
+
+
+/datum/response_team
+ var/command_slots = 1
+ var/engineer_slots = 3
+ var/medical_slots = 3
+ var/security_slots = 3
+ var/janitor_slots = 0
+ var/paranormal_slots = 0
+ var/cyborg_slots = 0
+
+ var/command_outfit
+ var/engineering_outfit
+ var/medical_outfit
+ var/security_outfit
+ var/janitor_outfit
+ var/paranormal_outfit
+ var/cyborg_unlock = 0
+
+/datum/response_team/proc/setSlots(com, sec, med, eng, jan, par, cyb)
+ command_slots = com == null ? command_slots : com
+ security_slots = sec == null ? security_slots : sec
+ medical_slots = med == null ? medical_slots : med
+ engineer_slots = eng == null ? engineer_slots : eng
+ janitor_slots = jan == null ? janitor_slots : jan
+ paranormal_slots = par == null ? paranormal_slots : par
+ cyborg_slots = cyb == null ? cyborg_slots : cyb
+
+/datum/response_team/proc/reduceCyborgSlots()
+ cyborg_slots--
+
+/datum/response_team/proc/getCyborgUnlock()
+ return cyborg_unlock
+
+/datum/response_team/proc/get_slot_list()
+ var/list/slots_available = list()
+ if(command_slots)
+ slots_available |= "Commander"
+ if(security_slots)
+ slots_available |= "Security"
+ if(engineer_slots)
+ slots_available |= "Engineer"
+ if(medical_slots)
+ slots_available |= "Medic"
+ if(janitor_slots)
+ slots_available |= "Janitor"
+ if(paranormal_slots)
+ slots_available |= "Paranormal"
+ if(cyborg_slots)
+ slots_available |= "Cyborg"
+ return slots_available
+
+/datum/response_team/proc/check_slot_available(var/slot)
+ switch(slot)
+ if("Commander")
+ return command_slots
+ if("Security")
+ return security_slots
+ if("Engineer")
+ return engineer_slots
+ if("Medic")
+ return medical_slots
+ if("Janitor")
+ return janitor_slots
+ if("Paranormal")
+ return paranormal_slots
+ if("Cyborg")
+ return cyborg_slots
+ return 0
+
+/datum/response_team/proc/equip_officer(var/officer_type, var/mob/living/carbon/human/M)
+ switch(officer_type)
+ if("Engineer")
+ engineer_slots -= 1
+ M.equipOutfit(engineering_outfit)
+ M.job = "ERT Engineering"
+
+ if("Security")
+ security_slots -= 1
+ M.equipOutfit(security_outfit)
+ M.job = "ERT Security"
+
+ if("Medic")
+ medical_slots -= 1
+ M.equipOutfit(medical_outfit)
+ M.job = "ERT Medical"
+
+ if("Janitor")
+ janitor_slots -= 1
+ M.equipOutfit(janitor_outfit)
+ M.job = "ERT Janitor"
+
+ if("Paranormal")
+ paranormal_slots -= 1
+ M.equipOutfit(paranormal_outfit)
+ M.job = "ERT Paranormal"
+
+ if("Commander")
+ command_slots = 0
+
+ // Override name and age for the commander
+ M.rename_character(null, "[pick("Lieutenant", "Captain", "Major")] [pick(last_names)]")
+ M.age = rand(35,45)
+
+ M.equipOutfit(command_outfit)
+ M.job = "ERT Commander"
+
+/datum/response_team/proc/cannot_send_team()
+ event_announcement.Announce("[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time.", "ERT Unavailable")
+
+/datum/response_team/proc/announce_team()
+ event_announcement.Announce("Attention, [station_name()]. We are sending a team of highly trained assistants to aid(?) you. Standby.", "ERT En-Route")
+
+// -- AMBER TEAM --
+
+/datum/response_team/amber
+ engineering_outfit = /datum/outfit/job/centcom/response_team/engineer/amber
+ security_outfit = /datum/outfit/job/centcom/response_team/security/amber
+ medical_outfit = /datum/outfit/job/centcom/response_team/medic/amber
+ command_outfit = /datum/outfit/job/centcom/response_team/commander/amber
+ janitor_outfit = /datum/outfit/job/centcom/response_team/janitorial/amber
+ paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/amber
+
+/datum/response_team/amber/announce_team()
+ event_announcement.Announce("Attention, [station_name()]. We are sending a code AMBER light Emergency Response Team. Standby.", "ERT En-Route")
+
+// -- RED TEAM --
+
+/datum/response_team/red
+ engineering_outfit = /datum/outfit/job/centcom/response_team/engineer/red
+ security_outfit = /datum/outfit/job/centcom/response_team/security/red
+ medical_outfit = /datum/outfit/job/centcom/response_team/medic/red
+ command_outfit = /datum/outfit/job/centcom/response_team/commander/red
+ janitor_outfit = /datum/outfit/job/centcom/response_team/janitorial/red
+ paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/red
+
+/datum/response_team/red/announce_team()
+ event_announcement.Announce("Attention, [station_name()]. We are sending a code RED Emergency Response Team. Standby.", "ERT En-Route")
+
+// -- GAMMA TEAM --
+
+/datum/response_team/gamma
+ engineering_outfit = /datum/outfit/job/centcom/response_team/engineer/gamma
+ security_outfit = /datum/outfit/job/centcom/response_team/security/gamma
+ medical_outfit = /datum/outfit/job/centcom/response_team/medic/gamma
+ command_outfit = /datum/outfit/job/centcom/response_team/commander/gamma
+ janitor_outfit = /datum/outfit/job/centcom/response_team/janitorial/gamma
+ paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/gamma
+ cyborg_unlock = 1
+
+/datum/response_team/gamma/announce_team()
+ event_announcement.Announce("Attention, [station_name()]. We are sending a code GAMMA elite Emergency Response Team. Standby.", "ERT En-Route")
+
+/datum/outfit/job/centcom/response_team
+ name = "Response team"
+ var/rt_assignment = "Emergency Response Team Member"
+ var/rt_job = "This is a bug"
+ allow_backbag_choice = FALSE
+ allow_loadout = FALSE
+ pda = /obj/item/pda/heads/ert
+ id = /obj/item/card/id/ert
+ l_ear = /obj/item/radio/headset/ert/alt
+ box = /obj/item/storage/box/responseteam
+
+ implants = list(/obj/item/implant/mindshield)
+
+/obj/item/radio/centcom
+ name = "centcomm bounced radio"
+ frequency = ERT_FREQ
+ icon_state = "radio"
+
+/obj/item/storage/box/responseteam/
+ name = "boxed survival kit"
+
+/obj/item/storage/box/responseteam/New()
+ ..()
+ new /obj/item/clothing/mask/breath(src)
+ new /obj/item/tank/emergency_oxygen/engi(src)
+ new /obj/item/flashlight/flare(src)
+ new /obj/item/kitchen/knife/combat(src)
+ new /obj/item/radio/centcom(src)
+ new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
+ new /obj/item/reagent_containers/hypospray/autoinjector(src)
diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm
new file mode 100644
index 00000000000..93227849f1f
--- /dev/null
+++ b/code/modules/response_team/ert_outfits.dm
@@ -0,0 +1,485 @@
+/* ERT OUTFIT DATUMS */
+
+/datum/outfit/job/centcom/response_team/imprint_idcard(mob/living/carbon/human/H)
+ var/obj/item/card/id/W = H.wear_id
+ if(!istype(W))
+ return
+ W.assignment = rt_assignment
+ W.rank = W.assignment
+ W.age = H.age
+ W.sex = capitalize(H.gender)
+ W.registered_name = H.real_name
+ W.name = "[H.real_name]'s ID Card ([rt_job])"
+ W.access = get_centcom_access(W.assignment)
+ W.photo = get_id_photo(H)
+ if(H.mind && H.mind.initial_account && H.mind.initial_account.account_number)
+ W.associated_account_number = H.mind.initial_account.account_number
+
+/datum/outfit/job/centcom/response_team/imprint_pda(mob/living/carbon/human/H)
+ var/obj/item/pda/PDA = H.wear_pda
+ if(istype(PDA))
+ PDA.owner = H.real_name
+ PDA.ownjob = rt_assignment
+ PDA.ownrank = rt_assignment
+ PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
+
+
+//////////////////// COMMANDER ///////////////////
+
+/datum/outfit/job/centcom/response_team/commander
+ name = "RT Commander"
+ rt_assignment = "Emergency Response Team Leader"
+ rt_job = "Emergency Response Team Leader"
+
+ uniform = /obj/item/clothing/under/rank/centcom_officer
+ back = /obj/item/storage/backpack/ert/commander
+
+ id = /obj/item/card/id/ert/commander
+
+ l_pocket = /obj/item/pinpointer
+ r_pocket = /obj/item/melee/classic_baton/telescopic
+
+/datum/outfit/job/centcom/response_team/commander/amber
+ name = "RT Commander (Amber)"
+ shoes = /obj/item/clothing/shoes/combat
+ gloves = /obj/item/clothing/gloves/color/black
+ suit = /obj/item/clothing/suit/armor/vest/ert/command
+ glasses = /obj/item/clothing/glasses/sunglasses
+
+ belt = /obj/item/gun/energy/gun
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/ert/command = 1,
+ /obj/item/clothing/mask/gas/sechailer = 1,
+ /obj/item/restraints/handcuffs = 1,
+ /obj/item/storage/lockbox/mindshield = 1
+ )
+
+/datum/outfit/job/centcom/response_team/commander/red
+ name = "RT Commander (Red)"
+ shoes = /obj/item/clothing/shoes/combat
+ gloves = /obj/item/clothing/gloves/combat
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/commander
+ glasses = /obj/item/clothing/glasses/sunglasses
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/chest/nutriment
+ )
+ belt = /obj/item/gun/energy/gun/blueshield/pdw9
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/commander = 1,
+ /obj/item/clothing/mask/gas/sechailer/swat = 1,
+ /obj/item/gun/energy/ionrifle/carbine = 1,
+ /obj/item/restraints/handcuffs = 1,
+ /obj/item/clothing/shoes/magboots = 1,
+ /obj/item/storage/lockbox/mindshield = 1
+ )
+
+/datum/outfit/job/centcom/response_team/commander/gamma
+ name = "RT Commander (Gamma)"
+ shoes = /obj/item/clothing/shoes/magboots/advance
+ gloves = /obj/item/clothing/gloves/combat
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/commander/gamma
+ glasses = /obj/item/clothing/glasses/night
+ suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
+ belt = /obj/item/gun/projectile/automatic/pistol/enforcer/lethal
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/commander/gamma = 1,
+ /obj/item/clothing/mask/gas/sechailer/swat = 1,
+ /obj/item/restraints/handcuffs = 1,
+ /obj/item/storage/lockbox/mindshield = 1,
+ /obj/item/gun/energy/ionrifle/carbine = 1,
+ /obj/item/ammo_box/magazine/enforcer/lethal = 2
+ )
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/arm/flash
+ )
+
+//////////////////// SECURITY ///////////////////
+
+/datum/outfit/job/centcom/response_team/security
+ name = "RT Security"
+ rt_job = "Emergency Response Team Officer"
+ uniform = /obj/item/clothing/under/rank/security
+ back = /obj/item/storage/backpack/ert/security
+ belt = /obj/item/storage/belt/security/response_team
+ pda = /obj/item/pda/heads/ert/security
+ id = /obj/item/card/id/ert/security
+
+/datum/outfit/job/centcom/response_team/security/amber
+ name = "RT Security (Amber)"
+ shoes = /obj/item/clothing/shoes/combat
+ gloves = /obj/item/clothing/gloves/color/black
+ suit = /obj/item/clothing/suit/armor/vest/ert/security
+ suit_store = /obj/item/gun/energy/gun/advtaser
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+
+ r_hand = /obj/item/gun/energy/laser
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/ert/security = 1,
+ /obj/item/clothing/mask/gas/sechailer = 1,
+ /obj/item/storage/box/zipties = 1,
+ /obj/item/storage/box/teargas = 1,
+ /obj/item/flashlight/seclite = 1
+ )
+
+/datum/outfit/job/centcom/response_team/security/red
+ name = "RT Security (Red)"
+
+ shoes = /obj/item/clothing/shoes/combat
+ gloves = /obj/item/clothing/gloves/color/black
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/security
+ suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
+ glasses = /obj/item/clothing/glasses/sunglasses
+
+ r_hand = /obj/item/gun/projectile/automatic/lasercarbine
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/arm/flash,
+ /obj/item/organ/internal/cyberimp/chest/nutriment,
+ /obj/item/organ/internal/cyberimp/eyes/hud/security
+ )
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1,
+ /obj/item/clothing/mask/gas/sechailer = 1,
+ /obj/item/clothing/shoes/magboots = 1,
+ /obj/item/storage/box/handcuffs = 1,
+ /obj/item/storage/box/teargas = 1,
+ /obj/item/grenade/flashbang = 1,
+ /obj/item/ammo_box/magazine/laser = 2
+ )
+
+/datum/outfit/job/centcom/response_team/security/gamma
+ name = "RT Security (Gamma)"
+ shoes = /obj/item/clothing/shoes/magboots/advance
+ gloves = /obj/item/clothing/gloves/combat
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/security/gamma
+ belt = /obj/item/storage/belt/security/response_team_gamma
+ suit_store = /obj/item/gun/energy/gun/nuclear
+ glasses = /obj/item/clothing/glasses/night
+ l_pocket = /obj/item/restraints/legcuffs/bola/energy
+ r_pocket = /obj/item/extinguisher/mini
+
+ r_hand = /obj/item/gun/energy/immolator/multi
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/security/gamma = 1,
+ /obj/item/clothing/mask/gas/sechailer/swat = 1,
+ /obj/item/storage/box/handcuffs = 1,
+ /obj/item/storage/box/flashbangs = 1,
+ /obj/item/whetstone = 1,
+ /obj/item/storage/lockbox/t4 = 1
+ )
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/arm/telebaton,
+ /obj/item/organ/internal/cyberimp/chest/reviver
+ )
+
+
+//////////////////// ENGINEER ///////////////////
+
+/datum/outfit/job/centcom/response_team/engineer
+ name = "RT Engineer"
+ rt_job = "Emergency Response Team Engineer"
+ back = /obj/item/storage/backpack/ert/engineer
+ uniform = /obj/item/clothing/under/rank/engineer
+
+ belt = /obj/item/storage/belt/utility/full/multitool
+ pda = /obj/item/pda/heads/ert/engineering
+ id = /obj/item/card/id/ert/engineering
+
+/datum/outfit/job/centcom/response_team/engineer/amber
+ name = "RT Engineer (Amber)"
+ shoes = /obj/item/clothing/shoes/magboots
+ gloves = /obj/item/clothing/gloves/color/yellow
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer
+ suit_store = /obj/item/tank/emergency_oxygen/engi
+ glasses = /obj/item/clothing/glasses/meson
+
+ l_pocket = /obj/item/gun/energy/gun/mini
+ r_pocket = /obj/item/melee/classic_baton/telescopic
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer = 1,
+ /obj/item/clothing/mask/gas = 1,
+ /obj/item/t_scanner = 1,
+ /obj/item/stack/sheet/glass/fifty = 1,
+ /obj/item/stack/sheet/metal/fifty = 1
+ )
+
+/datum/outfit/job/centcom/response_team/engineer/red
+ name = "RT Engineer (Red)"
+ shoes = /obj/item/clothing/shoes/magboots/advance
+ gloves = /obj/item/clothing/gloves/color/yellow
+ belt = /obj/item/storage/belt/utility/chief/full
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer
+ suit_store = /obj/item/tank/emergency_oxygen/engi
+ glasses = /obj/item/clothing/glasses/meson
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/eyes/shield,
+ /obj/item/organ/internal/cyberimp/chest/nutriment
+ )
+ l_pocket = /obj/item/t_scanner/extended_range
+ r_pocket = /obj/item/melee/classic_baton/telescopic
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer = 1,
+ /obj/item/clothing/mask/gas = 1,
+ /obj/item/rcd/preloaded = 1,
+ /obj/item/rcd_ammo = 3,
+ /obj/item/gun/energy/gun = 1
+ )
+
+/datum/outfit/job/centcom/response_team/engineer/gamma
+ name = "RT Engineer (Gamma)"
+ shoes = /obj/item/clothing/shoes/magboots/advance
+ gloves = /obj/item/clothing/gloves/color/yellow
+ belt = /obj/item/storage/belt/utility/chief/full
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer/gamma
+ suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
+ glasses = /obj/item/clothing/glasses/meson/night
+
+ l_pocket = /obj/item/t_scanner/extended_range
+ r_pocket = /obj/item/melee/classic_baton/telescopic
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer/gamma = 1,
+ /obj/item/clothing/mask/gas/sechailer/swat = 1,
+ /obj/item/rcd/combat = 1,
+ /obj/item/rcd_ammo/large = 3
+ )
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/eyes/shield,
+ /obj/item/organ/internal/cyberimp/arm/toolset
+ )
+
+//////////////////// MEDIC ///////////////////
+
+/datum/outfit/job/centcom/response_team/medic
+ name = "RT Medic"
+ rt_job = "Emergency Response Team Medic"
+ uniform = /obj/item/clothing/under/rank/medical
+ back = /obj/item/storage/backpack/ert/medical
+ pda = /obj/item/pda/heads/ert/medical
+ id = /obj/item/card/id/ert/medic
+
+/datum/outfit/job/centcom/response_team/medic/amber
+ name = "RT Medic (Amber)"
+
+ shoes = /obj/item/clothing/shoes/white
+ gloves = /obj/item/clothing/gloves/color/latex
+ suit = /obj/item/clothing/suit/armor/vest/ert/medical
+ suit_store = /obj/item/gun/energy/gun/mini
+ glasses = /obj/item/clothing/glasses/hud/health
+
+ belt = /obj/item/storage/belt/medical/surgery/loaded
+
+ l_pocket = /obj/item/reagent_containers/hypospray/safety/ert
+ r_pocket = /obj/item/melee/classic_baton/telescopic
+
+ l_hand = /obj/item/defibrillator/loaded
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/ert/medical = 1,
+ /obj/item/clothing/mask/surgical = 1,
+ /obj/item/storage/firstaid/adv = 1,
+ /obj/item/storage/firstaid/regular = 1,
+ /obj/item/storage/box/autoinjectors = 1,
+ /obj/item/roller = 1,
+ /obj/item/storage/pill_bottle/ert = 1
+ )
+
+/datum/outfit/job/centcom/response_team/medic/red
+ name = "RT Medic (Red)"
+ shoes = /obj/item/clothing/shoes/white
+ gloves = /obj/item/clothing/gloves/color/latex/nitrile
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/medical
+ glasses = /obj/item/clothing/glasses/hud/health/health_advanced
+ suit_store = /obj/item/gun/energy/gun
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/arm/surgery,
+ /obj/item/organ/internal/cyberimp/chest/nutriment
+ )
+ belt = /obj/item/defibrillator/compact/loaded
+
+ l_pocket = /obj/item/reagent_containers/hypospray/safety/ert
+ r_pocket = /obj/item/melee/classic_baton/telescopic
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/medical = 1,
+ /obj/item/clothing/mask/surgical = 1,
+ /obj/item/storage/firstaid/toxin = 1,
+ /obj/item/storage/firstaid/brute = 1,
+ /obj/item/storage/firstaid/fire = 1,
+ /obj/item/storage/box/autoinjectors = 1,
+ /obj/item/roller = 1,
+ /obj/item/clothing/shoes/magboots = 1,
+ /obj/item/bodyanalyzer = 1
+ )
+
+/datum/outfit/job/centcom/response_team/medic/gamma
+ name = "RT Medic (Gamma)"
+ shoes = /obj/item/clothing/shoes/magboots/advance
+ gloves = /obj/item/clothing/gloves/combat
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/medical/gamma
+ glasses = /obj/item/clothing/glasses/night
+ suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
+
+ belt = /obj/item/defibrillator/compact/loaded
+
+ l_pocket = /obj/item/reagent_containers/hypospray/combat/nanites
+ r_pocket = /obj/item/reagent_containers/hypospray/autoinjector
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/medical/gamma = 1,
+ /obj/item/clothing/mask/gas/sechailer/swat = 1,
+ /obj/item/bodyanalyzer/advanced = 1,
+ /obj/item/extinguisher/mini = 1,
+ /obj/item/storage/belt/medical/surgery/loaded = 1,
+ /obj/item/roller = 1
+ )
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/arm/surgery/l,
+ /obj/item/organ/internal/cyberimp/arm/medibeam,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/eyes/hud/medical,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun
+ )
+
+//////////////////// PARANORMAL ///////////////////
+
+/datum/outfit/job/centcom/response_team/paranormal
+ name = "RT Paranormal"
+ rt_job = "Emergency Response Team Inquisitor"
+ uniform = /obj/item/clothing/under/rank/chaplain
+ back = /obj/item/storage/backpack/ert/security
+ gloves = /obj/item/clothing/gloves/color/black
+ shoes = /obj/item/clothing/shoes/combat
+ l_ear = /obj/item/radio/headset/ert/alt
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ belt = /obj/item/storage/belt/security/response_team
+ id = /obj/item/card/id/centcom
+ pda = /obj/item/pda/centcom
+ backpack_contents = list(
+ /obj/item/clothing/mask/gas/sechailer/swat = 1,
+ /obj/item/storage/box/zipties = 1,
+ /obj/item/flashlight/seclite = 1
+ )
+
+/datum/outfit/job/centcom/response_team/paranormal/amber
+ name = "RT Paranormal (Amber)"
+ suit = /obj/item/clothing/suit/armor/vest/ert/security/paranormal
+ head = /obj/item/clothing/head/helmet/ert/security/paranormal
+ suit_store = /obj/item/gun/energy/gun/advtaser
+ r_pocket = /obj/item/nullrod
+
+/datum/outfit/job/centcom/response_team/paranormal/red
+ name = "RT Paranormal (Red)"
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
+ head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
+ suit_store = /obj/item/gun/energy/gun
+ r_pocket = /obj/item/nullrod
+ glasses = /obj/item/clothing/glasses/sunglasses
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/chest/nutriment
+ )
+
+/datum/outfit/job/centcom/response_team/paranormal/gamma
+ name = "RT Paranormal (Gamma)"
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
+ head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
+ suit_store = /obj/item/gun/energy/gun/nuclear
+ l_pocket = /obj/item/grenade/clusterbuster/holy
+ shoes = /obj/item/clothing/shoes/magboots/advance
+ glasses = /obj/item/clothing/glasses/night
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun
+ )
+
+//////////////////// JANITORIAL ///////////////////
+
+/datum/outfit/job/centcom/response_team/janitorial
+ name = "RT Janitor"
+ rt_job = "Emergency Response Team Janitor"
+ uniform = /obj/item/clothing/under/color/purple
+ back = /obj/item/storage/backpack/ert/janitor
+ belt = /obj/item/storage/belt/janitor/full
+ gloves = /obj/item/clothing/gloves/color/yellow
+ shoes = /obj/item/clothing/shoes/galoshes
+ l_ear = /obj/item/radio/headset/ert/alt
+ id = /obj/item/card/id/centcom
+ pda = /obj/item/pda/centcom
+ l_pocket = /obj/item/melee/classic_baton/telescopic
+ backpack_contents = list(
+ /obj/item/grenade/chem_grenade/antiweed = 2,
+ /obj/item/reagent_containers/spray/cleaner = 1,
+ /obj/item/storage/bag/trash = 1,
+ /obj/item/storage/box/lights/mixed = 1,
+ /obj/item/holosign_creator = 1,
+ /obj/item/flashlight = 1)
+
+/datum/outfit/job/centcom/response_team/janitorial/amber
+ name = "RT Janitor (Amber)"
+ suit = /obj/item/clothing/suit/armor/vest/ert/janitor
+ head = /obj/item/clothing/head/helmet/ert/janitor
+ glasses = /obj/item/clothing/glasses/sunglasses
+
+ r_hand = /obj/item/gun/energy/disabler
+
+/datum/outfit/job/centcom/response_team/janitorial/red
+ name = "RT Janitor (Red)"
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/janitor
+ head = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+
+ r_pocket = /obj/item/scythe/tele
+ l_pocket = /obj/item/gun/energy/gun/mini
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/arm/advmop,
+ /obj/item/organ/internal/cyberimp/chest/nutriment
+ )
+
+/datum/outfit/job/centcom/response_team/janitorial/gamma
+ name = "RT Janitor (Gamma)"
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/janitor/gamma
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ gloves = /obj/item/clothing/gloves/combat
+ suit_store = /obj/item/gun/energy/gun
+ l_pocket = /obj/item/grenade/clusterbuster/cleaner
+ r_pocket = /obj/item/scythe/tele
+ shoes = /obj/item/clothing/shoes/magboots/advance
+
+ backpack_contents = list(
+ /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor/gamma = 1,
+ /obj/item/grenade/chem_grenade/antiweed = 2,
+ /obj/item/storage/box/lights/mixed = 1,
+ /obj/item/storage/bag/trash/bluespace = 1,
+ /obj/item/reagent_containers/spray/cleaner = 1
+ )
+
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/arm/advmop
+ )
diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm
index 8b0675d90de..e8fa2ed19b6 100644
--- a/code/modules/scripting/Implementations/Telecomms.dm
+++ b/code/modules/scripting/Implementations/Telecomms.dm
@@ -248,7 +248,7 @@
But I like HTML, so back to no sanitizing.*/
var/message = interpreter.GetVar("$content")
- var/regex/bannedTags = new ("(