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:


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:


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:" 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/datums/spells/knock.dm b/code/datums/spells/knock.dm index 301dd5086b2..c1828c53e82 100644 --- a/code/datums/spells/knock.dm +++ b/code/datums/spells/knock.dm @@ -34,7 +34,7 @@ /obj/effect/proc_holder/spell/aoe_turf/knock/greater name = "Greater Knock" - desc = "On first cast, will remove access restrictions on all airlocks on the Cyberiad, and announce this spell's use to the station. On any further cast, will open all doors in sight. Cannot be refunded once bought!" + desc = "On first cast, will remove access restrictions on all airlocks on the station, and announce this spell's use to the station. On any further cast, will open all doors in sight. Cannot be refunded once bought!" charge_max = 200 invocation = "MAIOR OXIN FIERA" @@ -54,4 +54,4 @@ command_announcement.Announce("We have removed all access requirements on your station's airlocks. You can thank us later!", "Greetings!", 'sound/misc/notice2.ogg', , , "Space Wizard Federation Message") else ..() - return \ No newline at end of file + return diff --git a/code/datums/spells/summonitem.dm b/code/datums/spells/summonitem.dm index e99a9356312..a006790dfe5 100644 --- a/code/datums/spells/summonitem.dm +++ b/code/datums/spells/summonitem.dm @@ -93,9 +93,10 @@ var/obj/machinery/portable_atmospherics/P = item_to_retrive.loc P.disconnect() P.update_icon() - + if(istype(item_to_retrive.loc, /obj/structure/disposalholder) || istype(item_to_retrive.loc, /obj/machinery/disposal))//fixes the breaking of disposals. No more bluespace connected disposal bins! + break item_to_retrive = item_to_retrive.loc - + infinite_recursion += 1 if(!item_to_retrive) 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/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index 8e1334fb30e..b2d97b87727 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -14,11 +14,15 @@ if(!chosen_dna) return - + transform_dna(user,chosen_dna) user.changeling_update_languages(changeling.absorbed_languages) + if(user.mind.speech_span == "wingdings") //greys' wingdings isn't stored in DNA + user.mind.speech_span = "" + to_chat(user, "Our vocal cords have permanently shifted. We will now speak regularly.") + feedback_add_details("changeling_powers","TR") return 1 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/guardian/types/fire.dm b/code/game/gamemodes/miniantags/guardian/types/fire.dm index 61905f942d2..0bddb4c3f51 100644 --- a/code/game/gamemodes/miniantags/guardian/types/fire.dm +++ b/code/game/gamemodes/miniantags/guardian/types/fire.dm @@ -29,19 +29,19 @@ toggle = TRUE /mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() - if(..()) - if(toggle) - if(ishuman(target) && !summoner) - spawn(0) - new /obj/effect/hallucination/delusion(target.loc, target, force_kind = "custom", duration = 200, skip_nearby = 0, custom_icon = icon_state, custom_icon_file = icon) - else - if(prob(45)) - if(ismovableatom(target)) - var/atom/movable/M = target - if(!M.anchored && M != summoner) - new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) - do_teleport(M, M, 10) - new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) + ..() + if(toggle) + if(ishuman(target) && !summoner) + spawn(0) + new /obj/effect/hallucination/delusion(target.loc, target, force_kind = "custom", duration = 200, skip_nearby = 0, custom_icon = icon_state, custom_icon_file = icon) + else + if(prob(45)) + if(ismovableatom(target)) + var/atom/movable/M = target + if(!M.anchored && M != summoner) + new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) + do_teleport(M, M, 10) + new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) /mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) ..() 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/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index 8bc9b6c42d5..c788e934b45 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -21,10 +21,10 @@ color = "#FFFFFF" /obj/effect/decal/cleanable/blood/gibs/xeno/up - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") + random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6", "xgibup1", "xgibup1", "xgibup1") /obj/effect/decal/cleanable/blood/gibs/xeno/down - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") + random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6", "xgibdown1", "xgibdown1", "xgibdown1") /obj/effect/decal/cleanable/blood/gibs/xeno/body random_icon_states = list("xgibhead", "xgibtorso") @@ -36,4 +36,4 @@ random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") /obj/effect/decal/cleanable/blood/xtracks - basecolor = "#05EE05" \ No newline at end of file + basecolor = "#05EE05" diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 3d6a47a00b9..c4c903474ef 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -2,11 +2,11 @@ //Liquid fuel is used for things that used to rely on volatile fuels or plasma being contained to a couple tiles. icon = 'icons/effects/effects.dmi' icon_state = "fuel" - layer = TURF_LAYER+0.2 - anchored = 1 + layer = LATTICE_LAYER + anchored = TRUE var/amount = 1 //Basically moles. -/obj/effect/decal/cleanable/liquid_fuel/New(newLoc,amt=1) +/obj/effect/decal/cleanable/liquid_fuel/Initialize(newLoc, amt = 1) amount = amt //Be absorbed by any other liquid fuel in the tile. @@ -21,38 +21,42 @@ /obj/effect/decal/cleanable/liquid_fuel/proc/Spread() //Allows liquid fuels to sometimes flow into other tiles. - if(amount < 0.5) return + if(amount < 0.5) + return var/turf/simulated/S = loc - if(!istype(S)) return + if(!istype(S)) + return for(var/d in cardinal) if(rand(25)) var/turf/simulated/target = get_step(src, d) var/turf/simulated/origin = get_turf(src) if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0)) if(!locate(/obj/effect/decal/cleanable/liquid_fuel) in target) - new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25) + new/obj/effect/decal/cleanable/liquid_fuel(target, amount * 0.25) amount *= 0.75 /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel icon_state = "mustard" - anchored = 0 + anchored = FALSE -/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0) +/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Initialize(newLoc, amt = 1, d = 0) dir = d //Setting this direction means you won't get torched by your own flamethrower. . = ..() /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Spread() //The spread for flamethrower fuel is much more precise, to create a wide fire pattern. - if(amount < 0.1) return + if(amount < 0.1) + return var/turf/simulated/S = loc - if(!istype(S)) return + if(!istype(S)) + return - for(var/d in list(turn(dir,90),turn(dir,-90), dir)) - var/turf/simulated/O = get_step(S,d) + for(var/d in list(turn(dir, 90), turn(dir, -90), dir)) + var/turf/simulated/O = get_step(S, d) if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O) continue if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0)) - new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d) + new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O, amount * 0.25, d) O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately. amount *= 0.25 diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index f832b446cd5..53072d7e82c 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -1,6 +1,6 @@ -#define DRYING_TIME 5 * 60*10 //for 1 unit of depth in puddle (amount var) +#define DRYING_TIME 5 * 60 * 10 //for 1 unit of depth in puddle (amount var) -var/global/list/image/splatter_cache=list() +var/global/list/image/splatter_cache = list() /obj/effect/decal/cleanable/blood name = "blood" @@ -8,24 +8,24 @@ var/global/list/image/splatter_cache=list() desc = "It's thick and gooey. Perhaps it's the chef's cooking?" var/drydesc = "It's dry and crusty. Someone is not doing their job." gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/blood.dmi' icon_state = "mfloor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") - var/base_icon = 'icons/effects/blood.dmi' + appearance_flags = NO_CLIENT_COLOR blood_DNA = list() + var/base_icon = 'icons/effects/blood.dmi' var/blood_state = BLOOD_STATE_HUMAN var/bloodiness = MAX_SHOE_BLOODINESS var/basecolor = "#A10808" // Color when wet. var/amount = 5 - appearance_flags = NO_CLIENT_COLOR var/dry_timer = 0 var/off_floor = FALSE -/obj/effect/decal/cleanable/blood/New() - ..() +/obj/effect/decal/cleanable/blood/Initialize() + . = ..() update_icon() if(GAMEMODE_IS_CULT) var/datum/game_mode/cult/mode_ticker = ticker.mode @@ -58,7 +58,8 @@ var/global/list/image/splatter_cache=list() return ..() /obj/effect/decal/cleanable/blood/update_icon() - if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + if(basecolor == "rainbow") + basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" color = basecolor /obj/effect/decal/cleanable/blood/proc/dry() @@ -93,9 +94,9 @@ var/global/list/image/splatter_cache=list() var/mob/living/carbon/human/H = O var/obj/item/organ/external/l_foot = H.get_organ("l_foot") var/obj/item/organ/external/r_foot = H.get_organ("r_foot") - var/hasfeet = 1 + var/hasfeet = TRUE if(!l_foot && !r_foot) - hasfeet = 0 + hasfeet = FALSE if(H.shoes && blood_state && bloodiness) var/obj/item/clothing/shoes/S = H.shoes var/add_blood = 0 @@ -137,10 +138,10 @@ var/global/list/image/splatter_cache=list() gender = PLURAL icon = 'icons/effects/drip.dmi' icon_state = "1" - random_icon_states = list("1","2","3","4","5") + random_icon_states = list("1", "2", "3", "4", "5") amount = 0 - var/drips = 1 bloodiness = 0 + var/drips = 1 /obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() return TRUE @@ -150,12 +151,12 @@ var/global/list/image/splatter_cache=list() icon_state = "ltrails_1" desc = "Your instincts say you shouldn't be following these." gender = PLURAL - density = 0 - layer = 2 + density = FALSE + layer = TURF_LAYER random_icon_states = null - var/list/existing_dirs = list() blood_DNA = list() appearance_flags = NO_CLIENT_COLOR + var/list/existing_dirs = list() /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE @@ -164,12 +165,12 @@ var/global/list/image/splatter_cache=list() icon_state = "tracks" desc = "It looks like a writing in blood." gender = NEUTER - random_icon_states = list("writing1","writing2","writing3","writing4","writing5") + random_icon_states = list("writing1", "writing2", "writing3", "writing4", "writing5") amount = 0 var/message -/obj/effect/decal/cleanable/blood/writing/New() - ..() +/obj/effect/decal/cleanable/blood/writing/Initialize() + . = ..() if(random_icon_states.len) for(var/obj/effect/decal/cleanable/blood/writing/W in loc) random_icon_states.Remove(W.icon_state) @@ -179,20 +180,20 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/writing/examine(mob/user) ..(user) - to_chat(user, "It reads: \"[message]\"") + to_chat(user, "It reads: \"[message]\"") /obj/effect/decal/cleanable/blood/gibs name = "gibs" desc = "They look bloody and gruesome." gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/blood.dmi' icon_state = "gibbl5" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + noclear = TRUE var/fleshcolor = "#FFFFFF" - noclear = 1 /obj/effect/decal/cleanable/blood/gibs/update_icon() var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) @@ -207,10 +208,10 @@ var/global/list/image/splatter_cache=list() . = ..() /obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibup1", "gibup1", "gibup1") /obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibdown1", "gibdown1", "gibdown1") /obj/effect/decal/cleanable/blood/gibs/body random_icon_states = list("gibhead", "gibtorso") @@ -221,15 +222,15 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/gibs/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") -/obj/effect/decal/cleanable/blood/gibs/New() - ..() +/obj/effect/decal/cleanable/blood/gibs/Initialize() + . = ..() reagents.add_reagent("liquidgibs", 5) /obj/effect/decal/cleanable/blood/gibs/cleangibs //most ironic name ever... -/obj/effect/decal/cleanable/blood/gibs/cleangibs/New() //no reagent! - ..() +/obj/effect/decal/cleanable/blood/gibs/cleangibs/Initialize() //no reagent! + . = ..() reagents.remove_reagent("liquidgibs",5) @@ -246,18 +247,20 @@ var/global/list/image/splatter_cache=list() break -/obj/effect/decal/cleanable/blood/old/New() - ..() +/obj/effect/decal/cleanable/blood/old/Initialize() + . = ..() bloodiness = 0 dry() /obj/effect/decal/cleanable/blood/old/can_bloodcrawl_in() return FALSE -/obj/effect/decal/cleanable/blood/gibs/old/New() - ..() +/obj/effect/decal/cleanable/blood/gibs/old/Initialize() + . = ..() bloodiness = 0 dry() /obj/effect/decal/cleanable/blood/gibs/old/can_bloodcrawl_in() return FALSE + +#undef DRYING_TIME diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 1b9880bb79a..f9ac4e6ae36 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -2,9 +2,9 @@ name = "clutter" desc = "Someone should clean that up." gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/obj/objects.dmi' icon_state = "shards" @@ -14,39 +14,39 @@ gender = PLURAL icon = 'icons/obj/objects.dmi' icon_state = "ash" - anchored = 1 + anchored = TRUE -/obj/effect/decal/cleanable/ash/New() - ..() +/obj/effect/decal/cleanable/ash/Initialize() + . = ..() reagents.add_reagent("ash", 10) /obj/effect/decal/cleanable/dirt name = "dirt" desc = "Someone should clean that up." gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/effects.dmi' icon_state = "dirt" - mouse_opacity = 0 + mouse_opacity = MOUSE_OPACITY_TRANSPARENT /obj/effect/decal/cleanable/dirt/blackpowder name = "black powder" - mouse_opacity = 1 - noscoop = 1 + mouse_opacity = MOUSE_OPACITY_ICON + noscoop = TRUE -/obj/effect/decal/cleanable/dirt/blackpowder/New() - ..() - reagents.add_reagent("blackpowder", 40) //size 2 explosion when activated +/obj/effect/decal/cleanable/dirt/blackpowder/Initialize() + . = ..() + reagents.add_reagent("blackpowder", 40) // size 2 explosion when activated /obj/effect/decal/cleanable/flour name = "flour" desc = "It's still good. Four second rule!" gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/effects.dmi' icon_state = "flour" @@ -55,33 +55,31 @@ desc = "It's foam." color = "#EBEBEB" - New() - ..() - spawn(150)// 15 seconds - qdel(src) +/obj/effect/decal/cleanable/flour/foam/Initialize() + . = ..() + QDEL_IN(src, 15 SECONDS) /obj/effect/decal/cleanable/greenglow name = "glowing goo" desc = "Jeez. I hope that's not for lunch." gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER light_range = 1 icon = 'icons/effects/effects.dmi' icon_state = "greenglow" - New() - ..() - spawn(1200)// 2 minutes - qdel(src) +/obj/effect/decal/cleanable/greenglow/Initialize(mapload) + . = ..() + QDEL_IN(src, 2 MINUTES) /obj/effect/decal/cleanable/cobweb name = "cobweb" desc = "Somebody should remove that." - density = 0 - anchored = 1 - layer = 3 + density = FALSE + anchored = TRUE + layer = OBJ_LAYER icon = 'icons/effects/effects.dmi' icon_state = "cobweb1" burntime = 1 @@ -92,9 +90,9 @@ /obj/effect/decal/cleanable/molten_object name = "gooey grey mass" desc = "It looks like a melted... something." - density = 0 - anchored = 1 - layer = 3 + density = FALSE + anchored = TRUE + layer = OBJ_LAYER gender = NEUTER icon = 'icons/effects/effects.dmi' icon_state = "molten" @@ -106,55 +104,53 @@ /obj/effect/decal/cleanable/cobweb2 name = "cobweb" desc = "Somebody should remove that." - density = 0 - anchored = 1 - layer = 3 + density = FALSE + anchored = TRUE + layer = OBJ_LAYER icon = 'icons/effects/effects.dmi' icon_state = "cobweb2" -//Vomit (sorry) /obj/effect/decal/cleanable/vomit name = "vomit" desc = "Gosh, how unpleasant." gender = PLURAL - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/blood.dmi' icon_state = "vomit_1" random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4") - noclear = 1 + noclear = TRUE -/obj/effect/decal/cleanable/vomit/New() - ..() +/obj/effect/decal/cleanable/vomit/Initialize() + . = ..() reagents.add_reagent("vomit", 5) - /obj/effect/decal/cleanable/vomit/green name = "green vomit" desc = "It's all gummy. Ew." icon_state = "gvomit_1" random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4") -/obj/effect/decal/cleanable/vomit/green/New() - ..() +/obj/effect/decal/cleanable/vomit/green/Initialize() + . = ..() reagents.remove_reagent("vomit", 5) reagents.add_reagent("green_vomit", 5) /obj/effect/decal/cleanable/tomato_smudge name = "tomato smudge" desc = "It's red." - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3") /obj/effect/decal/cleanable/plant_smudge name = "plant smudge" - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER gender = NEUTER icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_plant") @@ -162,33 +158,33 @@ /obj/effect/decal/cleanable/egg_smudge name = "smashed egg" desc = "Seems like this one won't hatch." - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3") /obj/effect/decal/cleanable/pie_smudge //honk name = "smashed pie" desc = "It's pie cream from a cream pie." - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_pie") /obj/effect/decal/cleanable/fungus name = "space fungus" desc = "A fungal growth. Looks pretty nasty." - density = 0 - anchored = 1 - layer = 2 + density = FALSE + anchored = TRUE + layer = TURF_LAYER icon = 'icons/effects/effects.dmi' icon_state = "flour" color = "#D5820B" -/obj/effect/decal/cleanable/fungus/New() - ..() +/obj/effect/decal/cleanable/fungus/Initialize() + . = ..() reagents.add_reagent("fungus", 10) /obj/effect/decal/cleanable/confetti //PARTY TIME! @@ -198,6 +194,4 @@ icon = 'icons/obj/objects.dmi' icon_state = "confetti1" random_icon_states = list("confetti1", "confetti2", "confetti3") - anchored = 1 - - + anchored = TRUE diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 5bce827604c..16a9bf5a711 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -3,7 +3,7 @@ desc = "It's a useless heap of junk... or is it?" icon = 'icons/mob/robots.dmi' icon_state = "gib1" - basecolor="#030303" + basecolor = "#030303" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") bloodiness = MAX_SHOE_BLOODINESS @@ -20,7 +20,7 @@ return FALSE /obj/effect/decal/cleanable/blood/gibs/robot/streak(var/list/directions) - spawn (0) + spawn(0) var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++) sleep(3) @@ -39,15 +39,15 @@ random_icon_states = list("gibarm", "gibleg") /obj/effect/decal/cleanable/blood/gibs/robot/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") //2:7 is close enough to 1:4 + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7", "gibup1", "gibup1") //2:7 is close enough to 1:4 /obj/effect/decal/cleanable/blood/gibs/robot/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") //2:7 is close enough to 1:4 + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7", "gibdown1", "gibdown1") //2:7 is close enough to 1:4 /obj/effect/decal/cleanable/blood/oil name = "motor oil" desc = "It's black and greasy. Looks like Beepsky made another mess." - basecolor="#030303" + basecolor = "#030303" bloodiness = MAX_SHOE_BLOODINESS /obj/effect/decal/cleanable/blood/oil/can_bloodcrawl_in() diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index 0568f2db75c..8598381aaf1 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -2,7 +2,7 @@ #define TRACKS_CRUSTIFY_TIME 50 // color-dir-dry -var/global/list/image/fluidtrack_cache=list() +var/global/list/image/fluidtrack_cache = list() // Footprints, tire trails... /obj/effect/decal/cleanable/blood/tracks @@ -23,7 +23,7 @@ var/global/list/image/fluidtrack_cache=list() desc = "You REALLY shouldn't follow these.." gender = PLURAL random_icon_states = null - basecolor="#A10808" + basecolor = "#A10808" var/entered_dirs = 0 var/exited_dirs = 0 blood_state = BLOOD_STATE_HUMAN //the icon state to load images from @@ -35,9 +35,9 @@ var/global/list/image/fluidtrack_cache=list() var/obj/item/clothing/shoes/S = H.shoes var/obj/item/organ/external/l_foot = H.get_organ("l_foot") var/obj/item/organ/external/r_foot = H.get_organ("r_foot") - var/hasfeet = 1 + var/hasfeet = TRUE if(!l_foot && !r_foot) - hasfeet = 0 + hasfeet = FALSE if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) entered_dirs |= H.dir @@ -58,9 +58,9 @@ var/global/list/image/fluidtrack_cache=list() var/obj/item/clothing/shoes/S = H.shoes var/obj/item/organ/external/l_foot = H.get_organ("l_foot") var/obj/item/organ/external/r_foot = H.get_organ("r_foot") - var/hasfeet = 1 + var/hasfeet = TRUE if(!l_foot && !r_foot) - hasfeet = 0 + hasfeet = FALSE if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) exited_dirs |= H.dir diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 09baf2b7518..09b13845879 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,8 +1,8 @@ /obj/effect/decal/cleanable - anchored = 1 + anchored = TRUE var/list/random_icon_states = list() - var/noscoop = 0 //if it has this, don't let it be scooped up - var/noclear = 0 //if it has this, don't delete it when its' scooped up + var/noscoop = FALSE //if it has this, don't let it be scooped up + var/noclear = FALSE //if it has this, don't delete it when its' scooped up /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() return FALSE @@ -28,7 +28,8 @@ qdel(src) return if(is_hot(W)) //todo: make heating a reagent holder proc - if(istype(W, /obj/item/clothing/mask/cigarette)) return + if(istype(W, /obj/item/clothing/mask/cigarette)) + return else src.reagents.chem_temp += 15 src.reagents.handle_reactions() diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index c953993197c..ac0007e42ae 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -3,8 +3,8 @@ desc = "A rune drawn in crayon." icon = 'icons/effects/crayondecal.dmi' icon_state = "rune1" - layer = 2.1 - anchored = 1 + layer = MID_TURF_LAYER + anchored = TRUE /obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune") @@ -15,4 +15,4 @@ desc = "A [name] drawn in crayon." icon_state = type - color = main \ No newline at end of file + color = main diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 301fd71a98d..e2f1399a922 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -1,7 +1,7 @@ // Used for spray that you spray at walls, tables, hydrovats etc /obj/effect/decal/spraystill - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE layer = 50 plane = HUD_PLANE @@ -11,38 +11,38 @@ pass_flags = PASSTABLE | PASSGRILLE /obj/effect/decal/snow - name="snow" - density=0 - anchored=1 - layer=2 - icon='icons/turf/snow.dmi' + name = "snow" + density = FALSE + anchored = TRUE + layer = TURF_DECAL_LAYER + icon = 'icons/turf/snow.dmi' /obj/effect/decal/snow/clean/edge - icon_state="snow_corner" + icon_state = "snow_corner" /obj/effect/decal/snow/sand/edge - icon_state="gravsnow_corner" + icon_state = "gravsnow_corner" /obj/effect/decal/snow/clean/surround - icon_state="snow_surround" + icon_state = "snow_surround" /obj/effect/decal/snow/sand/surround - icon_state="gravsnow_surround" + icon_state = "gravsnow_surround" /obj/effect/decal/leaves - name="fall leaves" - density = 0 - anchored = 1 - layer = 2 - icon='icons/obj/flora/plants.dmi' + name = "fall leaves" + density = FALSE + anchored = TRUE + layer = HIGH_TURF_LAYER + icon = 'icons/obj/flora/plants.dmi' icon_state = "fallleaves" /obj/effect/decal/straw - name="scattered straw" - density = 0 - anchored = 1 - layer = 2 - icon='icons/obj/flora/plants.dmi' + name = "scattered straw" + density = FALSE + anchored = TRUE + layer = HIGH_TURF_LAYER + icon = 'icons/obj/flora/plants.dmi' icon_state = "strawscattered" /obj/effect/decal/straw/medium @@ -52,4 +52,4 @@ icon_state = "strawscattered2" /obj/effect/decal/straw/edge - icon_state = "strawscatterededge" \ No newline at end of file + icon_state = "strawscatterededge" diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index d57a364255b..b97b149991b 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -6,21 +6,21 @@ desc = "They look like human remains. They have a strange aura about them." icon = 'icons/effects/blood.dmi' icon_state = "remains" - anchored = 1 + anchored = TRUE /obj/effect/decal/remains/xeno name = "remains" desc = "They look like the remains of something... alien. They have a strange aura about them." icon = 'icons/effects/blood.dmi' icon_state = "remainsxeno" - anchored = 1 + anchored = TRUE /obj/effect/decal/remains/robot name = "remains" desc = "They look like the remains of something mechanical. They have a strange aura about them." icon = 'icons/mob/robots.dmi' icon_state = "remainsrobot" - anchored = 1 + anchored = TRUE /obj/effect/decal/remains/robot/New() ..() @@ -33,7 +33,7 @@ desc = "Noooooooooooooooooooooo" icon = 'icons/effects/blood.dmi' icon_state = "remains" - anchored = 1 + anchored = TRUE /obj/effect/decal/remains/slime/New() ..() diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm index dbec481e944..29af46f1192 100644 --- a/code/game/objects/effects/decals/warning_stripes.dm +++ b/code/game/objects/effects/decals/warning_stripes.dm @@ -1,6 +1,6 @@ /obj/effect/decal/warning_stripes icon = 'icons/effects/warning_stripes.dmi' - layer = 2 + layer = TURF_LAYER /obj/effect/decal/warning_stripes/north icon_state = "N" @@ -50,7 +50,7 @@ /obj/effect/decal/warning_stripes/northwestsouth icon_state = "U-E" -/obj/effect/decal/warning_stripes/New() +/obj/effect/decal/warning_stripes/Initialize() . = ..() loc.overlays += src qdel(src) @@ -107,4 +107,4 @@ icon_state = "16" /obj/effect/decal/warning_stripes/blue/hollow - icon_state = "18" \ No newline at end of file + icon_state = "18" 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/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 929d7372752..f5aa02d6eb4 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -84,7 +84,7 @@ var/dead_notes = input("Insert any relevant notes") var/obj/item/paper/R = new(user.loc) R.name = "Official Coroner's Report - [dead_name]" - R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Trace Chemicals: [dead_chems]

Additional Coroner's Notes: [dead_notes]

Coroner's Signature: " + R.info = "Nanotrasen Science Station [using_map.station_short] - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Trace Chemicals: [dead_chems]

Additional Coroner's Notes: [dead_notes]

Coroner's Signature: " playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) sleep(10) user.put_in_hands(R) 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 += "" + dat += "" + dat += "" + dat += "" + 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 += "" + 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 += "" + dat += "" + dat += "
OrganBurn DamageBrute DamageOther Wounds
[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]
[i.name]N/A[i.damage][infection]:[mech]
" + 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/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 6c726060312..a83a09d639c 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -1636,7 +1636,7 @@
  • The Chief Engineer is bound to the same rules regarding the axe as Atmospheric Technicians;
  • The Chief Engineer is permitted to carry a telescopic baton and a flash;
  • The Chief Engineer is responsible for maintaining the integrity of the Gravitational Singularity Engine and/or the Supermatter Engine and/or the Tesla Engine. Neglecting this duty is grounds for termination should the Engine malfunction;
  • -
  • The Chief Engineer is responsible for maintaining the integrity of the Cyberiad's Atmospherics System. Failure to maintain this integrity is grounds for termination;
  • +
  • The Chief Engineer is responsible for maintaining the integrity of the station's Atmospherics System. Failure to maintain this integrity is grounds for termination;
  • The Chief Engineer may declare an area "Condemned", if it is damaged to the point where repairs cannot reasonably be completed within an acceptable frame of time;
  • The Chief Engineer is permitted to grant Building Permits to crewmembers, but must keep the Station Blueprints in a safe location at all times.
  • @@ -1652,7 +1652,7 @@
  • Engineers must constantly monitor the Supermatter Engine, if it is the chosen method of power generation, if it is currently active (ie, under Emitter Fire). This is not negotiable;
  • Engineers must respond promptly to breaches, regardless of size. Failure to report within fifteen (15) minutes will be considered a breach of Standard Operating Procedure, unless there are no spare Engineers to report or an Atmospheric Technician has arrived on scene first. All Hazard Zones must be cordoned off with Engineering Tape, for the sake of everyone else;
  • Engineers are permitted to hack doors to gain unauthorized access to locations if said locations happen to require urgent repairs;
  • -
  • Engineers are to maintain the integrity of the Cyberiad's Power Network. In addition, hotwiring the Gravitational Singularity Engine, Supermatter Engine or Tesla Engine is strictly forbidden;
  • +
  • Engineers are to maintain the integrity of the station's Power Network. In addition, hotwiring the Gravitational Singularity Engine, Supermatter Engine or Tesla Engine is strictly forbidden;
  • Engineers must ensure there is at least one (1) engineering hardsuit available on the station at all times, unless there is an emergency that requires the use of all suits.


  • @@ -2063,7 +2063,7 @@
  • The Security Pod Pilot is not permitted to use the Laser Module during arrests, and must switch to the Disabler Module;
  • The Security Pod Pilot must carry around a spare set of tools and energy cell, for their own sake;
  • The Security Pod Pilot may immediately, and without warning, conduct arrests on individuals attempting to perform E.V.A actions near the AI Satellite. Exception is made if the AI Unit is malfunctioning;
  • -
  • The Security Pod Pilot is not permitted to explore the area surrounding the station, and must therefore be confined to the immediate orbital area of the NSS Cyberiad, the NXS Klapaucius (the Telecomms Satellite) and the Mining/Research Asteroid. Exception is made if the Head of Security permits otherwise.
  • +
  • The Security Pod Pilot is not permitted to explore the area surrounding the station, and must therefore be confined to the immediate orbital area of the station, the NXS Klapaucius (the Telecomms Satellite) and the Mining/Research Asteroid. Exception is made if the Head of Security permits otherwise.

  • Code Blue @@ -2506,11 +2506,11 @@
  • The Captain is not permitted to perform regular Security Duty. However, they may still assist Security if they are understaffed, or if they see a crime being committed. However, the Captain is not permitted to take items from the Armory under normal circumstances, unless authorized by the Head of Security. In addition, the Captain may not requisition weaponry for themselves from Cargo and/or Science, unless there's an immediate threat to station and/or crew;
  • If a Department lacks a Head of Staff, the Captain should make reasonable efforts to appoint an Acting Head of Staff, if there are available personnel to fill the position;
  • The Captain is to ensure that Space Law is being correctly applied. This should be done in cooperation with the Head of Security;
  • -
  • The Captain is not to leave the NSS Cyberiad unless given specific permission by Central Command, or it happens to be the end of the shift. This includes via space or via the Gateway. To do so is to be considered abandoning their posts and is grounds for termination;
  • +
  • The Captain is not to leave the station unless given specific permission by Central Command, or it happens to be the end of the shift. This includes via space or via the Gateway. To do so is to be considered abandoning their posts and is grounds for termination;
  • The Captain must keep the Nuclear Authentication Disk on their person at all times or, failing that, in the possession of the Head of Security or Blueshield;
  • The Captain is to attempt to resolve every issue that arises in Command locally before contacting Central Command;
  • The Captain is not permitted to carry their Antique Laser Gun or Space Armor unless there's an immediate emergency that requires attending to;
  • -
  • The Captain, despite being in charge of the Cyberiad, is not independent from Nanotrasen. Any attempts to disregard general company policy are to be considered an instant condition for contract termination;
  • +
  • The Captain, despite being in charge of the station, is not independent from Nanotrasen. Any attempts to disregard general company policy are to be considered an instant condition for contract termination;
  • The Captain may only promote personnel to a Acting Head of Staff position if there is no assigned Head of Staff associated with the Department. Said Acting Head of Staff must be a member of the Department they are to lead. See below for more information on Chain of Command;
  • The Captain may not fire any Head of Staff without reasonable justification (ie, incompetency, criminal activity, or otherwise any action that endangers/compromises the station and/or crew). The Captain may not fire any Central Command VIPs (ie, Blueshield, Magistrate, Nanotrasen Representative) without permission from Central Command, unless they are blatantly acting against the well-being and safety of the crew and station.

  • @@ -2560,4 +2560,4 @@ - "} \ No newline at end of file + "} 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 6a540e65096..31600856238 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1988,7 +1988,7 @@ P.name = "Central Command - paper" var/stypes = list("Handle it yourselves!","Illegible fax","Fax not signed","Not Right Now","You are wasting our time", "Keep up the good work", "ERT Instructions") var/stype = input(src.owner, "Which type of standard reply do you wish to send to [H]?","Choose your paperwork", "") as null|anything in stypes - var/tmsg = "



    Nanotrasen Science Station Cyberiad


    NAS Trurl Communications Department Report


    " + var/tmsg = "



    Nanotrasen Science Station [using_map.station_short]


    NAS Trurl Communications Department Report


    " if(stype == "Handle it yourselves!") tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

    Please proceed in accordance with Standard Operating Procedure and/or Space Law. You are fully trained to handle this situation without Central Command intervention.

    This is an automatic message." else if(stype == "Illegible fax") @@ -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 e43613f6d8d..67f7055e0f4 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'" @@ -1495,3 +1516,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/events/traders.dm b/code/modules/events/traders.dm index 0b2ee2204c6..cbeceac1696 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -65,7 +65,7 @@ var/global/list/unused_trade_stations = list("sol") /datum/event/traders/proc/greet_trader(var/mob/living/carbon/human/M) to_chat(M, "You are a trader!") to_chat(M, "You are currently docked at [get_area(M)].") - to_chat(M, "You are about to trade with NSS Cyberiad.") + to_chat(M, "You are about to trade with [station_name()].") to_chat(M, "Negotiate an agreement, and request docking.") spawn(25) show_objectives(M.mind) diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm index c0a25979df2..3cc29ff39fb 100644 --- a/code/modules/ext_scripts/irc.dm +++ b/code/modules/ext_scripts/irc.dm @@ -17,5 +17,5 @@ return /hook/startup/proc/ircNotify() - send2mainirc("Server starting up on [config.server? "byond://[config.server]" : "byond://[world.address]:[world.port]"]") + send2mainirc("Server starting up on [station_name()]. Connect to: [config.server? "[config.server]" : "[world.address]:[world.port]"]") return 1 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/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 619d0316349..56660f3f6f2 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -401,9 +401,16 @@ M.layer = layer + 0.1 else //post unbuckling - load = null - M.layer = initial(M.layer) - M.pixel_y = initial(M.pixel_y) + reset_buckled_mob(M) + +/mob/living/simple_animal/bot/mulebot/post_unbuckle_mob(mob/living/M) + . = ..() + reset_buckled_mob(M) + +/mob/living/simple_animal/bot/mulebot/proc/reset_buckled_mob(mob/living/M) + load = null + M.layer = initial(M.layer) + M.pixel_y = initial(M.pixel_y) // called to unload the bot // argument is optional direction to unload 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 b8d432d5609..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,16 +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 - if(val_change) + if(val_change && updating) + CureIfHasDisability(BLINDBLOCK) update_blind_effects() // Coughing @@ -482,6 +507,7 @@ /mob/living/proc/CureCoughing() disabilities &= ~COUGHING + CureIfHasDisability(COUGHBLOCK) // Deaf @@ -490,6 +516,7 @@ /mob/living/proc/CureDeaf() disabilities &= ~DEAF + CureIfHasDisability(DEAFBLOCK) // Epilepsy @@ -498,6 +525,7 @@ /mob/living/proc/CureEpilepsy() disabilities &= ~EPILEPSY + CureIfHasDisability(EPILEPSYBLOCK) // Mute @@ -506,19 +534,23 @@ /mob/living/proc/CureMute() disabilities &= ~MUTE + CureIfHasDisability(MUTEBLOCK) // 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 - if(val_change) + if(val_change && updating) + CureIfHasDisability(GLASSESBLOCK) update_nearsighted_effects() // Nervous @@ -528,6 +560,7 @@ /mob/living/proc/CureNervous() disabilities &= ~NERVOUS + CureIfHasDisability(NERVOUSBLOCK) // Tourettes @@ -536,3 +569,10 @@ /mob/living/proc/CureTourettes() disabilities &= ~TOURETTES + CureIfHasDisability(TWITCHBLOCK) + +/mob/living/proc/CureIfHasDisability(block) + if(dna.GetSEState(block)) + dna.SetSEState(block, 0, 1) //Fix the gene + genemutcheck(src, block,null, MUTCHK_FORCED) + dna.UpdateSE() 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.dm b/code/modules/projectiles/ammunition.dm index 130fda822fd..66935652e4e 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -85,7 +85,7 @@ flags = CONDUCT slot_flags = SLOT_BELT item_state = "syringe_kit" - materials = list(MAT_METAL=30000) + materials = list(MAT_METAL = 30000) throwforce = 2 w_class = WEIGHT_CLASS_TINY throw_speed = 4 @@ -96,11 +96,14 @@ var/multiple_sprites = 0 var/caliber var/multiload = 1 + var/list/initial_mats //For calculating refund values. /obj/item/ammo_box/New() for(var/i in 1 to max_ammo) stored_ammo += new ammo_type(src) update_icon() + initial_mats = materials.Copy() + update_mat_value() /obj/item/ammo_box/Destroy() QDEL_LIST(stored_ammo) @@ -115,6 +118,7 @@ stored_ammo -= b if(keep) stored_ammo.Insert(1,b) + update_mat_value() return b /obj/item/ammo_box/proc/give_round(obj/item/ammo_casing/R, replace_spent = 0) @@ -125,6 +129,7 @@ if(stored_ammo.len < max_ammo) stored_ammo += R R.loc = src + update_mat_value() return 1 //for accessibles magazines (e.g internal ones) when full, start replacing spent ammo else if(replace_spent) @@ -135,6 +140,7 @@ stored_ammo += R R.loc = src + update_mat_value() return 1 return 0 @@ -184,6 +190,19 @@ icon_state = "[initial(icon_state)]-[stored_ammo.len ? "[max_ammo]" : "0"]" desc = "[initial(desc)] There are [stored_ammo.len] shell\s left!" +/obj/item/ammo_box/proc/update_mat_value() + var/num_ammo = 0 + for(var/B in stored_ammo) + var/obj/item/ammo_casing/AC = B + if(!AC.BB) //Skip any casing which are empty + continue + num_ammo++ + for(var/M in initial_mats) //In case we have multiple types of materials + var/materials_per = initial_mats[M] / max_ammo + + var/value = max(materials_per * num_ammo, 2000) //Enforce a minimum of 2000 units even if empty. + materials[M] = value + //Behavior for magazines /obj/item/ammo_box/magazine/proc/ammo_count() return stored_ammo.len 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/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index e563182d75f..d77621051e2 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -23,6 +23,9 @@ processing_objects.Remove(src) return ..() +/obj/item/gun/medbeam/handle_suicide() + return + /obj/item/gun/medbeam/dropped(mob/user) ..() LoseTarget() 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 9de8033a00f..78e7ad47f57 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -45,6 +45,26 @@ flush = initial(flush) T.nicely_link_to_other_stuff(src) +//When the disposalsoutlet is forcefully moved. Due to meteorshot (not the recall spell) +/obj/machinery/disposal/Moved(atom/OldLoc, Dir) + . = ..() + eject() + var/ptype = istype(src, /obj/machinery/disposal/deliveryChute) ? PIPE_DISPOSALS_CHUTE : PIPE_DISPOSALS_BIN //Check what disposaltype it is + var/turf/T = OldLoc + if(T.intact) + var/turf/simulated/floor/F = T + F.remove_tile(null,TRUE,TRUE) + T.visible_message("The floortile is ripped from the floor!", "You hear a loud bang!") + if(trunk) + trunk.remove_trunk_links() + var/obj/structure/disposalconstruct/C = new (loc) + transfer_fingerprints_to(C) + C.ptype = ptype + C.update() + C.anchored = 0 + C.density = 1 + qdel(src) + /obj/machinery/disposal/Destroy() eject() if(trunk) @@ -560,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 @@ -1345,6 +1365,24 @@ to_chat(user, "You need more welding fuel to complete this task.") return +//When the disposalsoutlet is forcefully moved. Due to meteorshot or the recall item spell for instance +/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir) + . = ..() + var/turf/T = OldLoc + if(T.intact) + var/turf/simulated/floor/F = T + F.remove_tile(null,TRUE,TRUE) + T.visible_message("The floortile is ripped from the floor!", "You hear a loud bang!") + if(linkedtrunk) + linkedtrunk.remove_trunk_links() + var/obj/structure/disposalconstruct/C = new (loc) + transfer_fingerprints_to(C) + C.ptype = PIPE_DISPOSALS_OUTLET + C.update() + C.anchored = 0 + C.density = 1 + qdel(src) + /obj/structure/disposaloutlet/Destroy() if(linkedtrunk) linkedtrunk.remove_trunk_links() 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 ("( NUTRITION_LEVEL_WELL_FED) to_chat(H, "You are now fully charged.") break - H.visible_message("[H] unplugs from \the [A].", "You unplug from \the [A].") \ No newline at end of file + H.visible_message("[H] unplugs from \the [A].", "You unplug from \the [A].") + +/obj/item/organ/internal/cyberimp/arm/telebaton + name = "telebaton implant" + desc = "Telescopic baton implant. Does what it says on the tin" // A better description + + contents = newlist(/obj/item/melee/classic_baton) + +/obj/item/organ/internal/cyberimp/arm/advmop + name = "advanced mop implant" + desc = "Advanced mop implant. Does what it says on the tin" // A better description + + contents = newlist(/obj/item/mop/advanced) \ No newline at end of file diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 04ce880d5f5..02a6d54a073 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -141,7 +141,7 @@ DAMAGE PROCS ****************************************************/ -/obj/item/organ/external/receive_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list(), ignore_resists = FALSE) +/obj/item/organ/external/receive_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list(), ignore_resists = FALSE, updating_health = TRUE) if(tough && !ignore_resists) brute = max(0, brute - 5) burn = max(0, burn - 4) @@ -232,14 +232,14 @@ droplimb(0, DROPLIMB_SHARP) if(owner_old) - owner_old.updatehealth() + owner_old.updatehealth("limb receive damage") return update_icon() #undef LIMB_SHARP_THRESH_INT_DMG #undef LIMB_THRESH_INT_DMG #undef LIMB_DMG_PROB -/obj/item/organ/external/proc/heal_damage(brute, burn, internal = 0, robo_repair = 0) +/obj/item/organ/external/proc/heal_damage(brute, burn, internal = 0, robo_repair = 0, updating_health = TRUE) if(is_robotic() && !robo_repair) return @@ -250,7 +250,8 @@ status &= ~ORGAN_BROKEN perma_injury = 0 - owner.updatehealth() + if(updating_health) + owner.updatehealth("limb heal damage") return update_icon() @@ -279,7 +280,7 @@ This function completely restores a damaged organ to perfect condition. EO.rejuvenate() if(owner) - owner.updatehealth() + owner.updatehealth("limb rejuvenate") update_icon() if(!owner) processing_objects |= src @@ -497,7 +498,7 @@ Note that amputating the affected organ does in fact remove the infection from t dir = 2 if(victim) - victim.updatehealth() + victim.updatehealth("droplimb") victim.UpdateDamageIcon() victim.regenerate_icons() @@ -708,6 +709,7 @@ Note that amputating the affected organ does in fact remove the infection from t var/atom/movable/thing = O.remove(victim) if(thing) thing.forceMove(src) + victim.updatehealth("limb remove") // Grab all the internal giblets too. for(var/obj/item/organ/internal/organ in internal_organs) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index b6de54e8046..c13c4da83f6 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -231,7 +231,7 @@ var/static/regex/multispin_words = regex("like a record baby") else if((findtext(message, heal_words))) for(var/V in listeners) var/mob/living/L = V - L.heal_overall_damage(10 * power_multiplier, 10 * power_multiplier, 0, 0) + L.heal_overall_damage(10 * power_multiplier, 10 * power_multiplier, TRUE, 0, 0) next_command = world.time + cooldown_damage //BRUTE DAMAGE diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index bcb5151d359..f959732427a 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -307,7 +307,7 @@ to_chat(target, "NOT LIKE THIS!") user.visible_message("[target] suddenly slams upward and knocks down [user]!", \ "[target] suddenly bolts up and slams you with tremendous force!") - user.resting = 0 //Remove all stuns + user.StopResting() //Remove all stuns user.SetSleeping(0) user.SetStunned(0) user.SetWeakened(0) diff --git a/code/modules/vehicle/ambulance.dm b/code/modules/vehicle/ambulance.dm index ee6c775b11f..6b7b037585f 100644 --- a/code/modules/vehicle/ambulance.dm +++ b/code/modules/vehicle/ambulance.dm @@ -56,7 +56,10 @@ AA.Grant(M) else AA.Remove(M) - + +/obj/vehicle/ambulance/post_unbuckle_mob(mob/living/M) + . = ..() + AA.Remove(M) /obj/item/key/ambulance name = "ambulance key" @@ -99,7 +102,7 @@ anchored = FALSE throw_pressure_limit = INFINITY //Throwing an ambulance trolley can kill the process scheduler. -/obj/structure/stool/bed/amb_trolley/MouseDrop(obj/over_object as obj) +/obj/structure/bed/amb_trolley/MouseDrop(obj/over_object as obj) ..() if(istype(over_object, /obj/vehicle/ambulance)) var/obj/vehicle/ambulance/amb = over_object diff --git a/code/modules/vr/vr_avatar.dm b/code/modules/vr/vr_avatar.dm index 510871fb40a..4719ffc4961 100644 --- a/code/modules/vr/vr_avatar.dm +++ b/code/modules/vr/vr_avatar.dm @@ -16,7 +16,8 @@ ..() /mob/living/carbon/human/virtual_reality/death() - return_to_lobby() + if(can_die()) + return_to_lobby() return ..() /mob/living/carbon/human/virtual_reality/Destroy() diff --git a/config/names/dreams.txt b/config/names/dreams.txt index 9dffde8e189..89f559dae88 100644 --- a/config/names/dreams.txt +++ b/config/names/dreams.txt @@ -23,6 +23,8 @@ freezing the sun a hat the Cyberiad +the Cerebron +the Kerberos a ruined station a planet plasma @@ -80,8 +82,8 @@ the pod pilot the barber the mechanic the magistrate -the nanotrasen representative -the blueshield +the nanotrasen representative +the blueshield a mouse an ert member a beach @@ -93,18 +95,18 @@ the bar the rain a skrell an unathi -a tajaran -a vulpkanin -a slime -an ipc -a vox -a plasmaman -a grey -a kidan -a diona -a drask +a tajaran +a vulpkanin +a slime +an ipc +a vox +a plasmaman +a grey +a kidan +a diona +a drask the ai core the mining station -the research station +the research station a beaker of strange liquid -Captain [DREAMER] \ No newline at end of file +Captain [DREAMER] diff --git a/html/changelog.html b/html/changelog.html index 831284198c7..c7a6f4709d1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,206 @@ -->
    +

    10 October 2018

    +

    Alonefromhell updated:

    +
      +
    • You should no longer be able to relight a burned match by using a shoe.
    • +
    +

    Birdtalon updated:

    +
      +
    • Small runtime in tickets.dm
    • +
    +

    Citinited updated:

    +
      +
    • Emagging a locker will keep the original description instead of telling you it was emagged twice.
    • +
    • Examining airlocks displays the proper icon now
    • +
    • Holopads don't work when unanchored any more.
    • +
    +

    Purpose updated:

    +
      +
    • Fixes a few broken tiles in maintenance, by breaking those tiles properly.
    • +
    +

    Ty-Omaha updated:

    +
      +
    • Fixes PAIs
    • +
    • Ambulances work again
    • +
    +

    Warior4356 updated:

    +
      +
    • added Grey sprite for psysuit, made by dumbdumb
    • +
    +

    tigercat2000 updated:

    +
      +
    • Hovering over an inventory slot now shows an indicator for if that item can go in that slot or not. Pretty!
    • +
    • SSOverlays has been added, but not implemented!
    • +
    + +

    09 October 2018

    +

    Alonefromhell updated:

    +
      +
    • Edited the attack text of the teleport armor.
    • +
    +

    Birdtalon , LPSpartan, Shazbot, Memager updated:

    +
      +
    • Portable Body Analyzer for ERT
    • +
    • Muilti Lens Immolation gun for gamma ERT
    • +
    • PDW-9 sidearm for ERT
    • +
    • T4 Thermite Charge for Gamma ERT security
    • +
    • Sprites for gamma ERT suits
    • +
    • Red ERT loadouts
    • +
    • Gamma ERT loadouts
    • +
    +

    Citinited updated:

    +
      +
    • Conveyor belts have received a facelift!
    • +
    • Rotating a belt with a wrench now nicely rotates the belt for you
    • +
    • Click a lever with a lever to link their IDs. Click a belt with a lever to link that belt to that lever.
    • +
    • Deconstructing a syndicate console will no longer ruin it forever.
    • +
    +

    DesolateG updated:

    +
      +
    • Refactors the timer subsystems and bugfixes
    • +
    +

    Purpose updated:

    +
      +
    • Code improvements on mouse_opacity
    • +
    • Plating shadow faux 3d now works properly.
    • +
    +

    Purpose & AndrewMontagne updated:

    +
      +
    • Adds tile smoothing to plating. Plating should now be a bit more of a 3d look...
    • +
    +

    Purpose & Birdtalon updated:

    +
      +
    • Takes Runtime out of the oven.
    • +
    +

    Squirgenheimer updated:

    +
      +
    • fixed a potential runtime in the sentient animal event
    • +
    +

    Triiodine updated:

    +
      +
    • Tidied up nuclear shuttle's mini-medbay to better utilize the space provided.
    • +
    • Full Body-Scanner, surgery set, replacement limbs, bloodpacks to the nuclear shuttle's mini-medbay.
    • +
    • One of the nuclear shuttle's sleepers.
    • +
    +

    uc_guy updated:

    +
      +
    • Legless human mobs no longer scream non-stop when buckled into a chair.
    • +
    +

    variableundefined updated:

    +
      +
    • Poolcontroller performance are improved dramatically. Expect slightly reduced CPU use on beach gateway map
    • +
    • Poolcontroller will no longer work properly if you directly var-edit someone's location to inside a body of water and a decal's (However if the mob move right after it will still work)
    • +
    + +

    08 October 2018

    +

    Ansari, Birdtalon updated:

    +
      +
    • Updates resting procs, fixes getting people up from help intent.
    • +
    +

    Birdtalon updated:

    +
      +
    • Conservation of damage mechanic for set species
    • +
    • Changeling transform conserves damage when transforming to a different species.
    • +
    +

    Crazylemon updated:

    +
      +
    • Fixes AIs being unable to examine due to a runtime.
    • +
    • Fixes nearsighted glasses behavior being inverted (seeing worse with glasses).
    • +
    • Mining mobs now update their sprites on death.
    • +
    +

    Crazylemon64 updated:

    +
      +
    • Updates for damage on HUD elements are now instant for cyborgs and humans.
    • +
    • When dead, you can now see your surroundings with ghost vision and examine things around you.
    • +
    +

    Farie82 updated:

    +
      +
    • PANDEMIC can print a virus release form now. Viromancers REJOICE!
    • +
    +

    Purpose updated:

    +
      +
    • Adds the missing turfs under windows & doors on Mech Transport Space ruin.
    • +
    • Fixes improper turf in the shuttle crashed into one of the space ruins.
    • +
    • Fixing improper decals & missing turfs in the Space Bar space ruin, and some tiny fixes.
    • +
    • GasTheLizard Space Ruin now uses Decals properly.
    • +
    • MoonOutpost19 Away Mission now uses Decals properly.
    • +
    • Evil Santa Away Mission now uses Decals properly.
    • +
    • Fixes the corpse spawners in Space Battle Away Mission.
    • +
    • Space Battle Away Mission now uses Decals properly.
    • +
    • Prettier Donate/Karma buttons!
    • +
    • Adds new stair sprites.
    • +
    • Blackmarket Backpackers now uses Decals properly.
    • +
    • OneHalf Space Ruin now uses Decals properly.
    • +
    • CentComm Away Mission now uses Decals properly.
    • +
    • Cyberiad Z2 now uses Decals properly.
    • +
    • Space Hotel Away Mission now uses Decals properly.
    • +
    • Terror Spiders Away Mission now uses Decals properly.
    • +
    • Adds plasma window spawners for mappers.
    • +
    • Thrown stunbatons & improvised batons have a low chance to stun.
    • +
    • You can now alt click breath masks to pull them up & down.
    • +
    • You can no longer erroneously pull down a vox mask.
    • +
    • TravisCI now checks all space ruins & away missions for integration.
    • +
    +

    Triiodine updated:

    +
      +
    • Rsik's fluff katana ~~modkit~~
    • +
    +

    Ty-Omaha updated:

    +
      +
    • Replaces Security's bomb suit with their cooler Security version
    • +
    • Fixes runtime in world.dm;127
    • +
    +

    tigercat2000 updated:

    +
      +
    • Made mind.dm 1/1000 less awful.
    • +
    +

    variableundefined updated:

    +
      +
    • NPCpool (SNPC) is now a subsystem.
    • +
    • NPCAI (For simple mob) is now a subsystem.
    • +
    • Customising SNPC no longer results in screaming death and a naked person.
    • +
    • Logging added to RD teleport gun, some projectile are always logged
    • +
    • EMPulse & Explosion can optionally log a cause for administrative purpose
    • +
    • Backend Attack logs now display coordinates of attacker & defender for forensic reconstruction.
    • +
    • Grill shock cooldown is 1 second instead.
    • +
    + +

    07 October 2018

    +

    Birdtalon updated:

    +
      +
    • Ammo boxes now return materials proportional to their contents when recycling, nullifying infinite ammo exploit.
    • +
    +

    Farie82 updated:

    +
      +
    • Fixing a disability now fixes the gene related to it if needed. No more free gene stability from blindness and such
    • +
    • fixed bluespace disposal bins
    • +
    • instant recall doesn't fuck up disposals
    • +
    • meteor shots now deconstruct the disposals unit, removing weird behaviour
    • +
    +

    Purpose updated:

    +
      +
    • Winged chairs now get placed back down correctly as winged chairs.
    • +
    • CyberiadAI Discord Bot now announces which station is being used.
    • +
    • Less things will refer to the NSS Cyberiad when not actually ON the NSS Cyberiad.
    • +
    • Decals now Initialize()
    • +
    +

    SkeletalElite updated:

    +
      +
    • Fixed grammar in meat spike's name
    • +
    • Chaos Holoparasite's abilities actually work
    • +
    +

    datlo updated:

    +
      +
    • Changelings with wingdings now permanently switch to regular speech after transforming
    • +
    +

    variableundefined updated:

    +
      +
    • All sharp items can cut sliceables like cheesewheel now.
    • +
    • Putting items inside sliceables is done by alt-click now.
    • +
    +

    06 October 2018

    Alonefromhell updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 391d2597024..59761cbe975 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7272,3 +7272,147 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. Squirgenheimer: - bugfix: Victims of changeling swap forms and wizard mindswap can now re-enter their corpses +2018-10-07: + Birdtalon: + - bugfix: Ammo boxes now return materials proportional to their contents when recycling, + nullifying infinite ammo exploit. + Farie82: + - bugfix: Fixing a disability now fixes the gene related to it if needed. No more + free gene stability from blindness and such + - bugfix: fixed bluespace disposal bins + - bugfix: instant recall doesn't fuck up disposals + - bugfix: meteor shots now deconstruct the disposals unit, removing weird behaviour + Purpose: + - bugfix: Winged chairs now get placed back down correctly as winged chairs. + - rscadd: CyberiadAI Discord Bot now announces which station is being used. + - bugfix: Less things will refer to the NSS Cyberiad when not actually ON the NSS + Cyberiad. + - tweak: Decals now Initialize() + SkeletalElite: + - bugfix: Fixed grammar in meat spike's name + - bugfix: Chaos Holoparasite's abilities actually work + datlo: + - bugfix: Changelings with wingdings now permanently switch to regular speech after + transforming + variableundefined: + - rscadd: All sharp items can cut sliceables like cheesewheel now. + - tweak: Putting items inside sliceables is done by alt-click now. +2018-10-08: + Ansari, Birdtalon: + - bugfix: Updates resting procs, fixes getting people up from help intent. + Birdtalon: + - rscadd: Conservation of damage mechanic for set species + - tweak: Changeling transform conserves damage when transforming to a different + species. + Crazylemon: + - bugfix: Fixes AIs being unable to examine due to a runtime. + - bugfix: Fixes nearsighted glasses behavior being inverted (seeing worse with glasses). + - bugfix: Mining mobs now update their sprites on death. + Crazylemon64: + - bugfix: Updates for damage on HUD elements are now instant for cyborgs and humans. + - rscadd: When dead, you can now see your surroundings with ghost vision and examine + things around you. + Farie82: + - rscadd: PANDEMIC can print a virus release form now. Viromancers REJOICE! + Purpose: + - bugfix: Adds the missing turfs under windows & doors on Mech Transport Space ruin. + - bugfix: Fixes improper turf in the shuttle crashed into one of the space ruins. + - bugfix: Fixing improper decals & missing turfs in the Space Bar space ruin, and + some tiny fixes. + - tweak: GasTheLizard Space Ruin now uses Decals properly. + - tweak: MoonOutpost19 Away Mission now uses Decals properly. + - tweak: Evil Santa Away Mission now uses Decals properly. + - bugfix: Fixes the corpse spawners in Space Battle Away Mission. + - tweak: Space Battle Away Mission now uses Decals properly. + - tweak: Prettier Donate/Karma buttons! + - rscadd: Adds new stair sprites. + - tweak: Blackmarket Backpackers now uses Decals properly. + - tweak: OneHalf Space Ruin now uses Decals properly. + - tweak: CentComm Away Mission now uses Decals properly. + - tweak: Cyberiad Z2 now uses Decals properly. + - tweak: Space Hotel Away Mission now uses Decals properly. + - tweak: Terror Spiders Away Mission now uses Decals properly. + - rscadd: Adds plasma window spawners for mappers. + - rscadd: Thrown stunbatons & improvised batons have a low chance to stun. + - rscadd: You can now alt click breath masks to pull them up & down. + - bugfix: You can no longer erroneously pull down a vox mask. + - bugfix: TravisCI now checks all space ruins & away missions for integration. + Triiodine: + - rscadd: Rsik's fluff katana ~~modkit~~ + Ty-Omaha: + - tweak: Replaces Security's bomb suit with their cooler Security version + - bugfix: Fixes runtime in world.dm;127 + tigercat2000: + - bugfix: Made mind.dm 1/1000 less awful. + variableundefined: + - tweak: NPCpool (SNPC) is now a subsystem. + - tweak: NPCAI (For simple mob) is now a subsystem. + - bugfix: Customising SNPC no longer results in screaming death and a naked person. + - tweak: Logging added to RD teleport gun, some projectile are always logged + - tweak: EMPulse & Explosion can optionally log a cause for administrative purpose + - tweak: Backend Attack logs now display coordinates of attacker & defender for + forensic reconstruction. + - tweak: Grill shock cooldown is 1 second instead. +2018-10-09: + Alonefromhell: + - spellcheck: Edited the attack text of the teleport armor. + Birdtalon , LPSpartan, Shazbot, Memager: + - rscadd: Portable Body Analyzer for ERT + - rscadd: Muilti Lens Immolation gun for gamma ERT + - rscadd: PDW-9 sidearm for ERT + - rscadd: T4 Thermite Charge for Gamma ERT security + - rscadd: Sprites for gamma ERT suits + - tweak: Red ERT loadouts + - tweak: Gamma ERT loadouts + Citinited: + - tweak: Conveyor belts have received a facelift! + - tweak: Rotating a belt with a wrench now nicely rotates the belt for you + - tweak: Click a lever with a lever to link their IDs. Click a belt with a lever + to link that belt to that lever. + - bugfix: Deconstructing a syndicate console will no longer ruin it forever. + DesolateG: + - bugfix: Refactors the timer subsystems and bugfixes + Purpose: + - tweak: Code improvements on mouse_opacity + - bugfix: Plating shadow faux 3d now works properly. + Purpose & AndrewMontagne: + - rscadd: Adds tile smoothing to plating. Plating should now be a bit more of a + 3d look... + Purpose & Birdtalon: + - bugfix: Takes Runtime out of the oven. + Squirgenheimer: + - bugfix: fixed a potential runtime in the sentient animal event + Triiodine: + - tweak: Tidied up nuclear shuttle's mini-medbay to better utilize the space provided. + - rscadd: Full Body-Scanner, surgery set, replacement limbs, bloodpacks to the nuclear + shuttle's mini-medbay. + - rscdel: One of the nuclear shuttle's sleepers. + uc_guy: + - bugfix: Legless human mobs no longer scream non-stop when buckled into a chair. + variableundefined: + - tweak: Poolcontroller performance are improved dramatically. Expect slightly reduced + CPU use on beach gateway map + - tweak: Poolcontroller will no longer work properly if you directly var-edit someone's + location to inside a body of water and a decal's (However if the mob move right + after it will still work) +2018-10-10: + Alonefromhell: + - bugfix: You should no longer be able to relight a burned match by using a shoe. + Birdtalon: + - bugfix: Small runtime in tickets.dm + Citinited: + - bugfix: Emagging a locker will keep the original description instead of telling + you it was emagged twice. + - bugfix: Examining airlocks displays the proper icon now + - bugfix: Holopads don't work when unanchored any more. + Purpose: + - bugfix: Fixes a few broken tiles in maintenance, by breaking those tiles properly. + Ty-Omaha: + - bugfix: Fixes PAIs + - bugfix: Ambulances work again + Warior4356: + - imageadd: added Grey sprite for psysuit, made by dumbdumb + tigercat2000: + - rscadd: Hovering over an inventory slot now shows an indicator for if that item + can go in that slot or not. Pretty! + - wip: SSOverlays has been added, but not implemented! diff --git a/html/changelogs/AutoChangeLog-pr-9721.yml b/html/changelogs/AutoChangeLog-pr-9721.yml deleted file mode 100644 index 5f9c41feb94..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9721.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - bugfix: "Winged chairs now get placed back down correctly as winged chairs." diff --git a/html/changelogs/AutoChangeLog-pr-9722.yml b/html/changelogs/AutoChangeLog-pr-9722.yml deleted file mode 100644 index 14ad8c9ec65..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9722.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkeletalElite" -delete-after: True -changes: - - bugfix: "Fixed grammar in meat spike's name" diff --git a/html/changelogs/AutoChangeLog-pr-9804.yml b/html/changelogs/AutoChangeLog-pr-9804.yml new file mode 100644 index 00000000000..5bba17fc190 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9804.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Mulebot teleportation exploit." diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index cc54e5aec0f..f0de428b6c5 100644 Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 93630adce9a..c833c6d66c2 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 7bc8088aa86..551a7490577 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index 791c16f7863..9635833f580 100644 Binary files a/icons/mob/inhands/fluff_lefthand.dmi and b/icons/mob/inhands/fluff_lefthand.dmi differ diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi index d1b3f1e23cf..be5280493c9 100644 Binary files a/icons/mob/inhands/fluff_righthand.dmi and b/icons/mob/inhands/fluff_righthand.dmi differ diff --git a/icons/mob/species/grey/uniform.dmi b/icons/mob/species/grey/uniform.dmi index 4927b69dc97..cdaf6b25cf5 100644 Binary files a/icons/mob/species/grey/uniform.dmi and b/icons/mob/species/grey/uniform.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index c12484b28e4..b721063fcf9 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 3d3971cb0a3..0aa2ad1f592 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 6c186e952e9..3651f3508cc 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index e3b9bf8e8f7..0d2e22eab68 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 042c10b2aed..03ea5ef9684 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi index f33135baec6..be866dc4275 100644 Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 03b8eba0f8c..1fc59f10afd 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/recycling.dmi b/icons/obj/recycling.dmi index 2c964d60681..2a47e6817bb 100644 Binary files a/icons/obj/recycling.dmi and b/icons/obj/recycling.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 838503bbda1..e1364852b9f 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 0ec60d09409..9a62da82286 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/floors/plating.dmi b/icons/turf/floors/plating.dmi new file mode 100644 index 00000000000..c3c480bfc6a Binary files /dev/null and b/icons/turf/floors/plating.dmi differ diff --git a/icons/turf/overlays.dmi b/icons/turf/overlays.dmi index 03b0743f95d..add518c139b 100644 Binary files a/icons/turf/overlays.dmi and b/icons/turf/overlays.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index e7dec18eba4..9435f531e06 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -1401,11 +1401,11 @@ menu "menu" group = "" is-disabled = false saved-params = "is-checked" - elem + elem name = "&Icons" command = "" saved-params = "is-checked" - elem + elem name = "&Size" command = "" category = "&Icons" @@ -1424,7 +1424,7 @@ menu "menu" category = "&Size" can-check = true group = "size" - saved-params = "is-checked" + saved-params = "is-checked" elem "icon96" name = "&96x96 (3x)" command = ".winset \"mapwindow.map.icon-size=96\"" @@ -1453,7 +1453,7 @@ menu "menu" can-check = true group = "size" saved-params = "is-checked" - elem + elem name = "&Scaling" command = "" category = "&Icons" @@ -1709,16 +1709,18 @@ window "rpane" elem "karma" type = BUTTON pos = 552,0 - size = 77x16 - background-color = #ff8040 + size = 60x16 + background-color = #FF4500 + text-color = #FFFFFF font-style = bold - text = "Karma Shop" + text = "Karma" command = "karmashop" elem "donate" type = BUTTON - pos = 634,0 + pos = 617,0 size = 60x16 - background-color = #008000 + background-color = #008000 + text-color = #FFFFFF font-style = bold text = "Donate" command = "Donate" diff --git a/nano/templates/shuttle_console.tmpl b/nano/templates/shuttle_console.tmpl index d16f39a8b20..8277e92eb76 100644 --- a/nano/templates/shuttle_console.tmpl +++ b/nano/templates/shuttle_console.tmpl @@ -1,4 +1,4 @@ - @@ -30,8 +30,8 @@ Used In File(s): /code/modules/shuttle/shuttle.dm
      {{/if}} {{/if}} - + {{if data.docking_request}} -
      {{:helper.link('Request docking at NSS Cyberiad', 'share-square-o', {'request' : 1})}}
      +
      {{:helper.link('Request docking at the station', 'share-square-o', {'request' : 1})}}
      {{/if}} -{{/if}} \ No newline at end of file +{{/if}} diff --git a/paradise.dme b/paradise.dme index de38b9a410d..a20b8d43042 100644 --- a/paradise.dme +++ b/paradise.dme @@ -195,7 +195,6 @@ #include "code\controllers\Processes\fast_process.dm" #include "code\controllers\Processes\lighting.dm" #include "code\controllers\Processes\npcai.dm" -#include "code\controllers\Processes\npcpool.dm" #include "code\controllers\Processes\obj.dm" #include "code\controllers\Processes\ticker.dm" #include "code\controllers\ProcessScheduler\core\process.dm" @@ -209,6 +208,9 @@ #include "code\controllers\subsystem\nano_mob_hunter.dm" #include "code\controllers\subsystem\nanoui.dm" #include "code\controllers\subsystem\nightshift.dm" +#include "code\controllers\subsystem\npcai.dm" +#include "code\controllers\subsystem\npcpool.dm" +#include "code\controllers\subsystem\overlays.dm" #include "code\controllers\subsystem\shuttles.dm" #include "code\controllers\subsystem\spacedrift.dm" #include "code\controllers\subsystem\sun.dm" @@ -223,6 +225,7 @@ #include "code\datums\beam.dm" #include "code\datums\browser.dm" #include "code\datums\callback.dm" +#include "code\datums\click_intercept.dm" #include "code\datums\datacore.dm" #include "code\datums\datum.dm" #include "code\datums\datumvars.dm" @@ -390,7 +393,6 @@ #include "code\game\atoms.dm" #include "code\game\atoms_movable.dm" #include "code\game\data_huds.dm" -#include "code\game\response_team.dm" #include "code\game\shuttle_engines.dm" #include "code\game\sound.dm" #include "code\game\world.dm" @@ -1075,7 +1077,6 @@ #include "code\modules\admin\admin_verbs.dm" #include "code\modules\admin\banappearance.dm" #include "code\modules\admin\banjob.dm" -#include "code\modules\admin\buildmode.dm" #include "code\modules\admin\create_mob.dm" #include "code\modules\admin\create_object.dm" #include "code\modules\admin\create_poll.dm" @@ -1206,6 +1207,22 @@ #include "code\modules\awaymissions\mission_code\stationCollision.dm" #include "code\modules\awaymissions\mission_code\UO71-terrorspiders.dm" #include "code\modules\awaymissions\mission_code\wildwest.dm" +#include "code\modules\buildmode\bm_mode.dm" +#include "code\modules\buildmode\buildmode.dm" +#include "code\modules\buildmode\buttons.dm" +#include "code\modules\buildmode\effects\line.dm" +#include "code\modules\buildmode\submodes\advanced.dm" +#include "code\modules\buildmode\submodes\area_edit.dm" +#include "code\modules\buildmode\submodes\atmos.dm" +#include "code\modules\buildmode\submodes\basic.dm" +#include "code\modules\buildmode\submodes\boom.dm" +#include "code\modules\buildmode\submodes\copy.dm" +#include "code\modules\buildmode\submodes\fill.dm" +#include "code\modules\buildmode\submodes\link.dm" +#include "code\modules\buildmode\submodes\mapgen.dm" +#include "code\modules\buildmode\submodes\save.dm" +#include "code\modules\buildmode\submodes\throwing.dm" +#include "code\modules\buildmode\submodes\variable_edit.dm" #include "code\modules\busy_space\air_traffic.dm" #include "code\modules\busy_space\loremaster.dm" #include "code\modules\busy_space\organizations.dm" @@ -1277,7 +1294,7 @@ #include "code\modules\clothing\spacesuits\rig\modules\vision.dm" #include "code\modules\clothing\spacesuits\rig\suits\alien.dm" #include "code\modules\clothing\spacesuits\rig\suits\combat.dm" -#include "code\modules\clothing\spacesuits\rig\suits\ert.dm" +#include "code\modules\clothing\spacesuits\rig\suits\ert_suits.dm" #include "code\modules\clothing\spacesuits\rig\suits\light.dm" #include "code\modules\clothing\spacesuits\rig\suits\merc.dm" #include "code\modules\clothing\spacesuits\rig\suits\station.dm" @@ -1626,7 +1643,6 @@ #include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" #include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" #include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" -#include "code\modules\mob\living\carbon\alien\larva\death.dm" #include "code\modules\mob\living\carbon\alien\larva\emote.dm" #include "code\modules\mob\living\carbon\alien\larva\inventory.dm" #include "code\modules\mob\living\carbon\alien\larva\larva.dm" @@ -1666,6 +1682,7 @@ #include "code\modules\mob\living\carbon\human\shock.dm" #include "code\modules\mob\living\carbon\human\status_procs.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\update_stat.dm" #include "code\modules\mob\living\carbon\human\whisper.dm" #include "code\modules\mob\living\carbon\human\interactive\functions.dm" #include "code\modules\mob\living\carbon\human\interactive\interactive.dm" @@ -2150,6 +2167,8 @@ #include "code\modules\research\designs\weapon_designs.dm" #include "code\modules\research\xenobiology\xenobio_camera.dm" #include "code\modules\research\xenobiology\xenobiology.dm" +#include "code\modules\response_team\ert.dm" +#include "code\modules\response_team\ert_outfits.dm" #include "code\modules\ruins\ruin_areas.dm" #include "code\modules\scripting\__defines.dm" #include "code\modules\scripting\Errors.dm"